I am trying to find out whether the Linux net_device_ops are serialized by the caller or that the driver implementing these ops must take care of the serialization (or than they can be called concurrently).
For example can for the same driver instance the ndo_start_xmit called again (e.g at a different CPU) before the driver has finished the current ndo_start_xmit call?
I searched how other net_device drivers are doing this but it looks like that they assume that ndo_start_xmit serialization is done by the caller (please correct me if I am wrong).
However I also searched whether the caller uses and spinlock or another lock mechanism, but I could not find one. If such a (caller) lock mechanism exist please point me to the code that does this.