net/bonding: fix possible unbalanced packet receiving
authorRongQing Li <lirongqing@baidu.com>
Tue, 22 Sep 2020 10:29:31 +0000 (18:29 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 16 Oct 2020 17:18:47 +0000 (19:18 +0200)
commit97602faa9e03c91465fc55f5464762796ce641c7
treecc1e1f410675df8a479c4ca76b2bcc2397e45999
parentdf655504e33b5e66ad21df4b33fd6eea00a624fe
net/bonding: fix possible unbalanced packet receiving

Current Rx round robin policy for the slaves has two issue:

1. active_slave in bond_dev_private is shared by multiple PMDS which
   maybe cause some slave Rx hungry, for example, there is two PMD and
   two slave port, both PMDs start to receive, and see that active_slave
   is 0, and receive from slave 0, after complete, they increase
   active_slave by one, totally active_slave are increased by two, next
   time, they will start to receive from slave 0 again, at last, slave 1
   maybe drop packets during to not be polled by PMD

2. active_slave is shared and written by multiple PMD in RX path for
   every time RX, this is a kind of cache false share, low performance.

So move active_slave from bond_dev_private to bond_rx_queue make it as
per queue variable

Fixes: ae2a04864a9a ("net/bonding: reduce slave starvation on Rx poll")
Cc: stable@dpdk.org
Signed-off-by: RongQing Li <lirongqing@baidu.com>
Signed-off-by: Dongsheng Rong <rongdongsheng@baidu.com>
Reviewed-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
drivers/net/bonding/eth_bond_private.h
drivers/net/bonding/rte_eth_bond_api.c
drivers/net/bonding/rte_eth_bond_pmd.c