On August 22, 2019 10:08:13 PM GMT+02:00, Johannes Berg
<[email protected]> wrote:
>On Thu, 2019-08-22 at 09:00 +0200, Johannes Berg wrote:
>>
>> Perhaps it expects the 4-way-HS to already be in 4-addr frame format,
>or
>> something else special in the 4-way-HS if you have WDS?
>
>I think this is actually the right guess.
Yes, it indeed it! Thank you so much Johannes!
>As a hack, you could do
>
>--- a/net/mac80211/tx.c
>+++ b/net/mac80211/tx.c
>@@ -2623,8 +2623,7 @@ static struct sk_buff *ieee80211_build_hdr(struct
>ieee80211_sub_if_data *sdata,
> memcpy(hdr.addr2, skb->data + ETH_ALEN, ETH_ALEN);
> memcpy(hdr.addr3, sdata->u.mgd.bssid, ETH_ALEN);
> hdrlen = 24;
>- } else if (sdata->u.mgd.use_4addr &&
>- cpu_to_be16(ethertype) !=
>sdata->control_port_protocol) {
>+ } else if (sdata->u.mgd.use_4addr) {
> fc |= cpu_to_le16(IEEE80211_FCTL_FROMDS |
> IEEE80211_FCTL_TODS);
> /* RA TA DA SA */
>
>
>in mac80211, then it should send 4-addr frames even for EAPOL.
Works great. Is there a possibility that a toggle for this could be accepted
upstream? After all, WDS isn't really standardized.
Thank you!
Josef