* Re: iwlagn aggregation problem when stations are removed/re-added quickly
[not found] <BANLkTiki+y2uoeyqX7BE0W+7RA9hHhgTLA@mail.gmail.com>
@ 2011-06-08 11:07 ` Johannes Berg
2011-06-08 14:37 ` wwguy
0 siblings, 1 reply; 5+ messages in thread
From: Johannes Berg @ 2011-06-08 11:07 UTC (permalink / raw)
To: Daniel Halperin; +Cc: ipw3945-devel, linux-wireless, Wey-Yi W Guy
On Fri, 2011-05-13 at 15:56 -0700, Daniel Halperin wrote:
> I'm running an experiment where a client connects to the AP (both HT
> iwlagn devices), starts a large transfer that gets aggregation going,
> disassociates, and then reassociates and restarts the transfer.
>
> When mac80211 stops the queue (as part of the client's disassocation
> process), it goes into the following code:
>
> IWL_DEBUG_HT(priv, "Stopping a non empty AGG HW QUEUE\n");
> priv->stations[sta_id].tid[tid].agg.state =
> IWL_EMPTYING_HW_QUEUE_DELBA;
> spin_unlock_irqrestore(&priv->sta_lock, flags);
>
> but if the station is removed right away the packets stay in the
> queue. Indeed, when the client reconnects, the packets are then
> delivered! But then the queue gets stuck and the AP issues a firmware
> reset, which doesn't actually get traffic flowing again. Below,
> there's a log with IWL_DL_HT set. It may be something racy; adding
> DL_INFO and DL_MAC80211 I haven't been able to reproduce the bug yet
> in a few tries.
>
> I suspect this will also be a problem with P2P, and not just my klugey
> use of AP mode. Any suggestions as to how to fix?
Sorry I'm replying this late. I'm not sure what the best way to fix it
would be, but it makes sense that this would happen. Maybe we can flush
the aggregation queue (asking the ucode to drop all frames) when the
station is removed, but I'm not sure how we'd do that -- Wey-Yi do you
know if that's possible?
johannes
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: iwlagn aggregation problem when stations are removed/re-added quickly
2011-06-08 11:07 ` iwlagn aggregation problem when stations are removed/re-added quickly Johannes Berg
@ 2011-06-08 14:37 ` wwguy
2011-06-08 14:53 ` Johannes Berg
0 siblings, 1 reply; 5+ messages in thread
From: wwguy @ 2011-06-08 14:37 UTC (permalink / raw)
To: Johannes Berg
Cc: Daniel Halperin, ipw3945-devel@lists.sourceforge.net,
linux-wireless
On Wed, 2011-06-08 at 04:07 -0700, Johannes Berg wrote:
> On Fri, 2011-05-13 at 15:56 -0700, Daniel Halperin wrote:
>
> > I'm running an experiment where a client connects to the AP (both HT
> > iwlagn devices), starts a large transfer that gets aggregation going,
> > disassociates, and then reassociates and restarts the transfer.
> >
> > When mac80211 stops the queue (as part of the client's disassocation
> > process), it goes into the following code:
> >
> > IWL_DEBUG_HT(priv, "Stopping a non empty AGG HW QUEUE\n");
> > priv->stations[sta_id].tid[tid].agg.state =
> > IWL_EMPTYING_HW_QUEUE_DELBA;
> > spin_unlock_irqrestore(&priv->sta_lock, flags);
> >
> > but if the station is removed right away the packets stay in the
> > queue. Indeed, when the client reconnects, the packets are then
> > delivered! But then the queue gets stuck and the AP issues a firmware
> > reset, which doesn't actually get traffic flowing again. Below,
> > there's a log with IWL_DL_HT set. It may be something racy; adding
> > DL_INFO and DL_MAC80211 I haven't been able to reproduce the bug yet
> > in a few tries.
> >
> > I suspect this will also be a problem with P2P, and not just my klugey
> > use of AP mode. Any suggestions as to how to fix?
>
> Sorry I'm replying this late. I'm not sure what the best way to fix it
> would be, but it makes sense that this would happen. Maybe we can flush
> the aggregation queue (asking the ucode to drop all frames) when the
> station is removed, but I'm not sure how we'd do that -- Wey-Yi do you
> know if that's possible?
>
flush the queue might be a good solution, I was being told (I don't
remember who and when which is bad), the "tx flush" command is needed
especially for P2P
btw, there are 2 type of "tx flush", flush all the frames in uCode, or
just flush the frames in specified queue.
Thanks
Wey
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: iwlagn aggregation problem when stations are removed/re-added quickly
2011-06-08 14:37 ` wwguy
@ 2011-06-08 14:53 ` Johannes Berg
2011-06-08 15:11 ` wwguy
0 siblings, 1 reply; 5+ messages in thread
From: Johannes Berg @ 2011-06-08 14:53 UTC (permalink / raw)
To: wwguy; +Cc: Daniel Halperin, ipw3945-devel@lists.sourceforge.net,
linux-wireless
On Wed, 2011-06-08 at 07:37 -0700, wwguy wrote:
> On Wed, 2011-06-08 at 04:07 -0700, Johannes Berg wrote:
> > On Fri, 2011-05-13 at 15:56 -0700, Daniel Halperin wrote:
> >
> > > I'm running an experiment where a client connects to the AP (both HT
> > > iwlagn devices), starts a large transfer that gets aggregation going,
> > > disassociates, and then reassociates and restarts the transfer.
> > >
> > > When mac80211 stops the queue (as part of the client's disassocation
> > > process), it goes into the following code:
> > >
> > > IWL_DEBUG_HT(priv, "Stopping a non empty AGG HW QUEUE\n");
> > > priv->stations[sta_id].tid[tid].agg.state =
> > > IWL_EMPTYING_HW_QUEUE_DELBA;
> > > spin_unlock_irqrestore(&priv->sta_lock, flags);
> > >
> > > but if the station is removed right away the packets stay in the
> > > queue. Indeed, when the client reconnects, the packets are then
> > > delivered! But then the queue gets stuck and the AP issues a firmware
> > > reset, which doesn't actually get traffic flowing again. Below,
> > > there's a log with IWL_DL_HT set. It may be something racy; adding
> > > DL_INFO and DL_MAC80211 I haven't been able to reproduce the bug yet
> > > in a few tries.
> > >
> > > I suspect this will also be a problem with P2P, and not just my klugey
> > > use of AP mode. Any suggestions as to how to fix?
> >
> > Sorry I'm replying this late. I'm not sure what the best way to fix it
> > would be, but it makes sense that this would happen. Maybe we can flush
> > the aggregation queue (asking the ucode to drop all frames) when the
> > station is removed, but I'm not sure how we'd do that -- Wey-Yi do you
> > know if that's possible?
> >
> flush the queue might be a good solution, I was being told (I don't
> remember who and when which is bad), the "tx flush" command is needed
> especially for P2P
>
> btw, there are 2 type of "tx flush", flush all the frames in uCode, or
> just flush the frames in specified queue.
Right, but the flush seems to be implemented per FIFO and queue, so it's
a bit confusing. In this case we should drop all frames out of the
aggretgaiton queue.
johannes
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: iwlagn aggregation problem when stations are removed/re-added quickly
2011-06-08 14:53 ` Johannes Berg
@ 2011-06-08 15:11 ` wwguy
2011-06-27 15:41 ` Daniel Halperin
0 siblings, 1 reply; 5+ messages in thread
From: wwguy @ 2011-06-08 15:11 UTC (permalink / raw)
To: Johannes Berg
Cc: Daniel Halperin, ipw3945-devel@lists.sourceforge.net,
linux-wireless
On Wed, 2011-06-08 at 07:53 -0700, Johannes Berg wrote:
> On Wed, 2011-06-08 at 07:37 -0700, wwguy wrote:
> > On Wed, 2011-06-08 at 04:07 -0700, Johannes Berg wrote:
> > > On Fri, 2011-05-13 at 15:56 -0700, Daniel Halperin wrote:
> > >
> > > > I'm running an experiment where a client connects to the AP (both HT
> > > > iwlagn devices), starts a large transfer that gets aggregation going,
> > > > disassociates, and then reassociates and restarts the transfer.
> > > >
> > > > When mac80211 stops the queue (as part of the client's disassocation
> > > > process), it goes into the following code:
> > > >
> > > > IWL_DEBUG_HT(priv, "Stopping a non empty AGG HW QUEUE\n");
> > > > priv->stations[sta_id].tid[tid].agg.state =
> > > > IWL_EMPTYING_HW_QUEUE_DELBA;
> > > > spin_unlock_irqrestore(&priv->sta_lock, flags);
> > > >
> > > > but if the station is removed right away the packets stay in the
> > > > queue. Indeed, when the client reconnects, the packets are then
> > > > delivered! But then the queue gets stuck and the AP issues a firmware
> > > > reset, which doesn't actually get traffic flowing again. Below,
> > > > there's a log with IWL_DL_HT set. It may be something racy; adding
> > > > DL_INFO and DL_MAC80211 I haven't been able to reproduce the bug yet
> > > > in a few tries.
> > > >
> > > > I suspect this will also be a problem with P2P, and not just my klugey
> > > > use of AP mode. Any suggestions as to how to fix?
> > >
> > > Sorry I'm replying this late. I'm not sure what the best way to fix it
> > > would be, but it makes sense that this would happen. Maybe we can flush
> > > the aggregation queue (asking the ucode to drop all frames) when the
> > > station is removed, but I'm not sure how we'd do that -- Wey-Yi do you
> > > know if that's possible?
> > >
> > flush the queue might be a good solution, I was being told (I don't
> > remember who and when which is bad), the "tx flush" command is needed
> > especially for P2P
> >
> > btw, there are 2 type of "tx flush", flush all the frames in uCode, or
> > just flush the frames in specified queue.
>
> Right, but the flush seems to be implemented per FIFO and queue, so it's
> a bit confusing. In this case we should drop all frames out of the
> aggretgaiton queue.
>
It is confuse, it will drop all the frames on the request queues
flush_cmd.fifo_control = IWL_TX_FIFO_VO_MSK | IWL_TX_FIFO_VI_MSK |
IWL_TX_FIFO_BE_MSK | IWL_TX_FIFO_BK_MSK;
if (priv->cfg->sku & EEPROM_SKU_CAP_11N_ENABLE)
flush_cmd.fifo_control |= IWL_AGG_TX_QUEUE_MSK;
But it did not consider different context, I will submit a separate
patch to fix it
Wey
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: iwlagn aggregation problem when stations are removed/re-added quickly
2011-06-08 15:11 ` wwguy
@ 2011-06-27 15:41 ` Daniel Halperin
0 siblings, 0 replies; 5+ messages in thread
From: Daniel Halperin @ 2011-06-27 15:41 UTC (permalink / raw)
To: wwguy; +Cc: Johannes Berg, ipw3945-devel@lists.sourceforge.net,
linux-wireless
On Wed, Jun 8, 2011 at 8:11 AM, wwguy <wey-yi.w.guy@intel.com> wrote:
> On Wed, 2011-06-08 at 07:53 -0700, Johannes Berg wrote:
>> On Wed, 2011-06-08 at 07:37 -0700, wwguy wrote:
>> > On Wed, 2011-06-08 at 04:07 -0700, Johannes Berg wrote:
>> > > On Fri, 2011-05-13 at 15:56 -0700, Daniel Halperin wrote:
>> > >
>> > > > I'm running an experiment where a client connects to the AP (both HT
>> > > > iwlagn devices), starts a large transfer that gets aggregation going,
>> > > > disassociates, and then reassociates and restarts the transfer.
>> > > >
>> > > > When mac80211 stops the queue (as part of the client's disassocation
>> > > > process), it goes into the following code:
>> > > >
>> > > > IWL_DEBUG_HT(priv, "Stopping a non empty AGG HW QUEUE\n");
>> > > > priv->stations[sta_id].tid[tid].agg.state =
>> > > > IWL_EMPTYING_HW_QUEUE_DELBA;
>> > > > spin_unlock_irqrestore(&priv->sta_lock, flags);
>> > > >
>> > > > but if the station is removed right away the packets stay in the
>> > > > queue. Indeed, when the client reconnects, the packets are then
>> > > > delivered! But then the queue gets stuck and the AP issues a firmware
>> > > > reset, which doesn't actually get traffic flowing again. Below,
>> > > > there's a log with IWL_DL_HT set. It may be something racy; adding
>> > > > DL_INFO and DL_MAC80211 I haven't been able to reproduce the bug yet
>> > > > in a few tries.
>> > > >
>> > > > I suspect this will also be a problem with P2P, and not just my klugey
>> > > > use of AP mode. Any suggestions as to how to fix?
>> > >
>> > > Sorry I'm replying this late. I'm not sure what the best way to fix it
>> > > would be, but it makes sense that this would happen. Maybe we can flush
>> > > the aggregation queue (asking the ucode to drop all frames) when the
>> > > station is removed, but I'm not sure how we'd do that -- Wey-Yi do you
>> > > know if that's possible?
>> > >
>> > flush the queue might be a good solution, I was being told (I don't
>> > remember who and when which is bad), the "tx flush" command is needed
>> > especially for P2P
>> >
>> > btw, there are 2 type of "tx flush", flush all the frames in uCode, or
>> > just flush the frames in specified queue.
>>
>> Right, but the flush seems to be implemented per FIFO and queue, so it's
>> a bit confusing. In this case we should drop all frames out of the
>> aggretgaiton queue.
>>
>
> It is confuse, it will drop all the frames on the request queues
>
> flush_cmd.fifo_control = IWL_TX_FIFO_VO_MSK | IWL_TX_FIFO_VI_MSK |
> IWL_TX_FIFO_BE_MSK | IWL_TX_FIFO_BK_MSK;
> if (priv->cfg->sku & EEPROM_SKU_CAP_11N_ENABLE)
> flush_cmd.fifo_control |= IWL_AGG_TX_QUEUE_MSK;
>
> But it did not consider different context, I will submit a separate
> patch to fix it
Hi Wey-yi and Johannes,
You must have some docs I don't have because I can't quite figure out
what you're talking about. Is there any progress on this issue? I'd be
happy to test any changes for you.
Dan
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-06-27 15:42 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <BANLkTiki+y2uoeyqX7BE0W+7RA9hHhgTLA@mail.gmail.com>
2011-06-08 11:07 ` iwlagn aggregation problem when stations are removed/re-added quickly Johannes Berg
2011-06-08 14:37 ` wwguy
2011-06-08 14:53 ` Johannes Berg
2011-06-08 15:11 ` wwguy
2011-06-27 15:41 ` Daniel Halperin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).