linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC] Redesigning aggregation on mac80211
@ 2008-09-15 19:03 Luis R. Rodriguez
  2008-09-15 19:15 ` Johannes Berg
  2008-09-16 18:05 ` Ivo van Doorn
  0 siblings, 2 replies; 6+ messages in thread
From: Luis R. Rodriguez @ 2008-09-15 19:03 UTC (permalink / raw)
  To: linux-wireless

We're considering redesigning how aggregation works on mac80211 to
ensure its vendor neutral and to remove as much as redundant code in
drivers. We'd like some feedback from people and driver developers,
even those who haven't *yet* posted their new shiny 11n drivers, like
Marvell or Ralink driver developers.

First let me review the current design and how the different hardware
supported uses aggregation *as I understand it* so far.

I'll start with Atheros hardware and mac80211. Atheros hardware uses 4
main HW queues, one for each AC, and we also have one for beacons,
another for queued stuff after beacon (aka "Crap After Beacon") where
things like queued frames for broadcast / multicast or for frames for
stations in power save mode, and I think another hw queue for uapsd.
Right now mac80211 queues skb's for drivers into the netdev_queues.
Under the current mac80211 design we have 4 netdev_queues, one for
each AC and then there is a number of "aggregation queues". We
essentially just declare one "aggregation" queue as we do our own
queue mapping internally to our own hardware queues -- and that
consist of just mapping frames to each HQ queue as per AC.

Intel's hardware seems to have a hardware scheduler for aggregation
and although it does seem you are sending frames onto a real hardware
queue you are actually passing it to the hardware so it can itself do
the hardware scheduling onto a proper AC queue somewhere or something
(perhaps someone from Intel can elaborate a little more on this). The
Intel drivers make use of the "aggregation queues" more as buffer
space in case of retransmit on failed frames. So these aren't actually
HW queues per se as we thought they were.

We were thinking of just ditching the "aggregation queues" because
they seemed to represent actual hardware queues (and it seems they are
but in a different way) but its now evident the "aggregation queues"
are more useful as a way to move the queuing outside of the driver and
make it part of the stack.

Ivo, are you familiar yet with how aggregation works on Ralink
hardware? Does the new 11n hardware require firmware? Specifically
we're curious about how the hardware queues are managed.

Anyone know about Marvell's stuff? How about Broadcom?

  Luis

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC] Redesigning aggregation on mac80211
  2008-09-15 19:03 [RFC] Redesigning aggregation on mac80211 Luis R. Rodriguez
@ 2008-09-15 19:15 ` Johannes Berg
  2008-09-15 19:25   ` Luis R. Rodriguez
  2008-09-16 18:05 ` Ivo van Doorn
  1 sibling, 1 reply; 6+ messages in thread
From: Johannes Berg @ 2008-09-15 19:15 UTC (permalink / raw)
  To: Luis R. Rodriguez; +Cc: linux-wireless

[-- Attachment #1: Type: text/plain, Size: 1152 bytes --]

On Mon, 2008-09-15 at 12:03 -0700, Luis R. Rodriguez wrote:

> I'll start with Atheros hardware and mac80211. Atheros hardware uses 4
> main HW queues, one for each AC, and we also have one for beacons,
> another for queued stuff after beacon (aka "Crap After Beacon") where
> things like queued frames for broadcast / multicast or for frames for
> stations in power save mode, and I think another hw queue for uapsd.
> Right now mac80211 queues skb's for drivers into the netdev_queues.
> Under the current mac80211 design we have 4 netdev_queues, one for
> each AC and then there is a number of "aggregation queues". We
> essentially just declare one "aggregation" queue as we do our own
> queue mapping internally to our own hardware queues -- and that
> consist of just mapping frames to each HQ queue as per AC.

Except that declaring one "aggregation queue" also limits you to a
single aggregation session, no big deal in STA mode but punishable by
death in AP mode.

> Anyone know about Marvell's stuff? How about Broadcom?

Consider Broadcom's stuff to work just as yours. Details may differ, but
not by much.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC] Redesigning aggregation on mac80211
  2008-09-15 19:15 ` Johannes Berg
