diff options
Diffstat (limited to 'drivers/net/benet/be_main.c')
| -rw-r--r-- | drivers/net/benet/be_main.c | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c index 43180dc210a2..c0bd20356eaf 100644 --- a/drivers/net/benet/be_main.c +++ b/drivers/net/benet/be_main.c | |||
| @@ -1611,11 +1611,21 @@ static int be_open(struct net_device *netdev) | |||
| 1611 | status = be_cmd_link_status_query(adapter, &link_up, &mac_speed, | 1611 | status = be_cmd_link_status_query(adapter, &link_up, &mac_speed, |
| 1612 | &link_speed); | 1612 | &link_speed); |
| 1613 | if (status) | 1613 | if (status) |
| 1614 | return status; | 1614 | goto ret_sts; |
| 1615 | be_link_status_update(adapter, link_up); | 1615 | be_link_status_update(adapter, link_up); |
| 1616 | 1616 | ||
| 1617 | status = be_vid_config(adapter); | ||
| 1618 | if (status) | ||
| 1619 | goto ret_sts; | ||
| 1620 | |||
| 1621 | status = be_cmd_set_flow_control(adapter, | ||
| 1622 | adapter->tx_fc, adapter->rx_fc); | ||
| 1623 | if (status) | ||
| 1624 | goto ret_sts; | ||
| 1625 | |||
| 1617 | schedule_delayed_work(&adapter->work, msecs_to_jiffies(100)); | 1626 | schedule_delayed_work(&adapter->work, msecs_to_jiffies(100)); |
| 1618 | return 0; | 1627 | ret_sts: |
| 1628 | return status; | ||
| 1619 | } | 1629 | } |
| 1620 | 1630 | ||
| 1621 | static int be_setup(struct be_adapter *adapter) | 1631 | static int be_setup(struct be_adapter *adapter) |
| @@ -1649,17 +1659,8 @@ static int be_setup(struct be_adapter *adapter) | |||
| 1649 | if (status != 0) | 1659 | if (status != 0) |
| 1650 | goto rx_qs_destroy; | 1660 | goto rx_qs_destroy; |
| 1651 | 1661 | ||
| 1652 | status = be_vid_config(adapter); | ||
| 1653 | if (status != 0) | ||
| 1654 | goto mccqs_destroy; | ||
| 1655 | |||
| 1656 | status = be_cmd_set_flow_control(adapter, true, true); | ||
| 1657 | if (status != 0) | ||
| 1658 | goto mccqs_destroy; | ||
| 1659 | return 0; | 1662 | return 0; |
| 1660 | 1663 | ||
| 1661 | mccqs_destroy: | ||
| 1662 | be_mcc_queues_destroy(adapter); | ||
| 1663 | rx_qs_destroy: | 1664 | rx_qs_destroy: |
| 1664 | be_rx_queues_destroy(adapter); | 1665 | be_rx_queues_destroy(adapter); |
| 1665 | tx_qs_destroy: | 1666 | tx_qs_destroy: |
| @@ -1910,6 +1911,10 @@ static void be_netdev_init(struct net_device *netdev) | |||
| 1910 | 1911 | ||
| 1911 | adapter->rx_csum = true; | 1912 | adapter->rx_csum = true; |
| 1912 | 1913 | ||
| 1914 | /* Default settings for Rx and Tx flow control */ | ||
| 1915 | adapter->rx_fc = true; | ||
| 1916 | adapter->tx_fc = true; | ||
| 1917 | |||
| 1913 | netif_set_gso_max_size(netdev, 65535); | 1918 | netif_set_gso_max_size(netdev, 65535); |
| 1914 | 1919 | ||
| 1915 | BE_SET_NETDEV_OPS(netdev, &be_netdev_ops); | 1920 | BE_SET_NETDEV_OPS(netdev, &be_netdev_ops); |
| @@ -2172,6 +2177,7 @@ static int be_suspend(struct pci_dev *pdev, pm_message_t state) | |||
| 2172 | be_close(netdev); | 2177 | be_close(netdev); |
| 2173 | rtnl_unlock(); | 2178 | rtnl_unlock(); |
| 2174 | } | 2179 | } |
| 2180 | be_cmd_get_flow_control(adapter, &adapter->tx_fc, &adapter->rx_fc); | ||
| 2175 | be_clear(adapter); | 2181 | be_clear(adapter); |
| 2176 | 2182 | ||
| 2177 | pci_save_state(pdev); | 2183 | pci_save_state(pdev); |
