/* patch the first MPDU */
                if (count == 1) {
                        u8 plcp0, plcp3, is40, sgi;
-                       struct ieee80211_sta *sta;
-
-                       sta = tx_info->control.sta;
 
                        if (rr) {
                                plcp0 = plcp[0];
        bool rc;
 
        rc = tx_info->flags & IEEE80211_TX_CTL_AMPDU ? true : false;
-       rc = rc && (tx_info->control.sta == NULL || ampdu_pars->sta == NULL ||
-                   tx_info->control.sta == ampdu_pars->sta);
+       rc = rc && (tx_info->rate_driver_data[0] == NULL || ampdu_pars->sta == NULL ||
+                   tx_info->rate_driver_data[0] == ampdu_pars->sta);
        rc = rc && ((u8)(mpdu->priority) == ampdu_pars->tid);
        return rc;
 }
        struct ieee80211_tx_info *tx_info = (struct ieee80211_tx_info *)txi;
 
        if ((tx_info->flags & IEEE80211_TX_CTL_AMPDU) &&
-           (tx_info->control.sta == sta || sta == NULL))
-               tx_info->control.sta = NULL;
+           (tx_info->rate_driver_data[0] == sta || sta == NULL))
+               tx_info->rate_driver_data[0] = NULL;
 }
 
 /*
 
 static void brcms_ops_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
 {
        struct brcms_info *wl = hw->priv;
+       struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
 
        spin_lock_bh(&wl->lock);
        if (!wl->pub->up) {
                goto done;
        }
        brcms_c_sendpkt_mac80211(wl->wlc, skb, hw);
+       tx_info->rate_driver_data[0] = tx_info->control.sta;
  done:
        spin_unlock_bh(&wl->lock);
 }
 
        tx_info = IEEE80211_SKB_CB(p);
        h = (struct ieee80211_hdr *)((u8 *) (txh + 1) + D11_PHY_HDR_LEN);
 
-       if (tx_info->control.sta)
+       if (tx_info->rate_driver_data[0])
                scb = &wlc->pri_scb;
 
        if (tx_info->flags & IEEE80211_TX_CTL_AMPDU) {