]> git.droids-corp.org - dpdk.git/commitdiff
net/nfp: fix setting MAC address
authorPablo Cascón <pablo.cascon@netronome.com>
Fri, 8 Mar 2019 15:40:47 +0000 (15:40 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 20 Mar 2019 17:15:42 +0000 (18:15 +0100)
Some firmwares, mostly for VFs, do not advertise the feature /
capability of changing the MAC address while the interface is up. With
such firmware a request to change the MAC address that at the same
time also tries to enable the not available feature will be denied by
the firmware resulting in an error message like:

nfp_net_reconfig(): Error nfp_net reconfig for ctrl: 80000000 update: 800

Fix set_mac_addr by not trying to enable a feature if it is not
advertised by the firmware.

Fixes: 2fe669f4bcd2 ("net/nfp: support MAC address change")
Cc: stable@dpdk.org
Signed-off-by: Pablo Cascón <pablo.cascon@netronome.com>
Acked-by: Alejandro Lucero <alejandro.lucero@netronome.com>
drivers/net/nfp/nfp_net.c

index a791e95e2ce4256f02b5d9ed508e3ec6b3c6fb0d..1b7b6c2fd491218c8af272aae4c9a726d3f62fc2 100644 (file)
@@ -575,7 +575,10 @@ nfp_set_mac_addr(struct rte_eth_dev *dev, struct ether_addr *mac_addr)
 
        /* Signal the NIC about the change */
        update = NFP_NET_CFG_UPDATE_MACADDR;
-       ctrl = hw->ctrl | NFP_NET_CFG_CTRL_LIVE_ADDR;
+       ctrl = hw->ctrl;
+       if ((hw->ctrl & NFP_NET_CFG_CTRL_ENABLE) &&
+           (hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR))
+               ctrl |= NFP_NET_CFG_CTRL_LIVE_ADDR;
        if (nfp_net_reconfig(hw, ctrl, update) < 0) {
                PMD_INIT_LOG(INFO, "MAC address update failed");
                return -EIO;