net/mlx4: optimize Tx multi-segment case
authorMatan Azrad <matan@mellanox.com>
Wed, 6 Dec 2017 17:57:52 +0000 (17:57 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 16 Jan 2018 17:47:49 +0000 (18:47 +0100)
commit673800facc63d5bf61cf5632d3db9d6318506b3d
treecb9834a8a7b2fdb61dae33aed66e2460a994d5b1
parent818f1e7c2360421406848579b8ddc8430ba68dcb
net/mlx4: optimize Tx multi-segment case

mlx4 Tx block can handle up to 4 data segments or control segment + up
to 3 data segments. The first data segment in each not first Tx block
must validate Tx queue wraparound and must use IO memory barrier before
writing the byte count.

The previous multi-segment code used "for" loop to iterate over all
packet segments and separated first Tx block data case by "if"
statements.

Use switch case and unconditional branches instead of "for" loop can
optimize the case and prevents the unnecessary checks for each data
segment; This hints to compiler to create optimized jump table.

Optimize this case by switch case and unconditional branches usage.

Signed-off-by: Matan Azrad <matan@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
drivers/net/mlx4/mlx4_rxtx.c