Merge branches 'ipoib', 'mad', 'mlx4', 'mthca' and 'nes' into for-linus
This commit is contained in:
@@ -37,7 +37,8 @@
|
||||
enum rmpp_state {
|
||||
RMPP_STATE_ACTIVE,
|
||||
RMPP_STATE_TIMEOUT,
|
||||
RMPP_STATE_COMPLETE
|
||||
RMPP_STATE_COMPLETE,
|
||||
RMPP_STATE_CANCELING
|
||||
};
|
||||
|
||||
struct mad_rmpp_recv {
|
||||
@@ -86,19 +87,23 @@ void ib_cancel_rmpp_recvs(struct ib_mad_agent_private *agent)
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&agent->lock, flags);
|
||||
list_for_each_entry(rmpp_recv, &agent->rmpp_list, list) {
|
||||
if (rmpp_recv->state != RMPP_STATE_COMPLETE)
|
||||
ib_free_recv_mad(rmpp_recv->rmpp_wc);
|
||||
rmpp_recv->state = RMPP_STATE_CANCELING;
|
||||
}
|
||||
spin_unlock_irqrestore(&agent->lock, flags);
|
||||
|
||||
list_for_each_entry(rmpp_recv, &agent->rmpp_list, list) {
|
||||
cancel_delayed_work(&rmpp_recv->timeout_work);
|
||||
cancel_delayed_work(&rmpp_recv->cleanup_work);
|
||||
}
|
||||
spin_unlock_irqrestore(&agent->lock, flags);
|
||||
|
||||
flush_workqueue(agent->qp_info->port_priv->wq);
|
||||
|
||||
list_for_each_entry_safe(rmpp_recv, temp_rmpp_recv,
|
||||
&agent->rmpp_list, list) {
|
||||
list_del(&rmpp_recv->list);
|
||||
if (rmpp_recv->state != RMPP_STATE_COMPLETE)
|
||||
ib_free_recv_mad(rmpp_recv->rmpp_wc);
|
||||
destroy_rmpp_recv(rmpp_recv);
|
||||
}
|
||||
}
|
||||
@@ -260,6 +265,10 @@ static void recv_cleanup_handler(struct work_struct *work)
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&rmpp_recv->agent->lock, flags);
|
||||
if (rmpp_recv->state == RMPP_STATE_CANCELING) {
|
||||
spin_unlock_irqrestore(&rmpp_recv->agent->lock, flags);
|
||||
return;
|
||||
}
|
||||
list_del(&rmpp_recv->list);
|
||||
spin_unlock_irqrestore(&rmpp_recv->agent->lock, flags);
|
||||
destroy_rmpp_recv(rmpp_recv);
|
||||
|
@@ -68,11 +68,16 @@ static void catas_reset(struct work_struct *work)
|
||||
spin_unlock_irq(&catas_lock);
|
||||
|
||||
list_for_each_entry_safe(dev, tmpdev, &tlist, catas_err.list) {
|
||||
struct pci_dev *pdev = dev->pdev;
|
||||
ret = __mthca_restart_one(dev->pdev);
|
||||
/* 'dev' now is not valid */
|
||||
if (ret)
|
||||
mthca_err(dev, "Reset failed (%d)\n", ret);
|
||||
else
|
||||
mthca_dbg(dev, "Reset succeeded\n");
|
||||
printk(KERN_ERR "mthca %s: Reset failed (%d)\n",
|
||||
pci_name(pdev), ret);
|
||||
else {
|
||||
struct mthca_dev *d = pci_get_drvdata(pdev);
|
||||
mthca_dbg(d, "Reset succeeded\n");
|
||||
}
|
||||
}
|
||||
|
||||
mutex_unlock(&mthca_device_mutex);
|
||||
|
@@ -1566,7 +1566,6 @@ static const struct net_device_ops nes_netdev_ops = {
|
||||
.ndo_set_mac_address = nes_netdev_set_mac_address,
|
||||
.ndo_set_multicast_list = nes_netdev_set_multicast_list,
|
||||
.ndo_change_mtu = nes_netdev_change_mtu,
|
||||
.ndo_set_mac_address = eth_mac_addr,
|
||||
.ndo_validate_addr = eth_validate_addr,
|
||||
.ndo_vlan_rx_register = nes_netdev_vlan_rx_register,
|
||||
};
|
||||
|
Reference in New Issue
Block a user