i40e: remove workaround for Open Firmware MAC address
authorJacob Keller <jacob.e.keller@intel.com>
Fri, 23 Jun 2017 08:24:47 +0000 (04:24 -0400)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 25 Aug 2017 21:46:20 +0000 (14:46 -0700)
Since commit b499ffb0a22c ("i40e: Look up MAC address in Open Firmware
or IDPROM"), we've had support for obtaining the MAC address
form Open Firmware or IDPROM.

This code relied on sending the Open Firmware address directly to the
device firmware instead of relying on our MAC/VLAN filter list. Thus,
a work around was introduced in commit b1b15df59232 ("i40e: Explicitly
write platform-specific mac address after PF reset")

We refactored the Open Firmware address enablement code in the ill-named
commit 41c4c2b50d52 ("i40e: allow look-up of MAC address from Open
Firmware or IDPROM")

Since this refactor, we no longer even set I40E_FLAG_PF_MAC. Further, we
don't need this work around, because we actually store the MAC address
as part of the MAC/VLAN filter hash. Thus, we will restore the address
correctly upon reset.

The refactor above failed to revert the workaround, so do that now.

Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e.h
drivers/net/ethernet/intel/i40e/i40e_main.c

index f07217b15ffdd8ff256159298ab7cfbcf927f813..d0c1bf5441d8450339c901226e49ea7449f816f9 100644 (file)
@@ -445,7 +445,6 @@ struct i40e_pf {
 #define I40E_FLAG_VEB_STATS_ENABLED            BIT_ULL(37)
 #define I40E_FLAG_LINK_POLLING_ENABLED         BIT_ULL(39)
 #define I40E_FLAG_VEB_MODE_ENABLED             BIT_ULL(40)
-#define I40E_FLAG_PF_MAC                       BIT_ULL(50)
 #define I40E_FLAG_TRUE_PROMISC_SUPPORT         BIT_ULL(51)
 #define I40E_FLAG_CLIENT_RESET                 BIT_ULL(54)
 #define I40E_FLAG_TEMP_LINK_POLLING            BIT_ULL(55)
index d7248e5c5f012aed413a399d6a2888e7c842b8dc..4d1eb0c19028beaea679e486108a795508141394 100644 (file)
@@ -2713,44 +2713,6 @@ static int i40e_vlan_rx_kill_vid(struct net_device *netdev,
        return 0;
 }
 
-/**
- * i40e_macaddr_init - explicitly write the mac address filters
- *
- * @vsi: pointer to the vsi
- * @macaddr: the MAC address
- *
- * This is needed when the macaddr has been obtained by other
- * means than the default, e.g., from Open Firmware or IDPROM.
- * Returns 0 on success, negative on failure
- **/
-static int i40e_macaddr_init(struct i40e_vsi *vsi, u8 *macaddr)
-{
-       int ret;
-       struct i40e_aqc_add_macvlan_element_data element;
-
-       ret = i40e_aq_mac_address_write(&vsi->back->hw,
-                                       I40E_AQC_WRITE_TYPE_LAA_WOL,
-                                       macaddr, NULL);
-       if (ret) {
-               dev_info(&vsi->back->pdev->dev,
-                        "Addr change for VSI failed: %d\n", ret);
-               return -EADDRNOTAVAIL;
-       }
-
-       memset(&element, 0, sizeof(element));
-       ether_addr_copy(element.mac_addr, macaddr);
-       element.flags = cpu_to_le16(I40E_AQC_MACVLAN_ADD_PERFECT_MATCH);
-       ret = i40e_aq_add_macvlan(&vsi->back->hw, vsi->seid, &element, 1, NULL);
-       if (ret) {
-               dev_info(&vsi->back->pdev->dev,
-                        "add filter failed err %s aq_err %s\n",
-                        i40e_stat_str(&vsi->back->hw, ret),
-                        i40e_aq_str(&vsi->back->hw,
-                                    vsi->back->hw.aq.asq_last_status));
-       }
-       return ret;
-}
-
 /**
  * i40e_restore_vlan - Reinstate vlans when vsi/netdev comes back up
  * @vsi: the vsi being brought back up
@@ -3203,19 +3165,8 @@ static void i40e_vsi_config_dcb_rings(struct i40e_vsi *vsi)
  **/
 static void i40e_set_vsi_rx_mode(struct i40e_vsi *vsi)
 {
-       struct i40e_pf *pf = vsi->back;
-       int err;
-
        if (vsi->netdev)
                i40e_set_rx_mode(vsi->netdev);
-
-       if (!!(pf->flags & I40E_FLAG_PF_MAC)) {
-               err = i40e_macaddr_init(vsi, pf->hw.mac.addr);
-               if (err) {
-                       dev_warn(&pf->pdev->dev,
-                                "could not set up macaddr; err %d\n", err);
-               }
-       }
 }
 
 /**
@@ -10400,17 +10351,6 @@ struct i40e_vsi *i40e_vsi_setup(struct i40e_pf *pf, u8 type,
        switch (vsi->type) {
        /* setup the netdev if needed */
        case I40E_VSI_MAIN:
-               /* Apply relevant filters if a platform-specific mac
-                * address was selected.
-                */
-               if (!!(pf->flags & I40E_FLAG_PF_MAC)) {
-                       ret = i40e_macaddr_init(vsi, pf->hw.mac.addr);
-                       if (ret) {
-                               dev_warn(&pf->pdev->dev,
-                                        "could not set up macaddr; err %d\n",
-                                        ret);
-                       }
-               }
        case I40E_VSI_VMDQ2:
                ret = i40e_config_netdev(vsi);
                if (ret)