Sat, Apr 18, 2009 at 09:35:32AM CEST, dada1@xxxxxxxxxxxxx wrote: >Jiri Pirko a écrit : >> Fri, Apr 17, 2009 at 05:33:15PM CEST, shemminger@xxxxxxxxxx wrote: >> >> <snip> >> >>>> +struct netdev_hw_addr { >>>> + struct list_head list; >>>> + unsigned char addr[MAX_ADDR_LEN]; >>>> + int refcount; >>>> + struct rcu_head rcu_head; >>>> +}; >>> Minor nit, the ordering of elements cause holes that might not be >>> needed. >> >> Agree that ordering might be done better. Will do. >>> Space saving? is rcu_head needed or would using synchronize_net >>> make code cleaner and save space. >>> >> >> Well I originaly had this done by synchronize_rcu(). Eric argued that it might >> cause especially __hw_addr_del_multiple_ii() to run long and suggested to use >> call_rcu() instead. I plan to switch this to kfree_rcu() (or whatever it's >> called) once it hits the tree. >> > >Yes, and dont forget we wont save space, as we allocate a full >cache line to hold a 'struct netdev_hw_addr', since we dont want this >critical and read_mostly object polluted by a hot spot elsewhere in kernel... > >Considering this, letting 'rcu_head' at the end of structure, even if we >have an eventual hole on 64 bit arches is not really a problem, and IMHO >the best thing to do, as rcu_head is only used at dismantle time. I will order the struct better, there are archs with small cache line size where it makes sense. > >And yes, maybe kfree_rcu() will makes its way in kernel, eventually :) > >Thank you > > _______________________________________________ Bridge mailing list Bridge@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/bridge