|
@@ -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);
|
|
}
|
|
}
|
|
|
|
|