linux/drivers/net
Eric Dumazet 9e29e21a9b ifb: add multiqueue operation
Add multiqueue capabilities to ifb netdevice.

This removes last bottleneck for ingress when mq qdisc can be used
to shard load from multiple RX queues on physical device.

Tested:

# netem based setup, installed at receiver side
ETH=eth0
IFB=ifb10
EST="est 1sec 4sec" # Optional rate estimator
RTT_HALF=2ms
#REORDER=20us
#LOSS="loss 1"
TXQ=8

ip link add ifb10 numtxqueues $TXQ type ifb
ip link set dev $IFB up

tc qdisc add dev $ETH ingress 2>/dev/null

tc filter add dev $ETH parent ffff: \
   protocol ip u32 match u32 0 0 flowid 1:1 \
	action mirred egress redirect dev $IFB

tc qdisc del dev $IFB root 2>/dev/null

tc qdisc add dev $IFB root handle 1: mq
for i in `seq 1 $TXQ`
do
 slot=$( printf %x $(( i )) )
 tc qd add dev $IFB parent 1:$slot $EST netem \
	limit 100000 delay $RTT_HALF $REORDER $LOSS
done

lpaa24:~# tc -s -d qd sh dev ifb10
qdisc mq 1: root
 Sent 316544766 bytes 5265927 pkt (dropped 0, overlimits 0 requeues 0)
 backlog 98880b 1648p requeues 0
qdisc netem 8002: parent 1:1 limit 100000 delay 2.0ms
 Sent 39601416 bytes 658721 pkt (dropped 0, overlimits 0 requeues 0)
 rate 38235Kbit 79657pps backlog 12240b 204p requeues 0
qdisc netem 8003: parent 1:2 limit 100000 delay 2.0ms
 Sent 39472866 bytes 657227 pkt (dropped 0, overlimits 0 requeues 0)
 rate 38234Kbit 79655pps backlog 10620b 176p requeues 0
qdisc netem 8004: parent 1:3 limit 100000 delay 2.0ms
 Sent 39703417 bytes 659699 pkt (dropped 0, overlimits 0 requeues 0)
 rate 38320Kbit 79831pps backlog 12780b 213p requeues 0
qdisc netem 8005: parent 1:4 limit 100000 delay 2.0ms
 Sent 39565149 bytes 658011 pkt (dropped 0, overlimits 0 requeues 0)
 rate 38174Kbit 79530pps backlog 11880b 198p requeues 0
qdisc netem 8006: parent 1:5 limit 100000 delay 2.0ms
 Sent 39506078 bytes 657354 pkt (dropped 0, overlimits 0 requeues 0)
 rate 38195Kbit 79571pps backlog 12480b 208p requeues 0
qdisc netem 8007: parent 1:6 limit 100000 delay 2.0ms
 Sent 39675994 bytes 658849 pkt (dropped 0, overlimits 0 requeues 0)
 rate 38323Kbit 79838pps backlog 12600b 210p requeues 0
qdisc netem 8008: parent 1:7 limit 100000 delay 2.0ms
 Sent 39532042 bytes 658367 pkt (dropped 0, overlimits 0 requeues 0)
 rate 38177Kbit 79536pps backlog 13140b 219p requeues 0
qdisc netem 8009: parent 1:8 limit 100000 delay 2.0ms
 Sent 39488164 bytes 657705 pkt (dropped 0, overlimits 0 requeues 0)
 rate 38192Kbit 79568pps backlog 13Kb 222p requeues 0

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Alexei Starovoitov <ast@plumgrid.com>
Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Cc: John Fastabend <john.fastabend@gmail.com>
Acked-by: Alexei Starovoitov <ast@plumgrid.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-07-08 16:00:09 -07:00
..
appletalk
arcnet drivers/net: remove all references to obsolete Ethernet-HOWTO 2015-06-23 06:50:35 -07:00
bonding bonding: Display LACP info only to CAP_NET_ADMIN capable user 2015-06-23 03:11:52 -07:00
caif
can Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-06-24 02:58:51 -07:00
cris
dsa dsa: mv88x6xxx: Zero statistics counters 2015-06-23 06:37:17 -07:00
ethernet cxgb4: Add PCI device ids for few more T5 and T6 adapters 2015-07-08 15:53:11 -07:00
fddi fddi: print an address with %p format specifier rather than %x 2015-06-07 00:31:22 -07:00
hamradio netfilter: Remove spurios included of netfilter.h 2015-06-18 21:14:32 +02:00
hippi
hyperv Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2015-06-24 16:49:49 -07:00
ieee802154 at86rf230: cleanup start and stop callbacks 2015-06-16 18:55:11 +02:00
ipvlan
irda
phy net: phy: mdio-bcm-unimac: workaround initial read failures for integrated PHYs 2015-06-28 20:28:20 -07:00
plip
ppp netfilter: Remove spurios included of netfilter.h 2015-06-18 21:14:32 +02:00
slip
team
usb
vmxnet3 vmxnet3: Bump up driver version number 2015-06-29 09:27:45 -07:00
wan netfilter: Remove spurios included of netfilter.h 2015-06-18 21:14:32 +02:00
wimax
wireless Minor merge needed, due to function move. 2015-07-01 10:49:25 -07:00
xen-netback xen-netback: remove duplicated function definition 2015-07-08 14:12:53 -07:00
dummy.c
eql.c
geneve.c
ifb.c ifb: add multiqueue operation 2015-07-08 16:00:09 -07:00
Kconfig
LICENSE.SRC
loopback.c
macvlan.c
macvtap.c macvtap: Increase limit of macvtap queues 2015-06-23 06:14:04 -07:00
Makefile
mdio.c
mii.c
netconsole.c netconsole: implement extended console support 2015-06-25 17:00:39 -07:00
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c
sungem_phy.c
tun.c
veth.c
virtio_net.c
vxlan.c
xen-netfront.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-07-01 14:58:07 -07:00