diff options
| -rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib.h | 1 | ||||
| -rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_cm.c | 18 | ||||
| -rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_ib.c | 6 | ||||
| -rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_main.c | 19 | ||||
| -rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 26 | ||||
| -rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_verbs.c | 22 |
6 files changed, 58 insertions, 34 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h b/drivers/infiniband/ulp/ipoib/ipoib.h index f4c1b20b23b2..45fd10a72ec1 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib.h +++ b/drivers/infiniband/ulp/ipoib/ipoib.h | |||
| @@ -323,6 +323,7 @@ struct ipoib_dev_priv { | |||
| 323 | struct list_head multicast_list; | 323 | struct list_head multicast_list; |
| 324 | struct rb_root multicast_tree; | 324 | struct rb_root multicast_tree; |
| 325 | 325 | ||
| 326 | struct workqueue_struct *wq; | ||
| 326 | struct delayed_work mcast_task; | 327 | struct delayed_work mcast_task; |
| 327 | struct work_struct carrier_on_task; | 328 | struct work_struct carrier_on_task; |
| 328 | struct work_struct flush_light; | 329 | struct work_struct flush_light; |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c index 933efcea0d03..56959adb6c7d 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c | |||
| @@ -474,7 +474,7 @@ static int ipoib_cm_req_handler(struct ib_cm_id *cm_id, struct ib_cm_event *even | |||
| 474 | } | 474 | } |
| 475 | 475 | ||
| 476 | spin_lock_irq(&priv->lock); | 476 | spin_lock_irq(&priv->lock); |
| 477 | queue_delayed_work(ipoib_workqueue, | 477 | queue_delayed_work(priv->wq, |
| 478 | &priv->cm.stale_task, IPOIB_CM_RX_DELAY); | 478 | &priv->cm.stale_task, IPOIB_CM_RX_DELAY); |
| 479 | /* Add this entry to passive ids list head, but do not re-add it | 479 | /* Add this entry to passive ids list head, but do not re-add it |
| 480 | * if IB_EVENT_QP_LAST_WQE_REACHED has moved it to flush list. */ | 480 | * if IB_EVENT_QP_LAST_WQE_REACHED has moved it to flush list. */ |
| @@ -576,7 +576,7 @@ void ipoib_cm_handle_rx_wc(struct net_device *dev, struct ib_wc *wc) | |||
| 576 | spin_lock_irqsave(&priv->lock, flags); | 576 | spin_lock_irqsave(&priv->lock, flags); |
| 577 | list_splice_init(&priv->cm.rx_drain_list, &priv->cm.rx_reap_list); | 577 | list_splice_init(&priv->cm.rx_drain_list, &priv->cm.rx_reap_list); |
| 578 | ipoib_cm_start_rx_drain(priv); | 578 | ipoib_cm_start_rx_drain(priv); |
| 579 | queue_work(ipoib_workqueue, &priv->cm.rx_reap_task); | 579 | queue_work(priv->wq, &priv->cm.rx_reap_task); |
| 580 | spin_unlock_irqrestore(&priv->lock, flags); | 580 | spin_unlock_irqrestore(&priv->lock, flags); |
| 581 | } else | 581 | } else |
| 582 | ipoib_warn(priv, "cm recv completion event with wrid %d (> %d)\n", | 582 | ipoib_warn(priv, "cm recv completion event with wrid %d (> %d)\n", |
| @@ -603,7 +603,7 @@ void ipoib_cm_handle_rx_wc(struct net_device *dev, struct ib_wc *wc) | |||
| 603 | spin_lock_irqsave(&priv->lock, flags); | 603 | spin_lock_irqsave(&priv->lock, flags); |
| 604 | list_move(&p->list, &priv->cm.rx_reap_list); | 604 | list_move(&p->list, &priv->cm.rx_reap_list); |
| 605 | spin_unlock_irqrestore(&priv->lock, flags); | 605 | spin_unlock_irqrestore(&priv->lock, flags); |
| 606 | queue_work(ipoib_workqueue, &priv->cm.rx_reap_task); | 606 | queue_work(priv->wq, &priv->cm.rx_reap_task); |
| 607 | } | 607 | } |
| 608 | return; | 608 | return; |
| 609 | } | 609 | } |
| @@ -827,7 +827,7 @@ void ipoib_cm_handle_tx_wc(struct net_device *dev, struct ib_wc *wc) | |||
| 827 | 827 | ||
| 828 | if (test_and_clear_bit(IPOIB_FLAG_INITIALIZED, &tx->flags)) { | 828 | if (test_and_clear_bit(IPOIB_FLAG_INITIALIZED, &tx->flags)) { |
| 829 | list_move(&tx->list, &priv->cm.reap_list); | 829 | list_move(&tx->list, &priv->cm.reap_list); |
| 830 | queue_work(ipoib_workqueue, &priv->cm.reap_task); | 830 | queue_work(priv->wq, &priv->cm.reap_task); |
| 831 | } | 831 | } |
| 832 | 832 | ||
| 833 | clear_bit(IPOIB_FLAG_OPER_UP, &tx->flags); | 833 | clear_bit(IPOIB_FLAG_OPER_UP, &tx->flags); |
| @@ -1255,7 +1255,7 @@ static int ipoib_cm_tx_handler(struct ib_cm_id *cm_id, | |||
| 1255 | 1255 | ||
| 1256 | if (test_and_clear_bit(IPOIB_FLAG_INITIALIZED, &tx->flags)) { | 1256 | if (test_and_clear_bit(IPOIB_FLAG_INITIALIZED, &tx->flags)) { |
| 1257 | list_move(&tx->list, &priv->cm.reap_list); | 1257 | list_move(&tx->list, &priv->cm.reap_list); |
| 1258 | queue_work(ipoib_workqueue, &priv->cm.reap_task); | 1258 | queue_work(priv->wq, &priv->cm.reap_task); |
| 1259 | } | 1259 | } |
| 1260 | 1260 | ||
| 1261 | spin_unlock_irqrestore(&priv->lock, flags); | 1261 | spin_unlock_irqrestore(&priv->lock, flags); |
| @@ -1284,7 +1284,7 @@ struct ipoib_cm_tx *ipoib_cm_create_tx(struct net_device *dev, struct ipoib_path | |||
| 1284 | tx->dev = dev; | 1284 | tx->dev = dev; |
| 1285 | list_add(&tx->list, &priv->cm.start_list); | 1285 | list_add(&tx->list, &priv->cm.start_list); |
| 1286 | set_bit(IPOIB_FLAG_INITIALIZED, &tx->flags); | 1286 | set_bit(IPOIB_FLAG_INITIALIZED, &tx->flags); |
| 1287 | queue_work(ipoib_workqueue, &priv->cm.start_task); | 1287 | queue_work(priv->wq, &priv->cm.start_task); |
| 1288 | return tx; | 1288 | return tx; |
| 1289 | } | 1289 | } |
| 1290 | 1290 | ||
| @@ -1295,7 +1295,7 @@ void ipoib_cm_destroy_tx(struct ipoib_cm_tx *tx) | |||
| 1295 | if (test_and_clear_bit(IPOIB_FLAG_INITIALIZED, &tx->flags)) { | 1295 | if (test_and_clear_bit(IPOIB_FLAG_INITIALIZED, &tx->flags)) { |
| 1296 | spin_lock_irqsave(&priv->lock, flags); | 1296 | spin_lock_irqsave(&priv->lock, flags); |
| 1297 | list_move(&tx->list, &priv->cm.reap_list); | 1297 | list_move(&tx->list, &priv->cm.reap_list); |
| 1298 | queue_work(ipoib_workqueue, &priv->cm.reap_task); | 1298 | queue_work(priv->wq, &priv->cm.reap_task); |
| 1299 | ipoib_dbg(priv, "Reap connection for gid %pI6\n", | 1299 | ipoib_dbg(priv, "Reap connection for gid %pI6\n", |
| 1300 | tx->neigh->daddr + 4); | 1300 | tx->neigh->daddr + 4); |
| 1301 | tx->neigh = NULL; | 1301 | tx->neigh = NULL; |
| @@ -1417,7 +1417,7 @@ void ipoib_cm_skb_too_long(struct net_device *dev, struct sk_buff *skb, | |||
| 1417 | 1417 | ||
| 1418 | skb_queue_tail(&priv->cm.skb_queue, skb); | 1418 | skb_queue_tail(&priv->cm.skb_queue, skb); |
| 1419 | if (e) | 1419 | if (e) |
| 1420 | queue_work(ipoib_workqueue, &priv->cm.skb_task); | 1420 | queue_work(priv->wq, &priv->cm.skb_task); |
| 1421 | } | 1421 | } |
| 1422 | 1422 | ||
| 1423 | static void ipoib_cm_rx_reap(struct work_struct *work) | 1423 | static void ipoib_cm_rx_reap(struct work_struct *work) |
| @@ -1450,7 +1450,7 @@ static void ipoib_cm_stale_task(struct work_struct *work) | |||
| 1450 | } | 1450 | } |
| 1451 | 1451 | ||
| 1452 | if (!list_empty(&priv->cm.passive_ids)) | 1452 | if (!list_empty(&priv->cm.passive_ids)) |
| 1453 | queue_delayed_work(ipoib_workqueue, | 1453 | queue_delayed_work(priv->wq, |
| 1454 | &priv->cm.stale_task, IPOIB_CM_RX_DELAY); | 1454 | &priv->cm.stale_task, IPOIB_CM_RX_DELAY); |
| 1455 | spin_unlock_irq(&priv->lock); | 1455 | spin_unlock_irq(&priv->lock); |
| 1456 | } | 1456 | } |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/drivers/infiniband/ulp/ipoib/ipoib_ib.c index 72626c348174..bfd17d41b5f2 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c | |||
| @@ -655,7 +655,7 @@ void ipoib_reap_ah(struct work_struct *work) | |||
| 655 | __ipoib_reap_ah(dev); | 655 | __ipoib_reap_ah(dev); |
| 656 | 656 | ||
| 657 | if (!test_bit(IPOIB_STOP_REAPER, &priv->flags)) | 657 | if (!test_bit(IPOIB_STOP_REAPER, &priv->flags)) |
| 658 | queue_delayed_work(ipoib_workqueue, &priv->ah_reap_task, | 658 | queue_delayed_work(priv->wq, &priv->ah_reap_task, |
| 659 | round_jiffies_relative(HZ)); | 659 | round_jiffies_relative(HZ)); |
| 660 | } | 660 | } |
| 661 | 661 | ||
| @@ -696,7 +696,7 @@ int ipoib_ib_dev_open(struct net_device *dev, int flush) | |||
| 696 | } | 696 | } |
| 697 | 697 | ||
| 698 | clear_bit(IPOIB_STOP_REAPER, &priv->flags); | 698 | clear_bit(IPOIB_STOP_REAPER, &priv->flags); |
| 699 | queue_delayed_work(ipoib_workqueue, &priv->ah_reap_task, | 699 | queue_delayed_work(priv->wq, &priv->ah_reap_task, |
| 700 | round_jiffies_relative(HZ)); | 700 | round_jiffies_relative(HZ)); |
| 701 | 701 | ||
| 702 | if (!test_and_set_bit(IPOIB_FLAG_INITIALIZED, &priv->flags)) | 702 | if (!test_and_set_bit(IPOIB_FLAG_INITIALIZED, &priv->flags)) |
| @@ -881,7 +881,7 @@ timeout: | |||
| 881 | set_bit(IPOIB_STOP_REAPER, &priv->flags); | 881 | set_bit(IPOIB_STOP_REAPER, &priv->flags); |
| 882 | cancel_delayed_work(&priv->ah_reap_task); | 882 | cancel_delayed_work(&priv->ah_reap_task); |
| 883 | if (flush) | 883 | if (flush) |
| 884 | flush_workqueue(ipoib_workqueue); | 884 | flush_workqueue(priv->wq); |
| 885 | 885 | ||
| 886 | begin = jiffies; | 886 | begin = jiffies; |
| 887 | 887 | ||
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c index 2cf81ef51412..42e5c278f489 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c | |||
| @@ -839,7 +839,7 @@ static void ipoib_set_mcast_list(struct net_device *dev) | |||
| 839 | return; | 839 | return; |
| 840 | } | 840 | } |
| 841 | 841 | ||
| 842 | queue_work(ipoib_workqueue, &priv->restart_task); | 842 | queue_work(priv->wq, &priv->restart_task); |
| 843 | } | 843 | } |
| 844 | 844 | ||
| 845 | static u32 ipoib_addr_hash(struct ipoib_neigh_hash *htbl, u8 *daddr) | 845 | static u32 ipoib_addr_hash(struct ipoib_neigh_hash *htbl, u8 *daddr) |
| @@ -954,7 +954,7 @@ static void ipoib_reap_neigh(struct work_struct *work) | |||
