diff options
Diffstat (limited to 'drivers/infiniband/core/cm.c')
| -rw-r--r-- | drivers/infiniband/core/cm.c | 19 | 
1 files changed, 9 insertions, 10 deletions
diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c index 25b1018a476..e1990f531d0 100644 --- a/drivers/infiniband/core/cm.c +++ b/drivers/infiniband/core/cm.c @@ -101,7 +101,7 @@ struct cm_av {  };  struct cm_work { -	struct work_struct work; +	struct delayed_work work;  	struct list_head list;  	struct cm_port *port;  	struct ib_mad_recv_wc *mad_recv_wc;	/* Received MADs */ @@ -161,7 +161,7 @@ struct cm_id_private {  	atomic_t work_count;  }; -static void cm_work_handler(void *data); +static void cm_work_handler(struct work_struct *work);  static inline void cm_deref_id(struct cm_id_private *cm_id_priv)  { @@ -669,8 +669,7 @@ static struct cm_timewait_info * cm_create_timewait_info(__be32 local_id)  		return ERR_PTR(-ENOMEM);  	timewait_info->work.local_id = local_id; -	INIT_WORK(&timewait_info->work.work, cm_work_handler, -		  &timewait_info->work); +	INIT_DELAYED_WORK(&timewait_info->work.work, cm_work_handler);  	timewait_info->work.cm_event.event = IB_CM_TIMEWAIT_EXIT;  	return timewait_info;  } @@ -2987,9 +2986,9 @@ static void cm_send_handler(struct ib_mad_agent *mad_agent,  	}  } -static void cm_work_handler(void *data) +static void cm_work_handler(struct work_struct *_work)  { -	struct cm_work *work = data; +	struct cm_work *work = container_of(_work, struct cm_work, work.work);  	int ret;  	switch (work->cm_event.event) { @@ -3079,12 +3078,12 @@ int ib_cm_establish(struct ib_cm_id *cm_id)  	 * we need to find the cm_id once we're in the context of the  	 * worker thread, rather than holding a reference on it.  	 */ -	INIT_WORK(&work->work, cm_work_handler, work); +	INIT_DELAYED_WORK(&work->work, cm_work_handler);  	work->local_id = cm_id->local_id;  	work->remote_id = cm_id->remote_id;  	work->mad_recv_wc = NULL;  	work->cm_event.event = IB_CM_USER_ESTABLISHED; -	queue_work(cm.wq, &work->work); +	queue_delayed_work(cm.wq, &work->work, 0);  out:  	return ret;  } @@ -3146,11 +3145,11 @@ static void cm_recv_handler(struct ib_mad_agent *mad_agent,  		return;  	} -	INIT_WORK(&work->work, cm_work_handler, work); +	INIT_DELAYED_WORK(&work->work, cm_work_handler);  	work->cm_event.event = event;  	work->mad_recv_wc = mad_recv_wc;  	work->port = (struct cm_port *)mad_agent->context; -	queue_work(cm.wq, &work->work); +	queue_delayed_work(cm.wq, &work->work, 0);  }  static int cm_init_qp_init_attr(struct cm_id_private *cm_id_priv,  |