66#include "hbg_hw.h"
77
88static void hbg_irq_handle_err (struct hbg_priv * priv ,
9- struct hbg_irq_info * irq_info )
9+ const struct hbg_irq_info * irq_info )
1010{
1111 if (irq_info -> need_print )
1212 dev_err (& priv -> pdev -> dev ,
@@ -17,30 +17,30 @@ static void hbg_irq_handle_err(struct hbg_priv *priv,
1717}
1818
1919static void hbg_irq_handle_tx (struct hbg_priv * priv ,
20- struct hbg_irq_info * irq_info )
20+ const struct hbg_irq_info * irq_info )
2121{
2222 napi_schedule (& priv -> tx_ring .napi );
2323}
2424
2525static void hbg_irq_handle_rx (struct hbg_priv * priv ,
26- struct hbg_irq_info * irq_info )
26+ const struct hbg_irq_info * irq_info )
2727{
2828 napi_schedule (& priv -> rx_ring .napi );
2929}
3030
3131static void hbg_irq_handle_rx_buf_val (struct hbg_priv * priv ,
32- struct hbg_irq_info * irq_info )
32+ const struct hbg_irq_info * irq_info )
3333{
3434 priv -> stats .rx_fifo_less_empty_thrsld_cnt ++ ;
3535}
3636
3737#define HBG_IRQ_I (name , handle ) \
38- {#name, HBG_INT_MSK_##name##_B, false, false, false, 0, handle}
38+ {#name, HBG_INT_MSK_##name##_B, false, false, false, handle}
3939#define HBG_ERR_IRQ_I (name , need_print , ndde_reset ) \
4040 {#name, HBG_INT_MSK_##name##_B, true, need_print, \
41- ndde_reset, 0, hbg_irq_handle_err}
41+ ndde_reset, hbg_irq_handle_err}
4242
43- static struct hbg_irq_info hbg_irqs [] = {
43+ static const struct hbg_irq_info hbg_irqs [] = {
4444 HBG_IRQ_I (RX , hbg_irq_handle_rx ),
4545 HBG_IRQ_I (TX , hbg_irq_handle_tx ),
4646 HBG_ERR_IRQ_I (TX_PKT_CPL , true, true),
@@ -64,7 +64,7 @@ static struct hbg_irq_info hbg_irqs[] = {
6464
6565static irqreturn_t hbg_irq_handle (int irq_num , void * p )
6666{
67- struct hbg_irq_info * info ;
67+ const struct hbg_irq_info * info ;
6868 struct hbg_priv * priv = p ;
6969 u32 status ;
7070 u32 i ;
@@ -79,7 +79,7 @@ static irqreturn_t hbg_irq_handle(int irq_num, void *p)
7979 hbg_hw_irq_enable (priv , info -> mask , false);
8080 hbg_hw_irq_clear (priv , info -> mask );
8181
82- info -> count ++ ;
82+ priv -> vectors . stats_array [ i ] ++ ;
8383 if (info -> irq_handle )
8484 info -> irq_handle (priv , info );
8585
@@ -132,6 +132,12 @@ int hbg_irq_init(struct hbg_priv *priv)
132132 irq_names_map [i ]);
133133 }
134134
135+ vectors -> stats_array = devm_kcalloc (& priv -> pdev -> dev ,
136+ ARRAY_SIZE (hbg_irqs ),
137+ sizeof (u64 ), GFP_KERNEL );
138+ if (!vectors -> stats_array )
139+ return - ENOMEM ;
140+
135141 vectors -> info_array = hbg_irqs ;
136142 vectors -> info_array_len = ARRAY_SIZE (hbg_irqs );
137143 return 0 ;
0 commit comments