• Julian Wiedmann's avatar
    s390/qeth: balance the TX queue selection for IQD devices · 5d8ce41c
    Julian Wiedmann authored
    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: default avatarJulian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    5d8ce41c
qeth_core_main.c 179 KB