[rt2x00-users] [OpenWrt-Devel] rt61pci performance
Ivo Van Doorn
ivdoorn at gmail.com
Wed Oct 27 18:53:06 UTC 2010
Hi,
>> >> My platform SoC is MIPS32 4Kc core which does not seem to do
>> >> profiling... I wonder if some reports made on different machine would
>> >> help steer me in the correct direction, and if anyone has access to
>> >> rt61pci that could do this..
>
> In order to optimize rt2x00 we should first concentrate on the hotpaths (RX
> and TX).
>
> I've just reviewed the TX code and the TX descriptor handling seems to consume
> more CPU then necessary. At least all TX descriptor fields are always filled
> even though a device won't need all of these (for exampe rt2800 doesn't care
> about some older fields like the plcp settings).
>
> Furthermore the tx descriptor gets filled with data like cw_min and aifs which
> is also available to the drivers through the queue struct and also is not used
> by all drivers.
>
> And third some bits in the tx descriptor flags are just "copied" from the tx
> info provided by mac80211. For example:
>
> 327 if (!(tx_info->flags & IEEE80211_TX_CTL_NO_ACK))
> 328 __set_bit(ENTRY_TXD_ACK, &txdesc->flags);
>
> The reason for generating the tx descriptor first is that different hw drivers
> share parts of the tx descriptor handling and it doesn't make sense for example
> to calculate the plcp settings in each driver on its own.
>
> Hence, I'd suggest the following (at least in the long run):
> 1) Remove information from the tx desciptor that can be easily retrieved from
> some other struct (like the queue parameters) -> easy.
Sounds good. This should indeed be reasonably easy to do, without obscuring
the interface too much.
> 2) Remove the tx descriptor but provide functions in rt2x00queue to generate
> the fields in a central place and only the needed ones from the according
> drivers.
PLCP should actually be moved to mac80211, since I think the values or
802.11 standard rather then device specific.
> Btw. is the tx info provided by mac80211 still available when calling the
> drivers write_tx_desc function?
Not 100% sure, but I don't think so.
Ivo
More information about the users
mailing list