};
 
 
+static void
+rtw_update_TSF(struct mlme_ext_priv *pmlmeext, struct ieee80211_mgmt *mgmt)
+{
+       pmlmeext->TSFValue = get_unaligned_le64(&mgmt->u.beacon.timestamp);
+}
+
 /*
  * Search the @param channel_num in given @param channel_set
  * @ch_set: the given channel set
                                          offsetof(struct ieee80211_mgmt, u));
 
                /* update TSF Value */
-               update_TSF23a(pmlmeext, pframe, pkt_len);
+               rtw_update_TSF(pmlmeext, mgmt);
 
                /* start auth */
                start_clnt_auth23a(padapter);
                        }
 
                        /* update TSF Value */
-                       update_TSF23a(pmlmeext, pframe, pkt_len);
+                       rtw_update_TSF(pmlmeext, mgmt);
 
                        /* report sta add event */
                        report_add_sta_event23a(padapter, mgmt->sa,
                }
                else/* adhoc client */
                {
-                       /* update TSF Value */
-                       /* update_TSF23a(pmlmeext, pframe, len); */
-
                        /*  correcting TSF */
                        correct_TSF23a(padapter, pmlmeext);
 
 
        }
 }
 
-void update_TSF23a(struct mlme_ext_priv *pmlmeext, u8 *pframe, uint len)
-{
-       u8 *pIE;
-       u32 *pbuf;
-
-       pIE = pframe + sizeof(struct ieee80211_hdr_3addr);
-       pbuf = (u32 *)pIE;
-
-       pmlmeext->TSFValue = le32_to_cpu(*(pbuf+1));
-
-       pmlmeext->TSFValue = pmlmeext->TSFValue << 32;
-
-       pmlmeext->TSFValue |= le32_to_cpu(*pbuf);
-}
-
 void correct_TSF23a(struct rtw_adapter *padapter,
                    struct mlme_ext_priv *pmlmeext)
 {
 
 
 void process_addba_req23a(struct rtw_adapter *padapter, u8 *paddba_req, u8 *addr);
 
-void update_TSF23a(struct mlme_ext_priv *pmlmeext, u8 *pframe, uint len);
 void correct_TSF23a(struct rtw_adapter *padapter, struct mlme_ext_priv *pmlmeext);
 
 struct cmd_hdl {