diff options
Diffstat (limited to 'drivers/infiniband/ulp/ipoib/ipoib_verbs.c')
| -rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_verbs.c | 22 |
1 files changed, 1 insertions, 21 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_verbs.c b/drivers/infiniband/ulp/ipoib/ipoib_verbs.c index b72a753eb41d..c56d5d44c53b 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_verbs.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_verbs.c | |||
| @@ -145,20 +145,10 @@ int ipoib_transport_dev_init(struct net_device *dev, struct ib_device *ca) | |||
| 145 | int ret, size; | 145 | int ret, size; |
| 146 | int i; | 146 | int i; |
| 147 | 147 | ||
| 148 | /* | ||
| 149 | * the various IPoIB tasks assume they will never race against | ||
| 150 | * themselves, so always use a single thread workqueue | ||
| 151 | */ | ||
| 152 | priv->wq = create_singlethread_workqueue("ipoib_wq"); | ||
| 153 | if (!priv->wq) { | ||
| 154 | printk(KERN_WARNING "ipoib: failed to allocate device WQ\n"); | ||
| 155 | return -ENODEV; | ||
| 156 | } | ||
| 157 | |||
| 158 | priv->pd = ib_alloc_pd(priv->ca); | 148 | priv->pd = ib_alloc_pd(priv->ca); |
| 159 | if (IS_ERR(priv->pd)) { | 149 | if (IS_ERR(priv->pd)) { |
| 160 | printk(KERN_WARNING "%s: failed to allocate PD\n", ca->name); | 150 | printk(KERN_WARNING "%s: failed to allocate PD\n", ca->name); |
| 161 | goto out_free_wq; | 151 | return -ENODEV; |
| 162 | } | 152 | } |
| 163 | 153 | ||
| 164 | priv->mr = ib_get_dma_mr(priv->pd, IB_ACCESS_LOCAL_WRITE); | 154 | priv->mr = ib_get_dma_mr(priv->pd, IB_ACCESS_LOCAL_WRITE); |
| @@ -252,10 +242,6 @@ out_free_mr: | |||
| 252 | 242 | ||
| 253 | out_free_pd: | 243 | out_free_pd: |
| 254 | ib_dealloc_pd(priv->pd); | 244 | ib_dealloc_pd(priv->pd); |
| 255 | |||
| 256 | out_free_wq: | ||
| 257 | destroy_workqueue(priv->wq); | ||
| 258 | priv->wq = NULL; | ||
| 259 | return -ENODEV; | 245 | return -ENODEV; |
| 260 | } | 246 | } |
| 261 | 247 | ||
| @@ -284,12 +270,6 @@ void ipoib_transport_dev_cleanup(struct net_device *dev) | |||
| 284 | 270 | ||
| 285 | if (ib_dealloc_pd(priv->pd)) | 271 | if (ib_dealloc_pd(priv->pd)) |
| 286 | ipoib_warn(priv, "ib_dealloc_pd failed\n"); | 272 | ipoib_warn(priv, "ib_dealloc_pd failed\n"); |
| 287 | |||
| 288 | if (priv->wq) { | ||
| 289 | flush_workqueue(priv->wq); | ||
| 290 | destroy_workqueue(priv->wq); | ||
| 291 | priv->wq = NULL; | ||
| 292 | } | ||
| 293 | } | 273 | } |
| 294 | 274 | ||
| 295 | void ipoib_event(struct ib_event_handler *handler, | 275 | void ipoib_event(struct ib_event_handler *handler, |
