@@ -14055,38 +14055,23 @@ static void bnxt_unlock_sp(struct bnxt *bp)
1405514055 netdev_unlock (bp -> dev );
1405614056}
1405714057
14058- /* Same as bnxt_lock_sp() with additional rtnl_lock */
14059- static void bnxt_rtnl_lock_sp (struct bnxt * bp )
14060- {
14061- clear_bit (BNXT_STATE_IN_SP_TASK , & bp -> state );
14062- rtnl_lock ();
14063- netdev_lock (bp -> dev );
14064- }
14065-
14066- static void bnxt_rtnl_unlock_sp (struct bnxt * bp )
14067- {
14068- set_bit (BNXT_STATE_IN_SP_TASK , & bp -> state );
14069- netdev_unlock (bp -> dev );
14070- rtnl_unlock ();
14071- }
14072-
1407314058/* Only called from bnxt_sp_task() */
1407414059static void bnxt_reset (struct bnxt * bp , bool silent )
1407514060{
14076- bnxt_rtnl_lock_sp (bp );
14061+ bnxt_lock_sp (bp );
1407714062 if (test_bit (BNXT_STATE_OPEN , & bp -> state ))
1407814063 bnxt_reset_task (bp , silent );
14079- bnxt_rtnl_unlock_sp (bp );
14064+ bnxt_unlock_sp (bp );
1408014065}
1408114066
1408214067/* Only called from bnxt_sp_task() */
1408314068static void bnxt_rx_ring_reset (struct bnxt * bp )
1408414069{
1408514070 int i ;
1408614071
14087- bnxt_rtnl_lock_sp (bp );
14072+ bnxt_lock_sp (bp );
1408814073 if (!test_bit (BNXT_STATE_OPEN , & bp -> state )) {
14089- bnxt_rtnl_unlock_sp (bp );
14074+ bnxt_unlock_sp (bp );
1409014075 return ;
1409114076 }
1409214077 /* Disable and flush TPA before resetting the RX ring */
@@ -14125,7 +14110,7 @@ static void bnxt_rx_ring_reset(struct bnxt *bp)
1412514110 }
1412614111 if (bp -> flags & BNXT_FLAG_TPA )
1412714112 bnxt_set_tpa (bp , true);
14128- bnxt_rtnl_unlock_sp (bp );
14113+ bnxt_unlock_sp (bp );
1412914114}
1413014115
1413114116static void bnxt_fw_fatal_close (struct bnxt * bp )
@@ -15017,17 +15002,15 @@ static void bnxt_fw_reset_task(struct work_struct *work)
1501715002 bp -> fw_reset_state = BNXT_FW_RESET_STATE_OPENING ;
1501815003 fallthrough ;
1501915004 case BNXT_FW_RESET_STATE_OPENING :
15020- while (!rtnl_trylock ( )) {
15005+ while (!netdev_trylock ( bp -> dev )) {
1502115006 bnxt_queue_fw_reset_work (bp , HZ / 10 );
1502215007 return ;
1502315008 }
15024- netdev_lock (bp -> dev );
1502515009 rc = bnxt_open (bp -> dev );
1502615010 if (rc ) {
1502715011 netdev_err (bp -> dev , "bnxt_open() failed during FW reset\n" );
1502815012 bnxt_fw_reset_abort (bp , rc );
1502915013 netdev_unlock (bp -> dev );
15030- rtnl_unlock ();
1503115014 goto ulp_start ;
1503215015 }
1503315016
@@ -15047,7 +15030,6 @@ static void bnxt_fw_reset_task(struct work_struct *work)
1504715030 bnxt_dl_health_fw_status_update (bp , true);
1504815031 }
1504915032 netdev_unlock (bp -> dev );
15050- rtnl_unlock ();
1505115033 bnxt_ulp_start (bp , 0 );
1505215034 bnxt_reenable_sriov (bp );
1505315035 netdev_lock (bp -> dev );
@@ -15573,17 +15555,15 @@ static int bnxt_udp_tunnel_unset_port(struct net_device *netdev, unsigned int ta
1557315555static const struct udp_tunnel_nic_info bnxt_udp_tunnels = {
1557415556 .set_port = bnxt_udp_tunnel_set_port ,
1557515557 .unset_port = bnxt_udp_tunnel_unset_port ,
15576- .flags = UDP_TUNNEL_NIC_INFO_MAY_SLEEP |
15577- UDP_TUNNEL_NIC_INFO_OPEN_ONLY ,
15558+ .flags = UDP_TUNNEL_NIC_INFO_OPEN_ONLY ,
1557815559 .tables = {
1557915560 { .n_entries = 1 , .tunnel_types = UDP_TUNNEL_TYPE_VXLAN , },
1558015561 { .n_entries = 1 , .tunnel_types = UDP_TUNNEL_TYPE_GENEVE , },
1558115562 },
1558215563}, bnxt_udp_tunnels_p7 = {
1558315564 .set_port = bnxt_udp_tunnel_set_port ,
1558415565 .unset_port = bnxt_udp_tunnel_unset_port ,
15585- .flags = UDP_TUNNEL_NIC_INFO_MAY_SLEEP |
15586- UDP_TUNNEL_NIC_INFO_OPEN_ONLY ,
15566+ .flags = UDP_TUNNEL_NIC_INFO_OPEN_ONLY ,
1558715567 .tables = {
1558815568 { .n_entries = 1 , .tunnel_types = UDP_TUNNEL_TYPE_VXLAN , },
1558915569 { .n_entries = 1 , .tunnel_types = UDP_TUNNEL_TYPE_GENEVE , },
@@ -15998,7 +15978,7 @@ static int bnxt_queue_start(struct net_device *dev, void *qmem, int idx)
1599815978 rc );
1599915979 napi_enable_locked (& bnapi -> napi );
1600015980 bnxt_db_nq_arm (bp , & cpr -> cp_db , cpr -> cp_raw_cons );
16001- netif_close ( dev );
15981+ bnxt_reset_task ( bp , true );
1600215982 return rc ;
1600315983}
1600415984
@@ -16814,7 +16794,6 @@ static int bnxt_resume(struct device *device)
1681416794 struct bnxt * bp = netdev_priv (dev );
1681516795 int rc = 0 ;
1681616796
16817- rtnl_lock ();
1681816797 netdev_lock (dev );
1681916798 rc = pci_enable_device (bp -> pdev );
1682016799 if (rc ) {
@@ -16859,7 +16838,6 @@ static int bnxt_resume(struct device *device)
1685916838
1686016839resume_exit :
1686116840 netdev_unlock (bp -> dev );
16862- rtnl_unlock ();
1686316841 bnxt_ulp_start (bp , rc );
1686416842 if (!rc )
1686516843 bnxt_reenable_sriov (bp );
@@ -17025,7 +17003,6 @@ static void bnxt_io_resume(struct pci_dev *pdev)
1702517003 int err ;
1702617004
1702717005 netdev_info (bp -> dev , "PCI Slot Resume\n" );
17028- rtnl_lock ();
1702917006 netdev_lock (netdev );
1703017007
1703117008 err = bnxt_hwrm_func_qcaps (bp );
@@ -17043,7 +17020,6 @@ static void bnxt_io_resume(struct pci_dev *pdev)
1704317020 netif_device_attach (netdev );
1704417021
1704517022 netdev_unlock (netdev );
17046- rtnl_unlock ();
1704717023 bnxt_ulp_start (bp , err );
1704817024 if (!err )
1704917025 bnxt_reenable_sriov (bp );
0 commit comments