mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-06 14:31:46 +00:00
i40e: Change the default for VFs to be not privileged
Make sure a VF is not trusted/privileged until its explicitly set for trust through the new NDO op interface. Change-Id: I476385c290d2b4901d8fceb29de43546accdc499 Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
3cfef19521
commit
692fb0a75e
1 changed files with 10 additions and 10 deletions
|
@ -860,7 +860,11 @@ static int i40e_alloc_vf_res(struct i40e_vf *vf)
|
||||||
if (ret)
|
if (ret)
|
||||||
goto error_alloc;
|
goto error_alloc;
|
||||||
total_queue_pairs += pf->vsi[vf->lan_vsi_idx]->alloc_queue_pairs;
|
total_queue_pairs += pf->vsi[vf->lan_vsi_idx]->alloc_queue_pairs;
|
||||||
|
|
||||||
|
if (vf->trusted)
|
||||||
set_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps);
|
set_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps);
|
||||||
|
else
|
||||||
|
clear_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps);
|
||||||
|
|
||||||
/* store the total qps number for the runtime
|
/* store the total qps number for the runtime
|
||||||
* VF req validation
|
* VF req validation
|
||||||
|
@ -1847,15 +1851,17 @@ static inline int i40e_check_vf_permission(struct i40e_vf *vf, u8 *macaddr)
|
||||||
dev_err(&pf->pdev->dev, "invalid VF MAC addr %pM\n", macaddr);
|
dev_err(&pf->pdev->dev, "invalid VF MAC addr %pM\n", macaddr);
|
||||||
ret = I40E_ERR_INVALID_MAC_ADDR;
|
ret = I40E_ERR_INVALID_MAC_ADDR;
|
||||||
} else if (vf->pf_set_mac && !is_multicast_ether_addr(macaddr) &&
|
} else if (vf->pf_set_mac && !is_multicast_ether_addr(macaddr) &&
|
||||||
|
!test_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps) &&
|
||||||
!ether_addr_equal(macaddr, vf->default_lan_addr.addr)) {
|
!ether_addr_equal(macaddr, vf->default_lan_addr.addr)) {
|
||||||
/* If the host VMM administrator has set the VF MAC address
|
/* If the host VMM administrator has set the VF MAC address
|
||||||
* administratively via the ndo_set_vf_mac command then deny
|
* administratively via the ndo_set_vf_mac command then deny
|
||||||
* permission to the VF to add or delete unicast MAC addresses.
|
* permission to the VF to add or delete unicast MAC addresses.
|
||||||
|
* Unless the VF is privileged and then it can do whatever.
|
||||||
* The VF may request to set the MAC address filter already
|
* The VF may request to set the MAC address filter already
|
||||||
* assigned to it so do not return an error in that case.
|
* assigned to it so do not return an error in that case.
|
||||||
*/
|
*/
|
||||||
dev_err(&pf->pdev->dev,
|
dev_err(&pf->pdev->dev,
|
||||||
"VF attempting to override administratively set MAC address\nPlease reload the VF driver to resume normal operation\n");
|
"VF attempting to override administratively set MAC address, reload the VF driver to resume normal operation\n");
|
||||||
ret = -EPERM;
|
ret = -EPERM;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1880,7 +1886,6 @@ static int i40e_vc_add_mac_addr_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states) ||
|
if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states) ||
|
||||||
!test_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps) ||
|
|
||||||
!i40e_vc_isvalid_vsi_id(vf, vsi_id)) {
|
!i40e_vc_isvalid_vsi_id(vf, vsi_id)) {
|
||||||
ret = I40E_ERR_PARAM;
|
ret = I40E_ERR_PARAM;
|
||||||
goto error_param;
|
goto error_param;
|
||||||
|
@ -1954,7 +1959,6 @@ static int i40e_vc_del_mac_addr_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states) ||
|
if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states) ||
|
||||||
!test_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps) ||
|
|
||||||
!i40e_vc_isvalid_vsi_id(vf, vsi_id)) {
|
!i40e_vc_isvalid_vsi_id(vf, vsi_id)) {
|
||||||
ret = I40E_ERR_PARAM;
|
ret = I40E_ERR_PARAM;
|
||||||
goto error_param;
|
goto error_param;
|
||||||
|
@ -2207,7 +2211,6 @@ static int i40e_vc_config_rss_key(struct i40e_vf *vf, u8 *msg, u16 msglen)
|
||||||
i40e_status aq_ret = 0;
|
i40e_status aq_ret = 0;
|
||||||
|
|
||||||
if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states) ||
|
if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states) ||
|
||||||
!test_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps) ||
|
|
||||||
!i40e_vc_isvalid_vsi_id(vf, vsi_id) ||
|
!i40e_vc_isvalid_vsi_id(vf, vsi_id) ||
|
||||||
(vrk->key_len != I40E_HKEY_ARRAY_SIZE)) {
|
(vrk->key_len != I40E_HKEY_ARRAY_SIZE)) {
|
||||||
aq_ret = I40E_ERR_PARAM;
|
aq_ret = I40E_ERR_PARAM;
|
||||||
|
@ -2240,7 +2243,6 @@ static int i40e_vc_config_rss_lut(struct i40e_vf *vf, u8 *msg, u16 msglen)
|
||||||
i40e_status aq_ret = 0;
|
i40e_status aq_ret = 0;
|
||||||
|
|
||||||
if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states) ||
|
if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states) ||
|
||||||
!test_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps) ||
|
|
||||||
!i40e_vc_isvalid_vsi_id(vf, vsi_id) ||
|
!i40e_vc_isvalid_vsi_id(vf, vsi_id) ||
|
||||||
(vrl->lut_entries != I40E_VF_HLUT_ARRAY_SIZE)) {
|
(vrl->lut_entries != I40E_VF_HLUT_ARRAY_SIZE)) {
|
||||||
aq_ret = I40E_ERR_PARAM;
|
aq_ret = I40E_ERR_PARAM;
|
||||||
|
@ -2270,8 +2272,7 @@ static int i40e_vc_get_rss_hena(struct i40e_vf *vf, u8 *msg, u16 msglen)
|
||||||
i40e_status aq_ret = 0;
|
i40e_status aq_ret = 0;
|
||||||
int len = 0;
|
int len = 0;
|
||||||
|
|
||||||
if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states) ||
|
if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states)) {
|
||||||
!test_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps)) {
|
|
||||||
aq_ret = I40E_ERR_PARAM;
|
aq_ret = I40E_ERR_PARAM;
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
@ -2307,8 +2308,7 @@ static int i40e_vc_set_rss_hena(struct i40e_vf *vf, u8 *msg, u16 msglen)
|
||||||
struct i40e_hw *hw = &pf->hw;
|
struct i40e_hw *hw = &pf->hw;
|
||||||
i40e_status aq_ret = 0;
|
i40e_status aq_ret = 0;
|
||||||
|
|
||||||
if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states) ||
|
if (!test_bit(I40E_VF_STAT_ACTIVE, &vf->vf_states)) {
|
||||||
!test_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps)) {
|
|
||||||
aq_ret = I40E_ERR_PARAM;
|
aq_ret = I40E_ERR_PARAM;
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue