mirror of
https://github.com/torvalds/linux.git
synced 2024-11-05 11:32:04 +00:00
i40e: Do not accept tagged packets by default
Remove the filter created by the firmware with the default MAC address it reads out of the NVM storage and a promiscuous VLAN tag and replace it with a filter that will not accept tagged packets by default. The system must request a VLAN tag packet filter to get packets with that tag. Change-ID: I119e6c3603a039bd68282ba31bf26f33a575490a Signed-off-by: Greg Rose <gregory.v.rose@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
4d9b604353
commit
8c27d42ec6
@ -1153,6 +1153,30 @@ struct i40e_mac_filter *i40e_put_mac_in_vlan(struct i40e_vsi *vsi, u8 *macaddr,
|
||||
struct i40e_mac_filter, list);
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_rm_default_mac_filter - Remove the default MAC filter set by NVM
|
||||
* @vsi: the PF Main VSI - inappropriate for any other VSI
|
||||
* @macaddr: the MAC address
|
||||
**/
|
||||
static void i40e_rm_default_mac_filter(struct i40e_vsi *vsi, u8 *macaddr)
|
||||
{
|
||||
struct i40e_aqc_remove_macvlan_element_data element;
|
||||
struct i40e_pf *pf = vsi->back;
|
||||
i40e_status aq_ret;
|
||||
|
||||
/* Only appropriate for the PF main VSI */
|
||||
if (vsi->type != I40E_VSI_MAIN)
|
||||
return;
|
||||
|
||||
ether_addr_copy(element.mac_addr, macaddr);
|
||||
element.vlan_tag = 0;
|
||||
element.flags = I40E_AQC_MACVLAN_DEL_PERFECT_MATCH |
|
||||
I40E_AQC_MACVLAN_DEL_IGNORE_VLAN;
|
||||
aq_ret = i40e_aq_remove_macvlan(&pf->hw, vsi->seid, &element, 1, NULL);
|
||||
if (aq_ret)
|
||||
dev_err(&pf->pdev->dev, "Could not remove default MAC-VLAN\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* i40e_add_filter - Add a mac/vlan filter to the VSI
|
||||
* @vsi: the VSI to be searched
|
||||
@ -6980,6 +7004,14 @@ static int i40e_config_netdev(struct i40e_vsi *vsi)
|
||||
if (vsi->type == I40E_VSI_MAIN) {
|
||||
SET_NETDEV_DEV(netdev, &pf->pdev->dev);
|
||||
memcpy(mac_addr, hw->mac.perm_addr, ETH_ALEN);
|
||||
/* The following two steps are necessary to prevent reception
|
||||
* of tagged packets - by default the NVM loads a MAC-VLAN
|
||||
* filter that will accept any tagged packet. This is to
|
||||
* prevent that during normal operations until a specific
|
||||
* VLAN tag filter has been set.
|
||||
*/
|
||||
i40e_rm_default_mac_filter(vsi, mac_addr);
|
||||
i40e_add_filter(vsi, mac_addr, I40E_VLAN_ANY, false, true);
|
||||
} else {
|
||||
/* relate the VSI_VMDQ name to the VSI_MAIN name */
|
||||
snprintf(netdev->name, IFNAMSIZ, "%sv%%d",
|
||||
|
Loading…
Reference in New Issue
Block a user