mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 10:04:04 +02:00
wifi: mac80211: simplify __ieee80211_rx_h_amsdu() loop
The loop handling individual subframes can be simplified to not use a somewhat confusing goto inside the loop. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://patch.msgid.link/20250709233537.a217a1e8c667.I5283df9627912c06c8327b5786d6b715c6f3a4e1@changeid Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
63df395690
commit
6ee152b0cd
|
|
@ -3033,7 +3033,6 @@ __ieee80211_rx_h_amsdu(struct ieee80211_rx_data *rx, u8 data_offset)
|
|||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
|
||||
__le16 fc = hdr->frame_control;
|
||||
struct sk_buff_head frame_list;
|
||||
ieee80211_rx_result res;
|
||||
struct ethhdr ethhdr;
|
||||
const u8 *check_da = ethhdr.h_dest, *check_sa = ethhdr.h_source;
|
||||
|
||||
|
|
@ -3095,24 +3094,18 @@ __ieee80211_rx_h_amsdu(struct ieee80211_rx_data *rx, u8 data_offset)
|
|||
while (!skb_queue_empty(&frame_list)) {
|
||||
rx->skb = __skb_dequeue(&frame_list);
|
||||
|
||||
res = ieee80211_rx_mesh_data(rx->sdata, rx->sta, rx->skb);
|
||||
switch (res) {
|
||||
switch (ieee80211_rx_mesh_data(rx->sdata, rx->sta, rx->skb)) {
|
||||
case RX_QUEUED:
|
||||
continue;
|
||||
case RX_CONTINUE:
|
||||
break;
|
||||
case RX_CONTINUE:
|
||||
if (ieee80211_frame_allowed(rx, fc)) {
|
||||
ieee80211_deliver_skb(rx);
|
||||
break;
|
||||
}
|
||||
fallthrough;
|
||||
default:
|
||||
goto free;
|
||||
dev_kfree_skb(rx->skb);
|
||||
}
|
||||
|
||||
if (!ieee80211_frame_allowed(rx, fc))
|
||||
goto free;
|
||||
|
||||
ieee80211_deliver_skb(rx);
|
||||
continue;
|
||||
|
||||
free:
|
||||
dev_kfree_skb(rx->skb);
|
||||
}
|
||||
|
||||
return RX_QUEUED;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user