From: Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org> Signed-off-by: Philippe Gerum <r...@xenomai.org> --- kernel/drivers/net/drivers/e1000e/netdev.c | 28 ++++------------------ 1 file changed, 5 insertions(+), 23 deletions(-)
diff --git a/kernel/drivers/net/drivers/e1000e/netdev.c b/kernel/drivers/net/drivers/e1000e/netdev.c index a75afa808..4042cbd1a 100644 --- a/kernel/drivers/net/drivers/e1000e/netdev.c +++ b/kernel/drivers/net/drivers/e1000e/netdev.c @@ -1756,21 +1756,6 @@ static void e1000e_vlan_strip_disable(struct e1000_adapter *adapter) ew32(CTRL, ctrl); } -/** - * e1000e_vlan_strip_enable - helper to enable HW VLAN stripping - * @adapter: board private structure to initialize - **/ -static void e1000e_vlan_strip_enable(struct e1000_adapter *adapter) -{ - struct e1000_hw *hw = &adapter->hw; - u32 ctrl; - - /* enable VLAN tag insert/strip */ - ctrl = er32(CTRL); - ctrl |= E1000_CTRL_VME; - ew32(CTRL, ctrl); -} - static void e1000_update_mng_vlan(struct e1000_adapter *adapter) { struct rtnet_device *netdev = adapter->netdev; @@ -2181,29 +2166,24 @@ static void e1000_set_multi(struct rtnet_device *netdev) /* Check for Promiscuous and All Multicast modes */ rctl = er32(RCTL); + rctl &= ~(E1000_RCTL_UPE | E1000_RCTL_MPE); if (netdev->flags & IFF_PROMISC) { rctl |= (E1000_RCTL_UPE | E1000_RCTL_MPE); - rctl &= ~E1000_RCTL_VFE; /* Do not hardware filter VLANs in promisc mode */ e1000e_vlan_filter_disable(adapter); } else { if (netdev->flags & IFF_ALLMULTI) { rctl |= E1000_RCTL_MPE; - rctl &= ~E1000_RCTL_UPE; } else { - rctl &= ~(E1000_RCTL_UPE | E1000_RCTL_MPE); + e1000_update_mc_addr_list(hw, netdev->mc_list, netdev->mc_count); } e1000e_vlan_filter_enable(adapter); + rctl |= E1000_RCTL_UPE; } ew32(RCTL, rctl); - e1000_update_mc_addr_list(hw, netdev->mc_list, netdev->mc_count); - - if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX) - e1000e_vlan_strip_enable(adapter); - else e1000e_vlan_strip_disable(adapter); } @@ -4014,6 +3994,8 @@ static int e1000_probe(struct pci_dev *pdev, netdev->mem_start = mmio_start; netdev->mem_end = mmio_start + mmio_len; + netdev->vlan_rx_add_vid = e1000_vlan_rx_add_vid; + netdev->vlan_rx_kill_vid = e1000_vlan_rx_kill_vid; adapter->bd_number = cards_found++; -- 2.17.1