Commit abccf23e authored by Kalesh AP's avatar Kalesh AP Committed by David S. Miller

be2net: fix return status of some ndo methods

The netlink layer expects a -ve status value to be returned when a driver
ndo method encounters an error. The driver was directly passing the
error status returned by FW (a positive value) to the stack.
This patch fixes this by returning -EIO status when a FW-cmd reports an error.
Signed-off-by: default avatarKalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: default avatarSathya Perla <sathya.perla@emulex.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 0532d4e3
...@@ -1281,13 +1281,15 @@ static int be_set_vf_mac(struct net_device *netdev, int vf, u8 *mac) ...@@ -1281,13 +1281,15 @@ static int be_set_vf_mac(struct net_device *netdev, int vf, u8 *mac)
vf + 1); vf + 1);
} }
if (status) if (status) {
dev_err(&adapter->pdev->dev, "MAC %pM set on VF %d Failed\n", dev_err(&adapter->pdev->dev, "MAC %pM set on VF %d Failed: %#x",
mac, vf); mac, vf, status);
else return be_cmd_status(status);
memcpy(vf_cfg->mac_addr, mac, ETH_ALEN); }
return status; ether_addr_copy(vf_cfg->mac_addr, mac);
return 0;
} }
static int be_get_vf_config(struct net_device *netdev, int vf, static int be_get_vf_config(struct net_device *netdev, int vf,
...@@ -1336,12 +1338,16 @@ static int be_set_vf_vlan(struct net_device *netdev, int vf, u16 vlan, u8 qos) ...@@ -1336,12 +1338,16 @@ static int be_set_vf_vlan(struct net_device *netdev, int vf, u16 vlan, u8 qos)
vf + 1, vf_cfg->if_handle, 0); vf + 1, vf_cfg->if_handle, 0);
} }
if (!status) if (status) {
vf_cfg->vlan_tag = vlan; dev_err(&adapter->pdev->dev,
else "VLAN %d config on VF %d failed : %#x\n", vlan,
dev_info(&adapter->pdev->dev, vf, status);
"VLAN %d config on VF %d failed\n", vlan, vf); return be_cmd_status(status);
return status; }
vf_cfg->vlan_tag = vlan;
return 0;
} }
static int be_set_vf_tx_rate(struct net_device *netdev, int vf, static int be_set_vf_tx_rate(struct net_device *netdev, int vf,
...@@ -1403,7 +1409,7 @@ static int be_set_vf_tx_rate(struct net_device *netdev, int vf, ...@@ -1403,7 +1409,7 @@ static int be_set_vf_tx_rate(struct net_device *netdev, int vf,
err: err:
dev_err(dev, "TX-rate setting of %dMbps on VF%d failed\n", dev_err(dev, "TX-rate setting of %dMbps on VF%d failed\n",
max_tx_rate, vf); max_tx_rate, vf);
return status; return be_cmd_status(status);
} }
static int be_set_vf_link_state(struct net_device *netdev, int vf, static int be_set_vf_link_state(struct net_device *netdev, int vf,
int link_state) int link_state)
...@@ -1418,10 +1424,15 @@ static int be_set_vf_link_state(struct net_device *netdev, int vf, ...@@ -1418,10 +1424,15 @@ static int be_set_vf_link_state(struct net_device *netdev, int vf,
return -EINVAL; return -EINVAL;
status = be_cmd_set_logical_link_config(adapter, link_state, vf+1); status = be_cmd_set_logical_link_config(adapter, link_state, vf+1);
if (!status) if (status) {
adapter->vf_cfg[vf].plink_tracking = link_state; dev_err(&adapter->pdev->dev,
"Link state change on VF %d failed: %#x\n", vf, status);
return be_cmd_status(status);
}
return status; adapter->vf_cfg[vf].plink_tracking = link_state;
return 0;
} }
static void be_aic_update(struct be_aic_obj *aic, u64 rx_pkts, u64 tx_pkts, static void be_aic_update(struct be_aic_obj *aic, u64 rx_pkts, u64 tx_pkts,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment