On Mon, 2015-06-01 at 21:55 +0900, Toshiaki Makita wrote: > @@ -668,6 +753,9 @@ static int __init vlan_proto_init(void) > if (err < 0) > goto err5; > > + for (i = 0; i < ARRAY_SIZE(vlan_packet_offloads); i++) > + dev_add_offload(&vlan_packet_offloads[i]); > + > vlan_ioctl_set(vlan_ioctl_handler); > return 0;
My concern about this is : This might slow down GRO stack for other traffic, if dev_add_offload() for vlan offloads is called after dev_add_offload(&ip_packet_offload) / dev_add_offload(&ipv6_packet_offload) This is because list_add_rcu is used and this inserts in front of the offload_base list. void dev_add_offload(struct packet_offload *po) { struct list_head *head = &offload_base; spin_lock(&offload_lock); list_add_rcu(&po->list, head); spin_unlock(&offload_lock); } Can we ensure offload_base contains a sensible order of expected types ? -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html