Skip to contentSkip to conversation

staging: vt6655: device_free_tx_buf use only ieee80211_tx_status_irqsafe

PATCH New Malcolm Priestley 1 participant 2 messages Apr 9, 2015 Staging

lore
Share & tools
lore
#0 lore raw

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.

---
 drivers/staging/vt6655/device_main.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/staging/vt6655/device_main.c +1 -3
index 5b3de43..8f48c84 100644
@@ -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
#1 lore raw

PATCH 2/2 staging: vt6655: implement IEEE80211_TX_STAT_NOACK_TRANSMITTED

Make use of this macro for non ack frames.

---
 drivers/staging/vt6655/device_main.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
drivers/staging/vt6655/device_main.c +5 -1
index 8f48c84..521d44f 100644
@@ -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