netdevices.txt update

From: Jeff Garzik (jgarzik@pobox.com)
Date: Tue Feb 18 2003 - 23:34:07 EST


Just made a minor update to Documentation/networking/netdevices.txt, and
thought I would take the opportunity to pass it around once again.

Even though this doc has existed for quite a while now, I still come
across code that loves to violate these locking rules in various ways.

Comments and additions welcome

        Jeff


Network Devices, the Kernel, and You!

Introduction
============
The following is a random collection of documentation regarding
network devices.

struct net_device synchronization rules
=======================================
dev->open:
        Synchronization: rtnl_lock() semaphore.
        Context: process

dev->stop:
        Synchronization: rtnl_lock() semaphore.
        Context: process
        Note1: netif_running() is guaranteed false
        Note2: dev->poll() is guaranteed to be stopped

dev->do_ioctl:
        Synchronization: rtnl_lock() semaphore.
        Context: process

dev->get_stats:
        Synchronization: dev_base_lock rwlock.
        Context: nominally process, but don't sleep inside an rwlock

dev->hard_start_xmit:
        Synchronization: dev->xmit_lock spinlock.
        Context: BHs disabled
        Notes: netif_queue_stopped() is guaranteed false

dev->tx_timeout:
        Synchronization: dev->xmit_lock spinlock.
        Context: BHs disabled
        Notes: netif_queue_stopped() is guaranteed true

dev->set_multicast_list:
        Synchronization: dev->xmit_lock spinlock.
        Context: BHs disabled

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

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sun Feb 23 2003 - 22:00:24 EST