|
@@ -54,6 +54,7 @@ static struct sk_buff *ath9k_build_tx99_skb(struct ath_softc *sc)
|
|
|
struct ieee80211_hdr *hdr;
|
|
|
struct ieee80211_tx_info *tx_info;
|
|
|
struct sk_buff *skb;
|
|
|
+ struct ath_vif *avp;
|
|
|
|
|
|
skb = alloc_skb(len, GFP_KERNEL);
|
|
|
if (!skb)
|
|
@@ -71,11 +72,17 @@ static struct sk_buff *ath9k_build_tx99_skb(struct ath_softc *sc)
|
|
|
memcpy(hdr->addr2, hw->wiphy->perm_addr, ETH_ALEN);
|
|
|
memcpy(hdr->addr3, hw->wiphy->perm_addr, ETH_ALEN);
|
|
|
|
|
|
+ if (sc->tx99_vif) {
|
|
|
+ avp = (struct ath_vif *) sc->tx99_vif->drv_priv;
|
|
|
+ hdr->seq_ctrl |= cpu_to_le16(avp->seq_no);
|
|
|
+ }
|
|
|
+
|
|
|
tx_info = IEEE80211_SKB_CB(skb);
|
|
|
memset(tx_info, 0, sizeof(*tx_info));
|
|
|
rate = &tx_info->control.rates[0];
|
|
|
tx_info->band = sc->cur_chan->chandef.chan->band;
|
|
|
tx_info->flags = IEEE80211_TX_CTL_NO_ACK;
|
|
|
+ tx_info->control.vif = sc->tx99_vif;
|
|
|
rate->count = 1;
|
|
|
if (ah->curchan && IS_CHAN_HT(ah->curchan)) {
|
|
|
rate->flags |= IEEE80211_TX_RC_MCS;
|