@@ -11,6 +11,9 @@ static void hbg_irq_handle_err(struct hbg_priv *priv,
1111 if (irq_info -> need_print )
1212 dev_err (& priv -> pdev -> dev ,
1313 "receive error interrupt: %s\n" , irq_info -> name );
14+
15+ if (irq_info -> need_reset )
16+ hbg_err_reset_task_schedule (priv );
1417}
1518
1619static void hbg_irq_handle_tx (struct hbg_priv * priv ,
@@ -25,30 +28,38 @@ static void hbg_irq_handle_rx(struct hbg_priv *priv,
2528 napi_schedule (& priv -> rx_ring .napi );
2629}
2730
28- #define HBG_TXRX_IRQ_I (name , handle ) \
29- {#name, HBG_INT_MSK_##name##_B, false, false, 0, handle}
30- #define HBG_ERR_IRQ_I (name , need_print ) \
31- {#name, HBG_INT_MSK_##name##_B, true, need_print, 0, hbg_irq_handle_err}
31+ static void hbg_irq_handle_rx_buf_val (struct hbg_priv * priv ,
32+ struct hbg_irq_info * irq_info )
33+ {
34+ priv -> stats .rx_fifo_less_empty_thrsld_cnt ++ ;
35+ }
36+
37+ #define HBG_IRQ_I (name , handle ) \
38+ {#name, HBG_INT_MSK_##name##_B, false, false, false, 0, handle}
39+ #define HBG_ERR_IRQ_I (name , need_print , ndde_reset ) \
40+ {#name, HBG_INT_MSK_##name##_B, true, need_print, \
41+ ndde_reset, 0, hbg_irq_handle_err}
3242
3343static struct hbg_irq_info hbg_irqs [] = {
34- HBG_TXRX_IRQ_I (RX , hbg_irq_handle_rx ),
35- HBG_TXRX_IRQ_I (TX , hbg_irq_handle_tx ),
36- HBG_ERR_IRQ_I (MAC_MII_FIFO_ERR , true),
37- HBG_ERR_IRQ_I (MAC_PCS_RX_FIFO_ERR , true),
38- HBG_ERR_IRQ_I (MAC_PCS_TX_FIFO_ERR , true),
39- HBG_ERR_IRQ_I (MAC_APP_RX_FIFO_ERR , true),
40- HBG_ERR_IRQ_I (MAC_APP_TX_FIFO_ERR , true),
41- HBG_ERR_IRQ_I (SRAM_PARITY_ERR , true),
42- HBG_ERR_IRQ_I (TX_AHB_ERR , true),
43- HBG_ERR_IRQ_I (RX_BUF_AVL , false),
44- HBG_ERR_IRQ_I (REL_BUF_ERR , true),
45- HBG_ERR_IRQ_I (TXCFG_AVL , false),
46- HBG_ERR_IRQ_I (TX_DROP , false),
47- HBG_ERR_IRQ_I (RX_DROP , false),
48- HBG_ERR_IRQ_I (RX_AHB_ERR , true),
49- HBG_ERR_IRQ_I (MAC_FIFO_ERR , false),
50- HBG_ERR_IRQ_I (RBREQ_ERR , false),
51- HBG_ERR_IRQ_I (WE_ERR , false),
44+ HBG_IRQ_I (RX , hbg_irq_handle_rx ),
45+ HBG_IRQ_I (TX , hbg_irq_handle_tx ),
46+ HBG_ERR_IRQ_I (TX_PKT_CPL , true, true),
47+ HBG_ERR_IRQ_I (MAC_MII_FIFO_ERR , true, true),
48+ HBG_ERR_IRQ_I (MAC_PCS_RX_FIFO_ERR , true, true),
49+ HBG_ERR_IRQ_I (MAC_PCS_TX_FIFO_ERR , true, true),
50+ HBG_ERR_IRQ_I (MAC_APP_RX_FIFO_ERR , true, true),
51+ HBG_ERR_IRQ_I (MAC_APP_TX_FIFO_ERR , true, true),
52+ HBG_ERR_IRQ_I (SRAM_PARITY_ERR , true, false),
53+ HBG_ERR_IRQ_I (TX_AHB_ERR , true, true),
54+ HBG_IRQ_I (RX_BUF_AVL , hbg_irq_handle_rx_buf_val ),
55+ HBG_ERR_IRQ_I (REL_BUF_ERR , true, false),
56+ HBG_ERR_IRQ_I (TXCFG_AVL , false, false),
57+ HBG_ERR_IRQ_I (TX_DROP , false, false),
58+ HBG_ERR_IRQ_I (RX_DROP , false, false),
59+ HBG_ERR_IRQ_I (RX_AHB_ERR , true, false),
60+ HBG_ERR_IRQ_I (MAC_FIFO_ERR , true, true),
61+ HBG_ERR_IRQ_I (RBREQ_ERR , true, true),
62+ HBG_ERR_IRQ_I (WE_ERR , true, true),
5263};
5364
5465static irqreturn_t hbg_irq_handle (int irq_num , void * p )
0 commit comments