netdevices.txt

来自「Linux Kernel 2.6.9 for OMAP1710」· 文本 代码 · 共 76 行

TXT
76
字号
Network Devices, the Kernel, and You!Introduction============The following is a random collection of documentation regardingnetwork devices.struct net_device allocation rules==================================Network device structures need to persist even after module is unloaded andmust be allocated with kmalloc.  If device has registered successfully,it will be freed on last use by free_netdev.  This is required to handle thepathologic case cleanly (example: rmmod mydriver </sys/class/net/myeth/mtu )There are routines in net_init.c to handle the common cases ofalloc_etherdev, alloc_netdev.  These reserve extra space for driverprivate data which gets freed when the network device is freed. Ifseparately allocated data is attached to the network device(dev->priv) then it is up to the module exit handler to free that.struct net_device synchronization rules=======================================dev->open:	Synchronization: rtnl_lock() semaphore.	Context: processdev->stop:	Synchronization: rtnl_lock() semaphore.	Context: process	Note1: netif_running() is guaranteed false	Note2: dev->poll() is guaranteed to be stoppeddev->do_ioctl:	Synchronization: rtnl_lock() semaphore.	Context: processdev->get_stats:	Synchronization: dev_base_lock rwlock.	Context: nominally process, but don't sleep inside an rwlockdev->hard_start_xmit:	Synchronization: dev->xmit_lock spinlock.	When the driver sets NETIF_F_LLTX in dev->features this will be	called without holding xmit_lock. In this case the driver 	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. 	The locking there should also properly protect against 	set_multicast_list	Context: BHs disabled	Notes: netif_queue_stopped() is guaranteed false	Return codes: 	o NETDEV_TX_OK everything ok. 	o NETDEV_TX_BUSY Cannot transmit packet, try later 	  Usually a bug, means queue start/stop flow control is broken in	  the driver. Note: the driver must NOT put the skb in its DMA ring.	o NETDEV_TX_LOCKED Locking failed, please retry quickly.	  Only valid when NETIF_F_LLTX is set.dev->tx_timeout:	Synchronization: dev->xmit_lock spinlock.	Context: BHs disabled	Notes: netif_queue_stopped() is guaranteed truedev->set_multicast_list:	Synchronization: dev->xmit_lock spinlock.	Context: BHs disableddev->poll:	Synchronization: __LINK_STATE_RX_SCHED bit in dev->state.  See		dev_close code and comments in net/core/dev.c for more info.	Context: softirq

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?