diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-08-15 05:58:45 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-08-15 05:58:45 +0900 |
commit | d2dcd9101b1a940ce8496601ba871e47f84881ec (patch) | |
tree | 3de9cb11379d51eb01b568a20c8d7c585c89d10e /drivers/net/netxen/netxen_nic_ctx.c | |
parent | 8010fbe7a67c2f993cbb11b9d8b7e98528256dd1 (diff) | |
parent | 606b4c992f3b28f906100f1b6eb49059909d8da7 (diff) | |
download | linux-d2dcd9101b1a940ce8496601ba871e47f84881ec.tar.gz linux-d2dcd9101b1a940ce8496601ba871e47f84881ec.tar.xz |
Merge branch 'master' into sh/cachetlb
Diffstat (limited to 'drivers/net/netxen/netxen_nic_ctx.c')
-rw-r--r-- | drivers/net/netxen/netxen_nic_ctx.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/net/netxen/netxen_nic_ctx.c b/drivers/net/netxen/netxen_nic_ctx.c index 4754f5cffad0..9f8ae4719e2f 100644 --- a/drivers/net/netxen/netxen_nic_ctx.c +++ b/drivers/net/netxen/netxen_nic_ctx.c @@ -684,10 +684,8 @@ int netxen_alloc_hw_resources(struct netxen_adapter *adapter) goto err_out_free; } else { err = netxen_init_old_ctx(adapter); - if (err) { - netxen_free_hw_resources(adapter); - return err; - } + if (err) + goto err_out_free; } return 0; @@ -708,15 +706,18 @@ void netxen_free_hw_resources(struct netxen_adapter *adapter) int port = adapter->portnum; if (adapter->fw_major >= 4) { - nx_fw_cmd_destroy_tx_ctx(adapter); nx_fw_cmd_destroy_rx_ctx(adapter); + nx_fw_cmd_destroy_tx_ctx(adapter); } else { netxen_api_lock(adapter); NXWR32(adapter, CRB_CTX_SIGNATURE_REG(port), - NETXEN_CTX_RESET | port); + NETXEN_CTX_D3_RESET | port); netxen_api_unlock(adapter); } + /* Allow dma queues to drain after context reset */ + msleep(20); + recv_ctx = &adapter->recv_ctx; if (recv_ctx->hwctx != NULL) { |