Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 195291
b: refs/heads/master
c: aaefae9
h: refs/heads/master
i:
  195289: b54bfe4
  195287: e36de2f
v: v3
  • Loading branch information
Dimitris Michailidis authored and David S. Miller committed May 18, 2010
1 parent 4d837da commit 4d1a221
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 29 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: b6bd29e793c1747e0b4be8791d5738acea3a86df
refs/heads/master: aaefae9b32b2cba7350a4d524357168119372e51
1 change: 0 additions & 1 deletion trunk/drivers/net/cxgb4/cxgb4.h
Original file line number Diff line number Diff line change
Expand Up @@ -477,7 +477,6 @@ struct adapter {
struct pci_dev *pdev;
struct device *pdev_dev;
unsigned long registered_device_map;
unsigned long open_device_map;
unsigned long flags;

const char *name;
Expand Down
49 changes: 22 additions & 27 deletions trunk/drivers/net/cxgb4/cxgb4_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2433,23 +2433,17 @@ EXPORT_SYMBOL(cxgb4_unregister_uld);
*/
static int cxgb_up(struct adapter *adap)
{
int err = 0;
int err;

if (!(adap->flags & FULL_INIT_DONE)) {
err = setup_sge_queues(adap);
if (err)
goto out;
err = setup_rss(adap);
if (err) {
t4_free_sge_resources(adap);
goto out;
}
if (adap->flags & USING_MSIX)
name_msix_vecs(adap);
adap->flags |= FULL_INIT_DONE;
}
err = setup_sge_queues(adap);
if (err)
goto out;
err = setup_rss(adap);
if (err)
goto freeq;

if (adap->flags & USING_MSIX) {
name_msix_vecs(adap);
err = request_irq(adap->msix_info[0].vec, t4_nondata_intr, 0,
adap->msix_info[0].desc, adap);
if (err)
Expand All @@ -2470,11 +2464,14 @@ static int cxgb_up(struct adapter *adap)
enable_rx(adap);
t4_sge_start(adap);
t4_intr_enable(adap);
adap->flags |= FULL_INIT_DONE;
notify_ulds(adap, CXGB4_STATE_UP);
out:
return err;
irq_err:
dev_err(adap->pdev_dev, "request_irq failed, err %d\n", err);
freeq:
t4_free_sge_resources(adap);
goto out;
}

Expand All @@ -2490,6 +2487,9 @@ static void cxgb_down(struct adapter *adapter)
} else
free_irq(adapter->pdev->irq, adapter);
quiesce_rx(adapter);
t4_sge_stop(adapter);
t4_free_sge_resources(adapter);
adapter->flags &= ~FULL_INIT_DONE;
}

/*
Expand All @@ -2501,31 +2501,26 @@ static int cxgb_open(struct net_device *dev)
struct port_info *pi = netdev_priv(dev);
struct adapter *adapter = pi->adapter;

if (!adapter->open_device_map && (err = cxgb_up(adapter)) < 0)
return err;
if (!(adapter->flags & FULL_INIT_DONE)) {
err = cxgb_up(adapter);
if (err < 0)
return err;
}

dev->real_num_tx_queues = pi->nqsets;
set_bit(pi->tx_chan, &adapter->open_device_map);
link_start(dev);
netif_tx_start_all_queues(dev);
return 0;
}

static int cxgb_close(struct net_device *dev)
{
int ret;
struct port_info *pi = netdev_priv(dev);
struct adapter *adapter = pi->adapter;

netif_tx_stop_all_queues(dev);
netif_carrier_off(dev);
ret = t4_enable_vi(adapter, 0, pi->viid, false, false);

clear_bit(pi->tx_chan, &adapter->open_device_map);

if (!adapter->open_device_map)
cxgb_down(adapter);
return 0;
return t4_enable_vi(adapter, 0, pi->viid, false, false);
}

static struct net_device_stats *cxgb_get_stats(struct net_device *dev)
Expand Down Expand Up @@ -3360,8 +3355,8 @@ static void __devexit remove_one(struct pci_dev *pdev)
if (adapter->debugfs_root)
debugfs_remove_recursive(adapter->debugfs_root);

t4_sge_stop(adapter);
t4_free_sge_resources(adapter);
if (adapter->flags & FULL_INIT_DONE)
cxgb_down(adapter);
t4_free_mem(adapter->l2t);
t4_free_mem(adapter->tids.tid_tab);
disable_msi(adapter);
Expand Down

0 comments on commit 4d1a221

Please sign in to comment.