usbmodeswitch: Updated to v.1.2.6 from shibby's branch.
[tomato.git] / release / src / router / bridge / doc / SMPNOTES
blobba54836e4d7a26dc75b90384c203f49efc78c84a
1 Notes on the (20000210) SMP-ization of the bridging code:
3 Each bridge has a hash table of MAC addresses. This table is protected
4 by a rwlock hash_lock. The entries are refcounted; 'getting' an entry
5 is done in the usual way: read_lock the table, find the entry,
6 increment it's refcount and unlock the table. Bottom half context
7 acquires this lock in read as well as write mode, therefore we always
8 need to locally disable BHs when acquiring this lock.
10 Each bridge also has an rwlock called lock. This slightly misnamed
11 lock protects the bridge's port_list. All stp code acquires this lock
12 in read mode, the only piece of code that acquires this lock in write
13 mode is the ioctl code (br_ioctl.c). Bottom halves never acquire this
14 lock in write mode, therefore we can use read_lock instead of
15 read_lock_bh in all cases.
17 All ioctls are globally serialized by the semaphore ioctl_mutex. All
18 code which acquires the bridge lock in write mode also acquires
19 ioctl_mutex. Therefore, if we have already grabbed ioctl_mutex we
20 don't need to read_lock the bridge lock anymore; the ioctl_mutex will
21 protect against concurrent writers.