On 07/07/16 at 10:36pm, Jiri Kosina wrote: > diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h > index f45929c..630838e 100644 > --- a/include/linux/netdevice.h > +++ b/include/linux/netdevice.h > @@ -52,6 +52,7 @@ > #include <uapi/linux/netdevice.h> > #include <uapi/linux/if_bonding.h> > #include <uapi/linux/pkt_cls.h> > +#include <linux/hashtable.h> > > struct netpoll_info; > struct device; > @@ -1778,6 +1779,7 @@ struct net_device { > unsigned int num_tx_queues; > unsigned int real_num_tx_queues; > struct Qdisc *qdisc; > + DECLARE_HASHTABLE (qdisc_hash, 16);
This blows up net_device to an insane size: 64K * sizeof(struct hlist_head). Can we allocate this on demand for net_devices where it is actually needed? The majority of virtual devices won't need this. Doesn't have to be rhashtable, can still be fixed size but at least allocate it.