hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
....@@ -102,7 +102,7 @@
102102 * indirection table and RSS hash key with PF therefore
103103 * we want to disable the querying by default.
104104 */
105
- adapter->vfinfo[i].rss_query_enabled = 0;
105
+ adapter->vfinfo[i].rss_query_enabled = false;
106106
107107 /* Untrust all VFs */
108108 adapter->vfinfo[i].trusted = false;
....@@ -204,10 +204,13 @@
204204 int ixgbe_disable_sriov(struct ixgbe_adapter *adapter)
205205 {
206206 unsigned int num_vfs = adapter->num_vfs, vf;
207
+ unsigned long flags;
207208 int rss;
208209
210
+ spin_lock_irqsave(&adapter->vfs_lock, flags);
209211 /* set num VFs to 0 to prevent access to vfinfo */
210212 adapter->num_vfs = 0;
213
+ spin_unlock_irqrestore(&adapter->vfs_lock, flags);
211214
212215 /* put the reference to all of the vf devices */
213216 for (vf = 0; vf < num_vfs; ++vf) {
....@@ -500,13 +503,14 @@
500503 case ixgbe_mbox_api_11:
501504 case ixgbe_mbox_api_12:
502505 case ixgbe_mbox_api_13:
506
+ case ixgbe_mbox_api_14:
503507 /* Version 1.1 supports jumbo frames on VFs if PF has
504508 * jumbo frames enabled which means legacy VFs are
505509 * disabled
506510 */
507511 if (pf_max_frame > ETH_FRAME_LEN)
508512 break;
509
- /* fall through */
513
+ fallthrough;
510514 default:
511515 /* If the PF or VF are running w/ jumbo frames enabled
512516 * we need to shut down the VF Rx path as we cannot
....@@ -727,6 +731,9 @@
727731 /* reset multicast table array for vf */
728732 adapter->vfinfo[vf].num_vf_mc_hashes = 0;
729733
734
+ /* clear any ipsec table info */
735
+ ixgbe_ipsec_vf_clear(adapter, vf);
736
+
730737 /* Flush and reset the mta with the new values */
731738 ixgbe_set_rx_mode(adapter->netdev);
732739
....@@ -777,7 +784,7 @@
777784 memcpy(adapter->vfinfo[vf].vf_mac_addresses, mac_addr,
778785 ETH_ALEN);
779786 else
780
- memset(adapter->vfinfo[vf].vf_mac_addresses, 0, ETH_ALEN);
787
+ eth_zero_addr(adapter->vfinfo[vf].vf_mac_addresses);
781788
782789 return retval;
783790 }
....@@ -1009,6 +1016,7 @@
10091016 case ixgbe_mbox_api_11:
10101017 case ixgbe_mbox_api_12:
10111018 case ixgbe_mbox_api_13:
1019
+ case ixgbe_mbox_api_14:
10121020 adapter->vfinfo[vf].vf_api = api;
10131021 return 0;
10141022 default:
....@@ -1034,6 +1042,7 @@
10341042 case ixgbe_mbox_api_11:
10351043 case ixgbe_mbox_api_12:
10361044 case ixgbe_mbox_api_13:
1045
+ case ixgbe_mbox_api_14:
10371046 break;
10381047 default:
10391048 return -1;
....@@ -1074,6 +1083,7 @@
10741083
10751084 /* verify the PF is supporting the correct API */
10761085 switch (adapter->vfinfo[vf].vf_api) {
1086
+ case ixgbe_mbox_api_14:
10771087 case ixgbe_mbox_api_13:
10781088 case ixgbe_mbox_api_12:
10791089 break;
....@@ -1106,6 +1116,7 @@
11061116
11071117 /* verify the PF is supporting the correct API */
11081118 switch (adapter->vfinfo[vf].vf_api) {
1119
+ case ixgbe_mbox_api_14:
11091120 case ixgbe_mbox_api_13:
11101121 case ixgbe_mbox_api_12:
11111122 break;
....@@ -1131,8 +1142,9 @@
11311142 /* promisc introduced in 1.3 version */
11321143 if (xcast_mode == IXGBEVF_XCAST_MODE_PROMISC)
11331144 return -EOPNOTSUPP;
1134
- /* Fall threw */
1145
+ fallthrough;
11351146 case ixgbe_mbox_api_13:
1147
+ case ixgbe_mbox_api_14:
11361148 break;
11371149 default:
11381150 return -EOPNOTSUPP;
....@@ -1148,9 +1160,9 @@
11481160
11491161 switch (xcast_mode) {
11501162 case IXGBEVF_XCAST_MODE_NONE:
1151
- disable = IXGBE_VMOLR_BAM | IXGBE_VMOLR_ROMPE |
1163
+ disable = IXGBE_VMOLR_ROMPE |
11521164 IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE | IXGBE_VMOLR_VPE;
1153
- enable = 0;
1165
+ enable = IXGBE_VMOLR_BAM;
11541166 break;
11551167 case IXGBEVF_XCAST_MODE_MULTI:
11561168 disable = IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE | IXGBE_VMOLR_VPE;
....@@ -1172,9 +1184,9 @@
11721184 return -EPERM;
11731185 }
11741186
1175
- disable = 0;
1187
+ disable = IXGBE_VMOLR_VPE;
11761188 enable = IXGBE_VMOLR_BAM | IXGBE_VMOLR_ROMPE |
1177
- IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE | IXGBE_VMOLR_VPE;
1189
+ IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE;
11781190 break;
11791191 default:
11801192 return -EOPNOTSUPP;
....@@ -1258,6 +1270,12 @@
12581270 case IXGBE_VF_UPDATE_XCAST_MODE:
12591271 retval = ixgbe_update_vf_xcast_mode(adapter, msgbuf, vf);
12601272 break;
1273
+ case IXGBE_VF_IPSEC_ADD:
1274
+ retval = ixgbe_ipsec_vf_add_sa(adapter, msgbuf, vf);
1275
+ break;
1276
+ case IXGBE_VF_IPSEC_DEL:
1277
+ retval = ixgbe_ipsec_vf_del_sa(adapter, msgbuf, vf);
1278
+ break;
12611279 default:
12621280 e_err(drv, "Unhandled Msg %8.8x\n", msgbuf[0]);
12631281 retval = IXGBE_ERR_MBX;
....@@ -1290,8 +1308,10 @@
12901308 void ixgbe_msg_task(struct ixgbe_adapter *adapter)
12911309 {
12921310 struct ixgbe_hw *hw = &adapter->hw;
1311
+ unsigned long flags;
12931312 u32 vf;
12941313
1314
+ spin_lock_irqsave(&adapter->vfs_lock, flags);
12951315 for (vf = 0; vf < adapter->num_vfs; vf++) {
12961316 /* process any reset requests */
12971317 if (!ixgbe_check_for_rst(hw, vf))
....@@ -1305,6 +1325,7 @@
13051325 if (!ixgbe_check_for_ack(hw, vf))
13061326 ixgbe_rcv_ack_from_vf(adapter, vf);
13071327 }
1328
+ spin_unlock_irqrestore(&adapter->vfs_lock, flags);
13081329 }
13091330
13101331 void ixgbe_disable_tx_rx(struct ixgbe_adapter *adapter)
....@@ -1628,7 +1649,7 @@
16281649 IXGBE_WRITE_REG(hw, IXGBE_ETQF(IXGBE_ETQF_FILTER_LLDP),
16291650 (IXGBE_ETQF_FILTER_EN |
16301651 IXGBE_ETQF_TX_ANTISPOOF |
1631
- IXGBE_ETH_P_LLDP));
1652
+ ETH_P_LLDP));
16321653
16331654 IXGBE_WRITE_REG(hw, IXGBE_ETQF(IXGBE_ETQF_FILTER_FC),
16341655 (IXGBE_ETQF_FILTER_EN |