Commit 17229333 authored by Stephen Hemminger's avatar Stephen Hemminger Committed by David S. Miller

[NET]: netdevice locking assumptions documentation

Update the documentation about locking assumptions.
Signed-off-by: default avatarStephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 963bd949
...@@ -20,7 +20,6 @@ private data which gets freed when the network device is freed. If ...@@ -20,7 +20,6 @@ private data which gets freed when the network device is freed. If
separately allocated data is attached to the network device separately allocated data is attached to the network device
(dev->priv) then it is up to the module exit handler to free that. (dev->priv) then it is up to the module exit handler to free that.
struct net_device synchronization rules struct net_device synchronization rules
======================================= =======================================
dev->open: dev->open:
...@@ -43,16 +42,17 @@ dev->get_stats: ...@@ -43,16 +42,17 @@ dev->get_stats:
dev->hard_start_xmit: dev->hard_start_xmit:
Synchronization: netif_tx_lock spinlock. Synchronization: netif_tx_lock spinlock.
When the driver sets NETIF_F_LLTX in dev->features this will be When the driver sets NETIF_F_LLTX in dev->features this will be
called without holding netif_tx_lock. In this case the driver called without holding netif_tx_lock. In this case the driver
has to lock by itself when needed. It is recommended to use a try lock has to lock by itself when needed. It is recommended to use a try lock
for this and return -1 when the spin lock fails. for this and return NETDEV_TX_LOCKED when the spin lock fails.
The locking there should also properly protect against The locking there should also properly protect against
set_multicast_list set_multicast_list.
Context: Process with BHs disabled or BH (timer).
Notes: netif_queue_stopped() is guaranteed false Context: Process with BHs disabled or BH (timer),
Interrupts must be enabled when calling hard_start_xmit. will be called with interrupts disabled by netconsole.
(Interrupts must also be enabled when enabling the BH handler.)
Return codes: Return codes:
o NETDEV_TX_OK everything ok. o NETDEV_TX_OK everything ok.
o NETDEV_TX_BUSY Cannot transmit packet, try later o NETDEV_TX_BUSY Cannot transmit packet, try later
...@@ -74,4 +74,5 @@ dev->poll: ...@@ -74,4 +74,5 @@ dev->poll:
Synchronization: __LINK_STATE_RX_SCHED bit in dev->state. See Synchronization: __LINK_STATE_RX_SCHED bit in dev->state. See
dev_close code and comments in net/core/dev.c for more info. dev_close code and comments in net/core/dev.c for more info.
Context: softirq Context: softirq
will be called with interrupts disabled by netconsole.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment