Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 202603
b: refs/heads/master
c: 889cd4b
h: refs/heads/master
i:
  202601: 25f56e6
  202599: 4941ddf
v: v3
  • Loading branch information
Sathya Perla authored and David S. Miller committed Jun 1, 2010
1 parent a54ccce commit b33d3ff
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 47 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: db6f30078dcb0117336f20275e4828c86132e46e
refs/heads/master: 889cd4b2e529db4988525b0b3e6fb2c095760848
95 changes: 49 additions & 46 deletions trunk/drivers/net/benet/be_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1735,6 +1735,44 @@ static void be_irq_unregister(struct be_adapter *adapter)
adapter->isr_registered = false;
}

static int be_close(struct net_device *netdev)
{
struct be_adapter *adapter = netdev_priv(netdev);
struct be_eq_obj *rx_eq = &adapter->rx_eq;
struct be_eq_obj *tx_eq = &adapter->tx_eq;
int vec;

cancel_delayed_work_sync(&adapter->work);

be_async_mcc_disable(adapter);

netif_stop_queue(netdev);
netif_carrier_off(netdev);
adapter->link_up = false;

be_intr_set(adapter, false);

if (adapter->msix_enabled) {
vec = be_msix_vec_get(adapter, tx_eq->q.id);
synchronize_irq(vec);
vec = be_msix_vec_get(adapter, rx_eq->q.id);
synchronize_irq(vec);
} else {
synchronize_irq(netdev->irq);
}
be_irq_unregister(adapter);

napi_disable(&rx_eq->napi);
napi_disable(&tx_eq->napi);

/* Wait for all pending tx completions to arrive so that
* all tx skbs are freed.
*/
be_tx_compl_clean(adapter);

return 0;
}

static int be_open(struct net_device *netdev)
{
struct be_adapter *adapter = netdev_priv(netdev);
Expand Down Expand Up @@ -1765,27 +1803,29 @@ static int be_open(struct net_device *netdev)
/* Now that interrupts are on we can process async mcc */
be_async_mcc_enable(adapter);

schedule_delayed_work(&adapter->work, msecs_to_jiffies(100));

status = be_cmd_link_status_query(adapter, &link_up, &mac_speed,
&link_speed);
if (status)
goto ret_sts;
goto err;
be_link_status_update(adapter, link_up);

if (be_physfn(adapter))
if (be_physfn(adapter)) {
status = be_vid_config(adapter);
if (status)
goto ret_sts;
if (status)
goto err;

if (be_physfn(adapter)) {
status = be_cmd_set_flow_control(adapter,
adapter->tx_fc, adapter->rx_fc);
if (status)
goto ret_sts;
goto err;
}

schedule_delayed_work(&adapter->work, msecs_to_jiffies(100));
ret_sts:
return status;
return 0;
err:
be_close(adapter->netdev);
return -EIO;
}

static int be_setup_wol(struct be_adapter *adapter, bool enable)
Expand Down Expand Up @@ -1913,43 +1953,6 @@ static int be_clear(struct be_adapter *adapter)
return 0;
}

static int be_close(struct net_device *netdev)
{
struct be_adapter *adapter = netdev_priv(netdev);
struct be_eq_obj *rx_eq = &adapter->rx_eq;
struct be_eq_obj *tx_eq = &adapter->tx_eq;
int vec;

cancel_delayed_work_sync(&adapter->work);

be_async_mcc_disable(adapter);

netif_stop_queue(netdev);
netif_carrier_off(netdev);
adapter->link_up = false;

be_intr_set(adapter, false);

if (adapter->msix_enabled) {
vec = be_msix_vec_get(adapter, tx_eq->q.id);
synchronize_irq(vec);
vec = be_msix_vec_get(adapter, rx_eq->q.id);
synchronize_irq(vec);
} else {
synchronize_irq(netdev->irq);
}
be_irq_unregister(adapter);

napi_disable(&rx_eq->napi);
napi_disable(&tx_eq->napi);

/* Wait for all pending tx completions to arrive so that
* all tx skbs are freed.
*/
be_tx_compl_clean(adapter);

return 0;
}

#define FW_FILE_HDR_SIGN "ServerEngines Corp. "
char flash_cookie[2][16] = {"*** SE FLAS",
Expand Down

0 comments on commit b33d3ff

Please sign in to comment.