Lines Matching refs:napi
232 static void napi_gro_complete(struct napi_struct *napi, struct sk_buff *skb) in napi_gro_complete() argument
265 gro_normal_one(napi, skb, NAPI_GRO_CB(skb)->count); in napi_gro_complete()
268 static void __napi_gro_flush_chain(struct napi_struct *napi, u32 index, in __napi_gro_flush_chain() argument
271 struct list_head *head = &napi->gro_hash[index].list; in __napi_gro_flush_chain()
278 napi_gro_complete(napi, skb); in __napi_gro_flush_chain()
279 napi->gro_hash[index].count--; in __napi_gro_flush_chain()
282 if (!napi->gro_hash[index].count) in __napi_gro_flush_chain()
283 __clear_bit(index, &napi->gro_bitmask); in __napi_gro_flush_chain()
290 void napi_gro_flush(struct napi_struct *napi, bool flush_old) in napi_gro_flush() argument
292 unsigned long bitmask = napi->gro_bitmask; in napi_gro_flush()
298 __napi_gro_flush_chain(napi, base, flush_old); in napi_gro_flush()
415 static void gro_flush_oldest(struct napi_struct *napi, struct list_head *head) in gro_flush_oldest() argument
431 napi_gro_complete(napi, oldest); in gro_flush_oldest()
434 static enum gro_result dev_gro_receive(struct napi_struct *napi, struct sk_buff *skb) in dev_gro_receive() argument
437 struct gro_list *gro_list = &napi->gro_hash[bucket]; in dev_gro_receive()
503 napi_gro_complete(napi, pp); in dev_gro_receive()
514 gro_flush_oldest(napi, &gro_list->list); in dev_gro_receive()
528 if (!test_bit(bucket, &napi->gro_bitmask)) in dev_gro_receive()
529 __set_bit(bucket, &napi->gro_bitmask); in dev_gro_receive()
530 } else if (test_bit(bucket, &napi->gro_bitmask)) { in dev_gro_receive()
531 __clear_bit(bucket, &napi->gro_bitmask); in dev_gro_receive()
570 static gro_result_t napi_skb_finish(struct napi_struct *napi, in napi_skb_finish() argument
576 gro_normal_one(napi, skb, 1); in napi_skb_finish()
597 gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb) in napi_gro_receive() argument
601 skb_mark_napi_id(skb, napi); in napi_gro_receive()
606 ret = napi_skb_finish(napi, skb, dev_gro_receive(napi, skb)); in napi_gro_receive()
613 static void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb) in napi_reuse_skb() argument
623 skb->dev = napi->dev; in napi_reuse_skb()
640 napi->skb = skb; in napi_reuse_skb()
643 struct sk_buff *napi_get_frags(struct napi_struct *napi) in napi_get_frags() argument
645 struct sk_buff *skb = napi->skb; in napi_get_frags()
648 skb = napi_alloc_skb(napi, GRO_MAX_HEAD); in napi_get_frags()
650 napi->skb = skb; in napi_get_frags()
651 skb_mark_napi_id(skb, napi); in napi_get_frags()
658 static gro_result_t napi_frags_finish(struct napi_struct *napi, in napi_frags_finish() argument
668 gro_normal_one(napi, skb, 1); in napi_frags_finish()
675 napi_reuse_skb(napi, skb); in napi_frags_finish()
690 static struct sk_buff *napi_frags_skb(struct napi_struct *napi) in napi_frags_skb() argument
692 struct sk_buff *skb = napi->skb; in napi_frags_skb()
696 napi->skb = NULL; in napi_frags_skb()
705 __func__, napi->dev->name); in napi_frags_skb()
706 napi_reuse_skb(napi, skb); in napi_frags_skb()
727 gro_result_t napi_gro_frags(struct napi_struct *napi) in napi_gro_frags() argument
730 struct sk_buff *skb = napi_frags_skb(napi); in napi_gro_frags()
734 ret = napi_frags_finish(napi, skb, dev_gro_receive(napi, skb)); in napi_gro_frags()