Lines 1396-1418
ixgbe_disable_queue(struct adapter *adapter, u32 vector)
Link Here
|
1396 |
} |
1396 |
} |
1397 |
} |
1397 |
} |
1398 |
|
1398 |
|
1399 |
static inline void |
|
|
1400 |
ixgbe_rearm_queues(struct adapter *adapter, u64 queues) |
1401 |
{ |
1402 |
u32 mask; |
1403 |
|
1404 |
if (adapter->hw.mac.type == ixgbe_mac_82598EB) { |
1405 |
mask = (IXGBE_EIMS_RTX_QUEUE & queues); |
1406 |
IXGBE_WRITE_REG(&adapter->hw, IXGBE_EICS, mask); |
1407 |
} else { |
1408 |
mask = (queues & 0xFFFFFFFF); |
1409 |
IXGBE_WRITE_REG(&adapter->hw, IXGBE_EICS_EX(0), mask); |
1410 |
mask = (queues >> 32); |
1411 |
IXGBE_WRITE_REG(&adapter->hw, IXGBE_EICS_EX(1), mask); |
1412 |
} |
1413 |
} |
1414 |
|
1415 |
|
1416 |
static void |
1399 |
static void |
1417 |
ixgbe_handle_que(void *context, int pending) |
1400 |
ixgbe_handle_que(void *context, int pending) |
1418 |
{ |
1401 |
{ |
Lines 2046-2059
ixgbe_local_timer(void *arg)
Link Here
|
2046 |
(paused == 0)) |
2029 |
(paused == 0)) |
2047 |
++hung; |
2030 |
++hung; |
2048 |
else if (txr->queue_status == IXGBE_QUEUE_WORKING) |
2031 |
else if (txr->queue_status == IXGBE_QUEUE_WORKING) |
2049 |
taskqueue_enqueue(que->tq, &que->que_task); |
2032 |
taskqueue_enqueue(que->tq, &txr->txq_task); |
2050 |
} |
2033 |
} |
2051 |
/* Only truely watchdog if all queues show hung */ |
2034 |
/* Only truely watchdog if all queues show hung */ |
2052 |
if (hung == adapter->num_tx_queues) |
2035 |
if (hung == adapter->num_tx_queues) |
2053 |
goto watchdog; |
2036 |
goto watchdog; |
2054 |
|
2037 |
|
2055 |
out: |
2038 |
out: |
2056 |
ixgbe_rearm_queues(adapter, adapter->que_mask); |
|
|
2057 |
callout_reset(&adapter->timer, hz, ixgbe_local_timer, adapter); |
2039 |
callout_reset(&adapter->timer, hz, ixgbe_local_timer, adapter); |
2058 |
return; |
2040 |
return; |
2059 |
|
2041 |
|
Lines 4559-4565
next_desc:
Link Here
|
4559 |
** Schedule another interrupt if so. |
4541 |
** Schedule another interrupt if so. |
4560 |
*/ |
4542 |
*/ |
4561 |
if ((staterr & IXGBE_RXD_STAT_DD) != 0) { |
4543 |
if ((staterr & IXGBE_RXD_STAT_DD) != 0) { |
4562 |
ixgbe_rearm_queues(adapter, (u64)(1 << que->msix)); |
|
|
4563 |
return (TRUE); |
4544 |
return (TRUE); |
4564 |
} |
4545 |
} |
4565 |
|
4546 |
|