Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/netmap/if_em_netmap.h
Show First 20 Lines • Show All 42 Lines • ▼ Show 20 Lines | |||||
static void | static void | ||||
em_netmap_block_tasks(struct adapter *adapter) | em_netmap_block_tasks(struct adapter *adapter) | ||||
{ | { | ||||
if (adapter->msix > 1) { /* MSIX */ | if (adapter->msix > 1) { /* MSIX */ | ||||
int i; | int i; | ||||
struct tx_ring *txr = adapter->tx_rings; | struct tx_ring *txr = adapter->tx_rings; | ||||
struct rx_ring *rxr = adapter->rx_rings; | struct rx_ring *rxr = adapter->rx_rings; | ||||
for (i = 0; i < adapter->num_queues; i++, txr++, rxr++) { | for (i = 0; i < adapter->num_tx_queues; i++, txr++) { | ||||
taskqueue_block(txr->tq); | taskqueue_block(txr->tq); | ||||
taskqueue_drain(txr->tq, &txr->tx_task); | taskqueue_drain(txr->tq, &txr->tx_task); | ||||
} | |||||
for (i = 0; i < adapter->num_rx_queues; i++, rxr++) { | |||||
taskqueue_block(rxr->tq); | taskqueue_block(rxr->tq); | ||||
taskqueue_drain(rxr->tq, &rxr->rx_task); | taskqueue_drain(rxr->tq, &rxr->rx_task); | ||||
} | } | ||||
} else { /* legacy */ | } else { /* legacy */ | ||||
taskqueue_block(adapter->tq); | taskqueue_block(adapter->tq); | ||||
taskqueue_drain(adapter->tq, &adapter->link_task); | taskqueue_drain(adapter->tq, &adapter->link_task); | ||||
taskqueue_drain(adapter->tq, &adapter->que_task); | taskqueue_drain(adapter->tq, &adapter->que_task); | ||||
} | } | ||||
} | } | ||||
static void | static void | ||||
em_netmap_unblock_tasks(struct adapter *adapter) | em_netmap_unblock_tasks(struct adapter *adapter) | ||||
{ | { | ||||
if (adapter->msix > 1) { | if (adapter->msix > 1) { | ||||
struct tx_ring *txr = adapter->tx_rings; | struct tx_ring *txr = adapter->tx_rings; | ||||
struct rx_ring *rxr = adapter->rx_rings; | struct rx_ring *rxr = adapter->rx_rings; | ||||
int i; | int i; | ||||
for (i = 0; i < adapter->num_queues; i++) { | for (i = 0; i < adapter->num_tx_queues; i++) { | ||||
taskqueue_unblock(txr->tq); | taskqueue_unblock(txr->tq); | ||||
} | |||||
for (i = 0; i < adapter->num_rx_queues; i++) { | |||||
taskqueue_unblock(rxr->tq); | taskqueue_unblock(rxr->tq); | ||||
} | } | ||||
} else { /* legacy */ | } else { /* legacy */ | ||||
taskqueue_unblock(adapter->tq); | taskqueue_unblock(adapter->tq); | ||||
} | } | ||||
} | } | ||||
▲ Show 20 Lines • Show All 239 Lines • ▼ Show 20 Lines | em_netmap_attach(struct adapter *adapter) | ||||
na.ifp = adapter->ifp; | na.ifp = adapter->ifp; | ||||
na.na_flags = NAF_BDG_MAYSLEEP; | na.na_flags = NAF_BDG_MAYSLEEP; | ||||
na.num_tx_desc = adapter->num_tx_desc; | na.num_tx_desc = adapter->num_tx_desc; | ||||
na.num_rx_desc = adapter->num_rx_desc; | na.num_rx_desc = adapter->num_rx_desc; | ||||
na.nm_txsync = em_netmap_txsync; | na.nm_txsync = em_netmap_txsync; | ||||
na.nm_rxsync = em_netmap_rxsync; | na.nm_rxsync = em_netmap_rxsync; | ||||
na.nm_register = em_netmap_reg; | na.nm_register = em_netmap_reg; | ||||
na.num_tx_rings = na.num_rx_rings = adapter->num_queues; | na.num_tx_rings = adapter->num_tx_queues; | ||||
na.num_rx_rings = adapter->num_rx_queues; | |||||
netmap_attach(&na); | netmap_attach(&na); | ||||
} | } | ||||
/* end of file */ | /* end of file */ |