net-gro: use ffs() to speedup napi_gro_flush()
We very often have few flows/chains to look at, and we might increase GRO_HASH_BUCKETS to 32 or 64 in the future. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d72ff4b4ea
commit
42519ede4f
|
@ -5364,11 +5364,13 @@ static void __napi_gro_flush_chain(struct napi_struct *napi, u32 index,
|
||||||
*/
|
*/
|
||||||
void napi_gro_flush(struct napi_struct *napi, bool flush_old)
|
void napi_gro_flush(struct napi_struct *napi, bool flush_old)
|
||||||
{
|
{
|
||||||
u32 i;
|
unsigned long bitmask = napi->gro_bitmask;
|
||||||
|
unsigned int i, base = ~0U;
|
||||||
|
|
||||||
for (i = 0; i < GRO_HASH_BUCKETS; i++) {
|
while ((i = ffs(bitmask)) != 0) {
|
||||||
if (test_bit(i, &napi->gro_bitmask))
|
bitmask >>= i;
|
||||||
__napi_gro_flush_chain(napi, i, flush_old);
|
base += i;
|
||||||
|
__napi_gro_flush_chain(napi, base, flush_old);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(napi_gro_flush);
|
EXPORT_SYMBOL(napi_gro_flush);
|
||||||
|
|
Loading…
Reference in New Issue