Message ID | 1430161042-28494-11-git-send-email-catherine.sullivan@intel.com |
---|---|
State | Accepted |
Delegated to: | Jeff Kirsher |
Headers | show |
> -----Original Message----- > From: Intel-wired-lan [mailto:intel-wired-lan-bounces@lists.osuosl.org] On > Behalf Of Catherine Sullivan > Sent: Monday, April 27, 2015 11:57 AM > To: intel-wired-lan@lists.osuosl.org > Subject: [Intel-wired-lan] [net-next S5 10/15] i40evf: add MAC address filter > in open, not init > > From: Mitch Williams <mitch.a.williams@intel.com> > > During close, all of the MAC filters are cleared, so the driver would be unable > to receive unicast packets after being closed and reopened. > > Add the adapter's "hardware" MAC address filter in open, not init. This > ensures that the correct filter is present each time. > > Signed-off-by: Mitch Williams <mitch.a.williams@intel.com> > Change-ID: I51a11e9c1200139dab6f66a5353bd38c7d26f875 > --- > drivers/net/ethernet/intel/i40evf/i40evf_main.c | 12 +----------- > 1 file changed, 1 insertion(+), 11 deletions(-) Tested-by: Jim Young <james.m.young@intel.com>
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c index a519c05..0f6ea56f 100644 --- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c +++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c @@ -1835,6 +1835,7 @@ static int i40evf_open(struct net_device *netdev) if (err) goto err_req_irq; + i40evf_add_filter(adapter, adapter->hw.mac.addr); i40evf_configure(adapter); err = i40evf_up_complete(adapter); @@ -2015,7 +2016,6 @@ static void i40evf_init_task(struct work_struct *work) struct i40evf_adapter, init_task.work); struct net_device *netdev = adapter->netdev; - struct i40evf_mac_filter *f; struct i40e_hw *hw = &adapter->hw; struct pci_dev *pdev = adapter->pdev; int i, err, bufsz; @@ -2149,16 +2149,6 @@ static void i40evf_init_task(struct work_struct *work) ether_addr_copy(netdev->dev_addr, adapter->hw.mac.addr); ether_addr_copy(netdev->perm_addr, adapter->hw.mac.addr); - f = kzalloc(sizeof(*f), GFP_ATOMIC); - if (!f) - goto err_sw_init; - - ether_addr_copy(f->macaddr, adapter->hw.mac.addr); - f->add = true; - adapter->aq_required |= I40EVF_FLAG_AQ_ADD_MAC_FILTER; - - list_add(&f->list, &adapter->mac_filter_list); - init_timer(&adapter->watchdog_timer); adapter->watchdog_timer.function = &i40evf_watchdog_timer; adapter->watchdog_timer.data = (unsigned long)adapter;