On 2013-07-26 5:22 PM, Ben Greear wrote: > On 07/26/2013 02:56 AM, Felix Fietkau wrote: >> On 2013-07-26 10:53 AM, Johannes Berg wrote: >>> On Thu, 2013-07-11 at 08:29 -0700, Ben Greear wrote: >>> >>>>> I also don't like maintaining two separate hash tables and all that. >>>>> >>>>> I'd reconsider if you actually remove the hash entirely, but that'll be >>>>> tricky to walk the station list and will quite possibly make the RX path >>>>> there more expensive? >>>> >>>> Remove local->sta_hash ? >>> >>> To be honest, I'm undecided. Yes, I was thinking that, but I also think >>> having a huge hashtable like that for each virtual interface is way >>> overkill, in particular for station interfaces that usually have one >>> peer (the AP) and maybe a few TDLS peers. Or P2P-Device interfaces that >>> have no peers at all ... >>> >>> I don't see a good way to improve the hash either, since we don't always >>> (e.g. in RX path) have the interface address. >> How about mixing in the interface address into the hash. Theoretically >> you should always have that available, even in the rx path. Multicast >> data packets contain the BSSID, so you can get the address from there. >> You just need to be careful about checking the DS bits to figure out >> which address to use ;) >> I think this is a much better solution than duplicating the hash, or >> moving it into sdata entirely. > > I think I could probably get rid of the big global per wiphy hash and > use the per-wiphy sdata-hash and per-sdata station hashes. > > To me, that is cleanest because it gives a nice ownership relationship > between wiphy, sdata, and stations. > > For what it's worth, my hashing scheme has been working well on highly > loaded APs and Station machines. The global hash (with added vif-addr mixing) not only completely fixes the many-STA-vif case, also has some other advantages compared to the per-sdata hash: - Lookup is easier in setups with multiple AP VLANs - Better cache footprint (especially important for small embedded devices). - You don't need a separate sdata lookup before the sta lookup. I'm not convinced that keeping separate hashes is cleaner. Especially in the AP_VLAN case, ownership is not clear in any way, since there's some overlap between multiple sdata entities (belonging to the same BSS). - Felix -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html