Use the % instead of while, and it may simple code and improve the calculating. The real_num_tx_queues has been checked when allocating and setting it.
Signed-off-by: Tonghao Zhang <xiangxia.m....@gmail.com> --- net/core/dev.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/net/core/dev.c b/net/core/dev.c index 1844d9b..edc5b75 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2617,15 +2617,13 @@ void netif_device_attach(struct net_device *dev) */ static u16 skb_tx_hash(const struct net_device *dev, struct sk_buff *skb) { - u32 hash; u16 qoffset = 0; u16 qcount = dev->real_num_tx_queues; if (skb_rx_queue_recorded(skb)) { - hash = skb_get_rx_queue(skb); - while (unlikely(hash >= qcount)) - hash -= qcount; - return hash; + /* When setting the real_num_tx_queues, we make sure + * real_num_tx_queues != 0. */ + return skb_get_rx_queue(skb) % qcount; } if (dev->num_tc) { -- 1.8.3.1