i40e: write HENA for VFs
authorMitch Williams <mitch.a.williams@intel.com>
Mon, 16 May 2016 17:26:33 +0000 (10:26 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Mon, 27 Jun 2016 22:19:40 +0000 (15:19 -0700)
Now that VF RSS is configured by the PF driver, it needs to set the RSS
Hash Enable registers by default. Without this, no packets will be
hashed and they'll all end up on queue 0.

Change-ID: I38e425f40ddb81e3b19a951cfbb939fa5b1123f1
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c

index 1fcafcf..6fcbf76 100644 (file)
@@ -665,6 +665,8 @@ static int i40e_alloc_vsi_res(struct i40e_vf *vf, enum i40e_vsi_type type)
                goto error_alloc_vsi_res;
        }
        if (type == I40E_VSI_SRIOV) {
+               u64 hena = i40e_pf_get_default_rss_hena(pf);
+
                vf->lan_vsi_idx = vsi->idx;
                vf->lan_vsi_id = vsi->id;
                /* If the port VLAN has been configured and then the
@@ -687,6 +689,10 @@ static int i40e_alloc_vsi_res(struct i40e_vf *vf, enum i40e_vsi_type type)
                                        vf->default_lan_addr.addr, vf->vf_id);
                }
                spin_unlock_bh(&vsi->mac_filter_list_lock);
+               i40e_write_rx_ctl(&pf->hw, I40E_VFQF_HENA1(0, vf->vf_id),
+                                 (u32)hena);
+               i40e_write_rx_ctl(&pf->hw, I40E_VFQF_HENA1(1, vf->vf_id),
+                                 (u32)(hena >> 32));
        }
 
        /* program mac filter */