Subject: Re: [PATCH wpan-next 0/2] ieee802154: Beaconing support

From: Miquel Raynal <[email-masked]>
Date: Wed, 25 Jan 2023 10:59:56 +0100

Hi Alexander,

[email-masked] wrote on Tue, 24 Jan 2023 21:31:33 -0500:

> Hi,
> 
> On Tue, Jan 24, 2023 at 5:08 AM Miquel Raynal <[email-masked]> wrote:
> >
> > Hi Alexander,
> >
> > [email-masked] wrote on Mon, 23 Jan 2023 09:02:48 -0500:
> >  
> > > Hi,
> > >
> > > On Mon, Jan 23, 2023 at 9:01 AM Alexander Aring <[email-masked]> wrote:  
> > > >
> > > > Hi,
> > > >
> > > > On Wed, Jan 18, 2023 at 4:21 AM Miquel Raynal <[email-masked]> wrote:  
> > > > >
> > > > > Hi Alexander,
> > > > >
> > > > > [email-masked] wrote on Sun, 15 Jan 2023 20:54:02 -0500:
> > > > >  
> > > > > > Hi,
> > > > > >
> > > > > > On Fri, Jan 6, 2023 at 6:33 AM Miquel Raynal <[email-masked]> wrote:  
> > > > > > >
> > > > > > > Scanning being now supported, we can eg. play with hwsim to verify
> > > > > > > everything works as soon as this series including beaconing support gets
> > > > > > > merged.
> > > > > > >  
> > > > > >
> > > > > > I am not sure if a beacon send should be handled by an mlme helper
> > > > > > handling as this is a different use-case and the user does not trigger
> > > > > > an mac command and is waiting for some reply and a more complex
> > > > > > handling could be involved. There is also no need for hotpath xmit
> > > > > > handling is disabled during this time. It is just an async messaging
> > > > > > in some interval and just "try" to send it and don't care if it fails,
> > > > > > or? For mac802154 therefore I think we should use the dev_queue_xmit()
> > > > > > function to queue it up to send it through the hotpath?
> > > > > >
> > > > > > I can ack those patches, it will work as well. But I think we should
> > > > > > switch at some point to dev_queue_xmit(). It should be simple to
> > > > > > switch it. Just want to mention there is a difference which will be
> > > > > > there in mac-cmds like association.  
> > > > >
> > > > > I see what you mean. That's indeed true, we might just switch to
> > > > > a less constrained transmit path.
> > > > >  
> > > >
> > > > I would define the difference in bypass qdisc or not. Whereas the
> > > > qdisc can drop or delay transmitting... For me, the qdisc is currently
> > > > in a "works for now" state.  
> > >
> > > probably also bypass other hooks like tc, etc. :-/ Not sure if we want that.  
> >
> > Actually, IIUC, we no longer want to go through the entire net stack.
> > We still want to bypass it but without stopping/flushing the full
> > queue like with an mlme transmission, so what about using
> > ieee802154_subif_start_xmit() instead of dev_queue_xmit()? I think it
> > is more appropriate.  
> 
> I do not understand, what do we currently do with mlme ops via the
> ieee802154_subif_start_xmit() function, or? So we bypass everything
> from dev_queue_xmit() until do_xmit() netdev callback.

Yes, that's the plan. We don't want any of the net stack features when
sending beacons.

> I think it is fine, also I think "mostly" only dataframes should go
> through dev_queue_xmit(). With a HardMAC transceiver we would have
> control about "mostly" other frames than data either. So we should do
> everything with mlme-ops do what the spec says (to match up with
> HardMAC behaviour?) and don't allow common net hooks/etc. to change
> this behaviour?

To summarize:
- Data frames -> should go through dev_queue_xmit()
- MLME ops with feedback constraints -> should go through the slow MLME
  path, so ieee802154_mlme_tx*()
- MLME ops without feedback constraints like beacons -> should go
  through the hot path, but not through the whole net stack, so
  ieee802154_subif_start_xmit()

Right now only data frames have security support, I propose we merge
the initial support like that. Right now I am focused on UWB support
(coming next, after the whole active scan/association additions), and
in a second time we would be interested in llsec support for MLME ops.

Does that sounds like a plan? If yes, I'll send a v2 with the right
transmit helper used.

Thanks,
Miquèl

NB: Perhaps a prerequisites of bringing security to the MLME ops would
be to have wpan-tools updated (it looks like the support was never
merged?) as well as a simple example how to use it on linux-wpan.org.