Skip to content

Commit

Permalink
cxgb3 - Fix EEH, missing softirq blocking
Browse files Browse the repository at this point in the history
set_pci_drvdata() stores a pointer to the adapter,
not the net device.
Add missing softirq blocking in t3_mgmt_tx.

Signed-off-by: Divy Le Ray <divy@chelsio.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Divy Le Ray authored and David S. Miller committed Jan 28, 2008
1 parent b881955 commit bc4b6b5
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 11 deletions.
14 changes: 4 additions & 10 deletions drivers/net/cxgb3/cxgb3_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2408,9 +2408,7 @@ void t3_fatal_err(struct adapter *adapter)
static pci_ers_result_t t3_io_error_detected(struct pci_dev *pdev,
pci_channel_state_t state)
{
struct net_device *dev = pci_get_drvdata(pdev);
struct port_info *pi = netdev_priv(dev);
struct adapter *adapter = pi->adapter;
struct adapter *adapter = pci_get_drvdata(pdev);
int i;

/* Stop all ports */
Expand Down Expand Up @@ -2444,9 +2442,7 @@ static pci_ers_result_t t3_io_error_detected(struct pci_dev *pdev,
*/
static pci_ers_result_t t3_io_slot_reset(struct pci_dev *pdev)
{
struct net_device *dev = pci_get_drvdata(pdev);
struct port_info *pi = netdev_priv(dev);
struct adapter *adapter = pi->adapter;
struct adapter *adapter = pci_get_drvdata(pdev);

if (pci_enable_device(pdev)) {
dev_err(&pdev->dev,
Expand All @@ -2469,9 +2465,7 @@ static pci_ers_result_t t3_io_slot_reset(struct pci_dev *pdev)
*/
static void t3_io_resume(struct pci_dev *pdev)
{
struct net_device *dev = pci_get_drvdata(pdev);
struct port_info *pi = netdev_priv(dev);
struct adapter *adapter = pi->adapter;
struct adapter *adapter = pci_get_drvdata(pdev);
int i;

/* Restart the ports */
Expand All @@ -2491,7 +2485,7 @@ static void t3_io_resume(struct pci_dev *pdev)

if (is_offload(adapter)) {
__set_bit(OFFLOAD_DEVMAP_BIT, &adapter->registered_device_map);
if (offload_open(dev))
if (offload_open(adapter->port[0]))
printk(KERN_WARNING
"Could not bring back offload capabilities\n");
}
Expand Down
7 changes: 6 additions & 1 deletion drivers/net/cxgb3/sge.c
Original file line number Diff line number Diff line change
Expand Up @@ -1364,7 +1364,12 @@ static void restart_ctrlq(unsigned long data)
*/
int t3_mgmt_tx(struct adapter *adap, struct sk_buff *skb)
{
return ctrl_xmit(adap, &adap->sge.qs[0].txq[TXQ_CTRL], skb);
int ret;
local_bh_disable();
ret = ctrl_xmit(adap, &adap->sge.qs[0].txq[TXQ_CTRL], skb);
local_bh_enable();

return ret;
}

/**
Expand Down

0 comments on commit bc4b6b5

Please sign in to comment.