Lines Matching defs:gro
3 #include <net/gro.h>
254 static void gro_complete(struct gro_node *gro, struct sk_buff *skb)
287 gro_normal_one(gro, skb, NAPI_GRO_CB(skb)->count);
290 static void __gro_flush_chain(struct gro_node *gro, u32 index, bool flush_old)
292 struct list_head *head = &gro->hash[index].list;
299 gro_complete(gro, skb);
300 gro->hash[index].count--;
303 if (!gro->hash[index].count)
304 __clear_bit(index, &gro->bitmask);
308 * gro->hash[].list contains packets ordered by age.
312 void __gro_flush(struct gro_node *gro, bool flush_old)
314 unsigned long bitmask = gro->bitmask;
320 __gro_flush_chain(gro, base, flush_old);
443 static void gro_flush_oldest(struct gro_node *gro, struct list_head *head)
459 gro_complete(gro, oldest);
462 static enum gro_result dev_gro_receive(struct gro_node *gro,
467 struct gro_list *gro_list = &gro->hash[bucket];
531 gro_complete(gro, pp);
542 gro_flush_oldest(gro, &gro_list->list);
556 if (!test_bit(bucket, &gro->bitmask))
557 __set_bit(bucket, &gro->bitmask);
558 } else if (test_bit(bucket, &gro->bitmask)) {
559 __clear_bit(bucket, &gro->bitmask);
598 static gro_result_t gro_skb_finish(struct gro_node *gro, struct sk_buff *skb,
603 gro_normal_one(gro, skb, 1);
624 gro_result_t gro_receive_skb(struct gro_node *gro, struct sk_buff *skb)
628 __skb_mark_napi_id(skb, gro);
633 ret = gro_skb_finish(gro, skb, dev_gro_receive(gro, skb));
695 gro_normal_one(&napi->gro, skb, 1);
764 ret = napi_frags_finish(napi, skb, dev_gro_receive(&napi->gro, skb));
797 void gro_init(struct gro_node *gro)
800 INIT_LIST_HEAD(&gro->hash[i].list);
801 gro->hash[i].count = 0;
804 gro->bitmask = 0;
805 gro->cached_napi_id = 0;
807 INIT_LIST_HEAD(&gro->rx_list);
808 gro->rx_count = 0;
811 void gro_cleanup(struct gro_node *gro)
816 list_for_each_entry_safe(skb, n, &gro->hash[i].list, list)
819 gro->hash[i].count = 0;
822 gro->bitmask = 0;
823 gro->cached_napi_id = 0;
825 list_for_each_entry_safe(skb, n, &gro->rx_list, list)
828 gro->rx_count = 0;