2019-06-12 01:20:39

by James Prestwood

[permalink] [raw]
Subject: ROC event when CMD_FRAME duration expires

Hi,

I see that the event CMD_CANCEL_REMAIN_ON_CHANNEL is emitted when a
CMD_REMAIN_ON_CHANNEL duration expires, but this is not true for
CMD_FRAME when sending offchannel and providing a duration. I see
wpa_supplicant handles this with its own timeout, but couldn't the same
event be emitted for CMD_FRAME if the duration expires?

Looking in mac80211/offchannel.c: ieee80211_roc_notify_destroy:

if (!roc->mgmt_tx_cookie)
cfg80211_remain_on_channel_expired(&roc->sdata->wdev,
roc->cookie, roc->chan,
GFP_KERNEL);

In the case of CMD_FRAME, mgmt_tx_cookie is set, so this event does not
get emitted. Could the same expire event be emitted when mgmt_tx_cookie
is set as well? This would eliminate the need for userspace to keep a
timeout tracking this.

If this is ok I can send a patch (Looks like all I would need to do is
remove the if, and include the correct cookie, roc->cookie or roc-
>mgmt_tx_cookie).

Thanks,
James


2019-06-12 19:12:15

by Johannes Berg

[permalink] [raw]
Subject: Re: ROC event when CMD_FRAME duration expires

On Tue, 2019-06-11 at 13:51 -0700, James Prestwood wrote:
> Hi,
>
> I see that the event CMD_CANCEL_REMAIN_ON_CHANNEL is emitted when a
> CMD_REMAIN_ON_CHANNEL duration expires, but this is not true for
> CMD_FRAME when sending offchannel and providing a duration. I see
> wpa_supplicant handles this with its own timeout, but couldn't the same
> event be emitted for CMD_FRAME if the duration expires?

I guess? I guess this is for a case where you actually have a wait after
the TX, for waiting for a response?

johannes

2019-06-12 19:19:07

by James Prestwood

[permalink] [raw]
Subject: Re: ROC event when CMD_FRAME duration expires

On Wed, 2019-06-12 at 21:11 +0200, Johannes Berg wrote:
> On Tue, 2019-06-11 at 13:51 -0700, James Prestwood wrote:
> > Hi,
> >
> > I see that the event CMD_CANCEL_REMAIN_ON_CHANNEL is emitted when a
> > CMD_REMAIN_ON_CHANNEL duration expires, but this is not true for
> > CMD_FRAME when sending offchannel and providing a duration. I see
> > wpa_supplicant handles this with its own timeout, but couldn't the
> > same
> > event be emitted for CMD_FRAME if the duration expires?
>
> I guess? I guess this is for a case where you actually have a wait
> after
> the TX, for waiting for a response?

Yes exactly. For example a GAS/ANQP request before association to some
offchannel AP (that's at least our use case).

Thanks,
James
>
> johannes
>

2019-06-12 19:31:47

by Johannes Berg

[permalink] [raw]
Subject: Re: ROC event when CMD_FRAME duration expires

On Wed, 2019-06-12 at 12:18 -0700, James Prestwood wrote:
> On Wed, 2019-06-12 at 21:11 +0200, Johannes Berg wrote:
> > On Tue, 2019-06-11 at 13:51 -0700, James Prestwood wrote:
> > > Hi,
> > >
> > > I see that the event CMD_CANCEL_REMAIN_ON_CHANNEL is emitted when a
> > > CMD_REMAIN_ON_CHANNEL duration expires, but this is not true for
> > > CMD_FRAME when sending offchannel and providing a duration. I see
> > > wpa_supplicant handles this with its own timeout, but couldn't the
> > > same
> > > event be emitted for CMD_FRAME if the duration expires?
> >
> > I guess? I guess this is for a case where you actually have a wait
> > after
> > the TX, for waiting for a response?
>
> Yes exactly. For example a GAS/ANQP request before association to some
> offchannel AP (that's at least our use case).

Makes sense, I guess. Send a patch? Seems easy enough.

johannes