Lines 283-288
static void em_msix_link(void *);
Link Here
|
283 |
static void em_handle_tx(void *context, int pending); |
283 |
static void em_handle_tx(void *context, int pending); |
284 |
static void em_handle_rx(void *context, int pending); |
284 |
static void em_handle_rx(void *context, int pending); |
285 |
static void em_handle_link(void *context, int pending); |
285 |
static void em_handle_link(void *context, int pending); |
|
|
286 |
static void em_handle_rx_overrun(void *context); |
286 |
|
287 |
|
287 |
static void em_add_rx_process_limit(struct adapter *, const char *, |
288 |
static void em_add_rx_process_limit(struct adapter *, const char *, |
288 |
const char *, int *, int); |
289 |
const char *, int *, int); |
Lines 1567-1575
em_msix_link(void *arg)
Link Here
|
1567 |
if (reg_icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) { |
1568 |
if (reg_icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) { |
1568 |
adapter->hw.mac.get_link_status = 1; |
1569 |
adapter->hw.mac.get_link_status = 1; |
1569 |
em_handle_link(adapter, 0); |
1570 |
em_handle_link(adapter, 0); |
|
|
1571 |
} else if (reg_icr & E1000_ICR_RXO) { |
1572 |
adapter->rx_overruns++; |
1573 |
em_handle_rx_overrun(adapter); |
1570 |
} else |
1574 |
} else |
1571 |
E1000_WRITE_REG(&adapter->hw, E1000_IMS, |
1575 |
E1000_WRITE_REG(&adapter->hw, E1000_IMS, |
1572 |
EM_MSIX_LINK | E1000_IMS_LSC); |
1576 |
EM_MSIX_LINK | E1000_IMS_LSC | E1000_IMS_RXO); |
1573 |
return; |
1577 |
return; |
1574 |
} |
1578 |
} |
1575 |
|
1579 |
|
Lines 1627-1632
em_handle_link(void *context, int pending)
Link Here
|
1627 |
EM_CORE_UNLOCK(adapter); |
1631 |
EM_CORE_UNLOCK(adapter); |
1628 |
} |
1632 |
} |
1629 |
|
1633 |
|
|
|
1634 |
static void |
1635 |
em_handle_rx_overrun(void *context) |
1636 |
{ |
1637 |
struct adapter *adapter = context; |
1638 |
struct ifnet *ifp = adapter->ifp; |
1639 |
struct rx_ring *rxr = adapter->rx_rings; |
1640 |
|
1641 |
if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) |
1642 |
return; |
1643 |
|
1644 |
EM_CORE_LOCK(adapter); |
1645 |
em_refresh_mbufs(rxr, rxr->next_to_check); |
1646 |
E1000_WRITE_REG(&adapter->hw, E1000_IMS, E1000_IMS_RXO); |
1647 |
EM_CORE_UNLOCK(adapter); |
1648 |
} |
1630 |
|
1649 |
|
1631 |
/********************************************************************* |
1650 |
/********************************************************************* |
1632 |
* |
1651 |
* |
1633 |
- |
|
|