@ 2008-09-15 19:25   ` Luis R. Rodriguez
  0 siblings, 0 replies; 6+ messages in thread
From: Luis R. Rodriguez @ 2008-09-15 19:25 UTC (permalink / raw)
  To: Johannes Berg; +Cc: linux-wireless

On Mon, Sep 15, 2008 at 12:15 PM, Johannes Berg
<johannes@sipsolutions.net> wrote:
> On Mon, 2008-09-15 at 12:03 -0700, Luis R. Rodriguez wrote:
>
>> I'll start with Atheros hardware and mac80211. Atheros hardware uses 4
>> main HW queues, one for each AC, and we also have one for beacons,
>> another for queued stuff after beacon (aka "Crap After Beacon") where
>> things like queued frames for broadcast / multicast or for frames for
>> stations in power save mode, and I think another hw queue for uapsd.
>> Right now mac80211 queues skb's for drivers into the netdev_queues.
>> Under the current mac80211 design we have 4 netdev_queues, one for
>> each AC and then there is a number of "aggregation queues". We
>> essentially just declare one "aggregation" queue as we do our own
>> queue mapping internally to our own hardware queues -- and that
>> consist of just mapping frames to each HQ queue as per AC.
>
> Except that declaring one "aggregation queue" also limits you to a
> single aggregation session, no big deal in STA mode but punishable by
> death in AP mode.

Or IBSS/Mesh although I think only IBSS speaks aggregation as per the
specs so far.

  Luis

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC] Redesigning aggregation on mac80211
  2008-09-15 19:03 [RFC] Redesigning aggregation on mac80211 Luis R. Rodriguez
  2008-09-15 19:15 ` Johannes Berg
@ 2008-09-16 18:05 ` Ivo van Doorn
  2008-09-17 22:14   ` Tomas Winkler
  1 sibling, 1 reply; 6+ messages in thread
From: Ivo van Doorn @ 2008-09-16 18:05 UTC (permalink / raw)
  To: Luis R. Rodriguez; +Cc: linux-wireless

Hi,

> We're considering redesigning how aggregation works on mac80211 to
> ensure its vendor neutral and to remove as much as redundant code in
> drivers. We'd like some feedback from people and driver developers,
> even those who haven't *yet* posted their new shiny 11n drivers, like
> Marvell or Ralink driver developers.

Well technically speaking there are 2 Ralink drivers in the Kernel already
which *should* support aggregation (rt61 and rt73).

I'm sorry I have not read the entire thread on the new aggregation support
yet, but I'll write what I know from rt61/rt73/rt2800 here anyway. :)

> Ivo, are you familiar yet with how aggregation works on Ralink
> hardware? Does the new 11n hardware require firmware? Specifically
> we're curious about how the hardware queues are managed.

Ralink defines 4 queues, 1 Management queue (can be abused as regular TX queue)
and a Beacon queue.

There is no such thing as seperate aggregation queues, as soon as the device
wants to perform aggregation it grabs a normal entry from the TX queue,
and assignes all frames to it.

rt61: 5 addresses can be provided for Aggrated frames, I am not sure
if the first is a header only frame or not.
rt73: Not sure what should be done
rt2800: 2 addresses can be provided, where the first is a header/descriptor
only address. In the second address frames can be provided.

Because the aggregated frame is created directly into a TX entry, no other
frames should go through that queue until the aggregated frame has been
completed.

I'm afraid that is currently all the information I got at this time,
It is only a little, but I never got around to fully look into the aggregation support,
although I definately want it implemented in the drivers to increase the
performance a bit. :)

Ivo

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC] Redesigning aggregation on mac80211
  2008-09-16 18:05 ` Ivo van Doorn
@ 2008-09-17 22:14   ` Tomas Winkler
  2008-09-17 22:34     ` Ivo van Doorn
  0 siblings, 1 reply; 6+ messages in thread
From: Tomas Winkler @ 2008-09-17 22:14 UTC (permalink / raw)
  To: Ivo van Doorn; +Cc: Luis R. Rodriguez, linux-wireless, Johannes Berg

On Tue, Sep 16, 2008 at 9:05 PM, Ivo van Doorn <ivdoorn@gmail.com> wrote:
> Hi,
>
>> We're considering redesigning how aggregation works on mac80211 to
>> ensure its vendor neutral and to remove as much as redundant code in
>> drivers. We'd like some feedback from people and driver developers,
>> even those who haven't *yet* posted their new shiny 11n drivers, like
>> Marvell or Ralink driver developers.
>
> Well technically speaking there are 2 Ralink drivers in the Kernel already
> which *should* support aggregation (rt61 and rt73).
>
> I'm sorry I have not read the entire thread on the new aggregation support
> yet, but I'll write what I know from rt61/rt73/rt2800 here anyway. :)
>
>> Ivo, are you familiar yet with how aggregation works on Ralink
>> hardware? Does the new 11n hardware require firmware? Specifically
>> we're curious about how the hardware queues are managed.
>
> Ralink defines 4 queues, 1 Management queue (can be abused as regular TX queue)
> and a Beacon queue.
>
> There is no such thing as seperate aggregation queues, as soon as the device
> wants to perform aggregation it grabs a normal entry from the TX queue,
> and assignes all frames to it.
>
> rt61: 5 addresses can be provided for Aggrated frames, I am not sure
> if the first is a header only frame or not.
> rt73: Not sure what should be done
> rt2800: 2 addresses can be provided, where the first is a header/descriptor
> only address. In the second address frames can be provided.

> Because the aggregated frame is created directly into a TX entry, no other
> frames should go through that queue until the aggregated frame has been
> completed.
>

What type of aggregation is this? AMSDU or AMPDU? In AMPDU you need
somehow handle
out of order resend of the packets.  rt61 and rt2800 looks more like
AMSDU (Not sure) we don't support that in iwlwifi TX side of it yet,
it just doesn't outperform AMPDU aggregation.
Tomas


> I'm afraid that is currently all the information I got at this time,
> It is only a little, but I never got around to fully look into the aggregation support,
> although I definately want it implemented in the drivers to increase the
> performance a bit. :)

Need to find out what kind of aggregation the cards support. For TX
AMSDU we need add more code into mac80211, the AMSDU sub frames have
14 bytes (eth) headers.

Thanks
Tomas

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [RFC] Redesigning aggregation on mac80211
  2008-09-17 22:14   ` Tomas Winkler
