diff options
author | Julian Wiedmann <jwi@linux.ibm.com> | 2020-03-18 15:54:50 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-03-19 02:33:35 +0300 |
commit | 5d8ce41c6a878afac157a61299a9f810bf80995e (patch) | |
tree | dea9998c36efac5d4f3b2322ca019de1bf3add28 /drivers/s390/net/qeth_ethtool.c | |
parent | 66cddf101901a6cfcd21c840f0535e8f1c8c5186 (diff) | |
download | linux-5d8ce41c6a878afac157a61299a9f810bf80995e.tar.xz |
s390/qeth: balance the TX queue selection for IQD devices
For ucast traffic, qeth_iqd_select_queue() falls back to
netdev_pick_tx(). This will potentially use skb_tx_hash() to distribute
the flow over all active TX queues - so txq 0 is a valid selection, and
qeth_iqd_select_queue() needs to check for this and put it on some other
queue. As a result, the distribution for ucast flows is unbalanced and
hits QETH_IQD_MIN_UCAST_TXQ heavier than the other queues.
Open-coding a custom variant of skb_tx_hash() isn't an option, since
netdev_pick_tx() also gives us eg. access to XPS. But we can pull a
little trick: add a single TC class that excludes the mcast txq, and
thus encourage skb_tx_hash() to not pick the mcast txq.
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/s390/net/qeth_ethtool.c')
-rw-r--r-- | drivers/s390/net/qeth_ethtool.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/s390/net/qeth_ethtool.c b/drivers/s390/net/qeth_ethtool.c index 715ee0015847..079b695032ef 100644 --- a/drivers/s390/net/qeth_ethtool.c +++ b/drivers/s390/net/qeth_ethtool.c @@ -201,7 +201,7 @@ static int qeth_set_channels(struct net_device *dev, return -EOPNOTSUPP; } - return netif_set_real_num_tx_queues(dev, channels->tx_count); + return qeth_set_real_num_tx_queues(card, channels->tx_count); } static int qeth_get_tunable(struct net_device *dev, |