浏览代码

rsi: Remove internal header from Tx status skb

Device specific descriptor for each TX packet is prepared on top of
skb data address. This descriptor should be pulled out before
indicating the TX status to mac80211.

Signed-off-by: Prameela Rani Garnepudi <prameela.j04cs@gmail.com>
Signed-off-by: Amitkumar Karwar <amit.karwar@redpinesignals.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Prameela Rani Garnepudi 8 年之前
父节点
当前提交
5059afacee
共有 1 个文件被更改,包括 9 次插入1 次删除
  1. 9 1
      drivers/net/wireless/rsi/rsi_91x_mac80211.c

+ 9 - 1
drivers/net/wireless/rsi/rsi_91x_mac80211.c

@@ -229,12 +229,20 @@ void rsi_indicate_tx_status(struct rsi_hw *adapter,
 			    int status)
 			    int status)
 {
 {
 	struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
 	struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
+	struct skb_info *tx_params;
 
 
-	memset(info->driver_data, 0, IEEE80211_TX_INFO_DRIVER_DATA_SIZE);
+	if (!adapter->hw) {
+		rsi_dbg(ERR_ZONE, "##### No MAC #####\n");
+		return;
+	}
 
 
 	if (!status)
 	if (!status)
 		info->flags |= IEEE80211_TX_STAT_ACK;
 		info->flags |= IEEE80211_TX_STAT_ACK;
 
 
+	tx_params = (struct skb_info *)info->driver_data;
+	skb_pull(skb, tx_params->internal_hdr_size);
+	memset(info->driver_data, 0, IEEE80211_TX_INFO_DRIVER_DATA_SIZE);
+
 	ieee80211_tx_status_irqsafe(adapter->hw, skb);
 	ieee80211_tx_status_irqsafe(adapter->hw, skb);
 }
 }