Lines Matching full:napi

236 static void napi_gro_complete(struct napi_struct *napi, struct sk_buff *skb)  in napi_gro_complete()  argument
269 gro_normal_one(napi, skb, NAPI_GRO_CB(skb)->count); in napi_gro_complete()
272 static void __napi_gro_flush_chain(struct napi_struct *napi, u32 index, in __napi_gro_flush_chain() argument
275 struct list_head *head = &napi->gro_hash[index].list; in __napi_gro_flush_chain()
282 napi_gro_complete(napi, skb); in __napi_gro_flush_chain()
283 napi->gro_hash[index].count--; in __napi_gro_flush_chain()
286 if (!napi->gro_hash[index].count) in __napi_gro_flush_chain()
287 __clear_bit(index, &napi->gro_bitmask); in __napi_gro_flush_chain()
290 /* napi->gro_hash[].list contains packets ordered by age.
294 void napi_gro_flush(struct napi_struct *napi, bool flush_old) in napi_gro_flush() argument
296 unsigned long bitmask = napi->gro_bitmask; in napi_gro_flush()
302 __napi_gro_flush_chain(napi, base, flush_old); in napi_gro_flush()
418 static void gro_flush_oldest(struct napi_struct *napi, struct list_head *head) in gro_flush_oldest() argument
430 /* Do not adjust napi->gro_hash[].count, caller is adding a new in gro_flush_oldest()
434 napi_gro_complete(napi, oldest); in gro_flush_oldest()
437 static enum gro_result dev_gro_receive(struct napi_struct *napi, struct sk_buff *skb) in dev_gro_receive() argument
440 struct gro_list *gro_list = &napi->gro_hash[bucket]; in dev_gro_receive()
506 napi_gro_complete(napi, pp); in dev_gro_receive()
517 gro_flush_oldest(napi, &gro_list->list); in dev_gro_receive()
531 if (!test_bit(bucket, &napi->gro_bitmask)) in dev_gro_receive()
532 __set_bit(bucket, &napi->gro_bitmask); in dev_gro_receive()
533 } else if (test_bit(bucket, &napi->gro_bitmask)) { in dev_gro_receive()
534 __clear_bit(bucket, &napi->gro_bitmask); in dev_gro_receive()
573 static gro_result_t napi_skb_finish(struct napi_struct *napi, in napi_skb_finish() argument
579 gro_normal_one(napi, skb, 1); in napi_skb_finish()
600 gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb) in napi_gro_receive() argument
604 skb_mark_napi_id(skb, napi); in napi_gro_receive()
609 ret = napi_skb_finish(napi, skb, dev_gro_receive(napi, skb)); in napi_gro_receive()
616 static void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb) in napi_reuse_skb() argument
626 skb->dev = napi->dev; in napi_reuse_skb()
642 napi->skb = skb; in napi_reuse_skb()
645 struct sk_buff *napi_get_frags(struct napi_struct *napi) in napi_get_frags() argument
647 struct sk_buff *skb = napi->skb; in napi_get_frags()
650 skb = napi_alloc_skb(napi, GRO_MAX_HEAD); in napi_get_frags()
652 napi->skb = skb; in napi_get_frags()
653 skb_mark_napi_id(skb, napi); in napi_get_frags()
660 static gro_result_t napi_frags_finish(struct napi_struct *napi, in napi_frags_finish() argument
670 gro_normal_one(napi, skb, 1); in napi_frags_finish()
677 napi_reuse_skb(napi, skb); in napi_frags_finish()
692 static struct sk_buff *napi_frags_skb(struct napi_struct *napi) in napi_frags_skb() argument
694 struct sk_buff *skb = napi->skb; in napi_frags_skb()
698 napi->skb = NULL; in napi_frags_skb()
707 __func__, napi->dev->name); in napi_frags_skb()
708 napi_reuse_skb(napi, skb); in napi_frags_skb()
729 gro_result_t napi_gro_frags(struct napi_struct *napi) in napi_gro_frags() argument
732 struct sk_buff *skb = napi_frags_skb(napi); in napi_gro_frags()
736 ret = napi_frags_finish(napi, skb, dev_gro_receive(napi, skb)); in napi_gro_frags()