be2net: don't rearm mcc cq when device is not open

When an MCC cmd is issued (via a netdev/ethtool op)
while the device is not open, the MCC CQ gets processed but the EQ
is not processed (as isr is not registered.) This can cause the EQ
to become full. So, while the device is not open, CQ must not be re-armed
to prevent EQ entries.

Signed-off-by: Sathya Perla <sathyap@serverengines.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Sathya Perla
2010-02-17 01:35:11 +00:00
committed by David S. Miller
parent a058a63274
commit 7a1e9b2059
4 changed files with 26 additions and 2 deletions

View File

@@ -1655,6 +1655,9 @@ static int be_open(struct net_device *netdev)
/* Rx compl queue may be in unarmed state; rearm it */
be_cq_notify(adapter, adapter->rx_obj.cq.id, true, 0);
/* Now that interrupts are on we can process async mcc */
be_async_mcc_enable(adapter);
status = be_cmd_link_status_query(adapter, &link_up, &mac_speed,
&link_speed);
if (status)
@@ -1780,6 +1783,8 @@ static int be_close(struct net_device *netdev)
cancel_delayed_work_sync(&adapter->work);
be_async_mcc_disable(adapter);
netif_stop_queue(netdev);
netif_carrier_off(netdev);
adapter->link_up = false;