Skip to content

Commit

Permalink
be2net: fix failure case in setting flow control
Browse files Browse the repository at this point in the history
When the FW cmd to set flow control fails, the adapter state must simply
reflect the old values.

Signed-off-by: Kalesh AP <kalesh.purayil@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Kalesh AP authored and David S. Miller committed Jan 25, 2015
1 parent 0700d81 commit 00d594c
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 11 deletions.
14 changes: 8 additions & 6 deletions drivers/net/ethernet/emulex/benet/be_ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -705,15 +705,17 @@ be_set_pauseparam(struct net_device *netdev, struct ethtool_pauseparam *ecmd)

if (ecmd->autoneg != adapter->phy.fc_autoneg)
return -EINVAL;
adapter->tx_fc = ecmd->tx_pause;
adapter->rx_fc = ecmd->rx_pause;

status = be_cmd_set_flow_control(adapter,
adapter->tx_fc, adapter->rx_fc);
if (status)
status = be_cmd_set_flow_control(adapter, ecmd->tx_pause,
ecmd->rx_pause);
if (status) {
dev_warn(&adapter->pdev->dev, "Pause param set failed\n");
return be_cmd_status(status);
}

return be_cmd_status(status);
adapter->tx_fc = ecmd->tx_pause;
adapter->rx_fc = ecmd->rx_pause;
return 0;
}

static int be_set_phys_id(struct net_device *netdev,
Expand Down
12 changes: 7 additions & 5 deletions drivers/net/ethernet/emulex/benet/be_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -3667,7 +3667,6 @@ int be_update_queues(struct be_adapter *adapter)
static int be_setup(struct be_adapter *adapter)
{
struct device *dev = &adapter->pdev->dev;
u32 tx_fc, rx_fc;
int status;

be_setup_init(adapter);
Expand Down Expand Up @@ -3717,11 +3716,14 @@ static int be_setup(struct be_adapter *adapter)

be_cmd_get_acpi_wol_cap(adapter);

be_cmd_get_flow_control(adapter, &tx_fc, &rx_fc);
status = be_cmd_set_flow_control(adapter, adapter->tx_fc,
adapter->rx_fc);
if (status)
be_cmd_get_flow_control(adapter, &adapter->tx_fc,
&adapter->rx_fc);

if (rx_fc != adapter->rx_fc || tx_fc != adapter->tx_fc)
be_cmd_set_flow_control(adapter, adapter->tx_fc,
adapter->rx_fc);
dev_info(&adapter->pdev->dev, "HW Flow control - TX:%d RX:%d\n",
adapter->tx_fc, adapter->rx_fc);

if (be_physfn(adapter))
be_cmd_set_logical_link_config(adapter,
Expand Down

0 comments on commit 00d594c

Please sign in to comment.