--- wikisrc/users/msaitoh/Comparison_of_implementations_of_Ethernet_drivers.mdwn 2015/02/05 04:51:58 1.2 +++ wikisrc/users/msaitoh/Comparison_of_implementations_of_Ethernet_drivers.mdwn 2018/01/18 08:58:02 1.9 @@ -1,7 +1,7 @@
driver | -where dmemem is allocated in | +where dmamem is allocated in | variations of mutex | if_init lock | if_start lock | @@ -10,19 +10,23 @@softint(9)based TX and RX? | TX and TX are locked with mutex | callout lock | +MSI / MSI-X support | +Multi-queue support | notes | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
wm(knakahara) | +wm | in attach() | tx, rx, core | CORE_LOCK(spin mutex) | TX_LOCK(spin mutex) + sc_stopping flag | CORE_LOCK(spin mutex)+sc_stopping flag | -use CORE_LOCK() and TX_LOCK() partially | -no | +use CORE_LOCK(spin mutex) and TX_LOCK(spin mutex) partially | +Yes | TX and RX differently | TX_LOCK(mutex) and check sc_stopping in the beginning | +Yes | +TX and RX | |
not taken? | TX_LOCK(mutex)+sc_stopping check | TX, RX + sc_stopping check | -splnet | +splnet() | only RX is softint'ed | TX and RX differently | callout isn't used | +Yes (MSI-X only) | +No | ||||||
+ | + | ||||||||||||||
pq3etsec | @@ -63,19 +71,23 @@sc_hwlock is for hard interrput. sc_lock is for software interrupt. TX and RX use the same lock | mutex_enter(sc_lock) | + | + | |||||||||||
bcm53xx_eth | +bcmeth(4) | in attach() | lock, hwlock | not taken? | not taken. Set flag with atomic_or_uint() and call softintr_schedule() | not taken? | splnet() | -Yes | +Yes. The interrupt handler calls softint or workqueue depending on the load. | sc_hwlock is for hard interrput. sc_lock is for software interrupt. TX and RX use the same lock | callout isn't used | + | + | ||
ixg | @@ -89,6 +101,8 @@TX and RX differently | CORE_LOCK() in the beginning | + | + | |||||||||||
bnx | @@ -102,6 +116,8 @@only TX uses mutex | splnet() in the beginning | + | + | |||||||||||
bge | @@ -114,5 +130,8 @@No | No | splnet() in the beginning | ++ | mutex is not used at all |