Skip to content

Commit

Permalink
nfp: remove legacy MAC address lookup
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jakub Kicinski authored and David S. Miller committed Jul 5, 2017
1 parent 2eb333c commit cb2cda4
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 34 deletions.
3 changes: 1 addition & 2 deletions drivers/net/ethernet/netronome/nfp/flower/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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],
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/ethernet/netronome/nfp/nfp_app_nic.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
3 changes: 1 addition & 2 deletions drivers/net/ethernet/netronome/nfp/nfp_main.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
34 changes: 5 additions & 29 deletions drivers/net/ethernet/netronome/nfp/nfp_net_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 *
Expand Down

0 comments on commit cb2cda4

Please sign in to comment.