The bnx2x_select_queue() was using __skb_tx_hash() to select the
transmit queue, totally ignoring XPS settings, while XPS can help
performance quite significantly, so change the bnx2x_select_queue()
to use __dev_pick_tx() instead which will use XPS if configured.
Based on patches from Ying Cai and Havard Skinnemoen
Reported-by: govindarajulu.v <[email protected]>
Signed-off-by: Eric Dumazet <[email protected]>
Cc: Havard Skinnemoen <[email protected]>
Cc: Ying Cai <[email protected]>
Cc: Eilon Greenstein <[email protected]>
Acked-by: Dmitry Kravkov <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
}
/* select a non-FCoE queue */
- return __skb_tx_hash(dev, skb, BNX2X_NUM_ETH_QUEUES(bp));
+ return __netdev_pick_tx(dev, skb) % BNX2X_NUM_ETH_QUEUES(bp);
}
void bnx2x_set_num_queues(struct bnx2x *bp)