Re: [PATCH] ehea: Optional TX/RX path optimized for SMP



This patch introduces an optional alternative receive processing
functionality (enabled via module load parameter). The ehea adapter
can sort TCP traffic to multiple receive queues to be processed by
the driver in parallel on multiple CPUs. The hardware always puts
packets for an individual tcp stream on the same queue. As the
current NAPI interface does not allow to handle parallel receive
threads for a single adapter (processing on multiple CPUs in parallel)
this patch uses tasklets with a simple fairness algorithm instead.
On the send side we also take advantage of ehea's multiple send queue
capabilites. A simple hash function in combination with the LL_TX
attribute allows to process tx-packets on multiple CPUs on different
queues. The hash function is needed to guarantee proper TCP packet
ordering. This alternative packet processing functionality leads to
significant performance improvements with ehea.

Why make this a module option that the user has to set? Are there any
circumstances when someone wouldn't want "significant performance
improvements?" If this approach is just better, then it should just
replace the old code.

Also, as far as the approach of using tasklets, I think it would be
better to use the "fake netdev" approach to continue to use NAPI.
Basically you create a pseudo-netdev for each receive queue and have
NAPI handle the polling for you -- you could look for
drivers/net/cxgb3 for an example of this.

- R.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: Cpp Considered Harmful
    ... was received would push it on the queue. ... It's main advantages are the multiple use ... research and experience into concurrency and system design in order to ... Threads share memory, the problem is they share all memory (well not ...
    (comp.lang.cpp)
  • Re: Is this group dying?
    ... Problem/Question: ... I like the producer/consumer abstraction a lot, ... really see how it could work with multiple producers or multiple ... Once the notification is put in place (in a queue, ...
    (comp.programming.threads)
  • Re: Taking a single large .cs file and making many smaller .cs fil
    ... If this were true why have any indirection at all, ... Oriented even if written in an OO language, functionality and code is ... "Adding a layer of indirection always creates more ... if there are multiple files then it's harder to keep ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Puzzling Printing Problem - Help! (contd)
    ... >stay in the queue like that, ... >and re-installed the entire printing system. ... So it is not a size problem per se - but relating to multiple large ... one hangs and the third runs when you kill the first one, ...
    (comp.unix.sco.misc)
  • Re: moving data from one place to another in a text file
    ... Create a queue per thread. ... > parser as a dealer distributing cards to the multiple players. ... will always want to overclock as many CPUs as they can supply Liquid ... Java may well support multi-threading, but that does not mean that it ...
    (comp.lang.cobol)