Re: [PATCH] wpa_supplicant: Send EAPoL-Key frames over NL80211 where available

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Oct 19, 2019 at 1:14 AM Alexander Wetzel
<alexander@xxxxxxxxxxxxxx> wrote:
>
> Am 16.10.19 um 12:34 schrieb Krishna Chaitanya:
> > On Sun, Sep 1, 2019 at 8:50 PM Krishna Chaitanya
> > <chaitanya.mgit@xxxxxxxxx> wrote:
> >>
> >> On Sun, Sep 1, 2019 at 4:15 PM Alexander Wetzel
> >> <alexander@xxxxxxxxxxxxxx> wrote:
> >>>
> >>>
> >>>>> Normally there are next no buffers in the tx path. When you hand over a
> >>>>> frame to the kernel it's - according what I remember when investigating
> >>>>> the issue - an atomic operation till the skb reaches mac80211 or
> >>>>> whatever other driver we use. And the few "buffers" we have are fully
> >>>>> driver controlled and we basically can just make sure those are flushed
> >>>>> when we replace the key. The only potential issue I see are traffic
> >>>>> shapers but then I think I eapol frames bypass them already.
> >>>
> >>>> the issue of race b/w set_key and send_m4 probably caused the delays in
> >>>> socket_queues/QDISC for M4, can you please elaborate on how EAPoL
> >>>> bypasses QDISC?
> >>>> I don't see PACKET_QDISC_BYPASS being set for l2_packet_send.
> >>>
> >>> I had some hope that eapol packets would have a build in fast lane but
> >>> you are right: They get added to the QDISC queue and processed like any
> >>> other packets.
> >>>
> >>> But why do we not just set PACKET_QDISC_BYPASS for eapol frames?
> >>> Just tried it and it seems to work as it should: fine.
> >>>
> >>> We could allow this setsockopt() call to fail, so all kernels < 3.14
> >>> would continue to push the eapol packets through the QDISC. But starting
> >>> with 3.14 drivers flushing their queues prior to deleting a key can be
> >>> sure the eapol frame has been send.
> >>>
> >>> The only potential down side I can find is the - required - lack of
> >>> buffers. The driver could therefore refuse to accept the eapol packet
> >>> which should cause a disconnect instead a queued and later send eapol frame.
> >>> Using the control port for eapol would of course still better, but using
> >>> PACKET_QDISC_BYPASS when this is not working looks like a good fallback
> >>> and an improvement compared to as things are today.
> >>>
> >> I agree using that option to bypass QDISC is a definite improvment.
> >
> > To summarize: Patching hostap/wpa_s to use PACKET_QDISC_BYPASS is enough
> > (along with driver stalling the set_key till EAPoL is flushed) and we
> > don't need this patch
> > anymore? Please confirm.
> >
> That is my understanding, yes.
>
> But the "simple" patch (https://patchwork.ozlabs.org/patch/1161750/) to
> enable PACKET_QDISC_BYPASS in hostapd is little more than a POC and
> doing it right will be quite invasive.
>
> And using CONTROL_PORT has some benefits we can't get otherwise. Here
> the ones I see:
> - The drivers may not have to flush the queues in all constellations
> - EAPOL MPDUs can be send with the basic rate
> - EAPOL MPDUs will normally be a separate TID
Agree, I guess most of the drivers/FW do look for EAPoL and handle it
specially,
but good to have control_port.

> Denis may have more, so far I only had passing contact with CONTROL_PORT.
>
> We discussed the the different solutions recently here on linux wireless:
> https://marc.info/?l=linux-wireless&m=156873433609504&w=2
>
> In short CONTROL_PORT was designed to handle this kind of races and
> since the API is available should be the preferred solution.
>
> Regardless of using CONTROL_PORT or queue flushes the drivers/cards will
> have to make sure they can rekey correctly. There are many pitfalls and
> nearly all drivers have some oversights here.

It does require multiple knobs to set the right to get initial and
rekeying working.
So, I guess we should try to get this patch along with bypassing QDISC
patch in and
set expectations to the drivers to make sure they flush EAPoL properly.

_______________________________________________
Hostap mailing list
Hostap@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/hostap



[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux