@@ -103,7 +103,7 @@ static void ena_tx_timeout(struct net_device *dev, unsigned int txqueue)
103103 if (test_and_set_bit (ENA_FLAG_TRIGGER_RESET , & adapter -> flags ))
104104 return ;
105105
106- adapter -> reset_reason = ENA_REGS_RESET_OS_NETDEV_WD ;
106+ ena_reset_device ( adapter , ENA_REGS_RESET_OS_NETDEV_WD ) ;
107107 ena_increase_stat (& adapter -> dev_stats .tx_timeout , 1 , & adapter -> syncp );
108108
109109 netif_err (adapter , tx_err , dev , "Transmit time out\n" );
@@ -166,11 +166,9 @@ static int ena_xmit_common(struct net_device *dev,
166166 "Failed to prepare tx bufs\n" );
167167 ena_increase_stat (& ring -> tx_stats .prepare_ctx_err , 1 ,
168168 & ring -> syncp );
169- if (rc != - ENOMEM ) {
170- adapter -> reset_reason =
171- ENA_REGS_RESET_DRIVER_INVALID_STATE ;
172- set_bit (ENA_FLAG_TRIGGER_RESET , & adapter -> flags );
173- }
169+ if (rc != - ENOMEM )
170+ ena_reset_device (adapter ,
171+ ENA_REGS_RESET_DRIVER_INVALID_STATE );
174172 return rc ;
175173 }
176174
@@ -1279,10 +1277,8 @@ static int handle_invalid_req_id(struct ena_ring *ring, u16 req_id,
12791277 req_id , ring -> qid );
12801278
12811279 ena_increase_stat (& ring -> tx_stats .bad_req_id , 1 , & ring -> syncp );
1280+ ena_reset_device (ring -> adapter , ENA_REGS_RESET_INV_TX_REQ_ID );
12821281
1283- /* Trigger device reset */
1284- ring -> adapter -> reset_reason = ENA_REGS_RESET_INV_TX_REQ_ID ;
1285- set_bit (ENA_FLAG_TRIGGER_RESET , & ring -> adapter -> flags );
12861282 return - EFAULT ;
12871283}
12881284
@@ -1445,10 +1441,7 @@ static struct sk_buff *ena_rx_skb(struct ena_ring *rx_ring,
14451441 netif_err (adapter , rx_err , rx_ring -> netdev ,
14461442 "Page is NULL. qid %u req_id %u\n" , rx_ring -> qid , req_id );
14471443 ena_increase_stat (& rx_ring -> rx_stats .bad_req_id , 1 , & rx_ring -> syncp );
1448- adapter -> reset_reason = ENA_REGS_RESET_INV_RX_REQ_ID ;
1449- /* Make sure reset reason is set before triggering the reset */
1450- smp_mb__before_atomic ();
1451- set_bit (ENA_FLAG_TRIGGER_RESET , & adapter -> flags );
1444+ ena_reset_device (adapter , ENA_REGS_RESET_INV_RX_REQ_ID );
14521445 return NULL ;
14531446 }
14541447
@@ -1781,15 +1774,12 @@ static int ena_clean_rx_irq(struct ena_ring *rx_ring, struct napi_struct *napi,
17811774 if (rc == - ENOSPC ) {
17821775 ena_increase_stat (& rx_ring -> rx_stats .bad_desc_num , 1 ,
17831776 & rx_ring -> syncp );
1784- adapter -> reset_reason = ENA_REGS_RESET_TOO_MANY_RX_DESCS ;
1777+ ena_reset_device ( adapter , ENA_REGS_RESET_TOO_MANY_RX_DESCS ) ;
17851778 } else {
17861779 ena_increase_stat (& rx_ring -> rx_stats .bad_req_id , 1 ,
17871780 & rx_ring -> syncp );
1788- adapter -> reset_reason = ENA_REGS_RESET_INV_RX_REQ_ID ;
1781+ ena_reset_device ( adapter , ENA_REGS_RESET_INV_RX_REQ_ID ) ;
17891782 }
1790-
1791- set_bit (ENA_FLAG_TRIGGER_RESET , & adapter -> flags );
1792-
17931783 return 0 ;
17941784}
17951785
@@ -3707,9 +3697,8 @@ static int check_for_rx_interrupt_queue(struct ena_adapter *adapter,
37073697 netif_err (adapter , rx_err , adapter -> netdev ,
37083698 "Potential MSIX issue on Rx side Queue = %d. Reset the device\n" ,
37093699 rx_ring -> qid );
3710- adapter -> reset_reason = ENA_REGS_RESET_MISS_INTERRUPT ;
3711- smp_mb__before_atomic ();
3712- set_bit (ENA_FLAG_TRIGGER_RESET , & adapter -> flags );
3700+
3701+ ena_reset_device (adapter , ENA_REGS_RESET_MISS_INTERRUPT );
37133702 return - EIO ;
37143703 }
37153704
@@ -3746,9 +3735,7 @@ static int check_missing_comp_in_tx_queue(struct ena_adapter *adapter,
37463735 netif_err (adapter , tx_err , adapter -> netdev ,
37473736 "Potential MSIX issue on Tx side Queue = %d. Reset the device\n" ,
37483737 tx_ring -> qid );
3749- adapter -> reset_reason = ENA_REGS_RESET_MISS_INTERRUPT ;
3750- smp_mb__before_atomic ();
3751- set_bit (ENA_FLAG_TRIGGER_RESET , & adapter -> flags );
3738+ ena_reset_device (adapter , ENA_REGS_RESET_MISS_INTERRUPT );
37523739 return - EIO ;
37533740 }
37543741
@@ -3774,9 +3761,7 @@ static int check_missing_comp_in_tx_queue(struct ena_adapter *adapter,
37743761 "The number of lost tx completions is above the threshold (%d > %d). Reset the device\n" ,
37753762 missed_tx ,
37763763 adapter -> missing_tx_completion_threshold );
3777- adapter -> reset_reason =
3778- ENA_REGS_RESET_MISS_TX_CMPL ;
3779- set_bit (ENA_FLAG_TRIGGER_RESET , & adapter -> flags );
3764+ ena_reset_device (adapter , ENA_REGS_RESET_MISS_TX_CMPL );
37803765 rc = - EIO ;
37813766 }
37823767
@@ -3897,8 +3882,7 @@ static void check_for_missing_keep_alive(struct ena_adapter *adapter)
38973882 "Keep alive watchdog timeout.\n" );
38983883 ena_increase_stat (& adapter -> dev_stats .wd_expired , 1 ,
38993884 & adapter -> syncp );
3900- adapter -> reset_reason = ENA_REGS_RESET_KEEP_ALIVE_TO ;
3901- set_bit (ENA_FLAG_TRIGGER_RESET , & adapter -> flags );
3885+ ena_reset_device (adapter , ENA_REGS_RESET_KEEP_ALIVE_TO );
39023886 }
39033887}
39043888
@@ -3909,8 +3893,7 @@ static void check_for_admin_com_state(struct ena_adapter *adapter)
39093893 "ENA admin queue is not in running state!\n" );
39103894 ena_increase_stat (& adapter -> dev_stats .admin_q_pause , 1 ,
39113895 & adapter -> syncp );
3912- adapter -> reset_reason = ENA_REGS_RESET_ADMIN_TO ;
3913- set_bit (ENA_FLAG_TRIGGER_RESET , & adapter -> flags );
3896+ ena_reset_device (adapter , ENA_REGS_RESET_ADMIN_TO );
39143897 }
39153898}
39163899
0 commit comments