aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2015-03-09 16:04:53 -0400
committerDavid S. Miller <davem@davemloft.net>2015-03-09 16:04:53 -0400
commit13259db53ff42c9033d749e01e7d6d3c4859dfd9 (patch)
tree781919f8d2719932b9723c2cac47fa97decba4c6
parent5428aef81157768f1052b116e0cc8abf88ff3e36 (diff)
parentb29e13bb9198d2a79ab3370eb1d3ed69a05de61f (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next
Jeff Kirsher says: ==================== Intel Wired LAN Driver Updates 2015-03-09 This series contains updates to i40e and i40evf. Greg cleans up some "hello world" strings which were left around from early development. Shannon modifies the drive to make sure the sizeof() calls are taking the size of the actual struct that we care about. Also updates the NVMUpdate read/write so that it is less noisy when logging. This was because the NVMUpdate tool does not necessarily know the ReadOnly map of the current NVM image, and must try reading and writing words that may be protected. This generates an error out of the Firmware request that the driver logs. Unfortunately, this ended up spitting out hundreds of bogus read/write error messages. If a user wants the noisy logging, the change can be overridden by enabling the NVM update debugging. Mitch fixes a possible deadlock issue where if a reset occurred when the netdev is closed, the reset task will hang in napi_disable. Added ethtool RSS support as suggested by Ben Hutchings. Jesse fixes a bug introduced in the force writeback code, where the interrupt rate was set to 0 (maximum) by accident. The driver must correctly set the NOITR fields to avoid IT update as a side effect of triggering the software interrupt. I provided a simple cleanup to make the use of PF/VF consistent, which was reported by Joe Perches. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e.h16
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_common.c10
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_dcb_nl.c4
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_debugfs.c29
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_ethtool.c117
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_fcoe.c10
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_main.c60
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_txrx.c3
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c222
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h12
-rw-r--r--drivers/net/ethernet/intel/i40evf/i40e_txrx.c1
-rw-r--r--drivers/net/ethernet/intel/i40evf/i40evf_main.c16
12 files changed, 313 insertions, 187 deletions
diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h
index 7ce8e600c13c..1c8bd7c152c2 100644
--- a/drivers/net/ethernet/intel/i40e/i40e.h
+++ b/drivers/net/ethernet/intel/i40e/i40e.h
@@ -177,6 +177,8 @@ struct i40e_lump_tracking {
177#define I40E_FDIR_BUFFER_HEAD_ROOM 32 177#define I40E_FDIR_BUFFER_HEAD_ROOM 32
178#define I40E_FDIR_BUFFER_HEAD_ROOM_FOR_ATR (I40E_FDIR_BUFFER_HEAD_ROOM * 4) 178#define I40E_FDIR_BUFFER_HEAD_ROOM_FOR_ATR (I40E_FDIR_BUFFER_HEAD_ROOM * 4)
179 179
180#define I40E_HKEY_ARRAY_SIZE ((I40E_PFQF_HKEY_MAX_INDEX + 1) * 4)
181
180enum i40e_fd_stat_idx { 182enum i40e_fd_stat_idx {
181 I40E_FD_STAT_ATR, 183 I40E_FD_STAT_ATR,
182 I40E_FD_STAT_SB, 184 I40E_FD_STAT_SB,
@@ -240,17 +242,17 @@ struct i40e_pf {
240 bool fc_autoneg_status; 242 bool fc_autoneg_status;
241 243
242 u16 eeprom_version; 244 u16 eeprom_version;
243 u16 num_vmdq_vsis; /* num vmdq vsis this pf has set up */ 245 u16 num_vmdq_vsis; /* num vmdq vsis this PF has set up */
244 u16 num_vmdq_qps; /* num queue pairs per vmdq pool */ 246 u16 num_vmdq_qps; /* num queue pairs per vmdq pool */
245 u16 num_vmdq_msix; /* num queue vectors per vmdq pool */ 247 u16 num_vmdq_msix; /* num queue vectors per vmdq pool */
246 u16 num_req_vfs; /* num vfs requested for this vf */ 248 u16 num_req_vfs; /* num VFs requested for this VF */
247 u16 num_vf_qps; /* num queue pairs per vf */ 249 u16 num_vf_qps; /* num queue pairs per VF */
248#ifdef I40E_FCOE 250#ifdef I40E_FCOE
249 u16 num_fcoe_qps; /* num fcoe queues this pf has set up */ 251 u16 num_fcoe_qps; /* num fcoe queues this PF has set up */
250 u16 num_fcoe_msix; /* num queue vectors per fcoe pool */ 252 u16 num_fcoe_msix; /* num queue vectors per fcoe pool */
251#endif /* I40E_FCOE */ 253#endif /* I40E_FCOE */
252 u16 num_lan_qps; /* num lan queues this pf has set up */ 254 u16 num_lan_qps; /* num lan queues this PF has set up */
253 u16 num_lan_msix; /* num queue vectors for the base pf vsi */ 255 u16 num_lan_msix; /* num queue vectors for the base PF vsi */
254 int queues_left; /* queues left unclaimed */ 256 int queues_left; /* queues left unclaimed */
255 u16 rss_size; /* num queues in the RSS array */ 257 u16 rss_size; /* num queues in the RSS array */
256 u16 rss_size_max; /* HW defined max RSS queues */ 258 u16 rss_size_max; /* HW defined max RSS queues */
@@ -612,7 +614,7 @@ static inline bool i40e_rx_is_programming_status(u64 qw)
612 614
613/** 615/**
614 * i40e_get_fd_cnt_all - get the total FD filter space available 616 * i40e_get_fd_cnt_all - get the total FD filter space available
615 * @pf: pointer to the pf struct 617 * @pf: pointer to the PF struct
616 **/ 618 **/
617static inline int i40e_get_fd_cnt_all(struct i40e_pf *pf) 619static inline int i40e_get_fd_cnt_all(struct i40e_pf *pf)
618{ 620{
diff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c b/drivers/net/ethernet/intel/i40e/i40e_common.c
index fb78bdd2eb95..d9f1fcb9c2be 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_common.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_common.c
@@ -691,7 +691,7 @@ i40e_status i40e_get_port_mac_addr(struct i40e_hw *hw, u8 *mac_addr)
691/** 691/**
692 * i40e_pre_tx_queue_cfg - pre tx queue configure 692 * i40e_pre_tx_queue_cfg - pre tx queue configure
693 * @hw: pointer to the HW structure 693 * @hw: pointer to the HW structure
694 * @queue: target pf queue index 694 * @queue: target PF queue index
695 * @enable: state change request 695 * @enable: state change request
696 * 696 *
697 * Handles hw requirement to indicate intention to enable 697 * Handles hw requirement to indicate intention to enable
@@ -955,7 +955,7 @@ void i40e_clear_hw(struct i40e_hw *hw)
955 u32 val; 955 u32 val;
956 u32 eol = 0x7ff; 956 u32 eol = 0x7ff;
957 957
958 /* get number of interrupts, queues, and vfs */ 958 /* get number of interrupts, queues, and VFs */
959 val = rd32(hw, I40E_GLPCI_CNF2); 959 val = rd32(hw, I40E_GLPCI_CNF2);
960 num_pf_int = (val & I40E_GLPCI_CNF2_MSI_X_PF_N_MASK) >> 960 num_pf_int = (val & I40E_GLPCI_CNF2_MSI_X_PF_N_MASK) >>
961 I40E_GLPCI_CNF2_MSI_X_PF_N_SHIFT; 961 I40E_GLPCI_CNF2_MSI_X_PF_N_SHIFT;
@@ -2017,7 +2017,7 @@ i40e_status i40e_aq_add_macvlan(struct i40e_hw *hw, u16 seid,
2017 if (count == 0 || !mv_list || !hw) 2017 if (count == 0 || !mv_list || !hw)
2018 return I40E_ERR_PARAM; 2018 return I40E_ERR_PARAM;
2019 2019
2020 buf_size = count * sizeof(struct i40e_aqc_add_macvlan_element_data); 2020 buf_size = count * sizeof(*mv_list);
2021 2021
2022 /* prep the rest of the request */ 2022 /* prep the rest of the request */
2023 i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_add_macvlan); 2023 i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_add_macvlan);
@@ -2059,7 +2059,7 @@ i40e_status i40e_aq_remove_macvlan(struct i40e_hw *hw, u16 seid,
2059 if (count == 0 || !mv_list || !hw) 2059 if (count == 0 || !mv_list || !hw)
2060 return I40E_ERR_PARAM; 2060 return I40E_ERR_PARAM;
2061 2061
2062 buf_size = count * sizeof(struct i40e_aqc_remove_macvlan_element_data); 2062 buf_size = count * sizeof(*mv_list);
2063 2063
2064 /* prep the rest of the request */ 2064 /* prep the rest of the request */
2065 i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_remove_macvlan); 2065 i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_remove_macvlan);
@@ -2081,7 +2081,7 @@ i40e_status i40e_aq_remove_macvlan(struct i40e_hw *hw, u16 seid,
2081/** 2081/**
2082 * i40e_aq_send_msg_to_vf 2082 * i40e_aq_send_msg_to_vf
2083 * @hw: pointer to the hardware structure 2083 * @hw: pointer to the hardware structure
2084 * @vfid: vf id to send msg 2084 * @vfid: VF id to send msg
2085 * @v_opcode: opcodes for VF-PF communication 2085 * @v_opcode: opcodes for VF-PF communication
2086 * @v_retval: return error code 2086 * @v_retval: return error code
2087 * @msg: pointer to the msg buffer 2087 * @msg: pointer to the msg buffer
diff --git a/drivers/net/ethernet/intel/i40e/i40e_dcb_nl.c b/drivers/net/ethernet/intel/i40e/i40e_dcb_nl.c
index 2f583554a260..400fb28db576 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_dcb_nl.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_dcb_nl.c
@@ -223,7 +223,7 @@ static int i40e_dcbnl_vsi_del_app(struct i40e_vsi *vsi,
223 223
224/** 224/**
225 * i40e_dcbnl_del_app - Delete APP on all VSIs 225 * i40e_dcbnl_del_app - Delete APP on all VSIs
226 * @pf: the corresponding pf 226 * @pf: the corresponding PF
227 * @app: APP to delete 227 * @app: APP to delete
228 * 228 *
229 * Delete given APP from all the VSIs for given PF 229 * Delete given APP from all the VSIs for given PF
@@ -268,7 +268,7 @@ static bool i40e_dcbnl_find_app(struct i40e_dcbx_config *cfg,
268 268
269/** 269/**
270 * i40e_dcbnl_flush_apps - Delete all removed APPs 270 * i40e_dcbnl_flush_apps - Delete all removed APPs
271 * @pf: the corresponding pf 271 * @pf: the corresponding PF
272 * @old_cfg: old DCBX configuration data 272 * @old_cfg: old DCBX configuration data
273 * @new_cfg: new DCBX configuration data 273 * @new_cfg: new DCBX configuration data
274 * 274 *
diff --git a/drivers/net/ethernet/intel/i40e/i40e_debugfs.c b/drivers/net/ethernet/intel/i40e/i40e_debugfs.c
index e802b6bc067d..daa88263af66 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_debugfs.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_debugfs.c
@@ -35,7 +35,7 @@ static struct dentry *i40e_dbg_root;
35 35
36/** 36/**
37 * i40e_dbg_find_vsi - searches for the vsi with the given seid 37 * i40e_dbg_find_vsi - searches for the vsi with the given seid
38 * @pf - the pf structure to search for the vsi 38 * @pf - the PF structure to search for the vsi
39 * @seid - seid of the vsi it is searching for 39 * @seid - seid of the vsi it is searching for
40 **/ 40 **/
41static struct i40e_vsi *i40e_dbg_find_vsi(struct i40e_pf *pf, int seid) 41static struct i40e_vsi *i40e_dbg_find_vsi(struct i40e_pf *pf, int seid)
@@ -54,7 +54,7 @@ static struct i40e_vsi *i40e_dbg_find_vsi(struct i40e_pf *pf, int seid)
54 54
55/** 55/**
56 * i40e_dbg_find_veb - searches for the veb with the given seid 56 * i40e_dbg_find_veb - searches for the veb with the given seid
57 * @pf - the pf structure to search for the veb 57 * @pf - the PF structure to search for the veb
58 * @seid - seid of the veb it is searching for 58 * @seid - seid of the veb it is searching for
59 **/ 59 **/
60static struct i40e_veb *i40e_dbg_find_veb(struct i40e_pf *pf, int seid) 60static struct i40e_veb *i40e_dbg_find_veb(struct i40e_pf *pf, int seid)
@@ -112,7 +112,7 @@ static ssize_t i40e_dbg_dump_read(struct file *filp, char __user *buffer,
112 112
113/** 113/**
114 * i40e_dbg_prep_dump_buf 114 * i40e_dbg_prep_dump_buf
115 * @pf: the pf we're working with 115 * @pf: the PF we're working with
116 * @buflen: the desired buffer length 116 * @buflen: the desired buffer length
117 * 117 *
118 * Return positive if success, 0 if failed 118 * Return positive if success, 0 if failed
@@ -318,7 +318,7 @@ static const struct file_operations i40e_dbg_dump_fops = {
318 * setup, adding or removing filters, or other things. Many of 318 * setup, adding or removing filters, or other things. Many of
319 * these will be useful for some forms of unit testing. 319 * these will be useful for some forms of unit testing.
320 **************************************************************/ 320 **************************************************************/
321static char i40e_dbg_command_buf[256] = "hello world"; 321static char i40e_dbg_command_buf[256] = "";
322 322
323/** 323/**
324 * i40e_dbg_command_read - read for command datum 324 * i40e_dbg_command_read - read for command datum
@@ -390,6 +390,11 @@ static void i40e_dbg_dump_vsi_seid(struct i40e_pf *pf, int seid)
390 " netdev_registered = %i, current_netdev_flags = 0x%04x, state = %li flags = 0x%08lx\n", 390 " netdev_registered = %i, current_netdev_flags = 0x%04x, state = %li flags = 0x%08lx\n",
391 vsi->netdev_registered, 391 vsi->netdev_registered,
392 vsi->current_netdev_flags, vsi->state, vsi->flags); 392 vsi->current_netdev_flags, vsi->state, vsi->flags);
393 if (vsi == pf->vsi[pf->lan_vsi])
394 dev_info(&pf->pdev->dev, "MAC address: %pM SAN MAC: %pM Port MAC: %pM\n",
395 pf->hw.mac.addr,
396 pf->hw.mac.san_addr,
397 pf->hw.mac.port_addr);
393 list_for_each_entry(f, &vsi->mac_filter_list, list) { 398 list_for_each_entry(f, &vsi->mac_filter_list, list) {
394 dev_info(&pf->pdev->dev, 399 dev_info(&pf->pdev->dev,
395 " mac_filter_list: %pM vid=%d, is_netdev=%d is_vf=%d counter=%d\n", 400 " mac_filter_list: %pM vid=%d, is_netdev=%d is_vf=%d counter=%d\n",
@@ -675,7 +680,7 @@ static void i40e_dbg_dump_vsi_seid(struct i40e_pf *pf, int seid)
675 vsi->info.resp_reserved[8], vsi->info.resp_reserved[9], 680 vsi->info.resp_reserved[8], vsi->info.resp_reserved[9],
676 vsi->info.resp_reserved[10], vsi->info.resp_reserved[11]); 681 vsi->info.resp_reserved[10], vsi->info.resp_reserved[11]);
677 if (vsi->back) 682 if (vsi->back)
678 dev_info(&pf->pdev->dev, " pf = %p\n", vsi->back); 683 dev_info(&pf->pdev->dev, " PF = %p\n", vsi->back);
679 dev_info(&pf->pdev->dev, " idx = %d\n", vsi->idx); 684 dev_info(&pf->pdev->dev, " idx = %d\n", vsi->idx);
680 dev_info(&pf->pdev->dev, 685 dev_info(&pf->pdev->dev,
681 " tc_config: numtc = %d, enabled_tc = 0x%x\n", 686 " tc_config: numtc = %d, enabled_tc = 0x%x\n",
@@ -946,7 +951,7 @@ static void i40e_dbg_dump_veb_all(struct i40e_pf *pf)
946 951
947/** 952/**
948 * i40e_dbg_cmd_fd_ctrl - Enable/disable FD sideband/ATR 953 * i40e_dbg_cmd_fd_ctrl - Enable/disable FD sideband/ATR
949 * @pf: the pf that would be altered 954 * @pf: the PF that would be altered
950 * @flag: flag that needs enabling or disabling 955 * @flag: flag that needs enabling or disabling
951 * @enable: Enable/disable FD SD/ATR 956 * @enable: Enable/disable FD SD/ATR
952 **/ 957 **/
@@ -958,7 +963,7 @@ static void i40e_dbg_cmd_fd_ctrl(struct i40e_pf *pf, u64 flag, bool enable)
958 pf->flags &= ~flag; 963 pf->flags &= ~flag;
959 pf->auto_disable_flags |= flag; 964 pf->auto_disable_flags |= flag;
960 } 965 }
961 dev_info(&pf->pdev->dev, "requesting a pf reset\n"); 966 dev_info(&pf->pdev->dev, "requesting a PF reset\n");
962 i40e_do_reset_safe(pf, (1 << __I40E_PF_RESET_REQUESTED)); 967 i40e_do_reset_safe(pf, (1 << __I40E_PF_RESET_REQUESTED));
963} 968}
964 969
@@ -1940,7 +1945,7 @@ static const struct file_operations i40e_dbg_command_fops = {
1940 * The netdev_ops entry in debugfs is for giving the driver commands 1945 * The netdev_ops entry in debugfs is for giving the driver commands
1941 * to be executed from the netdev operations. 1946 * to be executed from the netdev operations.
1942 **************************************************************/ 1947 **************************************************************/
1943static char i40e_dbg_netdev_ops_buf[256] = "hello world"; 1948static char i40e_dbg_netdev_ops_buf[256] = "";
1944 1949
1945/** 1950/**
1946 * i40e_dbg_netdev_ops - read for netdev_ops datum 1951 * i40e_dbg_netdev_ops - read for netdev_ops datum
@@ -2128,8 +2133,8 @@ static const struct file_operations i40e_dbg_netdev_ops_fops = {
2128}; 2133};
2129 2134
2130/** 2135/**
2131 * i40e_dbg_pf_init - setup the debugfs directory for the pf 2136 * i40e_dbg_pf_init - setup the debugfs directory for the PF
2132 * @pf: the pf that is starting up 2137 * @pf: the PF that is starting up
2133 **/ 2138 **/
2134void i40e_dbg_pf_init(struct i40e_pf *pf) 2139void i40e_dbg_pf_init(struct i40e_pf *pf)
2135{ 2140{
@@ -2165,8 +2170,8 @@ create_failed:
2165} 2170}
2166 2171
2167/** 2172/**
2168 * i40e_dbg_pf_exit - clear out the pf's debugfs entries 2173 * i40e_dbg_pf_exit - clear out the PF's debugfs entries
2169 * @pf: the pf that is stopping 2174 * @pf: the PF that is stopping
2170 **/ 2175 **/
2171void i40e_dbg_pf_exit(struct i40e_pf *pf) 2176void i40e_dbg_pf_exit(struct i40e_pf *pf)
2172{ 2177{
diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
index 01c811c99ff7..b7d0aaac5480 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
@@ -917,7 +917,9 @@ static int i40e_get_eeprom(struct net_device *netdev,
917 917
918 cmd = (struct i40e_nvm_access *)eeprom; 918 cmd = (struct i40e_nvm_access *)eeprom;
919 ret_val = i40e_nvmupd_command(hw, cmd, bytes, &errno); 919 ret_val = i40e_nvmupd_command(hw, cmd, bytes, &errno);
920 if (ret_val) 920 if (ret_val &&
921 ((hw->aq.asq_last_status != I40E_AQ_RC_EACCES) ||
922 (hw->debug_mask & I40E_DEBUG_NVM)))
921 dev_info(&pf->pdev->dev, 923 dev_info(&pf->pdev->dev,
922 "NVMUpdate read failed err=%d status=0x%x errno=%d module=%d offset=0x%x size=%d\n", 924 "NVMUpdate read failed err=%d status=0x%x errno=%d module=%d offset=0x%x size=%d\n",
923 ret_val, hw->aq.asq_last_status, errno, 925 ret_val, hw->aq.asq_last_status, errno,
@@ -1021,7 +1023,10 @@ static int i40e_set_eeprom(struct net_device *netdev,
1021 1023
1022 cmd = (struct i40e_nvm_access *)eeprom; 1024 cmd = (struct i40e_nvm_access *)eeprom;
1023 ret_val = i40e_nvmupd_command(hw, cmd, bytes, &errno); 1025 ret_val = i40e_nvmupd_command(hw, cmd, bytes, &errno);
1024 if (ret_val && hw->aq.asq_last_status != I40E_AQ_RC_EBUSY) 1026 if (ret_val &&
1027 ((hw->aq.asq_last_status != I40E_AQ_RC_EPERM &&
1028 hw->aq.asq_last_status != I40E_AQ_RC_EBUSY) ||
1029 (hw->debug_mask & I40E_DEBUG_NVM)))
1025 dev_info(&pf->pdev->dev, 1030 dev_info(&pf->pdev->dev,
1026 "NVMUpdate write failed err=%d status=0x%x errno=%d module=%d offset=0x%x size=%d\n", 1031 "NVMUpdate write failed err=%d status=0x%x errno=%d module=%d offset=0x%x size=%d\n",
1027 ret_val, hw->aq.asq_last_status, errno, 1032 ret_val, hw->aq.asq_last_status, errno,
@@ -2370,6 +2375,110 @@ static int i40e_set_channels(struct net_device *dev,
2370 return -EINVAL; 2375 return -EINVAL;
2371} 2376}
2372 2377
2378#define I40E_HLUT_ARRAY_SIZE ((I40E_PFQF_HLUT_MAX_INDEX + 1) * 4)
2379/**
2380 * i40e_get_rxfh_key_size - get the RSS hash key size
2381 * @netdev: network interface device structure
2382 *
2383 * Returns the table size.
2384 **/
2385static u32 i40e_get_rxfh_key_size(struct net_device *netdev)
2386{
2387 return I40E_HKEY_ARRAY_SIZE;
2388}
2389
2390/**
2391 * i40e_get_rxfh_indir_size - get the rx flow hash indirection table size
2392 * @netdev: network interface device structure
2393 *
2394 * Returns the table size.
2395 **/
2396static u32 i40e_get_rxfh_indir_size(struct net_device *netdev)
2397{
2398 return I40E_HLUT_ARRAY_SIZE;
2399}
2400
2401static int i40e_get_rxfh(struct net_device *netdev, u32 *indir, u8 *key,
2402 u8 *hfunc)
2403{
2404 struct i40e_netdev_priv *np = netdev_priv(netdev);
2405 struct i40e_vsi *vsi = np->vsi;
2406 struct i40e_pf *pf = vsi->back;
2407 struct i40e_hw *hw = &pf->hw;
2408 u32 reg_val;
2409 int i, j;
2410
2411 if (hfunc)
2412 *hfunc = ETH_RSS_HASH_TOP;
2413
2414 if (!indir)
2415 return 0;
2416
2417 for (i = 0, j = 0; i <= I40E_PFQF_HLUT_MAX_INDEX; i++) {
2418 reg_val = rd32(hw, I40E_PFQF_HLUT(i));
2419 indir[j++] = reg_val & 0xff;
2420 indir[j++] = (reg_val >> 8) & 0xff;
2421 indir[j++] = (reg_val >> 16) & 0xff;
2422 indir[j++] = (reg_val >> 24) & 0xff;
2423 }
2424
2425 if (key) {
2426 for (i = 0, j = 0; i <= I40E_PFQF_HKEY_MAX_INDEX; i++) {
2427 reg_val = rd32(hw, I40E_PFQF_HKEY(i));
2428 key[j++] = (u8)(reg_val & 0xff);
2429 key[j++] = (u8)((reg_val >> 8) & 0xff);
2430 key[j++] = (u8)((reg_val >> 16) & 0xff);
2431 key[j++] = (u8)((reg_val >> 24) & 0xff);
2432 }
2433 }
2434 return 0;
2435}
2436
2437/**
2438 * i40e_set_rxfh - set the rx flow hash indirection table
2439 * @netdev: network interface device structure
2440 * @indir: indirection table
2441 * @key: hash key
2442 *
2443 * Returns -EINVAL if the table specifies an inavlid queue id, otherwise
2444 * returns 0 after programming the table.
2445 **/
2446static int i40e_set_rxfh(struct net_device *netdev, const u32 *indir,
2447 const u8 *key, const u8 hfunc)
2448{
2449 struct i40e_netdev_priv *np = netdev_priv(netdev);
2450 struct i40e_vsi *vsi = np->vsi;
2451 struct i40e_pf *pf = vsi->back;
2452 struct i40e_hw *hw = &pf->hw;
2453 u32 reg_val;
2454 int i, j;
2455
2456 if (hfunc != ETH_RSS_HASH_NO_CHANGE && hfunc != ETH_RSS_HASH_TOP)
2457 return -EOPNOTSUPP;
2458
2459 if (!indir)
2460 return 0;
2461
2462 for (i = 0, j = 0; i <= I40E_PFQF_HLUT_MAX_INDEX; i++) {
2463 reg_val = indir[j++];
2464 reg_val |= indir[j++] << 8;
2465 reg_val |= indir[j++] << 16;
2466 reg_val |= indir[j++] << 24;
2467 wr32(hw, I40E_PFQF_HLUT(i), reg_val);
2468 }
2469
2470 if (key) {
2471 for (i = 0, j = 0; i <= I40E_PFQF_HKEY_MAX_INDEX; i++) {
2472 reg_val = key[j++];
2473 reg_val |= key[j++] << 8;
2474 reg_val |= key[j++] << 16;
2475 reg_val |= key[j++] << 24;
2476 wr32(hw, I40E_PFQF_HKEY(i), reg_val);
2477 }
2478 }
2479 return 0;
2480}
2481
2373/** 2482/**
2374 * i40e_get_priv_flags - report device private flags 2483 * i40e_get_priv_flags - report device private flags
2375 * @dev: network interface device structure 2484 * @dev: network interface device structure
@@ -2421,6 +2530,10 @@ static const struct ethtool_ops i40e_ethtool_ops = {
2421 .get_ethtool_stats = i40e_get_ethtool_stats, 2530 .get_ethtool_stats = i40e_get_ethtool_stats,
2422 .get_coalesce = i40e_get_coalesce, 2531 .get_coalesce = i40e_get_coalesce,
2423 .set_coalesce = i40e_set_coalesce, 2532 .set_coalesce = i40e_set_coalesce,
2533 .get_rxfh_key_size = i40e_get_rxfh_key_size,
2534 .get_rxfh_indir_size = i40e_get_rxfh_indir_size,
2535 .get_rxfh = i40e_get_rxfh,
2536 .set_rxfh = i40e_set_rxfh,
2424 .get_channels = i40e_get_channels, 2537 .get_channels = i40e_get_channels,
2425 .set_channels = i40e_set_channels, 2538 .set_channels = i40e_set_channels,
2426 .get_ts_info = i40e_get_ts_info, 2539 .get_ts_info = i40e_get_ts_info,
diff --git a/drivers/net/ethernet/intel/i40e/i40e_fcoe.c b/drivers/net/ethernet/intel/i40e/i40e_fcoe.c
index 0357b31e4a5c..1ca48458e668 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_fcoe.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_fcoe.c
@@ -149,7 +149,7 @@ static inline bool i40e_fcoe_xid_is_valid(u16 xid)
149 149
150/** 150/**
151 * i40e_fcoe_ddp_unmap - unmap the mapped sglist associated 151 * i40e_fcoe_ddp_unmap - unmap the mapped sglist associated
152 * @pf: pointer to pf 152 * @pf: pointer to PF
153 * @ddp: sw DDP context 153 * @ddp: sw DDP context
154 * 154 *
155 * Unmap the scatter-gather list associated with the given SW DDP context 155 * Unmap the scatter-gather list associated with the given SW DDP context
@@ -268,7 +268,7 @@ out:
268 268
269/** 269/**
270 * i40e_fcoe_sw_init - sets up the HW for FCoE 270 * i40e_fcoe_sw_init - sets up the HW for FCoE
271 * @pf: pointer to pf 271 * @pf: pointer to PF
272 * 272 *
273 * Returns 0 if FCoE is supported otherwise the error code 273 * Returns 0 if FCoE is supported otherwise the error code
274 **/ 274 **/
@@ -328,7 +328,7 @@ int i40e_init_pf_fcoe(struct i40e_pf *pf)
328 328
329/** 329/**
330 * i40e_get_fcoe_tc_map - Return TC map for FCoE APP 330 * i40e_get_fcoe_tc_map - Return TC map for FCoE APP
331 * @pf: pointer to pf 331 * @pf: pointer to PF
332 * 332 *
333 **/ 333 **/
334u8 i40e_get_fcoe_tc_map(struct i40e_pf *pf) 334u8 i40e_get_fcoe_tc_map(struct i40e_pf *pf)
@@ -1531,7 +1531,7 @@ void i40e_fcoe_config_netdev(struct net_device *netdev, struct i40e_vsi *vsi)
1531 1531
1532/** 1532/**
1533 * i40e_fcoe_vsi_setup - allocate and set up FCoE VSI 1533 * i40e_fcoe_vsi_setup - allocate and set up FCoE VSI
1534 * @pf: the pf that VSI is associated with 1534 * @pf: the PF that VSI is associated with
1535 * 1535 *
1536 **/ 1536 **/
1537void i40e_fcoe_vsi_setup(struct i40e_pf *pf) 1537void i40e_fcoe_vsi_setup(struct i40e_pf *pf)
@@ -1558,7 +1558,7 @@ void i40e_fcoe_vsi_setup(struct i40e_pf *pf)
1558 vsi = i40e_vsi_setup(pf, I40E_VSI_FCOE, seid, 0); 1558 vsi = i40e_vsi_setup(pf, I40E_VSI_FCOE, seid, 0);
1559 if (vsi) { 1559 if (vsi) {
1560 dev_dbg(&pf->pdev->dev, 1560 dev_dbg(&pf->pdev->dev,
1561 "Successfully created FCoE VSI seid %d id %d uplink_seid %d pf seid %d\n", 1561 "Successfully created FCoE VSI seid %d id %d uplink_seid %d PF seid %d\n",
1562 vsi->seid, vsi->id, vsi->uplink_seid, seid); 1562 vsi->seid, vsi->id, vsi->uplink_seid, seid);
1563 } else { 1563 } else {
1564 dev_info(&pf->pdev->dev, "Failed to create FCoE VSI\n"); 1564 dev_info(&pf->pdev->dev, "Failed to create FCoE VSI\n");
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 4bed881e3cb6..c1eaab532c15 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -39,7 +39,7 @@ static const char i40e_driver_string[] =
39 39
40#define DRV_VERSION_MAJOR 1 40#define DRV_VERSION_MAJOR 1
41#define DRV_VERSION_MINOR 2 41#define DRV_VERSION_MINOR 2
42#define DRV_VERSION_BUILD 12 42#define DRV_VERSION_BUILD 37
43#define DRV_VERSION __stringify(DRV_VERSION_MAJOR) "." \ 43#define DRV_VERSION __stringify(DRV_VERSION_MAJOR) "." \
44 __stringify(DRV_VERSION_MINOR) "." \ 44 __stringify(DRV_VERSION_MINOR) "." \
45 __stringify(DRV_VERSION_BUILD) DRV_KERN 45 __stringify(DRV_VERSION_BUILD) DRV_KERN
@@ -450,7 +450,7 @@ void i40e_vsi_reset_stats(struct i40e_vsi *vsi)
450} 450}
451 451
452/** 452/**
453 * i40e_pf_reset_stats - Reset all of the stats for the given pf 453 * i40e_pf_reset_stats - Reset all of the stats for the given PF
454 * @pf: the PF to be reset 454 * @pf: the PF to be reset
455 **/ 455 **/
456void i40e_pf_reset_stats(struct i40e_pf *pf) 456void i40e_pf_reset_stats(struct i40e_pf *pf)
@@ -896,7 +896,7 @@ static void i40e_update_vsi_stats(struct i40e_vsi *vsi)
896} 896}
897 897
898/** 898/**
899 * i40e_update_pf_stats - Update the pf statistics counters. 899 * i40e_update_pf_stats - Update the PF statistics counters.
900 * @pf: the PF to be updated 900 * @pf: the PF to be updated
901 **/ 901 **/
902static void i40e_update_pf_stats(struct i40e_pf *pf) 902static void i40e_update_pf_stats(struct i40e_pf *pf)
@@ -1128,7 +1128,7 @@ void i40e_update_stats(struct i40e_vsi *vsi)
1128 * @vsi: the VSI to be searched 1128 * @vsi: the VSI to be searched
1129 * @macaddr: the MAC address 1129 * @macaddr: the MAC address
1130 * @vlan: the vlan 1130 * @vlan: the vlan
1131 * @is_vf: make sure its a vf filter, else doesn't matter 1131 * @is_vf: make sure its a VF filter, else doesn't matter
1132 * @is_netdev: make sure its a netdev filter, else doesn't matter 1132 * @is_netdev: make sure its a netdev filter, else doesn't matter
1133 * 1133 *
1134 * Returns ptr to the filter object or NULL 1134 * Returns ptr to the filter object or NULL
@@ -1156,7 +1156,7 @@ static struct i40e_mac_filter *i40e_find_filter(struct i40e_vsi *vsi,
1156 * i40e_find_mac - Find a mac addr in the macvlan filters list 1156 * i40e_find_mac - Find a mac addr in the macvlan filters list
1157 * @vsi: the VSI to be searched 1157 * @vsi: the VSI to be searched
1158 * @macaddr: the MAC address we are searching for 1158 * @macaddr: the MAC address we are searching for
1159 * @is_vf: make sure its a vf filter, else doesn't matter 1159 * @is_vf: make sure its a VF filter, else doesn't matter
1160 * @is_netdev: make sure its a netdev filter, else doesn't matter 1160 * @is_netdev: make sure its a netdev filter, else doesn't matter
1161 * 1161 *
1162 * Returns the first filter with the provided MAC address or NULL if 1162 * Returns the first filter with the provided MAC address or NULL if
@@ -1204,7 +1204,7 @@ bool i40e_is_vsi_in_vlan(struct i40e_vsi *vsi)
1204 * i40e_put_mac_in_vlan - Make macvlan filters from macaddrs and vlans 1204 * i40e_put_mac_in_vlan - Make macvlan filters from macaddrs and vlans
1205 * @vsi: the VSI to be searched 1205 * @vsi: the VSI to be searched
1206 * @macaddr: the mac address to be filtered 1206 * @macaddr: the mac address to be filtered
1207 * @is_vf: true if it is a vf 1207 * @is_vf: true if it is a VF
1208 * @is_netdev: true if it is a netdev 1208 * @is_netdev: true if it is a netdev
1209 * 1209 *
1210 * Goes through all the macvlan filters and adds a 1210 * Goes through all the macvlan filters and adds a
@@ -1265,7 +1265,7 @@ static int i40e_rm_default_mac_filter(struct i40e_vsi *vsi, u8 *macaddr)
1265 * @vsi: the VSI to be searched 1265 * @vsi: the VSI to be searched
1266 * @macaddr: the MAC address 1266 * @macaddr: the MAC address
1267 * @vlan: the vlan 1267 * @vlan: the vlan
1268 * @is_vf: make sure its a vf filter, else doesn't matter 1268 * @is_vf: make sure its a VF filter, else doesn't matter
1269 * @is_netdev: make sure its a netdev filter, else doesn't matter 1269 * @is_netdev: make sure its a netdev filter, else doesn't matter
1270 * 1270 *
1271 * Returns ptr to the filter object or NULL when no memory available. 1271 * Returns ptr to the filter object or NULL when no memory available.
@@ -1325,7 +1325,7 @@ add_filter_out:
1325 * @vsi: the VSI to be searched 1325 * @vsi: the VSI to be searched
1326 * @macaddr: the MAC address 1326 * @macaddr: the MAC address
1327 * @vlan: the vlan 1327 * @vlan: the vlan
1328 * @is_vf: make sure it's a vf filter, else doesn't matter 1328 * @is_vf: make sure it's a VF filter, else doesn't matter
1329 * @is_netdev: make sure it's a netdev filter, else doesn't matter 1329 * @is_netdev: make sure it's a netdev filter, else doesn't matter
1330 **/ 1330 **/
1331void i40e_del_filter(struct i40e_vsi *vsi, 1331void i40e_del_filter(struct i40e_vsi *vsi,
@@ -1352,7 +1352,7 @@ void i40e_del_filter(struct i40e_vsi *vsi,
1352 f->counter--; 1352 f->counter--;
1353 } 1353 }
1354 } else { 1354 } else {
1355 /* make sure we don't remove a filter in use by vf or netdev */ 1355 /* make sure we don't remove a filter in use by VF or netdev */
1356 int min_f = 0; 1356 int min_f = 0;
1357 min_f += (f->is_vf ? 1 : 0); 1357 min_f += (f->is_vf ? 1 : 0);
1358 min_f += (f->is_netdev ? 1 : 0); 1358 min_f += (f->is_netdev ? 1 : 0);
@@ -4029,7 +4029,7 @@ static int i40e_pf_wait_txq_disabled(struct i40e_pf *pf)
4029#endif 4029#endif
4030/** 4030/**
4031 * i40e_get_iscsi_tc_map - Return TC map for iSCSI APP 4031 * i40e_get_iscsi_tc_map - Return TC map for iSCSI APP
4032 * @pf: pointer to pf 4032 * @pf: pointer to PF
4033 * 4033 *
4034 * Get TC map for ISCSI PF type that will include iSCSI TC 4034 * Get TC map for ISCSI PF type that will include iSCSI TC
4035 * and LAN TC. 4035 * and LAN TC.
@@ -4204,7 +4204,7 @@ static int i40e_vsi_get_bw_info(struct i40e_vsi *vsi)
4204 aq_ret = i40e_aq_query_vsi_bw_config(hw, vsi->seid, &bw_config, NULL); 4204 aq_ret = i40e_aq_query_vsi_bw_config(hw, vsi->seid, &bw_config, NULL);
4205 if (aq_ret) { 4205 if (aq_ret) {
4206 dev_info(&pf->pdev->dev, 4206 dev_info(&pf->pdev->dev,
4207 "couldn't get pf vsi bw config, err %d, aq_err %d\n", 4207 "couldn't get PF vsi bw config, err %d, aq_err %d\n",
4208 aq_ret, pf->hw.aq.asq_last_status); 4208 aq_ret, pf->hw.aq.asq_last_status);
4209 return -EINVAL; 4209 return -EINVAL;
4210 } 4210 }
@@ -4214,7 +4214,7 @@ static int i40e_vsi_get_bw_info(struct i40e_vsi *vsi)
4214 NULL); 4214 NULL);
4215 if (aq_ret) { 4215 if (aq_ret) {
4216 dev_info(&pf->pdev->dev, 4216 dev_info(&pf->pdev->dev,
4217 "couldn't get pf vsi ets bw config, err %d, aq_err %d\n", 4217 "couldn't get PF vsi ets bw config, err %d, aq_err %d\n",
4218 aq_ret, pf->hw.aq.asq_last_status); 4218 aq_ret, pf->hw.aq.asq_last_status);
4219 return -EINVAL; 4219 return -EINVAL;
4220 } 4220 }
@@ -4976,7 +4976,7 @@ err_setup_tx:
4976 4976
4977/** 4977/**
4978 * i40e_fdir_filter_exit - Cleans up the Flow Director accounting 4978 * i40e_fdir_filter_exit - Cleans up the Flow Director accounting
4979 * @pf: Pointer to pf 4979 * @pf: Pointer to PF
4980 * 4980 *
4981 * This function destroys the hlist where all the Flow Director 4981 * This function destroys the hlist where all the Flow Director
4982 * filters were saved. 4982 * filters were saved.
@@ -5941,7 +5941,7 @@ static void i40e_verify_eeprom(struct i40e_pf *pf)
5941 5941
5942/** 5942/**
5943 * i40e_enable_pf_switch_lb 5943 * i40e_enable_pf_switch_lb
5944 * @pf: pointer to the pf structure 5944 * @pf: pointer to the PF structure
5945 * 5945 *
5946 * enable switch loop back or die - no point in a return value 5946 * enable switch loop back or die - no point in a return value
5947 **/ 5947 **/
@@ -5957,7 +5957,7 @@ static void i40e_enable_pf_switch_lb(struct i40e_pf *pf)
5957 aq_ret = i40e_aq_get_vsi_params(&pf->hw, &ctxt, NULL); 5957 aq_ret = i40e_aq_get_vsi_params(&pf->hw, &ctxt, NULL);
5958 if (aq_ret) { 5958 if (aq_ret) {
5959 dev_info(&pf->pdev->dev, 5959 dev_info(&pf->pdev->dev,
5960 "%s couldn't get pf vsi config, err %d, aq_err %d\n", 5960 "%s couldn't get PF vsi config, err %d, aq_err %d\n",
5961 __func__, aq_ret, pf->hw.aq.asq_last_status); 5961 __func__, aq_ret, pf->hw.aq.asq_last_status);
5962 return; 5962 return;
5963 } 5963 }
@@ -5975,7 +5975,7 @@ static void i40e_enable_pf_switch_lb(struct i40e_pf *pf)
5975 5975
5976/** 5976/**
5977 * i40e_disable_pf_switch_lb 5977 * i40e_disable_pf_switch_lb
5978 * @pf: pointer to the pf structure 5978 * @pf: pointer to the PF structure
5979 * 5979 *
5980 * disable switch loop back or die - no point in a return value 5980 * disable switch loop back or die - no point in a return value
5981 **/ 5981 **/
@@ -5991,7 +5991,7 @@ static void i40e_disable_pf_switch_lb(struct i40e_pf *pf)
5991 aq_ret = i40e_aq_get_vsi_params(&pf->hw, &ctxt, NULL); 5991 aq_ret = i40e_aq_get_vsi_params(&pf->hw, &ctxt, NULL);
5992 if (aq_ret) { 5992 if (aq_ret) {
5993 dev_info(&pf->pdev->dev, 5993 dev_info(&pf->pdev->dev,
5994 "%s couldn't get pf vsi config, err %d, aq_err %d\n", 5994 "%s couldn't get PF vsi config, err %d, aq_err %d\n",
5995 __func__, aq_ret, pf->hw.aq.asq_last_status); 5995 __func__, aq_ret, pf->hw.aq.asq_last_status);
5996 return; 5996 return;
5997 } 5997 }
@@ -6245,7 +6245,7 @@ static void i40e_fdir_teardown(struct i40e_pf *pf)
6245 * i40e_prep_for_reset - prep for the core to reset 6245 * i40e_prep_for_reset - prep for the core to reset
6246 * @pf: board private structure 6246 * @pf: board private structure
6247 * 6247 *
6248 * Close up the VFs and other things in prep for pf Reset. 6248 * Close up the VFs and other things in prep for PF Reset.
6249 **/ 6249 **/
6250static void i40e_prep_for_reset(struct i40e_pf *pf) 6250static void i40e_prep_for_reset(struct i40e_pf *pf)
6251{ 6251{
@@ -6471,7 +6471,7 @@ clear_recovery:
6471} 6471}
6472 6472
6473/** 6473/**
6474 * i40e_handle_reset_warning - prep for the pf to reset, reset and rebuild 6474 * i40e_handle_reset_warning - prep for the PF to reset, reset and rebuild
6475 * @pf: board private structure 6475 * @pf: board private structure
6476 * 6476 *
6477 * Close up the VFs and other things in prep for a Core Reset, 6477 * Close up the VFs and other things in prep for a Core Reset,
@@ -6485,7 +6485,7 @@ static void i40e_handle_reset_warning(struct i40e_pf *pf)
6485 6485
6486/** 6486/**
6487 * i40e_handle_mdd_event 6487 * i40e_handle_mdd_event
6488 * @pf: pointer to the pf structure 6488 * @pf: pointer to the PF structure
6489 * 6489 *
6490 * Called from the MDD irq handler to identify possibly malicious vfs 6490 * Called from the MDD irq handler to identify possibly malicious vfs
6491 **/ 6491 **/
@@ -6514,7 +6514,7 @@ static void i40e_handle_mdd_event(struct i40e_pf *pf)
6514 I40E_GL_MDET_TX_QUEUE_SHIFT) - 6514 I40E_GL_MDET_TX_QUEUE_SHIFT) -
6515 pf->hw.func_caps.base_queue; 6515 pf->hw.func_caps.base_queue;
6516 if (netif_msg_tx_err(pf)) 6516 if (netif_msg_tx_err(pf))
6517 dev_info(&pf->pdev->dev, "Malicious Driver Detection event 0x%02x on TX queue %d pf number 0x%02x vf number 0x%02x\n", 6517 dev_info(&pf->pdev->dev, "Malicious Driver Detection event 0x%02x on TX queue %d PF number 0x%02x VF number 0x%02x\n",
6518 event, queue, pf_num, vf_num); 6518 event, queue, pf_num, vf_num);
6519 wr32(hw, I40E_GL_MDET_TX, 0xffffffff); 6519 wr32(hw, I40E_GL_MDET_TX, 0xffffffff);
6520 mdd_detected = true; 6520 mdd_detected = true;
@@ -6917,7 +6917,7 @@ static int i40e_vsi_clear(struct i40e_vsi *vsi)
6917 goto unlock_vsi; 6917 goto unlock_vsi;
6918 } 6918 }
6919 6919
6920 /* updates the pf for this cleared vsi */ 6920 /* updates the PF for this cleared vsi */
6921 i40e_put_lump(pf->qp_pile, vsi->base_queue, vsi->idx); 6921 i40e_put_lump(pf->qp_pile, vsi->base_queue, vsi->idx);
6922 i40e_put_lump(pf->irq_pile, vsi->base_vector, vsi->idx); 6922 i40e_put_lump(pf->irq_pile, vsi->base_vector, vsi->idx);
6923 6923
@@ -7491,7 +7491,7 @@ i40e_status i40e_set_npar_bw_setting(struct i40e_pf *pf)
7491 struct i40e_aqc_configure_partition_bw_data bw_data; 7491 struct i40e_aqc_configure_partition_bw_data bw_data;
7492 i40e_status status; 7492 i40e_status status;
7493 7493
7494 /* Set the valid bit for this pf */ 7494 /* Set the valid bit for this PF */
7495 bw_data.pf_valid_bits = cpu_to_le16(1 << pf->hw.pf_id); 7495 bw_data.pf_valid_bits = cpu_to_le16(1 << pf->hw.pf_id);
7496 bw_data.max_bw[pf->hw.pf_id] = pf->npar_max_bw & I40E_ALT_BW_VALUE_MASK; 7496 bw_data.max_bw[pf->hw.pf_id] = pf->npar_max_bw & I40E_ALT_BW_VALUE_MASK;
7497 bw_data.min_bw[pf->hw.pf_id] = pf->npar_min_bw & I40E_ALT_BW_VALUE_MASK; 7497 bw_data.min_bw[pf->hw.pf_id] = pf->npar_min_bw & I40E_ALT_BW_VALUE_MASK;
@@ -7649,11 +7649,11 @@ static int i40e_sw_init(struct i40e_pf *pf)
7649 (pf->hw.func_caps.fd_filters_best_effort > 0)) { 7649 (pf->hw.func_caps.fd_filters_best_effort > 0)) {
7650 pf->flags |= I40E_FLAG_FD_ATR_ENABLED; 7650 pf->flags |= I40E_FLAG_FD_ATR_ENABLED;
7651 pf->atr_sample_rate = I40E_DEFAULT_ATR_SAMPLE_RATE; 7651 pf->atr_sample_rate = I40E_DEFAULT_ATR_SAMPLE_RATE;
7652 /* Setup a counter for fd_atr per pf */ 7652 /* Setup a counter for fd_atr per PF */
7653 pf->fd_atr_cnt_idx = I40E_FD_ATR_STAT_IDX(pf->hw.pf_id); 7653 pf->fd_atr_cnt_idx = I40E_FD_ATR_STAT_IDX(pf->hw.pf_id);
7654 if (!(pf->flags & I40E_FLAG_MFP_ENABLED)) { 7654 if (!(pf->flags & I40E_FLAG_MFP_ENABLED)) {
7655 pf->flags |= I40E_FLAG_FD_SB_ENABLED; 7655 pf->flags |= I40E_FLAG_FD_SB_ENABLED;
7656 /* Setup a counter for fd_sb per pf */ 7656 /* Setup a counter for fd_sb per PF */
7657 pf->fd_sb_cnt_idx = I40E_FD_SB_STAT_IDX(pf->hw.pf_id); 7657 pf->fd_sb_cnt_idx = I40E_FD_SB_STAT_IDX(pf->hw.pf_id);
7658 } else { 7658 } else {
7659 dev_info(&pf->pdev->dev, 7659 dev_info(&pf->pdev->dev,
@@ -8257,7 +8257,7 @@ static int i40e_add_vsi(struct i40e_vsi *vsi)
8257 ctxt.flags = I40E_AQ_VSI_TYPE_PF; 8257 ctxt.flags = I40E_AQ_VSI_TYPE_PF;
8258 if (ret) { 8258 if (ret) {
8259 dev_info(&pf->pdev->dev, 8259 dev_info(&pf->pdev->dev,
8260 "couldn't get pf vsi config, err %d, aq_err %d\n", 8260 "couldn't get PF vsi config, err %d, aq_err %d\n",
8261 ret, pf->hw.aq.asq_last_status); 8261 ret, pf->hw.aq.asq_last_status);
8262 return -ENOENT; 8262 return -ENOENT;
8263 } 8263 }
@@ -9158,7 +9158,7 @@ err_alloc:
9158} 9158}
9159 9159
9160/** 9160/**
9161 * i40e_setup_pf_switch_element - set pf vars based on switch type 9161 * i40e_setup_pf_switch_element - set PF vars based on switch type
9162 * @pf: board private structure 9162 * @pf: board private structure
9163 * @ele: element we are building info from 9163 * @ele: element we are building info from
9164 * @num_reported: total number of elements 9164 * @num_reported: total number of elements
@@ -9491,7 +9491,7 @@ static void i40e_determine_queue_usage(struct i40e_pf *pf)
9491 * i40e_setup_pf_filter_control - Setup PF static filter control 9491 * i40e_setup_pf_filter_control - Setup PF static filter control
9492 * @pf: PF to be setup 9492 * @pf: PF to be setup
9493 * 9493 *
9494 * i40e_setup_pf_filter_control sets up a pf's initial filter control 9494 * i40e_setup_pf_filter_control sets up a PF's initial filter control
9495 * settings. If PE/FCoE are enabled then it will also set the per PF 9495 * settings. If PE/FCoE are enabled then it will also set the per PF
9496 * based filter sizes required for them. It also enables Flow director, 9496 * based filter sizes required for them. It also enables Flow director,
9497 * ethertype and macvlan type filter settings for the pf. 9497 * ethertype and macvlan type filter settings for the pf.
@@ -9568,8 +9568,8 @@ static void i40e_print_features(struct i40e_pf *pf)
9568 * @pdev: PCI device information struct 9568 * @pdev: PCI device information struct
9569 * @ent: entry in i40e_pci_tbl 9569 * @ent: entry in i40e_pci_tbl
9570 * 9570 *
9571 * i40e_probe initializes a pf identified by a pci_dev structure. 9571 * i40e_probe initializes a PF identified by a pci_dev structure.
9572 * The OS initialization, configuring of the pf private structure, 9572 * The OS initialization, configuring of the PF private structure,
9573 * and a hardware reset occur. 9573 * and a hardware reset occur.
9574 * 9574 *
9575 * Returns 0 on success, negative on failure 9575 * Returns 0 on success, negative on failure
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index f5a50b9366cb..9b11f2e7e361 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -45,7 +45,7 @@ static inline __le64 build_ctob(u32 td_cmd, u32 td_offset, unsigned int size,
45 * i40e_program_fdir_filter - Program a Flow Director filter 45 * i40e_program_fdir_filter - Program a Flow Director filter
46 * @fdir_data: Packet data that will be filter parameters 46 * @fdir_data: Packet data that will be filter parameters
47 * @raw_packet: the pre-allocated packet buffer for FDir 47 * @raw_packet: the pre-allocated packet buffer for FDir
48 * @pf: The pf pointer 48 * @pf: The PF pointer
49 * @add: True for add/update, False for remove 49 * @add: True for add/update, False for remove
50 **/ 50 **/
51int i40e_program_fdir_filter(struct i40e_fdir_filter *fdir_data, u8 *raw_packet, 51int i40e_program_fdir_filter(struct i40e_fdir_filter *fdir_data, u8 *raw_packet,
@@ -859,6 +859,7 @@ static bool i40e_clean_tx_irq(struct i40e_ring *tx_ring, int budget)
859static void i40e_force_wb(struct i40e_vsi *vsi, struct i40e_q_vector *q_vector) 859static void i40e_force_wb(struct i40e_vsi *vsi, struct i40e_q_vector *q_vector)
860{ 860{
861 u32 val = I40E_PFINT_DYN_CTLN_INTENA_MASK | 861 u32 val = I40E_PFINT_DYN_CTLN_INTENA_MASK |
862 I40E_PFINT_DYN_CTLN_ITR_INDX_MASK | /* set noitr */
862 I40E_PFINT_DYN_CTLN_SWINT_TRIG_MASK | 863 I40E_PFINT_DYN_CTLN_SWINT_TRIG_MASK |
863 I40E_PFINT_DYN_CTLN_SW_ITR_INDX_ENA_MASK; 864 I40E_PFINT_DYN_CTLN_SW_ITR_INDX_ENA_MASK;
864 /* allow 00 to be written to the index */ 865 /* allow 00 to be written to the index */
diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index 7cc635e4c2e4..0a93684130b9 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -30,8 +30,8 @@
30 30
31/** 31/**
32 * i40e_vc_disable_vf 32 * i40e_vc_disable_vf
33 * @pf: pointer to the pf info 33 * @pf: pointer to the PF info
34 * @vf: pointer to the vf info 34 * @vf: pointer to the VF info
35 * 35 *
36 * Disable the VF through a SW reset 36 * Disable the VF through a SW reset
37 **/ 37 **/
@@ -48,10 +48,10 @@ static inline void i40e_vc_disable_vf(struct i40e_pf *pf, struct i40e_vf *vf)
48 48
49/** 49/**
50 * i40e_vc_isvalid_vsi_id 50 * i40e_vc_isvalid_vsi_id
51 * @vf: pointer to the vf info 51 * @vf: pointer to the VF info
52 * @vsi_id: vf relative vsi id 52 * @vsi_id: VF relative VSI id
53 * 53 *
54 * check for the valid vsi id 54 * check for the valid VSI id
55 **/ 55 **/
56static inline bool i40e_vc_isvalid_vsi_id(struct i40e_vf *vf, u8 vsi_id) 56static inline bool i40e_vc_isvalid_vsi_id(struct i40e_vf *vf, u8 vsi_id)
57{ 57{
@@ -62,7 +62,7 @@ static inline bool i40e_vc_isvalid_vsi_id(struct i40e_vf *vf, u8 vsi_id)
62 62
63/** 63/**
64 * i40e_vc_isvalid_queue_id 64 * i40e_vc_isvalid_queue_id
65 * @vf: pointer to the vf info 65 * @vf: pointer to the VF info
66 * @vsi_id: vsi id 66 * @vsi_id: vsi id
67 * @qid: vsi relative queue id 67 * @qid: vsi relative queue id
68 * 68 *
@@ -78,8 +78,8 @@ static inline bool i40e_vc_isvalid_queue_id(struct i40e_vf *vf, u8 vsi_id,
78 78
79/** 79/**
80 * i40e_vc_isvalid_vector_id 80 * i40e_vc_isvalid_vector_id
81 * @vf: pointer to the vf info 81 * @vf: pointer to the VF info
82 * @vector_id: vf relative vector id 82 * @vector_id: VF relative vector id
83 * 83 *
84 * check for the valid vector id 84 * check for the valid vector id
85 **/ 85 **/
@@ -94,11 +94,11 @@ static inline bool i40e_vc_isvalid_vector_id(struct i40e_vf *vf, u8 vector_id)
94 94
95/** 95/**
96 * i40e_vc_get_pf_queue_id 96 * i40e_vc_get_pf_queue_id
97 * @vf: pointer to the vf info 97 * @vf: pointer to the VF info
98 * @vsi_idx: index of VSI in PF struct 98 * @vsi_idx: index of VSI in PF struct
99 * @vsi_queue_id: vsi relative queue id 99 * @vsi_queue_id: vsi relative queue id
100 * 100 *
101 * return pf relative queue id 101 * return PF relative queue id
102 **/ 102 **/
103static u16 i40e_vc_get_pf_queue_id(struct i40e_vf *vf, u8 vsi_idx, 103static u16 i40e_vc_get_pf_queue_id(struct i40e_vf *vf, u8 vsi_idx,
104 u8 vsi_queue_id) 104 u8 vsi_queue_id)
@@ -120,7 +120,7 @@ static u16 i40e_vc_get_pf_queue_id(struct i40e_vf *vf, u8 vsi_idx,
120 120
121/** 121/**
122 * i40e_config_irq_link_list 122 * i40e_config_irq_link_list
123 * @vf: pointer to the vf info 123 * @vf: pointer to the VF info
124 * @vsi_idx: index of VSI in PF struct 124 * @vsi_idx: index of VSI in PF struct
125 * @vecmap: irq map info 125 * @vecmap: irq map info
126 * 126 *
@@ -220,7 +220,7 @@ irq_list_done:
220 220
221/** 221/**
222 * i40e_config_vsi_tx_queue 222 * i40e_config_vsi_tx_queue
223 * @vf: pointer to the vf info 223 * @vf: pointer to the VF info
224 * @vsi_idx: index of VSI in PF struct 224 * @vsi_idx: index of VSI in PF struct
225 * @vsi_queue_id: vsi relative queue index 225 * @vsi_queue_id: vsi relative queue index
226 * @info: config. info 226 * @info: config. info
@@ -287,7 +287,7 @@ error_context:
287 287
288/** 288/**
289 * i40e_config_vsi_rx_queue 289 * i40e_config_vsi_rx_queue
290 * @vf: pointer to the vf info 290 * @vf: pointer to the VF info
291 * @vsi_idx: index of VSI in PF struct 291 * @vsi_idx: index of VSI in PF struct
292 * @vsi_queue_id: vsi relative queue index 292 * @vsi_queue_id: vsi relative queue index
293 * @info: config. info 293 * @info: config. info
@@ -378,10 +378,10 @@ error_param:
378 378
379/** 379/**
380 * i40e_alloc_vsi_res 380 * i40e_alloc_vsi_res
381 * @vf: pointer to the vf info 381 * @vf: pointer to the VF info
382 * @type: type of VSI to allocate 382 * @type: type of VSI to allocate
383 * 383 *
384 * alloc vf vsi context & resources 384 * alloc VF vsi context & resources
385 **/ 385 **/
386static int i40e_alloc_vsi_res(struct i40e_vf *vf, enum i40e_vsi_type type) 386static int i40e_alloc_vsi_res(struct i40e_vf *vf, enum i40e_vsi_type type)
387{ 387{
@@ -394,7 +394,7 @@ static int i40e_alloc_vsi_res(struct i40e_vf *vf, enum i40e_vsi_type type)
394 394
395 if (!vsi) { 395 if (!vsi) {
396 dev_err(&pf->pdev->dev, 396 dev_err(&pf->pdev->dev,
397 "add vsi failed for vf %d, aq_err %d\n", 397 "add vsi failed for VF %d, aq_err %d\n",
398 vf->vf_id, pf->hw.aq.asq_last_status); 398 vf->vf_id, pf->hw.aq.asq_last_status);
399 ret = -ENOENT; 399 ret = -ENOENT;
400 goto error_alloc_vsi_res; 400 goto error_alloc_vsi_res;
@@ -443,9 +443,9 @@ error_alloc_vsi_res:
443 443
444/** 444/**
445 * i40e_enable_vf_mappings 445 * i40e_enable_vf_mappings
446 * @vf: pointer to the vf info 446 * @vf: pointer to the VF info
447 * 447 *
448 * enable vf mappings 448 * enable VF mappings
449 **/ 449 **/
450static void i40e_enable_vf_mappings(struct i40e_vf *vf) 450static void i40e_enable_vf_mappings(struct i40e_vf *vf)
451{ 451{
@@ -493,9 +493,9 @@ static void i40e_enable_vf_mappings(struct i40e_vf *vf)
493 493
494/** 494/**
495 * i40e_disable_vf_mappings 495 * i40e_disable_vf_mappings
496 * @vf: pointer to the vf info 496 * @vf: pointer to the VF info
497 * 497 *
498 * disable vf mappings 498 * disable VF mappings
499 **/ 499 **/
500static void i40e_disable_vf_mappings(struct i40e_vf *vf) 500static void i40e_disable_vf_mappings(struct i40e_vf *vf)
501{ 501{
@@ -513,9 +513,9 @@ static void i40e_disable_vf_mappings(struct i40e_vf *vf)
513 513
514/** 514/**
515 * i40e_free_vf_res 515 * i40e_free_vf_res
516 * @vf: pointer to the vf info 516 * @vf: pointer to the VF info
517 * 517 *
518 * free vf resources 518 * free VF resources
519 **/ 519 **/
520static void i40e_free_vf_res(struct i40e_vf *vf) 520static void i40e_free_vf_res(struct i40e_vf *vf)
521{ 521{
@@ -568,9 +568,9 @@ static void i40e_free_vf_res(struct i40e_vf *vf)
568 568
569/** 569/**
570 * i40e_alloc_vf_res 570 * i40e_alloc_vf_res
571 * @vf: pointer to the vf info 571 * @vf: pointer to the VF info
572 * 572 *
573 * allocate vf resources 573 * allocate VF resources
574 **/ 574 **/
575static int i40e_alloc_vf_res(struct i40e_vf *vf) 575static int i40e_alloc_vf_res(struct i40e_vf *vf)
576{ 576{
@@ -586,11 +586,11 @@ static int i40e_alloc_vf_res(struct i40e_vf *vf)
586 set_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps); 586 set_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps);
587 587
588 /* store the total qps number for the runtime 588 /* store the total qps number for the runtime
589 * vf req validation 589 * VF req validation
590 */ 590 */
591 vf->num_queue_pairs = total_queue_pairs; 591 vf->num_queue_pairs = total_queue_pairs;
592 592
593 /* vf is now completely initialized */ 593 /* VF is now completely initialized */
594 set_bit(I40E_VF_STAT_INIT, &vf->vf_states); 594 set_bit(I40E_VF_STAT_INIT, &vf->vf_states);
595 595
596error_alloc: 596error_alloc:
@@ -604,7 +604,7 @@ error_alloc:
604#define VF_TRANS_PENDING_MASK 0x20 604#define VF_TRANS_PENDING_MASK 0x20
605/** 605/**
606 * i40e_quiesce_vf_pci 606 * i40e_quiesce_vf_pci
607 * @vf: pointer to the vf structure 607 * @vf: pointer to the VF structure
608 * 608 *
609 * Wait for VF PCI transactions to be cleared after reset. Returns -EIO 609 * Wait for VF PCI transactions to be cleared after reset. Returns -EIO
610 * if the transactions never clear. 610 * if the transactions never clear.
@@ -631,10 +631,10 @@ static int i40e_quiesce_vf_pci(struct i40e_vf *vf)
631 631
632/** 632/**
633 * i40e_reset_vf 633 * i40e_reset_vf
634 * @vf: pointer to the vf structure 634 * @vf: pointer to the VF structure
635 * @flr: VFLR was issued or not 635 * @flr: VFLR was issued or not
636 * 636 *
637 * reset the vf 637 * reset the VF
638 **/ 638 **/
639void i40e_reset_vf(struct i40e_vf *vf, bool flr) 639void i40e_reset_vf(struct i40e_vf *vf, bool flr)
640{ 640{
@@ -654,7 +654,7 @@ void i40e_reset_vf(struct i40e_vf *vf, bool flr)
654 * just need to clean up, so don't hit the VFRTRIG register. 654 * just need to clean up, so don't hit the VFRTRIG register.
655 */ 655 */
656 if (!flr) { 656 if (!flr) {
657 /* reset vf using VPGEN_VFRTRIG reg */ 657 /* reset VF using VPGEN_VFRTRIG reg */
658 reg = rd32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id)); 658 reg = rd32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id));
659 reg |= I40E_VPGEN_VFRTRIG_VFSWR_MASK; 659 reg |= I40E_VPGEN_VFRTRIG_VFSWR_MASK;
660 wr32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id), reg); 660 wr32(hw, I40E_VPGEN_VFRTRIG(vf->vf_id), reg);
@@ -697,7 +697,7 @@ void i40e_reset_vf(struct i40e_vf *vf, bool flr)
697 697
698 i40e_vsi_control_rings(pf->vsi[vf->lan_vsi_index], false); 698 i40e_vsi_control_rings(pf->vsi[vf->lan_vsi_index], false);
699complete_reset: 699complete_reset:
700 /* reallocate vf resources to reset the VSI state */ 700 /* reallocate VF resources to reset the VSI state */
701 i40e_free_vf_res(vf); 701 i40e_free_vf_res(vf);
702 i40e_alloc_vf_res(vf); 702 i40e_alloc_vf_res(vf);
703 i40e_enable_vf_mappings(vf); 703 i40e_enable_vf_mappings(vf);
@@ -711,9 +711,9 @@ complete_reset:
711 711
712/** 712/**
713 * i40e_free_vfs 713 * i40e_free_vfs
714 * @pf: pointer to the pf structure 714 * @pf: pointer to the PF structure
715 * 715 *
716 * free vf resources 716 * free VF resources
717 **/ 717 **/
718void i40e_free_vfs(struct i40e_pf *pf) 718void i40e_free_vfs(struct i40e_pf *pf)
719{ 719{
@@ -735,7 +735,7 @@ void i40e_free_vfs(struct i40e_pf *pf)
735 735
736 msleep(20); /* let any messages in transit get finished up */ 736 msleep(20); /* let any messages in transit get finished up */
737 737
738 /* free up vf resources */ 738 /* free up VF resources */
739 tmp = pf->num_alloc_vfs; 739 tmp = pf->num_alloc_vfs;
740 pf->num_alloc_vfs = 0; 740 pf->num_alloc_vfs = 0;
741 for (i = 0; i < tmp; i++) { 741 for (i = 0; i < tmp; i++) {
@@ -771,10 +771,10 @@ void i40e_free_vfs(struct i40e_pf *pf)
771#ifdef CONFIG_PCI_IOV 771#ifdef CONFIG_PCI_IOV
772/** 772/**
773 * i40e_alloc_vfs 773 * i40e_alloc_vfs
774 * @pf: pointer to the pf structure 774 * @pf: pointer to the PF structure
775 * @num_alloc_vfs: number of vfs to allocate 775 * @num_alloc_vfs: number of VFs to allocate
776 * 776 *
777 * allocate vf resources 777 * allocate VF resources
778 **/ 778 **/
779int i40e_alloc_vfs(struct i40e_pf *pf, u16 num_alloc_vfs) 779int i40e_alloc_vfs(struct i40e_pf *pf, u16 num_alloc_vfs)
780{ 780{
@@ -811,10 +811,10 @@ int i40e_alloc_vfs(struct i40e_pf *pf, u16 num_alloc_vfs)
811 /* assign default capabilities */ 811 /* assign default capabilities */
812 set_bit(I40E_VIRTCHNL_VF_CAP_L2, &vfs[i].vf_caps); 812 set_bit(I40E_VIRTCHNL_VF_CAP_L2, &vfs[i].vf_caps);
813 vfs[i].spoofchk = true; 813 vfs[i].spoofchk = true;
814 /* vf resources get allocated during reset */ 814 /* VF resources get allocated during reset */
815 i40e_reset_vf(&vfs[i], false); 815 i40e_reset_vf(&vfs[i], false);
816 816
817 /* enable vf vplan_qtable mappings */ 817 /* enable VF vplan_qtable mappings */
818 i40e_enable_vf_mappings(&vfs[i]); 818 i40e_enable_vf_mappings(&vfs[i]);
819 } 819 }
820 pf->num_alloc_vfs = num_alloc_vfs; 820 pf->num_alloc_vfs = num_alloc_vfs;
@@ -832,7 +832,7 @@ err_iov:
832/** 832/**
833 * i40e_pci_sriov_enable 833 * i40e_pci_sriov_enable
834 * @pdev: pointer to a pci_dev structure 834 * @pdev: pointer to a pci_dev structure
835 * @num_vfs: number of vfs to allocate 835 * @num_vfs: number of VFs to allocate
836 * 836 *
837 * Enable or change the number of VFs 837 * Enable or change the number of VFs
838 **/ 838 **/
@@ -872,7 +872,7 @@ err_out:
872/** 872/**
873 * i40e_pci_sriov_configure 873 * i40e_pci_sriov_configure
874 * @pdev: pointer to a pci_dev structure 874 * @pdev: pointer to a pci_dev structure
875 * @num_vfs: number of vfs to allocate 875 * @num_vfs: number of VFs to allocate
876 * 876 *
877 * Enable or change the number of VFs. Called when the user updates the number 877 * Enable or change the number of VFs. Called when the user updates the number
878 * of VFs in sysfs. 878 * of VFs in sysfs.
@@ -897,13 +897,13 @@ int i40e_pci_sriov_configure(struct pci_dev *pdev, int num_vfs)
897 897
898/** 898/**
899 * i40e_vc_send_msg_to_vf 899 * i40e_vc_send_msg_to_vf
900 * @vf: pointer to the vf info 900 * @vf: pointer to the VF info
901 * @v_opcode: virtual channel opcode 901 * @v_opcode: virtual channel opcode
902 * @v_retval: virtual channel return value 902 * @v_retval: virtual channel return value
903 * @msg: pointer to the msg buffer 903 * @msg: pointer to the msg buffer
904 * @msglen: msg length 904 * @msglen: msg length
905 * 905 *
906 * send msg to vf 906 * send msg to VF
907 **/ 907 **/
908static int i40e_vc_send_msg_to_vf(struct i40e_vf *vf, u32 v_opcode, 908static int i40e_vc_send_msg_to_vf(struct i40e_vf *vf, u32 v_opcode,
909 u32 v_retval, u8 *msg, u16 msglen) 909 u32 v_retval, u8 *msg, u16 msglen)
@@ -952,11 +952,11 @@ static int i40e_vc_send_msg_to_vf(struct i40e_vf *vf, u32 v_opcode,
952 952
953/** 953/**
954 * i40e_vc_send_resp_to_vf 954 * i40e_vc_send_resp_to_vf
955 * @vf: pointer to the vf info 955 * @vf: pointer to the VF info
956 * @opcode: operation code 956 * @opcode: operation code
957 * @retval: return value 957 * @retval: return value
958 * 958 *
959 * send resp msg to vf 959 * send resp msg to VF
960 **/ 960 **/
961static int i40e_vc_send_resp_to_vf(struct i40e_vf *vf, 961static int i40e_vc_send_resp_to_vf(struct i40e_vf *vf,
962 enum i40e_virtchnl_ops opcode, 962 enum i40e_virtchnl_ops opcode,
@@ -967,9 +967,9 @@ static int i40e_vc_send_resp_to_vf(struct i40e_vf *vf,
967 967
968/** 968/**
969 * i40e_vc_get_version_msg 969 * i40e_vc_get_version_msg
970 * @vf: pointer to the vf info 970 * @vf: pointer to the VF info
971 * 971 *
972 * called from the vf to request the API version used by the PF 972 * called from the VF to request the API version used by the PF
973 **/ 973 **/
974static int i40e_vc_get_version_msg(struct i40e_vf *vf) 974static int i40e_vc_get_version_msg(struct i40e_vf *vf)
975{ 975{
@@ -985,11 +985,11 @@ static int i40e_vc_get_version_msg(struct i40e_vf *vf)
985 985
986/** 986/**
987 * i40e_vc_get_vf_resources_msg 987 * i40e_vc_get_vf_resources_msg
988 * @vf: pointer to the vf info 988 * @vf: pointer to the VF info
989 * @msg: pointer to the msg buffer 989 * @msg: pointer to the msg buffer
990 * @msglen: msg length 990 * @msglen: msg length
991 * 991 *
992 * called from the vf to request its resources 992 * called from the VF to request its resources
993 **/ 993 **/
994static int i40e_vc_get_vf_resources_msg(struct i40e_vf *vf) 994static int i40e_vc_get_vf_resources_msg(struct i40e_vf *vf)
995{ 995{
@@ -1036,7 +1036,7 @@ static int i40e_vc_get_vf_resources_msg(struct i40e_vf *vf)
1036 set_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states); 1036 set_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states);
1037 1037
1038err: 1038err:
1039 /* send the response back to the vf */ 1039 /* send the response back to the VF */
1040 ret = i40e_vc_send_msg_to_vf(vf, I40E_VIRTCHNL_OP_GET_VF_RESOURCES, 1040 ret = i40e_vc_send_msg_to_vf(vf, I40E_VIRTCHNL_OP_GET_VF_RESOURCES,
1041 aq_ret, (u8 *)vfres, len); 1041 aq_ret, (u8 *)vfres, len);
1042 1042
@@ -1046,13 +1046,13 @@ err:
1046 1046
1047/** 1047/**
1048 * i40e_vc_reset_vf_msg 1048 * i40e_vc_reset_vf_msg
1049 * @vf: pointer to the vf info 1049 * @vf: pointer to the VF info
1050 * @msg: pointer to the msg buffer 1050 * @msg: pointer to the msg buffer
1051 * @msglen: msg length 1051 * @msglen: msg length
1052 * 1052 *
1053 * called from the vf to reset itself, 1053 * called from the VF to reset itself,
1054 * unlike other virtchnl messages, pf driver 1054 * unlike other virtchnl messages, PF driver
1055 * doesn't send the response back to the vf 1055 * doesn't send the response back to the VF
1056 **/ 1056 **/
1057static void i40e_vc_reset_vf_msg(struct i40e_vf *vf) 1057static void i40e_vc_reset_vf_msg(struct i40e_vf *vf)
1058{ 1058{
@@ -1062,12 +1062,12 @@ static void i40e_vc_reset_vf_msg(struct i40e_vf *vf)
1062 1062
1063/** 1063/**
1064 * i40e_vc_config_promiscuous_mode_msg 1064 * i40e_vc_config_promiscuous_mode_msg
1065 * @vf: pointer to the vf info 1065 * @vf: pointer to the VF info
1066 * @msg: pointer to the msg buffer 1066 * @msg: pointer to the msg buffer
1067 * @msglen: msg length 1067 * @msglen: msg length
1068 * 1068 *
1069 * called from the vf to configure the promiscuous mode of 1069 * called from the VF to configure the promiscuous mode of
1070 * vf vsis 1070 * VF vsis
1071 **/ 1071 **/
1072static int i40e_vc_config_promiscuous_mode_msg(struct i40e_vf *vf, 1072static int i40e_vc_config_promiscuous_mode_msg(struct i40e_vf *vf,
1073 u8 *msg, u16 msglen) 1073 u8 *msg, u16 msglen)
@@ -1094,7 +1094,7 @@ static int i40e_vc_config_promiscuous_mode_msg(struct i40e_vf *vf,
1094 allmulti, NULL); 1094 allmulti, NULL);
1095 1095
1096error_param: 1096error_param:
1097 /* send the response to the vf */ 1097 /* send the response to the VF */
1098 return i40e_vc_send_resp_to_vf(vf, 1098 return i40e_vc_send_resp_to_vf(vf,
1099 I40E_VIRTCHNL_OP_CONFIG_PROMISCUOUS_MODE, 1099 I40E_VIRTCHNL_OP_CONFIG_PROMISCUOUS_MODE,
1100 aq_ret); 1100 aq_ret);
@@ -1102,11 +1102,11 @@ error_param:
1102 1102
1103/** 1103/**
1104 * i40e_vc_config_queues_msg 1104 * i40e_vc_config_queues_msg
1105 * @vf: pointer to the vf info 1105 * @vf: pointer to the VF info
1106 * @msg: pointer to the msg buffer 1106 * @msg: pointer to the msg buffer
1107 * @msglen: msg length 1107 * @msglen: msg length
1108 * 1108 *
1109 * called from the vf to configure the rx/tx 1109 * called from the VF to configure the rx/tx
1110 * queues 1110 * queues
1111 **/ 1111 **/
1112static int i40e_vc_config_queues_msg(struct i40e_vf *vf, u8 *msg, u16 msglen) 1112static int i40e_vc_config_queues_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
@@ -1148,22 +1148,22 @@ static int i40e_vc_config_queues_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
1148 goto error_param; 1148 goto error_param;
1149 } 1149 }
1150 } 1150 }
1151 /* set vsi num_queue_pairs in use to num configured by vf */ 1151 /* set vsi num_queue_pairs in use to num configured by VF */
1152 pf->vsi[vf->lan_vsi_index]->num_queue_pairs = qci->num_queue_pairs; 1152 pf->vsi[vf->lan_vsi_index]->num_queue_pairs = qci->num_queue_pairs;
1153 1153
1154error_param: 1154error_param:
1155 /* send the response to the vf */ 1155 /* send the response to the VF */
1156 return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_CONFIG_VSI_QUEUES, 1156 return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_CONFIG_VSI_QUEUES,
1157 aq_ret); 1157 aq_ret);
1158} 1158}
1159 1159
1160/** 1160/**
1161 * i40e_vc_config_irq_map_msg 1161 * i40e_vc_config_irq_map_msg
1162 * @vf: pointer to the vf info 1162 * @vf: pointer to the VF info
1163 * @msg: pointer to the msg buffer 1163 * @msg: pointer to the msg buffer
1164 * @msglen: msg length 1164 * @msglen: msg length
1165 * 1165 *
1166 * called from the vf to configure the irq to 1166 * called from the VF to configure the irq to
1167 * queue map 1167 * queue map
1168 **/ 1168 **/
1169static int i40e_vc_config_irq_map_msg(struct i40e_vf *vf, u8 *msg, u16 msglen) 1169static int i40e_vc_config_irq_map_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
@@ -1215,18 +1215,18 @@ static int i40e_vc_config_irq_map_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
1215 i40e_config_irq_link_list(vf, vsi_id, map); 1215 i40e_config_irq_link_list(vf, vsi_id, map);
1216 } 1216 }
1217error_param: 1217error_param:
1218 /* send the response to the vf */ 1218 /* send the response to the VF */
1219 return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_CONFIG_IRQ_MAP, 1219 return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_CONFIG_IRQ_MAP,
1220 aq_ret); 1220 aq_ret);
1221} 1221}
1222 1222
1223/** 1223/**
1224 * i40e_vc_enable_queues_msg 1224 * i40e_vc_enable_queues_msg
1225 * @vf: pointer to the vf info 1225 * @vf: pointer to the VF info
1226 * @msg: pointer to the msg buffer 1226 * @msg: pointer to the msg buffer
1227 * @msglen: msg length 1227 * @msglen: msg length
1228 * 1228 *
1229 * called from the vf to enable all or specific queue(s) 1229 * called from the VF to enable all or specific queue(s)
1230 **/ 1230 **/
1231static int i40e_vc_enable_queues_msg(struct i40e_vf *vf, u8 *msg, u16 msglen) 1231static int i40e_vc_enable_queues_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
1232{ 1232{
@@ -1253,18 +1253,18 @@ static int i40e_vc_enable_queues_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
1253 if (i40e_vsi_control_rings(pf->vsi[vsi_id], true)) 1253 if (i40e_vsi_control_rings(pf->vsi[vsi_id], true))
1254 aq_ret = I40E_ERR_TIMEOUT; 1254 aq_ret = I40E_ERR_TIMEOUT;
1255error_param: 1255error_param:
1256 /* send the response to the vf */ 1256 /* send the response to the VF */
1257 return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_ENABLE_QUEUES, 1257 return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_ENABLE_QUEUES,
1258 aq_ret); 1258 aq_ret);
1259} 1259}
1260 1260
1261/** 1261/**
1262 * i40e_vc_disable_queues_msg 1262 * i40e_vc_disable_queues_msg
1263 * @vf: pointer to the vf info 1263 * @vf: pointer to the VF info
1264 * @msg: pointer to the msg buffer 1264 * @msg: pointer to the msg buffer
1265 * @msglen: msg length 1265 * @msglen: msg length
1266 * 1266 *
1267 * called from the vf to disable all or specific 1267 * called from the VF to disable all or specific
1268 * queue(s) 1268 * queue(s)
1269 **/ 1269 **/
1270static int i40e_vc_disable_queues_msg(struct i40e_vf *vf, u8 *msg, u16 msglen) 1270static int i40e_vc_disable_queues_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
@@ -1293,18 +1293,18 @@ static int i40e_vc_disable_queues_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
1293 aq_ret = I40E_ERR_TIMEOUT; 1293 aq_ret = I40E_ERR_TIMEOUT;
1294 1294
1295error_param: 1295error_param:
1296 /* send the response to the vf */ 1296 /* send the response to the VF */
1297 return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_DISABLE_QUEUES, 1297 return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_DISABLE_QUEUES,
1298 aq_ret); 1298 aq_ret);
1299} 1299}
1300 1300
1301/** 1301/**
1302 * i40e_vc_get_stats_msg 1302 * i40e_vc_get_stats_msg
1303 * @vf: pointer to the vf info 1303 * @vf: pointer to the VF info
1304 * @msg: pointer to the msg buffer 1304 * @msg: pointer to the msg buffer
1305 * @msglen: msg length 1305 * @msglen: msg length
1306 * 1306 *
1307 * called from the vf to get vsi stats 1307 * called from the VF to get vsi stats
1308 **/ 1308 **/
1309static int i40e_vc_get_stats_msg(struct i40e_vf *vf, u8 *msg, u16 msglen) 1309static int i40e_vc_get_stats_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
1310{ 1310{
@@ -1336,14 +1336,14 @@ static int i40e_vc_get_stats_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
1336 stats = vsi->eth_stats; 1336 stats = vsi->eth_stats;
1337 1337
1338error_param: 1338error_param:
1339 /* send the response back to the vf */ 1339 /* send the response back to the VF */
1340 return i40e_vc_send_msg_to_vf(vf, I40E_VIRTCHNL_OP_GET_STATS, aq_ret, 1340 return i40e_vc_send_msg_to_vf(vf, I40E_VIRTCHNL_OP_GET_STATS, aq_ret,
1341 (u8 *)&stats, sizeof(stats)); 1341 (u8 *)&stats, sizeof(stats));
1342} 1342}
1343 1343
1344/** 1344/**
1345 * i40e_check_vf_permission 1345 * i40e_check_vf_permission
1346 * @vf: pointer to the vf info 1346 * @vf: pointer to the VF info
1347 * @macaddr: pointer to the MAC Address being checked 1347 * @macaddr: pointer to the MAC Address being checked
1348 * 1348 *
1349 * Check if the VF has permission to add or delete unicast MAC address 1349 * Check if the VF has permission to add or delete unicast MAC address
@@ -1377,7 +1377,7 @@ static inline int i40e_check_vf_permission(struct i40e_vf *vf, u8 *macaddr)
1377 1377
1378/** 1378/**
1379 * i40e_vc_add_mac_addr_msg 1379 * i40e_vc_add_mac_addr_msg
1380 * @vf: pointer to the vf info 1380 * @vf: pointer to the VF info
1381 * @msg: pointer to the msg buffer 1381 * @msg: pointer to the msg buffer
1382 * @msglen: msg length 1382 * @msglen: msg length
1383 * 1383 *
@@ -1434,14 +1434,14 @@ static int i40e_vc_add_mac_addr_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
1434 dev_err(&pf->pdev->dev, "Unable to program VF MAC filters\n"); 1434 dev_err(&pf->pdev->dev, "Unable to program VF MAC filters\n");
1435 1435
1436error_param: 1436error_param:
1437 /* send the response to the vf */ 1437 /* send the response to the VF */
1438 return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_ADD_ETHER_ADDRESS, 1438 return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_ADD_ETHER_ADDRESS,
1439 ret); 1439 ret);
1440} 1440}
1441 1441
1442/** 1442/**
1443 * i40e_vc_del_mac_addr_msg 1443 * i40e_vc_del_mac_addr_msg
1444 * @vf: pointer to the vf info 1444 * @vf: pointer to the VF info
1445 * @msg: pointer to the msg buffer 1445 * @msg: pointer to the msg buffer
1446 * @msglen: msg length 1446 * @msglen: msg length
1447 * 1447 *
@@ -1485,14 +1485,14 @@ static int i40e_vc_del_mac_addr_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
1485 dev_err(&pf->pdev->dev, "Unable to program VF MAC filters\n"); 1485 dev_err(&pf->pdev->dev, "Unable to program VF MAC filters\n");
1486 1486
1487error_param: 1487error_param:
1488 /* send the response to the vf */ 1488 /* send the response to the VF */
1489 return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_DEL_ETHER_ADDRESS, 1489 return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_DEL_ETHER_ADDRESS,
1490 ret); 1490 ret);
1491} 1491}
1492 1492
1493/** 1493/**
1494 * i40e_vc_add_vlan_msg 1494 * i40e_vc_add_vlan_msg
1495 * @vf: pointer to the vf info 1495 * @vf: pointer to the VF info
1496 * @msg: pointer to the msg buffer 1496 * @msg: pointer to the msg buffer
1497 * @msglen: msg length 1497 * @msglen: msg length
1498 * 1498 *
@@ -1540,13 +1540,13 @@ static int i40e_vc_add_vlan_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
1540 } 1540 }
1541 1541
1542error_param: 1542error_param:
1543 /* send the response to the vf */ 1543 /* send the response to the VF */
1544 return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_ADD_VLAN, aq_ret); 1544 return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_ADD_VLAN, aq_ret);
1545} 1545}
1546 1546
1547/** 1547/**
1548 * i40e_vc_remove_vlan_msg 1548 * i40e_vc_remove_vlan_msg
1549 * @vf: pointer to the vf info 1549 * @vf: pointer to the VF info
1550 * @msg: pointer to the msg buffer 1550 * @msg: pointer to the msg buffer
1551 * @msglen: msg length 1551 * @msglen: msg length
1552 * 1552 *
@@ -1591,13 +1591,13 @@ static int i40e_vc_remove_vlan_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
1591 } 1591 }
1592 1592
1593error_param: 1593error_param:
1594 /* send the response to the vf */ 1594 /* send the response to the VF */
1595 return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_DEL_VLAN, aq_ret); 1595 return i40e_vc_send_resp_to_vf(vf, I40E_VIRTCHNL_OP_DEL_VLAN, aq_ret);
1596} 1596}
1597 1597
1598/** 1598/**
1599 * i40e_vc_validate_vf_msg 1599 * i40e_vc_validate_vf_msg
1600 * @vf: pointer to the vf info 1600 * @vf: pointer to the VF info
1601 * @msg: pointer to the msg buffer 1601 * @msg: pointer to the msg buffer
1602 * @msglen: msg length 1602 * @msglen: msg length
1603 * @msghndl: msg handle 1603 * @msghndl: msg handle
@@ -1703,14 +1703,14 @@ static int i40e_vc_validate_vf_msg(struct i40e_vf *vf, u32 v_opcode,
1703 1703
1704/** 1704/**
1705 * i40e_vc_process_vf_msg 1705 * i40e_vc_process_vf_msg
1706 * @pf: pointer to the pf structure 1706 * @pf: pointer to the PF structure
1707 * @vf_id: source vf id 1707 * @vf_id: source VF id
1708 * @msg: pointer to the msg buffer 1708 * @msg: pointer to the msg buffer
1709 * @msglen: msg length 1709 * @msglen: msg length
1710 * @msghndl: msg handle 1710 * @msghndl: msg handle
1711 * 1711 *
1712 * called from the common aeq/arq handler to 1712 * called from the common aeq/arq handler to
1713 * process request from vf 1713 * process request from VF
1714 **/ 1714 **/
1715int i40e_vc_process_vf_msg(struct i40e_pf *pf, u16 vf_id, u32 v_opcode, 1715int i40e_vc_process_vf_msg(struct i40e_pf *pf, u16 vf_id, u32 v_opcode,
1716 u32 v_retval, u8 *msg, u16 msglen) 1716 u32 v_retval, u8 *msg, u16 msglen)
@@ -1728,7 +1728,7 @@ int i40e_vc_process_vf_msg(struct i40e_pf *pf, u16 vf_id, u32 v_opcode,
1728 ret = i40e_vc_validate_vf_msg(vf, v_opcode, v_retval, msg, msglen); 1728 ret = i40e_vc_validate_vf_msg(vf, v_opcode, v_retval, msg, msglen);
1729 1729
1730 if (ret) { 1730 if (ret) {
1731 dev_err(&pf->pdev->dev, "Invalid message from vf %d, opcode %d, len %d\n", 1731 dev_err(&pf->pdev->dev, "Invalid message from VF %d, opcode %d, len %d\n",
1732 local_vf_id, v_opcode, msglen); 1732 local_vf_id, v_opcode, msglen);
1733 return ret; 1733 return ret;
1734 } 1734 }
@@ -1776,7 +1776,7 @@ int i40e_vc_process_vf_msg(struct i40e_pf *pf, u16 vf_id, u32 v_opcode,
1776 break; 1776 break;
1777 case I40E_VIRTCHNL_OP_UNKNOWN: 1777 case I40E_VIRTCHNL_OP_UNKNOWN:
1778 default: 1778 default:
1779 dev_err(&pf->pdev->dev, "Unsupported opcode %d from vf %d\n", 1779 dev_err(&pf->pdev->dev, "Unsupported opcode %d from VF %d\n",
1780 v_opcode, local_vf_id); 1780 v_opcode, local_vf_id);
1781 ret = i40e_vc_send_resp_to_vf(vf, v_opcode, 1781 ret = i40e_vc_send_resp_to_vf(vf, v_opcode,
1782 I40E_ERR_NOT_IMPLEMENTED); 1782 I40E_ERR_NOT_IMPLEMENTED);
@@ -1788,10 +1788,10 @@ int i40e_vc_process_vf_msg(struct i40e_pf *pf, u16 vf_id, u32 v_opcode,
1788 1788
1789/** 1789/**
1790 * i40e_vc_process_vflr_event 1790 * i40e_vc_process_vflr_event
1791 * @pf: pointer to the pf structure 1791 * @pf: pointer to the PF structure
1792 * 1792 *
1793 * called from the vlfr irq handler to 1793 * called from the vlfr irq handler to
1794 * free up vf resources and state variables 1794 * free up VF resources and state variables
1795 **/ 1795 **/
1796int i40e_vc_process_vflr_event(struct i40e_pf *pf) 1796int i40e_vc_process_vflr_event(struct i40e_pf *pf)
1797{ 1797{
@@ -1812,7 +1812,7 @@ int i40e_vc_process_vflr_event(struct i40e_pf *pf)
1812 for (vf_id = 0; vf_id < pf->num_alloc_vfs; vf_id++) { 1812 for (vf_id = 0; vf_id < pf->num_alloc_vfs; vf_id++) {
1813 reg_idx = (hw->func_caps.vf_base_id + vf_id) / 32; 1813 reg_idx = (hw->func_caps.vf_base_id + vf_id) / 32;
1814 bit_idx = (hw->func_caps.vf_base_id + vf_id) % 32; 1814 bit_idx = (hw->func_caps.vf_base_id + vf_id) % 32;
1815 /* read GLGEN_VFLRSTAT register to find out the flr vfs */ 1815 /* read GLGEN_VFLRSTAT register to find out the flr VFs */
1816 vf = &pf->vf[vf_id]; 1816 vf = &pf->vf[vf_id];
1817 reg = rd32(hw, I40E_GLGEN_VFLRSTAT(reg_idx)); 1817 reg = rd32(hw, I40E_GLGEN_VFLRSTAT(reg_idx));
1818 if (reg & (1 << bit_idx)) { 1818 if (reg & (1 << bit_idx)) {
@@ -1829,7 +1829,7 @@ int i40e_vc_process_vflr_event(struct i40e_pf *pf)
1829 1829
1830/** 1830/**
1831 * i40e_vc_vf_broadcast 1831 * i40e_vc_vf_broadcast
1832 * @pf: pointer to the pf structure 1832 * @pf: pointer to the PF structure
1833 * @opcode: operation code 1833 * @opcode: operation code
1834 * @retval: return value 1834 * @retval: return value
1835 * @msg: pointer to the msg buffer 1835 * @msg: pointer to the msg buffer
@@ -1848,7 +1848,7 @@ static void i40e_vc_vf_broadcast(struct i40e_pf *pf,
1848 1848
1849 for (i = 0; i < pf->num_alloc_vfs; i++, vf++) { 1849 for (i = 0; i < pf->num_alloc_vfs; i++, vf++) {
1850 int abs_vf_id = vf->vf_id + hw->func_caps.vf_base_id; 1850 int abs_vf_id = vf->vf_id + hw->func_caps.vf_base_id;
1851 /* Not all vfs are enabled so skip the ones that are not */ 1851 /* Not all VFs are enabled so skip the ones that are not */
1852 if (!test_bit(I40E_VF_STAT_INIT, &vf->vf_states) && 1852 if (!test_bit(I40E_VF_STAT_INIT, &vf->vf_states) &&
1853 !test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states)) 1853 !test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states))
1854 continue; 1854 continue;
@@ -1863,7 +1863,7 @@ static void i40e_vc_vf_broadcast(struct i40e_pf *pf,
1863 1863
1864/** 1864/**
1865 * i40e_vc_notify_link_state 1865 * i40e_vc_notify_link_state
1866 * @pf: pointer to the pf structure 1866 * @pf: pointer to the PF structure
1867 * 1867 *
1868 * send a link status message to all VFs on a given PF 1868 * send a link status message to all VFs on a given PF
1869 **/ 1869 **/
@@ -1896,7 +1896,7 @@ void i40e_vc_notify_link_state(struct i40e_pf *pf)
1896 1896
1897/** 1897/**
1898 * i40e_vc_notify_reset 1898 * i40e_vc_notify_reset
1899 * @pf: pointer to the pf structure 1899 * @pf: pointer to the PF structure
1900 * 1900 *
1901 * indicate a pending reset to all VFs on a given PF 1901 * indicate a pending reset to all VFs on a given PF
1902 **/ 1902 **/
@@ -1912,7 +1912,7 @@ void i40e_vc_notify_reset(struct i40e_pf *pf)
1912 1912
1913/** 1913/**
1914 * i40e_vc_notify_vf_reset 1914 * i40e_vc_notify_vf_reset
1915 * @vf: pointer to the vf structure 1915 * @vf: pointer to the VF structure
1916 * 1916 *
1917 * indicate a pending reset to the given VF 1917 * indicate a pending reset to the given VF
1918 **/ 1918 **/
@@ -1942,10 +1942,10 @@ void i40e_vc_notify_vf_reset(struct i40e_vf *vf)
1942/** 1942/**
1943 * i40e_ndo_set_vf_mac 1943 * i40e_ndo_set_vf_mac
1944 * @netdev: network interface device structure 1944 * @netdev: network interface device structure
1945 * @vf_id: vf identifier 1945 * @vf_id: VF identifier
1946 * @mac: mac address 1946 * @mac: mac address
1947 * 1947 *
1948 * program vf mac address 1948 * program VF mac address
1949 **/ 1949 **/
1950int i40e_ndo_set_vf_mac(struct net_device *netdev, int vf_id, u8 *mac) 1950int i40e_ndo_set_vf_mac(struct net_device *netdev, int vf_id, u8 *mac)
1951{ 1951{
@@ -2010,11 +2010,11 @@ error_param:
2010/** 2010/**
2011 * i40e_ndo_set_vf_port_vlan 2011 * i40e_ndo_set_vf_port_vlan
2012 * @netdev: network interface device structure 2012 * @netdev: network interface device structure
2013 * @vf_id: vf identifier 2013 * @vf_id: VF identifier
2014 * @vlan_id: mac address 2014 * @vlan_id: mac address
2015 * @qos: priority setting 2015 * @qos: priority setting
2016 * 2016 *
2017 * program vf vlan id and/or qos 2017 * program VF vlan id and/or qos
2018 **/ 2018 **/
2019int i40e_ndo_set_vf_port_vlan(struct net_device *netdev, 2019int i40e_ndo_set_vf_port_vlan(struct net_device *netdev,
2020 int vf_id, u16 vlan_id, u8 qos) 2020 int vf_id, u16 vlan_id, u8 qos)
@@ -2123,10 +2123,10 @@ error_pvid:
2123/** 2123/**
2124 * i40e_ndo_set_vf_bw 2124 * i40e_ndo_set_vf_bw
2125 * @netdev: network interface device structure 2125 * @netdev: network interface device structure
2126 * @vf_id: vf identifier 2126 * @vf_id: VF identifier
2127 * @tx_rate: tx rate 2127 * @tx_rate: Tx rate
2128 * 2128 *
2129 * configure vf tx rate 2129 * configure VF Tx rate
2130 **/ 2130 **/
2131int i40e_ndo_set_vf_bw(struct net_device *netdev, int vf_id, int min_tx_rate, 2131int i40e_ndo_set_vf_bw(struct net_device *netdev, int vf_id, int min_tx_rate,
2132 int max_tx_rate) 2132 int max_tx_rate)
@@ -2146,7 +2146,7 @@ int i40e_ndo_set_vf_bw(struct net_device *netdev, int vf_id, int min_tx_rate,
2146 } 2146 }
2147 2147
2148 if (min_tx_rate) { 2148 if (min_tx_rate) {
2149 dev_err(&pf->pdev->dev, "Invalid min tx rate (%d) (greater than 0) specified for vf %d.\n", 2149 dev_err(&pf->pdev->dev, "Invalid min tx rate (%d) (greater than 0) specified for VF %d.\n",
2150 min_tx_rate, vf_id); 2150 min_tx_rate, vf_id);
2151 return -EINVAL; 2151 return -EINVAL;
2152 } 2152 }
@@ -2174,7 +2174,7 @@ int i40e_ndo_set_vf_bw(struct net_device *netdev, int vf_id, int min_tx_rate,
2174 } 2174 }
2175 2175
2176 if (max_tx_rate > speed) { 2176 if (max_tx_rate > speed) {
2177 dev_err(&pf->pdev->dev, "Invalid max tx rate %d specified for vf %d.", 2177 dev_err(&pf->pdev->dev, "Invalid max tx rate %d specified for VF %d.",
2178 max_tx_rate, vf->vf_id); 2178 max_tx_rate, vf->vf_id);
2179 ret = -EINVAL; 2179 ret = -EINVAL;
2180 goto error; 2180 goto error;
@@ -2203,10 +2203,10 @@ error:
2203/** 2203/**
2204 * i40e_ndo_get_vf_config 2204 * i40e_ndo_get_vf_config
2205 * @netdev: network interface device structure 2205 * @netdev: network interface device structure
2206 * @vf_id: vf identifier 2206 * @vf_id: VF identifier
2207 * @ivi: vf configuration structure 2207 * @ivi: VF configuration structure
2208 * 2208 *
2209 * return vf configuration 2209 * return VF configuration
2210 **/ 2210 **/
2211int i40e_ndo_get_vf_config(struct net_device *netdev, 2211int i40e_ndo_get_vf_config(struct net_device *netdev,
2212 int vf_id, struct ifla_vf_info *ivi) 2212 int vf_id, struct ifla_vf_info *ivi)
@@ -2258,7 +2258,7 @@ error_param:
2258/** 2258/**
2259 * i40e_ndo_set_vf_link_state 2259 * i40e_ndo_set_vf_link_state
2260 * @netdev: network interface device structure 2260 * @netdev: network interface device structure
2261 * @vf_id: vf identifier 2261 * @vf_id: VF identifier
2262 * @link: required link state 2262 * @link: required link state
2263 * 2263 *
2264 * Set the link state of a specified VF, regardless of physical link state 2264 * Set the link state of a specified VF, regardless of physical link state
@@ -2321,7 +2321,7 @@ error_out:
2321/** 2321/**
2322 * i40e_ndo_set_vf_spoofchk 2322 * i40e_ndo_set_vf_spoofchk
2323 * @netdev: network interface device structure 2323 * @netdev: network interface device structure
2324 * @vf_id: vf identifier 2324 * @vf_id: VF identifier
2325 * @enable: flag to enable or disable feature 2325 * @enable: flag to enable or disable feature
2326 * 2326 *
2327 * Enable or disable VF spoof checking 2327 * Enable or disable VF spoof checking
diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h
index 21db113a64fa..9c3a41040835 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h
@@ -71,12 +71,12 @@ enum i40e_vf_capabilities {
71struct i40e_vf { 71struct i40e_vf {
72 struct i40e_pf *pf; 72 struct i40e_pf *pf;
73 73
74 /* vf id in the pf space */ 74 /* VF id in the PF space */
75 u16 vf_id; 75 u16 vf_id;
76 /* all vf vsis connect to the same parent */ 76 /* all VF vsis connect to the same parent */
77 enum i40e_switch_element_types parent_type; 77 enum i40e_switch_element_types parent_type;
78 78
79 /* vf Port Extender (PE) stag if used */ 79 /* VF Port Extender (PE) stag if used */
80 u16 stag; 80 u16 stag;
81 81
82 struct i40e_virtchnl_ether_addr default_lan_addr; 82 struct i40e_virtchnl_ether_addr default_lan_addr;
@@ -91,7 +91,7 @@ struct i40e_vf {
91 u8 lan_vsi_index; /* index into PF struct */ 91 u8 lan_vsi_index; /* index into PF struct */
92 u8 lan_vsi_id; /* ID as used by firmware */ 92 u8 lan_vsi_id; /* ID as used by firmware */
93 93
94 u8 num_queue_pairs; /* num of qps assigned to vf vsis */ 94 u8 num_queue_pairs; /* num of qps assigned to VF vsis */
95 u64 num_mdd_events; /* num of mdd events detected */ 95 u64 num_mdd_events; /* num of mdd events detected */
96 u64 num_invalid_msgs; /* num of malformed or invalid msgs detected */ 96 u64 num_invalid_msgs; /* num of malformed or invalid msgs detected */
97 u64 num_valid_msgs; /* num of valid msgs detected */ 97 u64 num_valid_msgs; /* num of valid msgs detected */
@@ -100,7 +100,7 @@ struct i40e_vf {
100 unsigned long vf_states; /* vf's runtime states */ 100 unsigned long vf_states; /* vf's runtime states */
101 unsigned int tx_rate; /* Tx bandwidth limit in Mbps */ 101 unsigned int tx_rate; /* Tx bandwidth limit in Mbps */
102 bool link_forced; 102 bool link_forced;
103 bool link_up; /* only valid if vf link is forced */ 103 bool link_up; /* only valid if VF link is forced */
104 bool spoofchk; 104 bool spoofchk;
105}; 105};
106 106
@@ -113,7 +113,7 @@ int i40e_vc_process_vflr_event(struct i40e_pf *pf);
113void i40e_reset_vf(struct i40e_vf *vf, bool flr); 113void i40e_reset_vf(struct i40e_vf *vf, bool flr);
114void i40e_vc_notify_vf_reset(struct i40e_vf *vf); 114void i40e_vc_notify_vf_reset(struct i40e_vf *vf);
115 115
116/* vf configuration related iplink handlers */ 116/* VF configuration related iplink handlers */
117int i40e_ndo_set_vf_mac(struct net_device *netdev, int vf_id, u8 *mac); 117int i40e_ndo_set_vf_mac(struct net_device *netdev, int vf_id, u8 *mac);
118int i40e_ndo_set_vf_port_vlan(struct net_device *netdev, 118int i40e_ndo_set_vf_port_vlan(struct net_device *netdev,
119 int vf_id, u16 vlan_id, u8 qos); 119 int vf_id, u16 vlan_id, u8 qos);
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
index d9f3db542c5f..f41da5d8047b 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
@@ -371,6 +371,7 @@ static bool i40e_clean_tx_irq(struct i40e_ring *tx_ring, int budget)
371static void i40e_force_wb(struct i40e_vsi *vsi, struct i40e_q_vector *q_vector) 371static void i40e_force_wb(struct i40e_vsi *vsi, struct i40e_q_vector *q_vector)
372{ 372{
373 u32 val = I40E_VFINT_DYN_CTLN_INTENA_MASK | 373 u32 val = I40E_VFINT_DYN_CTLN_INTENA_MASK |
374 I40E_VFINT_DYN_CTLN1_ITR_INDX_MASK | /* set noitr */
374 I40E_VFINT_DYN_CTLN_SWINT_TRIG_MASK | 375 I40E_VFINT_DYN_CTLN_SWINT_TRIG_MASK |
375 I40E_VFINT_DYN_CTLN_SW_ITR_INDX_ENA_MASK; 376 I40E_VFINT_DYN_CTLN_SW_ITR_INDX_ENA_MASK;
376 /* allow 00 to be written to the index */ 377 /* allow 00 to be written to the index */
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index f44911df286a..812b1200f35c 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -36,7 +36,7 @@ char i40evf_driver_name[] = "i40evf";
36static const char i40evf_driver_string[] = 36static const char i40evf_driver_string[] =
37 "Intel(R) XL710/X710 Virtual Function Network Driver"; 37 "Intel(R) XL710/X710 Virtual Function Network Driver";
38 38
39#define DRV_VERSION "1.2.6" 39#define DRV_VERSION "1.2.25"
40const char i40evf_driver_version[] = DRV_VERSION; 40const char i40evf_driver_version[] = DRV_VERSION;
41static const char i40evf_copyright[] = 41static const char i40evf_copyright[] =
42 "Copyright (c) 2013 - 2014 Intel Corporation."; 42 "Copyright (c) 2013 - 2014 Intel Corporation.";
@@ -244,6 +244,7 @@ void i40evf_irq_enable_queues(struct i40evf_adapter *adapter, u32 mask)
244 if (mask & (1 << (i - 1))) { 244 if (mask & (1 << (i - 1))) {
245 wr32(hw, I40E_VFINT_DYN_CTLN1(i - 1), 245 wr32(hw, I40E_VFINT_DYN_CTLN1(i - 1),
246 I40E_VFINT_DYN_CTLN1_INTENA_MASK | 246 I40E_VFINT_DYN_CTLN1_INTENA_MASK |
247 I40E_VFINT_DYN_CTLN1_ITR_INDX_MASK |
247 I40E_VFINT_DYN_CTLN_CLEARPBA_MASK); 248 I40E_VFINT_DYN_CTLN_CLEARPBA_MASK);
248 } 249 }
249 } 250 }
@@ -263,6 +264,7 @@ static void i40evf_fire_sw_int(struct i40evf_adapter *adapter, u32 mask)
263 if (mask & 1) { 264 if (mask & 1) {
264 dyn_ctl = rd32(hw, I40E_VFINT_DYN_CTL01); 265 dyn_ctl = rd32(hw, I40E_VFINT_DYN_CTL01);
265 dyn_ctl |= I40E_VFINT_DYN_CTLN_SWINT_TRIG_MASK | 266 dyn_ctl |= I40E_VFINT_DYN_CTLN_SWINT_TRIG_MASK |
267 I40E_VFINT_DYN_CTLN1_ITR_INDX_MASK |
266 I40E_VFINT_DYN_CTLN_CLEARPBA_MASK; 268 I40E_VFINT_DYN_CTLN_CLEARPBA_MASK;
267 wr32(hw, I40E_VFINT_DYN_CTL01, dyn_ctl); 269 wr32(hw, I40E_VFINT_DYN_CTL01, dyn_ctl);
268 } 270 }
@@ -270,6 +272,7 @@ static void i40evf_fire_sw_int(struct i40evf_adapter *adapter, u32 mask)
270 if (mask & (1 << i)) { 272 if (mask & (1 << i)) {
271 dyn_ctl = rd32(hw, I40E_VFINT_DYN_CTLN1(i - 1)); 273 dyn_ctl = rd32(hw, I40E_VFINT_DYN_CTLN1(i - 1));
272 dyn_ctl |= I40E_VFINT_DYN_CTLN_SWINT_TRIG_MASK | 274 dyn_ctl |= I40E_VFINT_DYN_CTLN_SWINT_TRIG_MASK |
275 I40E_VFINT_DYN_CTLN1_ITR_INDX_MASK |
273 I40E_VFINT_DYN_CTLN_CLEARPBA_MASK; 276 I40E_VFINT_DYN_CTLN_CLEARPBA_MASK;
274 wr32(hw, I40E_VFINT_DYN_CTLN1(i - 1), dyn_ctl); 277 wr32(hw, I40E_VFINT_DYN_CTLN1(i - 1), dyn_ctl);
275 } 278 }
@@ -1578,13 +1581,14 @@ continue_reset:
1578 adapter->flags &= ~I40EVF_FLAG_RESET_PENDING; 1581 adapter->flags &= ~I40EVF_FLAG_RESET_PENDING;
1579 1582
1580 i40evf_irq_disable(adapter); 1583 i40evf_irq_disable(adapter);
1581 i40evf_napi_disable_all(adapter);
1582
1583 netif_tx_disable(netdev);
1584 1584
1585 netif_tx_stop_all_queues(netdev); 1585 if (netif_running(adapter->netdev)) {
1586 i40evf_napi_disable_all(adapter);
1587 netif_tx_disable(netdev);
1588 netif_tx_stop_all_queues(netdev);
1589 netif_carrier_off(netdev);
1590 }
1586 1591
1587 netif_carrier_off(netdev);
1588 adapter->state = __I40EVF_RESETTING; 1592 adapter->state = __I40EVF_RESETTING;
1589 1593
1590 /* kill and reinit the admin queue */ 1594 /* kill and reinit the admin queue */