|
@@ -1966,10 +1966,7 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx)
|
|
|
goto invalid;
|
|
|
}
|
|
|
|
|
|
- rx->skb->pkt_type = IEEE80211_SDATA_QUEUE_TYPE_FRAME;
|
|
|
- skb_queue_tail(&sdata->skb_queue, rx->skb);
|
|
|
- ieee80211_queue_work(&local->hw, &sdata->work);
|
|
|
- return RX_QUEUED;
|
|
|
+ goto queue;
|
|
|
case WLAN_CATEGORY_SPECTRUM_MGMT:
|
|
|
if (local->hw.conf.channel->band != IEEE80211_BAND_5GHZ)
|
|
|
break;
|
|
@@ -1999,10 +1996,7 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx)
|
|
|
if (memcmp(mgmt->bssid, sdata->u.mgd.bssid, ETH_ALEN))
|
|
|
break;
|
|
|
|
|
|
- rx->skb->pkt_type = IEEE80211_SDATA_QUEUE_TYPE_FRAME;
|
|
|
- skb_queue_tail(&sdata->skb_queue, rx->skb);
|
|
|
- ieee80211_queue_work(&local->hw, &sdata->work);
|
|
|
- return RX_QUEUED;
|
|
|
+ goto queue;
|
|
|
}
|
|
|
break;
|
|
|
case WLAN_CATEGORY_SA_QUERY:
|
|
@@ -2022,10 +2016,7 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx)
|
|
|
case WLAN_CATEGORY_MESH_PATH_SEL:
|
|
|
if (!ieee80211_vif_is_mesh(&sdata->vif))
|
|
|
break;
|
|
|
- rx->skb->pkt_type = IEEE80211_SDATA_QUEUE_TYPE_FRAME;
|
|
|
- skb_queue_tail(&sdata->skb_queue, rx->skb);
|
|
|
- ieee80211_queue_work(&local->hw, &sdata->work);
|
|
|
- return RX_QUEUED;
|
|
|
+ goto queue;
|
|
|
}
|
|
|
|
|
|
invalid:
|
|
@@ -2076,6 +2067,14 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx)
|
|
|
rx->sta->rx_packets++;
|
|
|
dev_kfree_skb(rx->skb);
|
|
|
return RX_QUEUED;
|
|
|
+
|
|
|
+ queue:
|
|
|
+ rx->skb->pkt_type = IEEE80211_SDATA_QUEUE_TYPE_FRAME;
|
|
|
+ skb_queue_tail(&sdata->skb_queue, rx->skb);
|
|
|
+ ieee80211_queue_work(&local->hw, &sdata->work);
|
|
|
+ if (rx->sta)
|
|
|
+ rx->sta->rx_packets++;
|
|
|
+ return RX_QUEUED;
|
|
|
}
|
|
|
|
|
|
static ieee80211_rx_result debug_noinline
|
|
@@ -2131,6 +2130,8 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_data *rx)
|
|
|
rx->skb->pkt_type = IEEE80211_SDATA_QUEUE_TYPE_FRAME;
|
|
|
skb_queue_tail(&sdata->skb_queue, rx->skb);
|
|
|
ieee80211_queue_work(&rx->local->hw, &sdata->work);
|
|
|
+ if (rx->sta)
|
|
|
+ rx->sta->rx_packets++;
|
|
|
|
|
|
return RX_QUEUED;
|
|
|
}
|