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