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? -- 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