Commit 3298b1f8 authored by Felix Fietkau's avatar Felix Fietkau

mt76: use ieee80211_rx_list to pass frames to the network stack as a batch

Improves icache footprint
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent e151d71e
...@@ -932,7 +932,8 @@ void mt76_rx_complete(struct mt76_dev *dev, struct sk_buff_head *frames, ...@@ -932,7 +932,8 @@ void mt76_rx_complete(struct mt76_dev *dev, struct sk_buff_head *frames,
{ {
struct ieee80211_sta *sta; struct ieee80211_sta *sta;
struct ieee80211_hw *hw; struct ieee80211_hw *hw;
struct sk_buff *skb; struct sk_buff *skb, *tmp;
LIST_HEAD(list);
spin_lock(&dev->rx_lock); spin_lock(&dev->rx_lock);
while ((skb = __skb_dequeue(frames)) != NULL) { while ((skb = __skb_dequeue(frames)) != NULL) {
...@@ -942,9 +943,19 @@ void mt76_rx_complete(struct mt76_dev *dev, struct sk_buff_head *frames, ...@@ -942,9 +943,19 @@ void mt76_rx_complete(struct mt76_dev *dev, struct sk_buff_head *frames,
} }
mt76_rx_convert(dev, skb, &hw, &sta); mt76_rx_convert(dev, skb, &hw, &sta);
ieee80211_rx_napi(hw, sta, skb, napi); ieee80211_rx_list(hw, sta, skb, &list);
} }
spin_unlock(&dev->rx_lock); spin_unlock(&dev->rx_lock);
if (!napi) {
netif_receive_skb_list(&list);
return;
}
list_for_each_entry_safe(skb, tmp, &list, list) {
skb_list_del_init(skb);
napi_gro_receive(napi, skb);
}
} }
void mt76_rx_poll_complete(struct mt76_dev *dev, enum mt76_rxq_id q, void mt76_rx_poll_complete(struct mt76_dev *dev, enum mt76_rxq_id q,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment