nfp: remove legacy MAC address lookup
authorJakub Kicinski <jakub.kicinski@netronome.com>
Tue, 4 Jul 2017 09:27:20 +0000 (02:27 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 5 Jul 2017 08:13:07 +0000 (09:13 +0100)
The legacy MAC address lookup doesn't work well with breakout
cables.  We are probably better off picking random addresses
than the wrong ones in the theoretical scenario where management
FW didn't tell us what the port config is.

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/netronome/nfp/flower/main.c
drivers/net/ethernet/netronome/nfp/nfp_app_nic.c
drivers/net/ethernet/netronome/nfp/nfp_main.h
drivers/net/ethernet/netronome/nfp/nfp_net_main.c

index 5fe6d3582597d24ebe9995ab8b7c8c6709af09fb..fc10f27e0a0cad2f9675f0aedcb662ab6e687630 100644 (file)
@@ -245,8 +245,7 @@ nfp_flower_spawn_phy_reprs(struct nfp_app *app, struct nfp_flower_priv *priv)
                }
 
                SET_NETDEV_DEV(reprs->reprs[phys_port], &priv->nn->pdev->dev);
-               nfp_net_get_mac_addr(app->pf, port,
-                                    eth_tbl->ports[i].eth_index);
+               nfp_net_get_mac_addr(app->pf, port);
 
                cmsg_port_id = nfp_flower_cmsg_phys_port(phys_port);
                err = nfp_repr_init(app, reprs->reprs[phys_port],
index c11a6c34e217f225e4a06b822c6548024e4d5800..4e37c81f9eaf0702645cbd607e00b63d5237b707 100644 (file)
@@ -69,7 +69,7 @@ int nfp_app_nic_vnic_init(struct nfp_app *app, struct nfp_net *nn,
        if (err)
                return err < 0 ? err : 0;
 
-       nfp_net_get_mac_addr(app->pf, nn->port, id);
+       nfp_net_get_mac_addr(app->pf, nn->port);
 
        return 0;
 }
index 365252ab4660ce95c78736228a31f3a5ff9eda8b..6922410806dbcb01f5bc0bf00af6da1d26e21e2c 100644 (file)
@@ -149,8 +149,7 @@ void nfp_net_pci_remove(struct nfp_pf *pf);
 int nfp_hwmon_register(struct nfp_pf *pf);
 void nfp_hwmon_unregister(struct nfp_pf *pf);
 
-void
-nfp_net_get_mac_addr(struct nfp_pf *pf, struct nfp_port *port, unsigned int id);
+void nfp_net_get_mac_addr(struct nfp_pf *pf, struct nfp_port *port);
 
 bool nfp_ctrl_tx(struct nfp_net *nn, struct sk_buff *skb);
 
index bfcdada29cc0eb84af6067d3ff3c8b8f92e108a9..5797dbf2b50779583e0a27e1fee02ce85b8feebb 100644 (file)
@@ -84,46 +84,22 @@ static int nfp_is_ready(struct nfp_pf *pf)
  * nfp_net_get_mac_addr() - Get the MAC address.
  * @pf:       NFP PF handle
  * @port:     NFP port structure
- * @id:              NFP port id
  *
  * First try to get the MAC address from NSP ETH table. If that
- * fails try HWInfo.  As a last resort generate a random address.
+ * fails generate a random address.
  */
-void
-nfp_net_get_mac_addr(struct nfp_pf *pf, struct nfp_port *port, unsigned int id)
+void nfp_net_get_mac_addr(struct nfp_pf *pf, struct nfp_port *port)
 {
        struct nfp_eth_table_port *eth_port;
-       u8 mac_addr[ETH_ALEN];
-       const char *mac_str;
-       char name[32];
 
        eth_port = __nfp_port_get_eth_port(port);
-       if (eth_port) {
-               ether_addr_copy(port->netdev->dev_addr, eth_port->mac_addr);
-               ether_addr_copy(port->netdev->perm_addr, eth_port->mac_addr);
-               return;
-       }
-
-       snprintf(name, sizeof(name), "eth%d.mac", id);
-
-       mac_str = nfp_hwinfo_lookup(pf->hwinfo, name);
-       if (!mac_str) {
-               nfp_warn(pf->cpp, "Can't lookup MAC address. Generate\n");
-               eth_hw_addr_random(port->netdev);
-               return;
-       }
-
-       if (sscanf(mac_str, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
-                  &mac_addr[0], &mac_addr[1], &mac_addr[2],
-                  &mac_addr[3], &mac_addr[4], &mac_addr[5]) != 6) {
-               nfp_warn(pf->cpp, "Can't parse MAC address (%s). Generate.\n",
-                        mac_str);
+       if (!eth_port) {
                eth_hw_addr_random(port->netdev);
                return;
        }
 
-       ether_addr_copy(port->netdev->dev_addr, mac_addr);
-       ether_addr_copy(port->netdev->perm_addr, mac_addr);
+       ether_addr_copy(port->netdev->dev_addr, eth_port->mac_addr);
+       ether_addr_copy(port->netdev->perm_addr, eth_port->mac_addr);
 }
 
 static struct nfp_eth_table_port *