.. | .. |
---|
102 | 102 | * indirection table and RSS hash key with PF therefore |
---|
103 | 103 | * we want to disable the querying by default. |
---|
104 | 104 | */ |
---|
105 | | - adapter->vfinfo[i].rss_query_enabled = 0; |
---|
| 105 | + adapter->vfinfo[i].rss_query_enabled = false; |
---|
106 | 106 | |
---|
107 | 107 | /* Untrust all VFs */ |
---|
108 | 108 | adapter->vfinfo[i].trusted = false; |
---|
.. | .. |
---|
204 | 204 | int ixgbe_disable_sriov(struct ixgbe_adapter *adapter) |
---|
205 | 205 | { |
---|
206 | 206 | unsigned int num_vfs = adapter->num_vfs, vf; |
---|
| 207 | + unsigned long flags; |
---|
207 | 208 | int rss; |
---|
208 | 209 | |
---|
| 210 | + spin_lock_irqsave(&adapter->vfs_lock, flags); |
---|
209 | 211 | /* set num VFs to 0 to prevent access to vfinfo */ |
---|
210 | 212 | adapter->num_vfs = 0; |
---|
| 213 | + spin_unlock_irqrestore(&adapter->vfs_lock, flags); |
---|
211 | 214 | |
---|
212 | 215 | /* put the reference to all of the vf devices */ |
---|
213 | 216 | for (vf = 0; vf < num_vfs; ++vf) { |
---|
.. | .. |
---|
500 | 503 | case ixgbe_mbox_api_11: |
---|
501 | 504 | case ixgbe_mbox_api_12: |
---|
502 | 505 | case ixgbe_mbox_api_13: |
---|
| 506 | + case ixgbe_mbox_api_14: |
---|
503 | 507 | /* Version 1.1 supports jumbo frames on VFs if PF has |
---|
504 | 508 | * jumbo frames enabled which means legacy VFs are |
---|
505 | 509 | * disabled |
---|
506 | 510 | */ |
---|
507 | 511 | if (pf_max_frame > ETH_FRAME_LEN) |
---|
508 | 512 | break; |
---|
509 | | - /* fall through */ |
---|
| 513 | + fallthrough; |
---|
510 | 514 | default: |
---|
511 | 515 | /* If the PF or VF are running w/ jumbo frames enabled |
---|
512 | 516 | * we need to shut down the VF Rx path as we cannot |
---|
.. | .. |
---|
727 | 731 | /* reset multicast table array for vf */ |
---|
728 | 732 | adapter->vfinfo[vf].num_vf_mc_hashes = 0; |
---|
729 | 733 | |
---|
| 734 | + /* clear any ipsec table info */ |
---|
| 735 | + ixgbe_ipsec_vf_clear(adapter, vf); |
---|
| 736 | + |
---|
730 | 737 | /* Flush and reset the mta with the new values */ |
---|
731 | 738 | ixgbe_set_rx_mode(adapter->netdev); |
---|
732 | 739 | |
---|
.. | .. |
---|
777 | 784 | memcpy(adapter->vfinfo[vf].vf_mac_addresses, mac_addr, |
---|
778 | 785 | ETH_ALEN); |
---|
779 | 786 | else |
---|
780 | | - memset(adapter->vfinfo[vf].vf_mac_addresses, 0, ETH_ALEN); |
---|
| 787 | + eth_zero_addr(adapter->vfinfo[vf].vf_mac_addresses); |
---|
781 | 788 | |
---|
782 | 789 | return retval; |
---|
783 | 790 | } |
---|
.. | .. |
---|
1009 | 1016 | case ixgbe_mbox_api_11: |
---|
1010 | 1017 | case ixgbe_mbox_api_12: |
---|
1011 | 1018 | case ixgbe_mbox_api_13: |
---|
| 1019 | + case ixgbe_mbox_api_14: |
---|
1012 | 1020 | adapter->vfinfo[vf].vf_api = api; |
---|
1013 | 1021 | return 0; |
---|
1014 | 1022 | default: |
---|
.. | .. |
---|
1034 | 1042 | case ixgbe_mbox_api_11: |
---|
1035 | 1043 | case ixgbe_mbox_api_12: |
---|
1036 | 1044 | case ixgbe_mbox_api_13: |
---|
| 1045 | + case ixgbe_mbox_api_14: |
---|
1037 | 1046 | break; |
---|
1038 | 1047 | default: |
---|
1039 | 1048 | return -1; |
---|
.. | .. |
---|
1074 | 1083 | |
---|
1075 | 1084 | /* verify the PF is supporting the correct API */ |
---|
1076 | 1085 | switch (adapter->vfinfo[vf].vf_api) { |
---|
| 1086 | + case ixgbe_mbox_api_14: |
---|
1077 | 1087 | case ixgbe_mbox_api_13: |
---|
1078 | 1088 | case ixgbe_mbox_api_12: |
---|
1079 | 1089 | break; |
---|
.. | .. |
---|
1106 | 1116 | |
---|
1107 | 1117 | /* verify the PF is supporting the correct API */ |
---|
1108 | 1118 | switch (adapter->vfinfo[vf].vf_api) { |
---|
| 1119 | + case ixgbe_mbox_api_14: |
---|
1109 | 1120 | case ixgbe_mbox_api_13: |
---|
1110 | 1121 | case ixgbe_mbox_api_12: |
---|
1111 | 1122 | break; |
---|
.. | .. |
---|
1131 | 1142 | /* promisc introduced in 1.3 version */ |
---|
1132 | 1143 | if (xcast_mode == IXGBEVF_XCAST_MODE_PROMISC) |
---|
1133 | 1144 | return -EOPNOTSUPP; |
---|
1134 | | - /* Fall threw */ |
---|
| 1145 | + fallthrough; |
---|
1135 | 1146 | case ixgbe_mbox_api_13: |
---|
| 1147 | + case ixgbe_mbox_api_14: |
---|
1136 | 1148 | break; |
---|
1137 | 1149 | default: |
---|
1138 | 1150 | return -EOPNOTSUPP; |
---|
.. | .. |
---|
1148 | 1160 | |
---|
1149 | 1161 | switch (xcast_mode) { |
---|
1150 | 1162 | case IXGBEVF_XCAST_MODE_NONE: |
---|
1151 | | - disable = IXGBE_VMOLR_BAM | IXGBE_VMOLR_ROMPE | |
---|
| 1163 | + disable = IXGBE_VMOLR_ROMPE | |
---|
1152 | 1164 | IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE | IXGBE_VMOLR_VPE; |
---|
1153 | | - enable = 0; |
---|
| 1165 | + enable = IXGBE_VMOLR_BAM; |
---|
1154 | 1166 | break; |
---|
1155 | 1167 | case IXGBEVF_XCAST_MODE_MULTI: |
---|
1156 | 1168 | disable = IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE | IXGBE_VMOLR_VPE; |
---|
.. | .. |
---|
1172 | 1184 | return -EPERM; |
---|
1173 | 1185 | } |
---|
1174 | 1186 | |
---|
1175 | | - disable = 0; |
---|
| 1187 | + disable = IXGBE_VMOLR_VPE; |
---|
1176 | 1188 | enable = IXGBE_VMOLR_BAM | IXGBE_VMOLR_ROMPE | |
---|
1177 | | - IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE | IXGBE_VMOLR_VPE; |
---|
| 1189 | + IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE; |
---|
1178 | 1190 | break; |
---|
1179 | 1191 | default: |
---|
1180 | 1192 | return -EOPNOTSUPP; |
---|
.. | .. |
---|
1258 | 1270 | case IXGBE_VF_UPDATE_XCAST_MODE: |
---|
1259 | 1271 | retval = ixgbe_update_vf_xcast_mode(adapter, msgbuf, vf); |
---|
1260 | 1272 | 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; |
---|
1261 | 1279 | default: |
---|
1262 | 1280 | e_err(drv, "Unhandled Msg %8.8x\n", msgbuf[0]); |
---|
1263 | 1281 | retval = IXGBE_ERR_MBX; |
---|
.. | .. |
---|
1290 | 1308 | void ixgbe_msg_task(struct ixgbe_adapter *adapter) |
---|
1291 | 1309 | { |
---|
1292 | 1310 | struct ixgbe_hw *hw = &adapter->hw; |
---|
| 1311 | + unsigned long flags; |
---|
1293 | 1312 | u32 vf; |
---|
1294 | 1313 | |
---|
| 1314 | + spin_lock_irqsave(&adapter->vfs_lock, flags); |
---|
1295 | 1315 | for (vf = 0; vf < adapter->num_vfs; vf++) { |
---|
1296 | 1316 | /* process any reset requests */ |
---|
1297 | 1317 | if (!ixgbe_check_for_rst(hw, vf)) |
---|
.. | .. |
---|
1305 | 1325 | if (!ixgbe_check_for_ack(hw, vf)) |
---|
1306 | 1326 | ixgbe_rcv_ack_from_vf(adapter, vf); |
---|
1307 | 1327 | } |
---|
| 1328 | + spin_unlock_irqrestore(&adapter->vfs_lock, flags); |
---|
1308 | 1329 | } |
---|
1309 | 1330 | |
---|
1310 | 1331 | void ixgbe_disable_tx_rx(struct ixgbe_adapter *adapter) |
---|
.. | .. |
---|
1628 | 1649 | IXGBE_WRITE_REG(hw, IXGBE_ETQF(IXGBE_ETQF_FILTER_LLDP), |
---|
1629 | 1650 | (IXGBE_ETQF_FILTER_EN | |
---|
1630 | 1651 | IXGBE_ETQF_TX_ANTISPOOF | |
---|
1631 | | - IXGBE_ETH_P_LLDP)); |
---|
| 1652 | + ETH_P_LLDP)); |
---|
1632 | 1653 | |
---|
1633 | 1654 | IXGBE_WRITE_REG(hw, IXGBE_ETQF(IXGBE_ETQF_FILTER_FC), |
---|
1634 | 1655 | (IXGBE_ETQF_FILTER_EN | |
---|