staging: vt6655: device_free_tx_buf use only ieee80211_tx_status_irqsafe
PATCH 1/2 staging: vt6655: device_free_tx_buf use only ieee80211_tx_status_irqsafe
TD_FLAGS_NETIF_SKB is only for data.
Fixes issue of ack frames not being reported.
Signed-off-by Malcolm Priestley <[email protected]>
Cc <[email protected]> # v3.19+
--- drivers/staging/vt6655/device_main.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/staging/vt6655/device_main.c +1 -3
@@ -989,10 +989,8 @@ static void device_free_tx_buf(struct vnt_private *pDevice, PSTxDesc pDesc) skb->len, DMA_TO_DEVICE); } -if (pTDInfo->byFlags &TD_FLAGS_NETIF_SKB ) +if (skb)ieee80211_tx_status_irqsafe (pDevice->hw, skb); -else -dev_kfree_skb_irq (skb); pTDInfo->skb_dma =0 ; pTDInfo->skb =NULL ;
Signature · 1 line
2.1.0
PATCH 2/2 staging: vt6655: implement IEEE80211_TX_STAT_NOACK_TRANSMITTED
Make use of this macro for non ack frames.
Signed-off-by Malcolm Priestley <[email protected]>
Cc <[email protected]> # v4.0
--- drivers/staging/vt6655/device_main.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
drivers/staging/vt6655/device_main.c +5 -1
@@ -912,7 +912,11 @@ static int vnt_int_report_rate(struct vnt_private *priv,if (!(tsr1 &TSR1_TERR )) { info->status.rates[0 ].idx = idx; - info->flags |=IEEE80211_TX_STAT_ACK ; + +if (info->flags &IEEE80211_TX_CTL_NO_ACK ) + info->flags |=IEEE80211_TX_STAT_NOACK_TRANSMITTED ; +else + info->flags |=IEEE80211_TX_STAT_ACK ; }return 0 ;
Signature · 1 line
2.1.0