Merge branch '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next...
authorDavid S. Miller <davem@davemloft.net>
Mon, 25 Jul 2016 17:43:07 +0000 (10:43 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 25 Jul 2016 17:43:07 +0000 (10:43 -0700)
Conflicts:
drivers/net/ethernet/intel/i40e/i40e_main.c

Jeff Kirsher says:

====================
40GbE Intel Wired LAN Driver Updates 2016-07-22

This series contains updates to i40e and i40evf.

Heinrich Schuchardt found a possible null pointer being dereferenced in
i40e_debug_aq(), fixed the issue by doing the variable assignment after
we are sure the pointer is not null.

Avinash fixed an issue when link was down, we were not showing the
correct advertised link modes.

Mitch cleans up a useless initializer since the variable is assigned
right away.  Refactors the receive filter handling to properly track
filter adds and deletes so the driver will not lose filters during a
reset and up/down cycles.  Also added a tracking mechanism so that the
driver knows when to enter and leave promiscuous mode.

Catherine removes a device id which is not needed (or used).  Moves
a mutex lock since we need to lock the client list around the
i40e_client_release() call to prevent the release from interrupting
the client instances while they are being added.

Joshua adds Hyper-V specific VF device ids.

Amitoj Kaur Chawla cleans up a redundant memset() call before a memcpy().

Stefan Assmann adds the missing link advertise for some x710 NICs.

Tushar Dave fixes and issue found on SPARC, where a PF reset clears MAC
filters and if a platform-specific MAC address is used, the driver has
to explicitly write default MAC address to MAC filters otherwise all
incoming traffic destined to the default MAC address will be dropped
after reset.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
1  2 
drivers/net/ethernet/intel/i40e/i40e_main.c
drivers/net/ethernet/intel/i40e/i40e_txrx.c
drivers/net/ethernet/intel/i40evf/i40e_txrx.c

index 7e00cbd5ba133320e6fa769491ee00d5b5cfbe70,1ee45cfef272ee77ca3395cda04f189e07c6e382..339d99be4702599e0906ec1d4468d248216a575d
@@@ -9187,9 -9206,6 +9219,7 @@@ int i40e_is_vsi_uplink_mode_veb(struct 
  static int i40e_add_vsi(struct i40e_vsi *vsi)
  {
        int ret = -ENODEV;
-       u8 laa_macaddr[ETH_ALEN];
-       bool found_laa_mac_filter = false;
 +      i40e_status aq_ret = 0;
        struct i40e_pf *pf = vsi->back;
        struct i40e_hw *hw = &pf->hw;
        struct i40e_vsi_context ctxt;
                vsi->seid = ctxt.seid;
                vsi->id = ctxt.vsi_number;
        }
 +      /* Except FDIR VSI, for all othet VSI set the broadcast filter */
 +      if (vsi->type != I40E_VSI_FDIR) {
 +              aq_ret = i40e_aq_set_vsi_broadcast(hw, vsi->seid, true, NULL);
 +              if (aq_ret) {
 +                      ret = i40e_aq_rc_to_posix(aq_ret,
 +                                                hw->aq.asq_last_status);
 +                      dev_info(&pf->pdev->dev,
 +                               "set brdcast promisc failed, err %s, aq_err %s\n",
 +                               i40e_stat_str(hw, aq_ret),
 +                               i40e_aq_str(hw, hw->aq.asq_last_status));
 +              }
 +      }
  
+       vsi->active_filters = 0;
+       clear_bit(__I40E_FILTER_OVERFLOW_PROMISC, &vsi->state);
        spin_lock_bh(&vsi->mac_filter_list_lock);
        /* If macvlan filters already exist, force them to get loaded */
        list_for_each_entry_safe(f, ftmp, &vsi->mac_filter_list, list) {