[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20171211.120246.1487812563373661375.davem@davemloft.net>
Date: Mon, 11 Dec 2017 12:02:46 -0500 (EST)
From: David Miller <davem@...emloft.net>
To: stephen@...workplumber.org
Cc: cugyly@....com, netdev@...r.kernel.org,
Linyu.Yuan@...atel-sbell.com.cn
Subject: Re: [PATCH net-next 1/2] net: tap: replay while() loop with %
operator in tap_get_queue()
From: Stephen Hemminger <stephen@...workplumber.org>
Date: Mon, 11 Dec 2017 08:58:11 -0800
> On Mon, 11 Dec 2017 21:26:41 +0800
> yuan linyu <cugyly@....com> wrote:
>
>> From: yuan linyu <Linyu.Yuan@...atel-sbell.com.cn>
>>
>> Signed-off-by: yuan linyu <Linyu.Yuan@...atel-sbell.com.cn>
>> ---
>> drivers/net/tap.c | 6 +-----
>> 1 file changed, 1 insertion(+), 5 deletions(-)
>>
>> diff --git a/drivers/net/tap.c b/drivers/net/tap.c
>> index 0a886fda..78900a0 100644
>> --- a/drivers/net/tap.c
>> +++ b/drivers/net/tap.c
>> @@ -275,11 +275,7 @@ static struct tap_queue *tap_get_queue(struct tap_dev *tap,
>>
>> if (likely(skb_rx_queue_recorded(skb))) {
>> rxq = skb_get_rx_queue(skb);
>> -
>> - while (unlikely(rxq >= numvtaps))
>> - rxq -= numvtaps;
>> -
>> - queue = rcu_dereference(tap->taps[rxq]);
>> + queue = rcu_dereference(tap->taps[rxq % numvtaps]);
>> goto out;
>> }
>>
>
> Modulus is slower than the loop.
Agreed, the loop is there intentionally. We do this in other areas of
the kernel as well.
Powered by blists - more mailing lists