aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZijie Pan <zijie.pan@6wind.com>2017-11-07 15:06:07 -0500
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2017-11-22 02:32:21 -0500
commit34c164de5867659f9162ae4fc9030b940bd40aaa (patch)
tree047c5491fd77ab015b69039b48d2f1be1cfb3f58
parent3d72aebfc61b025a2478c9d2bbc3c8c4036a1c05 (diff)
i40e: fix the calculation of VFs mac addresses
num_mac should be increased only after the call to i40e_add_mac_filter(). Fixes: 5f527ba962e2 ("i40e: Limit the number of MAC and VLAN addresses that can be added for VFs") Signed-off-by: Zijie Pan <zijie.pan@6wind.com> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Reviewed-by: Tushar Dave <tushar.n.dave@oracle.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index f8a794b72462..a3dc9b932946 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -2218,18 +2218,19 @@ static int i40e_vc_add_mac_addr_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
2218 struct i40e_mac_filter *f; 2218 struct i40e_mac_filter *f;
2219 2219
2220 f = i40e_find_mac(vsi, al->list[i].addr); 2220 f = i40e_find_mac(vsi, al->list[i].addr);
2221 if (!f) 2221 if (!f) {
2222 f = i40e_add_mac_filter(vsi, al->list[i].addr); 2222 f = i40e_add_mac_filter(vsi, al->list[i].addr);
2223 2223
2224 if (!f) { 2224 if (!f) {
2225 dev_err(&pf->pdev->dev, 2225 dev_err(&pf->pdev->dev,
2226 "Unable to add MAC filter %pM for VF %d\n", 2226 "Unable to add MAC filter %pM for VF %d\n",
2227 al->list[i].addr, vf->vf_id); 2227 al->list[i].addr, vf->vf_id);
2228 ret = I40E_ERR_PARAM; 2228 ret = I40E_ERR_PARAM;
2229 spin_unlock_bh(&vsi->mac_filter_hash_lock); 2229 spin_unlock_bh(&vsi->mac_filter_hash_lock);
2230 goto error_param; 2230 goto error_param;
2231 } else { 2231 } else {
2232 vf->num_mac++; 2232 vf->num_mac++;
2233 }
2233 } 2234 }
2234 } 2235 }
2235 spin_unlock_bh(&vsi->mac_filter_hash_lock); 2236 spin_unlock_bh(&vsi->mac_filter_hash_lock);