On 04/11/2013 02:19 AM, Johannes Berg wrote:
On Tue, 2013-04-09 at 10:54 -0700, Ben Greear wrote:
Another question: Have you thought about hashing the virtual interfaces instead of the stations, and then hashing the stations inside each virtual interface? That would make it a bit of a two-level thing: A1 (in the frame) -> virtual interface A2 (frame) -> station But it would address the TX side efficiently without "some_sta" since you know the virtual interface there already, and could potentially have less impact on the code? On TX it'd actually even be more efficient if you have more than 1 station per interface (right now you don't though)
A two-level hash might be helpful, but it might complicate the rx logic a bit because at least in many cases you have to walk all sta in all sdata, so would be some sort of double-loop. Not that bad though, and performance wise it should be similar. Doing per-sdata hash should also fix bad vhash collisions (such as if stations change a high-order part of their MAC and leave the lowest octet the same). On tx, if we assume good hash spread, then it should also have good performance, and there is no case I can think of where having multiple sta per station VIF would be needed, so very unlikely to have bad hash performance. But a question on all of this: Are you assuming the current sta_hash on the wiphy stays the same, or would you want it moved into the sdata as well? I'd be willing to try it if you think it might be worth pushing the result upstream. If it's not going upstream anyway, then I'll probably just stick with my some-sta and vhash patches at least until they start conflicting bad enough with upstream to be worth re-visiting. Thanks, Ben -- Ben Greear <greearb@xxxxxxxxxxxxxxx> Candela Technologies Inc http://www.candelatech.com -- 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