Am 12.10.2016 14:25, schrieb Johannes Berg:
So, I actually think my first instinct that you were erroneously
changing the inner header *was* right.

You're right.

Seems like this code should be inserted towards the end of
ieee80211_amsdu_aggregate() instead, where it's adding the RFC 1042

I'm not convinced.

ieee80211_amsdu_aggregate handles two skbs: the "skb" var and the "head" var. The skb is appended to the frag list of head by setting frag_tail and does not appear to have an ieee80211_hdr, as memmove is only 2 * ETH_ALEN. Additionally, the rfc1042_header is written after 2 bytes containing subframe_len, so it looks like an A-MSDU subframe with rfc1042_header is inserted at the beginning of the inner MSDU.

Only the head skb is processed by ieee80211_amsdu_prepare_head and appears to have an 802.11 header. So its da/sa address should be changed.

M. Braun

Reply via email to