| .. | .. |
|---|
| 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 | |
|---|