diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-04-11 10:27:24 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-04-11 10:27:24 -0400 |
commit | c44eaf41a5a423993932c9a9ad279ee132779b48 (patch) | |
tree | 3554fc0bfdcd97936417d6d001d00710d11e67e5 /drivers/net/benet | |
parent | 4263a2f1dad8c8e7ce2352a0cbc882c2b0c044a9 (diff) | |
parent | 88edaa415966af965bb7eb7056d8b58145462c8e (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (34 commits)
net: Add support for SMSC LAN9530, LAN9730 and LAN89530
mlx4_en: Restoring RX buffer pointer in case of failure
mlx4: Sensing link type at device initialization
ipv4: Fix "Set rt->rt_iif more sanely on output routes."
MAINTAINERS: add entry for Xen network backend
be2net: Fix suspend/resume operation
be2net: Rename some struct members for clarity
pppoe: drop PPPOX_ZOMBIEs in pppoe_flush_dev
dsa/mv88e6131: add support for mv88e6085 switch
ipv6: Enable RFS sk_rxhash tracking for ipv6 sockets (v2)
be2net: Fix a potential crash during shutdown.
bna: Fix for handling firmware heartbeat failure
can: mcp251x: Allow pass IRQ flags through platform data.
smsc911x: fix mac_lock acquision before calling smsc911x_mac_read
iwlwifi: accept EEPROM version 0x423 for iwl6000
rt2x00: fix cancelling uninitialized work
rtlwifi: Fix some warnings/bugs
p54usb: IDs for two new devices
wl12xx: fix potential buffer overflow in testmode nvs push
zd1211rw: reset rx idle timer from tasklet
...
Diffstat (limited to 'drivers/net/benet')
-rw-r--r-- | drivers/net/benet/be.h | 4 | ||||
-rw-r--r-- | drivers/net/benet/be_main.c | 19 |
2 files changed, 13 insertions, 10 deletions
diff --git a/drivers/net/benet/be.h b/drivers/net/benet/be.h index f803c58b941d..66823eded7a3 100644 --- a/drivers/net/benet/be.h +++ b/drivers/net/benet/be.h | |||
@@ -154,7 +154,7 @@ struct be_eq_obj { | |||
154 | u16 min_eqd; /* in usecs */ | 154 | u16 min_eqd; /* in usecs */ |
155 | u16 max_eqd; /* in usecs */ | 155 | u16 max_eqd; /* in usecs */ |
156 | u16 cur_eqd; /* in usecs */ | 156 | u16 cur_eqd; /* in usecs */ |
157 | u8 msix_vec_idx; | 157 | u8 eq_idx; |
158 | 158 | ||
159 | struct napi_struct napi; | 159 | struct napi_struct napi; |
160 | }; | 160 | }; |
@@ -291,7 +291,7 @@ struct be_adapter { | |||
291 | u32 num_rx_qs; | 291 | u32 num_rx_qs; |
292 | u32 big_page_size; /* Compounded page size shared by rx wrbs */ | 292 | u32 big_page_size; /* Compounded page size shared by rx wrbs */ |
293 | 293 | ||
294 | u8 msix_vec_next_idx; | 294 | u8 eq_next_idx; |
295 | struct be_drv_stats drv_stats; | 295 | struct be_drv_stats drv_stats; |
296 | 296 | ||
297 | struct vlan_group *vlan_grp; | 297 | struct vlan_group *vlan_grp; |
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c index 9a54c8b24ff9..7cb5a114c733 100644 --- a/drivers/net/benet/be_main.c +++ b/drivers/net/benet/be_main.c | |||
@@ -1497,7 +1497,7 @@ static int be_tx_queues_create(struct be_adapter *adapter) | |||
1497 | if (be_cmd_eq_create(adapter, eq, adapter->tx_eq.cur_eqd)) | 1497 | if (be_cmd_eq_create(adapter, eq, adapter->tx_eq.cur_eqd)) |
1498 | goto tx_eq_free; | 1498 | goto tx_eq_free; |
1499 | 1499 | ||
1500 | adapter->tx_eq.msix_vec_idx = adapter->msix_vec_next_idx++; | 1500 | adapter->tx_eq.eq_idx = adapter->eq_next_idx++; |
1501 | 1501 | ||
1502 | 1502 | ||
1503 | /* Alloc TX eth compl queue */ | 1503 | /* Alloc TX eth compl queue */ |
@@ -1590,7 +1590,7 @@ static int be_rx_queues_create(struct be_adapter *adapter) | |||
1590 | if (rc) | 1590 | if (rc) |
1591 | goto err; | 1591 | goto err; |
1592 | 1592 | ||
1593 | rxo->rx_eq.msix_vec_idx = adapter->msix_vec_next_idx++; | 1593 | rxo->rx_eq.eq_idx = adapter->eq_next_idx++; |
1594 | 1594 | ||
1595 | /* CQ */ | 1595 | /* CQ */ |
1596 | cq = &rxo->cq; | 1596 | cq = &rxo->cq; |
@@ -1666,11 +1666,11 @@ static irqreturn_t be_intx(int irq, void *dev) | |||
1666 | if (!isr) | 1666 | if (!isr) |
1667 | return IRQ_NONE; | 1667 | return IRQ_NONE; |
1668 | 1668 | ||
1669 | if ((1 << adapter->tx_eq.msix_vec_idx & isr)) | 1669 | if ((1 << adapter->tx_eq.eq_idx & isr)) |
1670 | event_handle(adapter, &adapter->tx_eq); | 1670 | event_handle(adapter, &adapter->tx_eq); |
1671 | 1671 | ||
1672 | for_all_rx_queues(adapter, rxo, i) { | 1672 | for_all_rx_queues(adapter, rxo, i) { |
1673 | if ((1 << rxo->rx_eq.msix_vec_idx & isr)) | 1673 | if ((1 << rxo->rx_eq.eq_idx & isr)) |
1674 | event_handle(adapter, &rxo->rx_eq); | 1674 | event_handle(adapter, &rxo->rx_eq); |
1675 | } | 1675 | } |
1676 | } | 1676 | } |
@@ -1951,7 +1951,7 @@ static void be_sriov_disable(struct be_adapter *adapter) | |||
1951 | static inline int be_msix_vec_get(struct be_adapter *adapter, | 1951 | static inline int be_msix_vec_get(struct be_adapter *adapter, |
1952 | struct be_eq_obj *eq_obj) | 1952 | struct be_eq_obj *eq_obj) |
1953 | { | 1953 | { |
1954 | return adapter->msix_entries[eq_obj->msix_vec_idx].vector; | 1954 | return adapter->msix_entries[eq_obj->eq_idx].vector; |
1955 | } | 1955 | } |
1956 | 1956 | ||
1957 | static int be_request_irq(struct be_adapter *adapter, | 1957 | static int be_request_irq(struct be_adapter *adapter, |
@@ -2345,6 +2345,7 @@ static int be_clear(struct be_adapter *adapter) | |||
2345 | be_mcc_queues_destroy(adapter); | 2345 | be_mcc_queues_destroy(adapter); |
2346 | be_rx_queues_destroy(adapter); | 2346 | be_rx_queues_destroy(adapter); |
2347 | be_tx_queues_destroy(adapter); | 2347 | be_tx_queues_destroy(adapter); |
2348 | adapter->eq_next_idx = 0; | ||
2348 | 2349 | ||
2349 | if (be_physfn(adapter) && adapter->sriov_enabled) | 2350 | if (be_physfn(adapter) && adapter->sriov_enabled) |
2350 | for (vf = 0; vf < num_vfs; vf++) | 2351 | for (vf = 0; vf < num_vfs; vf++) |
@@ -3141,12 +3142,14 @@ static int be_resume(struct pci_dev *pdev) | |||
3141 | static void be_shutdown(struct pci_dev *pdev) | 3142 | static void be_shutdown(struct pci_dev *pdev) |
3142 | { | 3143 | { |
3143 | struct be_adapter *adapter = pci_get_drvdata(pdev); | 3144 | struct be_adapter *adapter = pci_get_drvdata(pdev); |
3144 | struct net_device *netdev = adapter->netdev; | ||
3145 | 3145 | ||
3146 | if (netif_running(netdev)) | 3146 | if (!adapter) |
3147 | return; | ||
3148 | |||
3149 | if (netif_running(adapter->netdev)) | ||
3147 | cancel_delayed_work_sync(&adapter->work); | 3150 | cancel_delayed_work_sync(&adapter->work); |
3148 | 3151 | ||
3149 | netif_device_detach(netdev); | 3152 | netif_device_detach(adapter->netdev); |
3150 | 3153 | ||
3151 | be_cmd_reset_function(adapter); | 3154 | be_cmd_reset_function(adapter); |
3152 | 3155 | ||