Search Linux Wireless

Re: CMD_REMAIN_ON_CHANNEL vs CMD_FRAME (offchannel)

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

 



Hi,

> I guess my assumption was if ROC is currently active then a CMD_FRAME 
> (on the same channel) should just go out immediately, not be queued, and 
> not even bother checking the duration. (and in this case I'm not even 
> setting a duration for CMD_FRAME).

Hm, yeah, I'd think so too? There's probably some logic to make sure it
can still go out, so it doesn't come in just at the end of the ROC, but
seems that should work?

I mean, that's also exactly what should happen for a response frame,
right? When you are using ROC to listen to requests, and then send a
response. That'd be without setting a duration, normally.

Even the code says:

        /* This will handle all kinds of coalescing and immediate TX */
        ret = ieee80211_start_roc_work(local, sdata, params->chan,
                                       params->wait, cookie, skb,
                                       IEEE80211_ROC_TYPE_MGMT_TX);


And then seems you should get into

...

        /* otherwise handle queueing */

        list_for_each_entry(tmp, &local->roc_list, list) {
                if (tmp->chan != channel || tmp->sdata != sdata)
                        continue;

...
                if (!local->ops->remain_on_channel) {
...
                        ieee80211_handle_roc_started(roc, now);

which does

static void ieee80211_handle_roc_started(struct ieee80211_roc_work *roc,
                                         unsigned long start_time)
{
        if (WARN_ON(roc->notified))
                return;

        roc->start_time = start_time;
        roc->started = true;

        if (roc->mgmt_tx_cookie) {
                if (!WARN_ON(!roc->frame)) {
                        ieee80211_tx_skb_tid_band(roc->sdata, roc->frame, 7,
                                                  roc->chan->band);


Not sure why that wouldn't work?


> Does the OFFCHANNEL_TX_OK flag have any bearing on this? I found that I 
> have to set it even if ROC is ongoing, maybe thats another topic of 
> discussion.

I think you have to just always set that flag unless you're transmitting
on the operating channel.

johannes





[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux