--- 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 @@ - + @@ -10,19 +10,23 @@ + + - + - - + + + + @@ -32,10 +36,12 @@ - + + + @@ -50,6 +56,8 @@ + + @@ -63,19 +71,23 @@ + + - + - + + + @@ -89,6 +101,8 @@ + + @@ -102,6 +116,8 @@ + + @@ -114,5 +130,8 @@ + + +
driverwhere dmemem is allocated inwhere dmamem is allocated in variations of mutex if_init lock if_start locksoftint(9)based TX and RX? TX and TX are locked with mutex callout lockMSI / MSI-X supportMulti-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 flaguse CORE_LOCK() and TX_LOCK() partiallynouse CORE_LOCK(spin mutex) and TX_LOCK(spin mutex) partiallyYes TX and RX differently TX_LOCK(mutex) and check sc_stopping in the beginningYesTX and RX
not taken? TX_LOCK(mutex)+sc_stopping check TX, RX + sc_stopping checksplnetsplnet() only RX is softint'ed TX and RX differently callout isn't usedYes (MSI-X only)No
pq3etsecsc_hwlock is for hard interrput. sc_lock is for software interrupt. TX and RX use the same lock mutex_enter(sc_lock)
bcm53xx_ethbcmeth(4) in attach() lock, hwlock not taken? not taken. Set flag with atomic_or_uint() and call softintr_schedule() not taken? splnet()YesYes. 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
ixgTX and RX differently CORE_LOCK() in the beginning
bnxonly TX uses mutex splnet() in the beginning
bgeNo No splnet() in the beginning mutex is not used at all