--- wikisrc/users/msaitoh/Comparison_of_implementations_of_Ethernet_drivers.mdwn 2015/02/05 08:28:30 1.5
+++ wikisrc/users/msaitoh/Comparison_of_implementations_of_Ethernet_drivers.mdwn 2018/01/18 23:11:56 1.10
@@ -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+ozaki-r) |
+ 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(spin mutex) and TX_LOCK(spin mutex) partially |
- No |
+ Yes by default. It can be changed by kernel options. See wm.4. |
TX and RX differently |
TX_LOCK(mutex) and check sc_stopping in the beginning |
+ Yes |
+ TX and RX |
|
@@ -36,6 +40,8 @@
only RX is softint'ed |
TX and RX differently |
callout isn't used |
+ Yes (MSI-X only) |
+ No |
|
@@ -50,6 +56,8 @@
|
|
|
+ |
+ |
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,6 +130,8 @@
No |
No |
splnet() in the beginning |
+ |
+ |
mutex is not used at all |