summaryrefslogtreecommitdiff
path: root/drivers/s390/net/qeth_ethtool.c
diff options
context:
space:
mode:
authorJulian Wiedmann <jwi@linux.ibm.com>2020-03-18 15:54:50 +0300
committerDavid S. Miller <davem@davemloft.net>2020-03-19 02:33:35 +0300
commit5d8ce41c6a878afac157a61299a9f810bf80995e (patch)
treedea9998c36efac5d4f3b2322ca019de1bf3add28 /drivers/s390/net/qeth_ethtool.c
parent66cddf101901a6cfcd21c840f0535e8f1c8c5186 (diff)
downloadlinux-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.c2
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,