hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
....@@ -1,8 +1,7 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * QLogic qlcnic NIC Driver
34 * Copyright (c) 2009-2013 QLogic Corporation
4
- *
5
- * See LICENSE.qlcnic for copyright and licensing details.
65 */
76
87 #include "qlcnic_sriov.h"
....@@ -1028,9 +1027,8 @@
10281027 #define QLCNIC_ENABLE_INGRESS_ENCAP_PARSING 1
10291028 #define QLCNIC_DISABLE_INGRESS_ENCAP_PARSING 0
10301029
1031
-static int qlcnic_set_vxlan_port(struct qlcnic_adapter *adapter)
1030
+int qlcnic_set_vxlan_port(struct qlcnic_adapter *adapter, u16 port)
10321031 {
1033
- u16 port = adapter->ahw->vxlan_port;
10341032 struct qlcnic_cmd_args cmd;
10351033 int ret = 0;
10361034
....@@ -1057,10 +1055,8 @@
10571055 return ret;
10581056 }
10591057
1060
-static int qlcnic_set_vxlan_parsing(struct qlcnic_adapter *adapter,
1061
- bool state)
1058
+int qlcnic_set_vxlan_parsing(struct qlcnic_adapter *adapter, u16 port)
10621059 {
1063
- u16 vxlan_port = adapter->ahw->vxlan_port;
10641060 struct qlcnic_cmd_args cmd;
10651061 int ret = 0;
10661062
....@@ -1071,18 +1067,18 @@
10711067 if (ret)
10721068 return ret;
10731069
1074
- cmd.req.arg[1] = state ? QLCNIC_ENABLE_INGRESS_ENCAP_PARSING :
1075
- QLCNIC_DISABLE_INGRESS_ENCAP_PARSING;
1070
+ cmd.req.arg[1] = port ? QLCNIC_ENABLE_INGRESS_ENCAP_PARSING :
1071
+ QLCNIC_DISABLE_INGRESS_ENCAP_PARSING;
10761072
10771073 ret = qlcnic_issue_cmd(adapter, &cmd);
10781074 if (ret)
10791075 netdev_err(adapter->netdev,
10801076 "Failed to %s VXLAN parsing for port %d\n",
1081
- state ? "enable" : "disable", vxlan_port);
1077
+ port ? "enable" : "disable", port);
10821078 else
10831079 netdev_info(adapter->netdev,
10841080 "%s VXLAN parsing for port %d\n",
1085
- state ? "Enabled" : "Disabled", vxlan_port);
1081
+ port ? "Enabled" : "Disabled", port);
10861082
10871083 qlcnic_free_mbx_args(&cmd);
10881084
....@@ -1093,22 +1089,6 @@
10931089 {
10941090 if (adapter->fhash.fnum)
10951091 qlcnic_prune_lb_filters(adapter);
1096
-
1097
- if (adapter->flags & QLCNIC_ADD_VXLAN_PORT) {
1098
- if (qlcnic_set_vxlan_port(adapter))
1099
- return;
1100
-
1101
- if (qlcnic_set_vxlan_parsing(adapter, true))
1102
- return;
1103
-
1104
- adapter->flags &= ~QLCNIC_ADD_VXLAN_PORT;
1105
- } else if (adapter->flags & QLCNIC_DEL_VXLAN_PORT) {
1106
- if (qlcnic_set_vxlan_parsing(adapter, false))
1107
- return;
1108
-
1109
- adapter->ahw->vxlan_port = 0;
1110
- adapter->flags &= ~QLCNIC_DEL_VXLAN_PORT;
1111
- }
11121092 }
11131093
11141094 /**
....@@ -2525,7 +2505,13 @@
25252505 goto disable_mbx_intr;
25262506
25272507 qlcnic_83xx_clear_function_resources(adapter);
2528
- qlcnic_dcb_enable(adapter->dcb);
2508
+
2509
+ err = qlcnic_dcb_enable(adapter->dcb);
2510
+ if (err) {
2511
+ qlcnic_dcb_free(adapter->dcb);
2512
+ goto disable_mbx_intr;
2513
+ }
2514
+
25292515 qlcnic_83xx_initialize_nic(adapter, 1);
25302516 qlcnic_dcb_get_info(adapter->dcb);
25312517