@ 2008-09-17 22:34     ` Ivo van Doorn
  0 siblings, 0 replies; 6+ messages in thread
From: Ivo van Doorn @ 2008-09-17 22:34 UTC (permalink / raw)
  To: Tomas Winkler; +Cc: Luis R. Rodriguez, linux-wireless, Johannes Berg

On Thursday 18 September 2008, Tomas Winkler wrote:
> On Tue, Sep 16, 2008 at 9:05 PM, Ivo van Doorn <ivdoorn@gmail.com> wrote:
> > Hi,
> >
> >> We're considering redesigning how aggregation works on mac80211 to
> >> ensure its vendor neutral and to remove as much as redundant code in
> >> drivers. We'd like some feedback from people and driver developers,
> >> even those who haven't *yet* posted their new shiny 11n drivers, like
> >> Marvell or Ralink driver developers.
> >
> > Well technically speaking there are 2 Ralink drivers in the Kernel already
> > which *should* support aggregation (rt61 and rt73).
> >
> > I'm sorry I have not read the entire thread on the new aggregation support
> > yet, but I'll write what I know from rt61/rt73/rt2800 here anyway. :)
> >
> >> Ivo, are you familiar yet with how aggregation works on Ralink
> >> hardware? Does the new 11n hardware require firmware? Specifically
> >> we're curious about how the hardware queues are managed.
> >
> > Ralink defines 4 queues, 1 Management queue (can be abused as regular TX queue)
> > and a Beacon queue.
> >
> > There is no such thing as seperate aggregation queues, as soon as the device
> > wants to perform aggregation it grabs a normal entry from the TX queue,
> > and assignes all frames to it.
> >
> > rt61: 5 addresses can be provided for Aggrated frames, I am not sure
> > if the first is a header only frame or not.
> > rt73: Not sure what should be done
> > rt2800: 2 addresses can be provided, where the first is a header/descriptor
> > only address. In the second address frames can be provided.
> 
> > Because the aggregated frame is created directly into a TX entry, no other
> > frames should go through that queue until the aggregated frame has been
> > completed.
> >
> 
> What type of aggregation is this? AMSDU or AMPDU? In AMPDU you need
> somehow handle
> out of order resend of the packets.  rt61 and rt2800 looks more like
> AMSDU (Not sure) we don't support that in iwlwifi TX side of it yet,
> it just doesn't outperform AMPDU aggregation.
> Tomas

It is a bit confusing since comments, variable names are a conflicting eachother
in the legacy driver code. Comments state MSDU where variables are named MPDU
and later the same variable is accompanies with comments regarding MPDU.

I really have to look deeper in the actual implementation to see what the driver
is doing exactly before I can answer the question what aggregation it is using.

> > I'm afraid that is currently all the information I got at this time,
> > It is only a little, but I never got around to fully look into the aggregation support,
> > although I definately want it implemented in the drivers to increase the
> > performance a bit. :)
> 
> Need to find out what kind of aggregation the cards support. For TX
> AMSDU we need add more code into mac80211, the AMSDU sub frames have
> 14 bytes (eth) headers.

Ivo

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-09-17 22:34 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-15 19:03 [RFC] Redesigning aggregation on mac80211 Luis R. Rodriguez
2008-09-15 19:15 ` Johannes Berg
2008-09-15 19:25   ` Luis R. Rodriguez
2008-09-16 18:05 ` Ivo van Doorn
2008-09-17 22:14   ` Tomas Winkler
2008-09-17 22:34     ` Ivo van Doorn

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).