This set of patches implements the batching xmit capability, and adds support
for batching in IPoIB and E1000 (E1000 driver changes is ported, thanks to
changes taken from Jamal's code from an old kernel).

List of changes from previous revision:
----------------------------------------
1. [Dave] Enable batching as default (change in register_netdev).
2. [Randy] Update documentation (however ethtool cmd to get/set batching is
        not implemented, hence I am guessing the usage).
3. [KK] When changing tx_batch_skb, qdisc xmits need to be blocked since
        qdisc_restart() drops queue_lock before calling driver xmit, and
        driver could find blist change under it.
4. [KK] sched: requeue could wrongly requeue skb already put in the batching
        list (in case a single skb was sent to the device but not sent as the
        device was full, resulting in the skb getting added to blist). This
        also results in slight optimization of batching behavior where for
        getting skbs #2 onwards don't require to check for gso_skb as that
        is the first skb that is processed.
4. [KK] Change documentation to explain this behavior.
5. [KK] sched: Fix panic when GSO is enabled in driver.
6. [KK] IPoIB: Small optimization in ipoib_ib_handle_tx_wc
7. [KK] netdevice: Needed to change NETIF_F_GSO_SHIFT/NETIF_F_GSO_MASK as
        BATCH_SKBS is now defined as 65536 (earlier it was using 8192 which
        was taken up by NETIF_F_NETNS_LOCAL).


Will submit in the next 1-2 days:
---------------------------------
1. [Auke] Enable batching in e1000e.


Extras that I can do later:
---------------------------
1. [Patrick] Use skb_blist statically in netdevice. This could also be used
        to integrate GSO and batching.
2. [Evgeniy] Useful to splice lists dev_add_skb_to_blist (and this can be
        done for regular xmit's of GSO skbs too for #1 above).

Patches are described as:
                 Mail 0/10:  This mail
                 Mail 1/10:  HOWTO documentation
                 Mail 2/10:  Introduce skb_blist, NETIF_F_BATCH_SKBS, use
                             single API for batching/no-batching, etc.
                 Mail 3/10:  Modify qdisc_run() to support batching
                 Mail 4/10:  Add ethtool support to enable/disable batching
                 Mail 5/10:  IPoIB: Header file changes to use batching
                 Mail 6/10:  IPoIB: CM & Multicast changes
                 Mail 7/10:  IPoIB: Verbs changes to use batching
                 Mail 8/10:  IPoIB: Internal post and work completion handler
                 Mail 9/10:  IPoIB: Implement the new batching capability
                 Mail 10/10: E1000: Implement the new batching capability

Issues:
--------
The retransmission problem reported earlier seems to happen when mthca is
used as the underlying device, but when I tested ehca the retransmissions
dropped to normal levels (around 2 times the regular code). The performance
improvement is around 55% for TCP.

Please review and provide feedback; and consider for inclusion.

Thanks,

- KK

----------------------------------------------------
                        TCP
                        ----
Size:32 Procs:1         2728    3544    29.91
Size:128 Procs:1        11803   13679   15.89
Size:512 Procs:1        43279   49665   14.75
Size:4096 Procs:1       147952  101246  -31.56
Size:16384 Procs:1      149852  141897  -5.30

Size:32 Procs:4         10562   11349   7.45
Size:128 Procs:4        41010   40832   -.43
Size:512 Procs:4        75374   130943  73.72
Size:4096 Procs:4       167996  368218  119.18
Size:16384 Procs:4      123176  379524  208.11

Size:32 Procs:8         21125   21990   4.09
Size:128 Procs:8        77419   78605   1.53
Size:512 Procs:8        234678  265047  12.94
Size:4096 Procs:8       218063  367604  68.57
Size:16384 Procs:8      184283  370972  101.30

Average:        1509300 -> 2345115 = 55.38%
----------------------------------------------------
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to