When a VF reaches the limit introduced in this commit [1], the host reports an error in the syslog but doesn't mention which VF reached its limit and what the limit is actually is which makes troubleshooting of networking issue a bit tedious. This commit simply improves this error reporting by adding which VF number has reached a limit and what that limit is. [1] commit cfb1d572c986 ("i40e: Add ensurance of MacVlan resources for every trusted VF") Signed-off-by: David Hill --- drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c index 9b8efdeafbcf..c66c8bbc3993 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c @@ -2932,13 +2932,14 @@ static inline int i40e_check_vf_permission(struct i40e_vf *vf, ++mac2add_cnt; } + int new_count = i40e_count_filters(vsi) + mac2add_cnt; + int max_macvlan = I40E_VC_MAX_MACVLAN_PER_TRUSTED_VF(pf->num_alloc_vfs, hw->num_ports); /* If this VF is not privileged, then we can't add more than a limited * number of addresses. Check to make sure that the additions do not * push us over the limit. */ if (!test_bit(I40E_VIRTCHNL_VF_CAP_PRIVILEGE, &vf->vf_caps)) { - if ((i40e_count_filters(vsi) + mac2add_cnt) > - I40E_VC_MAX_MAC_ADDR_PER_VF) { + if ( new_count > I40E_VC_MAX_MAC_ADDR_PER_VF) { dev_err(&pf->pdev->dev, "Cannot add more MAC addresses, VF is not trusted, switch the VF to trusted to add more functionality\n"); return -EPERM; @@ -2949,11 +2950,10 @@ static inline int i40e_check_vf_permission(struct i40e_vf *vf, * all VFs. */ } else { - if ((i40e_count_filters(vsi) + mac2add_cnt) > - I40E_VC_MAX_MACVLAN_PER_TRUSTED_VF(pf->num_alloc_vfs, - hw->num_ports)) { + if (new_count > max_macvlan) { dev_err(&pf->pdev->dev, - "Cannot add more MAC addresses, trusted VF exhausted it's resources\n"); + "Cannot add more MAC addresses, trusted VF %d uses (%d/%d) MAC addresses\n", + vf->vf_id, new_count, max_macvlan); return -EPERM; } } -- 2.50.1 -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. When a VF reaches the limit introduced in this commit [1], the driver refuses to add any more MACs to the filter which changes the behavior from previous releases and might break some NFVs which sometimes add more VFs than the hardcoded limit of 18 and variable limit depending on the number of VFs created on a given PF. Disabling limit_mac_per_vf would revert to previous behavior. [1] commit cfb1d572c986 ("i40e: Add ensurance of MacVlan resources for every trusted VF") Signed-off-by: David Hill --- drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c index c66c8bbc3993..fb9eb4a80069 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c @@ -4,6 +4,10 @@ #include "i40e.h" #include "i40e_lan_hmc.h" #include "i40e_virtchnl_pf.h" +#include + +bool __read_mostly limit_mac_per_vf = 1; +module_param_named(limit_mac_per_vf, limit_mac_per_vf, bool, 0444); /*********************notification routines***********************/ @@ -2950,7 +2954,7 @@ static inline int i40e_check_vf_permission(struct i40e_vf *vf, * all VFs. */ } else { - if (new_count > max_macvlan) { + if (new_count > max_macvlan && limit_mac_per_vf) { dev_err(&pf->pdev->dev, "Cannot add more MAC addresses, trusted VF %d uses (%d/%d) MAC addresses\n", vf->vf_id, new_count, max_macvlan); -- 2.50.1 -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.