version 1.3, 2015/02/05 04:53:21
|
version 1.8, 2016/07/20 04:14:25
|
Line 1
|
Line 1
|
<table class="center"> |
<table class="center"> |
<tr> |
<tr> |
<th>driver</th> |
<th>driver</th> |
<th>where dmemem is allocated in</th> |
<th>where dmamem is allocated in</th> |
<th>variations of mutex</th> |
<th>variations of mutex</th> |
<th>if_init lock</th> |
<th>if_init lock</th> |
<th>if_start lock</th> |
<th>if_start lock</th> |
Line 10
|
Line 10
|
<th>softint(9)based TX and RX?</th> |
<th>softint(9)based TX and RX?</th> |
<th>TX and TX are locked with mutex</th> |
<th>TX and TX are locked with mutex</th> |
<th>callout lock</th> |
<th>callout lock</th> |
|
<th>MSI / MSI-X support</th> |
|
<th>Multi-queue support</th> |
<th>notes</th> |
<th>notes</th> |
</tr> |
</tr> |
<tr> |
<tr> |
<th>wm(knakahara)</th> |
<th>wm</th> |
<td>in attach()</td> |
<td>in attach()</td> |
<td>tx, rx, core</td> |
<td>tx, rx, core</td> |
<td>CORE_LOCK(spin mutex)</td> |
<td>CORE_LOCK(spin mutex)</td> |
<td>TX_LOCK(spin mutex) + sc_stopping flag</td> |
<td>TX_LOCK(spin mutex) + sc_stopping flag</td> |
<td>CORE_LOCK(spin mutex)+sc_stopping flag</td> |
<td>CORE_LOCK(spin mutex)+sc_stopping flag</td> |
<td>use CORE_LOCK() and TX_LOCK() partially</td> |
<td>use CORE_LOCK(spin mutex) and TX_LOCK(spin mutex) partially</td> |
<td>no</td> |
<td>No</td> |
<td>TX and RX differently</td> |
<td>TX and RX differently</td> |
<td>TX_LOCK(mutex) and check sc_stopping in the beginning</td> |
<td>TX_LOCK(mutex) and check sc_stopping in the beginning</td> |
|
<td>Yes</td> |
|
<td>TX and RX</td> |
<td></td> |
<td></td> |
</tr> |
</tr> |
<tr> |
<tr> |
Line 32
|
Line 36
|
<td>not taken?</td> |
<td>not taken?</td> |
<td>TX_LOCK(mutex)+sc_stopping check</td> |
<td>TX_LOCK(mutex)+sc_stopping check</td> |
<td>TX, RX + sc_stopping check</td> |
<td>TX, RX + sc_stopping check</td> |
<td>splnet</td> |
<td>splnet()</td> |
<td>only RX is softint'ed</td> |
<td>only RX is softint'ed</td> |
<td>TX and RX differently</td> |
<td>TX and RX differently</td> |
<td>callout isn't used</td> |
<td>callout isn't used</td> |
|
<td>Yes (MSI-X only)</td> |
|
<td>No</td> |
<td></td> |
<td></td> |
</tr> |
</tr> |
<tr> |
<tr> |
Line 50
|
Line 56
|
<td></td> |
<td></td> |
<td></td> |
<td></td> |
<td></td> |
<td></td> |
|
<td></td> |
|
<td></td> |
</tr> |
</tr> |
<tr> |
<tr> |
<th>pq3etsec</th> |
<th>pq3etsec</th> |
Line 63
|
Line 71
|
<td>sc_hwlock is for hard interrput. sc_lock is for software interrupt. TX and RX use the same lock</td> |
<td>sc_hwlock is for hard interrput. sc_lock is for software interrupt. TX and RX use the same lock</td> |
<td>mutex_enter(sc_lock)</td> |
<td>mutex_enter(sc_lock)</td> |
<td></td> |
<td></td> |
|
<td></td> |
|
<td></td> |
</tr> |
</tr> |
<tr> |
<tr> |
<th>bcm53xx_eth</th> |
<th>bcmeth(4)</th> |
<td>in attach()</td> |
<td>in attach()</td> |
<td>lock, hwlock</td> |
<td>lock, hwlock</td> |
<td>not taken?</td> |
<td>not taken?</td> |
<td>not taken. Set flag with atomic_or_uint() and call softintr_schedule()</td> |
<td>not taken. Set flag with atomic_or_uint() and call softintr_schedule()</td> |
<td>not taken?</td> |
<td>not taken?</td> |
<td>splnet()</td> |
<td>splnet()</td> |
<td>Yes</td> |
<td>Yes. The interrupt handler calls softint or workqueue depending on the load.</td> |
<td>sc_hwlock is for hard interrput. sc_lock is for software interrupt. TX and RX use the same lock</td> |
<td>sc_hwlock is for hard interrput. sc_lock is for software interrupt. TX and RX use the same lock</td> |
<td>callout isn't used</td> |
<td>callout isn't used</td> |
<td></td> |
<td></td> |
|
<td></td> |
|
<td></td> |
</tr> |
</tr> |
<tr> |
<tr> |
<th>ixg</th> |
<th>ixg</th> |
Line 89
|
Line 101
|
<td>TX and RX differently</td> |
<td>TX and RX differently</td> |
<td>CORE_LOCK() in the beginning</td> |
<td>CORE_LOCK() in the beginning</td> |
<td></td> |
<td></td> |
|
<td></td> |
|
<td></td> |
</tr> |
</tr> |
<tr> |
<tr> |
<th>bnx</th> |
<th>bnx</th> |
Line 102
|
Line 116
|
<td>only TX uses mutex</td> |
<td>only TX uses mutex</td> |
<td>splnet() in the beginning</td> |
<td>splnet() in the beginning</td> |
<td></td> |
<td></td> |
|
<td></td> |
|
<td></td> |
</tr> |
</tr> |
<tr> |
<tr> |
<th>bge</th> |
<th>bge</th> |
Line 114
|
Line 130
|
<td>No</td> |
<td>No</td> |
<td>No</td> |
<td>No</td> |
<td>splnet() in the beginning</td> |
<td>splnet() in the beginning</td> |
|
<td></td> |
|
<td></td> |
<td>mutex is not used at all</td> |
<td>mutex is not used at all</td> |
</tr> |
</tr> |
</table> |
</table> |