Lines Matching refs:napi
295 static void napi_gro_complete(struct napi_struct *napi, struct sk_buff *skb) in napi_gro_complete() argument
328 gro_normal_one(napi, skb, NAPI_GRO_CB(skb)->count); in napi_gro_complete()
331 static void __napi_gro_flush_chain(struct napi_struct *napi, u32 index, in __napi_gro_flush_chain() argument
334 struct list_head *head = &napi->gro_hash[index].list; in __napi_gro_flush_chain()
341 napi_gro_complete(napi, skb); in __napi_gro_flush_chain()
342 napi->gro_hash[index].count--; in __napi_gro_flush_chain()
345 if (!napi->gro_hash[index].count) in __napi_gro_flush_chain()
346 __clear_bit(index, &napi->gro_bitmask); in __napi_gro_flush_chain()
353 void napi_gro_flush(struct napi_struct *napi, bool flush_old) in napi_gro_flush() argument
355 unsigned long bitmask = napi->gro_bitmask; in napi_gro_flush()
361 __napi_gro_flush_chain(napi, base, flush_old); in napi_gro_flush()
463 static void gro_flush_oldest(struct napi_struct *napi, struct list_head *head) in gro_flush_oldest() argument
479 napi_gro_complete(napi, oldest); in gro_flush_oldest()
482 static enum gro_result dev_gro_receive(struct napi_struct *napi, struct sk_buff *skb) in dev_gro_receive() argument
485 struct gro_list *gro_list = &napi->gro_hash[bucket]; in dev_gro_receive()
552 napi_gro_complete(napi, pp); in dev_gro_receive()
563 gro_flush_oldest(napi, &gro_list->list); in dev_gro_receive()
580 if (!test_bit(bucket, &napi->gro_bitmask)) in dev_gro_receive()
581 __set_bit(bucket, &napi->gro_bitmask); in dev_gro_receive()
582 } else if (test_bit(bucket, &napi->gro_bitmask)) { in dev_gro_receive()
583 __clear_bit(bucket, &napi->gro_bitmask); in dev_gro_receive()
621 static gro_result_t napi_skb_finish(struct napi_struct *napi, in napi_skb_finish() argument
627 gro_normal_one(napi, skb, 1); in napi_skb_finish()
648 gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb) in napi_gro_receive() argument
652 skb_mark_napi_id(skb, napi); in napi_gro_receive()
657 ret = napi_skb_finish(napi, skb, dev_gro_receive(napi, skb)); in napi_gro_receive()
664 static void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb) in napi_reuse_skb() argument
674 skb->dev = napi->dev; in napi_reuse_skb()
690 napi->skb = skb; in napi_reuse_skb()
693 struct sk_buff *napi_get_frags(struct napi_struct *napi) in napi_get_frags() argument
695 struct sk_buff *skb = napi->skb; in napi_get_frags()
698 skb = napi_alloc_skb(napi, GRO_MAX_HEAD); in napi_get_frags()
700 napi->skb = skb; in napi_get_frags()
701 skb_mark_napi_id(skb, napi); in napi_get_frags()
708 static gro_result_t napi_frags_finish(struct napi_struct *napi, in napi_frags_finish() argument
718 gro_normal_one(napi, skb, 1); in napi_frags_finish()
725 napi_reuse_skb(napi, skb); in napi_frags_finish()
740 static struct sk_buff *napi_frags_skb(struct napi_struct *napi) in napi_frags_skb() argument
742 struct sk_buff *skb = napi->skb; in napi_frags_skb()
746 napi->skb = NULL; in napi_frags_skb()
755 __func__, napi->dev->name); in napi_frags_skb()
756 napi_reuse_skb(napi, skb); in napi_frags_skb()
777 gro_result_t napi_gro_frags(struct napi_struct *napi) in napi_gro_frags() argument
780 struct sk_buff *skb = napi_frags_skb(napi); in napi_gro_frags()
784 ret = napi_frags_finish(napi, skb, dev_gro_receive(napi, skb)); in napi_gro_frags()