On Sun, Jun 14, 2015 at 10:46 PM, Jiri Pirko <j...@resnulli.us> wrote: > Sun, Jun 14, 2015 at 07:50:13PM CEST, sfel...@gmail.com wrote: >>On Sat, Jun 13, 2015 at 11:56 PM, Jiri Pirko <j...@resnulli.us> wrote: >>> Sat, Jun 13, 2015 at 08:04:28PM CEST, sfel...@gmail.com wrote: >>>>From: Scott Feldman <sfel...@gmail.com> >>>> >>>>skb->fwd_mark and dev->fwd_mark are 32-bit and should be unique for device >>>>and maybe even unique for a sub-set of ports within device, so add >>>>switchdev helper function to generate unique marks based on driver-supplied >>>>key. Typically, the driver would use device switch ID for key, and maybe >>>>additional fields in key for grouped ports such as bridge ifindex. The key >>>>can be of arbitrary length. >>>> >>>>The generator uses a global hash table to store fwd_marks hashed by key. >>>> >>>>Signed-off-by: Scott Feldman <sfel...@gmail.com> >> >><snip> >> >>>>+u32 switchdev_mark_get(void *key, size_t key_len) >>>>+{ >>>>+ struct switchdev_mark_ht_entry { >>>>+ struct hlist_node entry; >>>>+ void *key; >>>>+ size_t key_len; >>>>+ u32 key_crc32; >>>>+ u32 mark; >>>>+ } *entry; >>>>+ u32 key_crc32 = crc32(~0, key, key_len); >>>>+ u32 mark = 0; >>>>+ unsigned long flags; >>>>+ >>>>+ spin_lock_irqsave(&switchdev_mark_lock, flags); >>> >>> I fail to see why _irqsave variant is needed here. >> >>I don't know what context caller is in, so using most conservative >>spinlock. Is there a better way? > > I don't see why would someone call this from irq.
Ok, good point, I'll adjust to spin_lock. -- 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