Commit 3946fc2a authored by Bob Pearson's avatar Bob Pearson Committed by Jason Gunthorpe
Browse files

RDMA/rxe: Convert tasklet args to queue pairs

Originally is was thought that the tasklet machinery in rxe_task.c would
be used in other applications but that has not happened for years. This
patch replaces the 'void *arg' by struct 'rxe_qp *qp' in the parameters to
the tasklet calls. This change will have no affect on performance but may
make the code a little clearer.

Link: https://lore.kernel.org/r/20230304174533.11296-2-rpearsonhpe@gmail.com


Signed-off-by: default avatarBob Pearson <rpearsonhpe@gmail.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
parent 5bf944f2
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -575,9 +575,8 @@ static void free_pkt(struct rxe_pkt_info *pkt)
	ib_device_put(dev);
}

int rxe_completer(void *arg)
int rxe_completer(struct rxe_qp *qp)
{
	struct rxe_qp *qp = (struct rxe_qp *)arg;
	struct rxe_dev *rxe = to_rdev(qp->ibqp.device);
	struct rxe_send_wqe *wqe = NULL;
	struct sk_buff *skb = NULL;
+3 −3
Original line number Diff line number Diff line
@@ -170,9 +170,9 @@ void rxe_srq_cleanup(struct rxe_pool_elem *elem);

void rxe_dealloc(struct ib_device *ib_dev);

int rxe_completer(void *arg);
int rxe_requester(void *arg);
int rxe_responder(void *arg);
int rxe_completer(struct rxe_qp *qp);
int rxe_requester(struct rxe_qp *qp);
int rxe_responder(struct rxe_qp *qp);

/* rxe_icrc.c */
int rxe_icrc_init(struct rxe_dev *rxe);
+1 −2
Original line number Diff line number Diff line
@@ -635,9 +635,8 @@ static int rxe_do_local_ops(struct rxe_qp *qp, struct rxe_send_wqe *wqe)
	return 0;
}

int rxe_requester(void *arg)
int rxe_requester(struct rxe_qp *qp)
{
	struct rxe_qp *qp = (struct rxe_qp *)arg;
	struct rxe_dev *rxe = to_rdev(qp->ibqp.device);
	struct rxe_pkt_info pkt;
	struct sk_buff *skb;
+1 −2
Original line number Diff line number Diff line
@@ -1443,9 +1443,8 @@ static void rxe_drain_req_pkts(struct rxe_qp *qp, bool notify)
		queue_advance_consumer(q, q->type);
}

int rxe_responder(void *arg)
int rxe_responder(struct rxe_qp *qp)
{
	struct rxe_qp *qp = (struct rxe_qp *)arg;
	struct rxe_dev *rxe = to_rdev(qp->ibqp.device);
	enum resp_states state;
	struct rxe_pkt_info *pkt = NULL;
+6 −5
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@ int __rxe_do_task(struct rxe_task *task)
{
	int ret;

	while ((ret = task->func(task->arg)) == 0)
	while ((ret = task->func(task->qp)) == 0)
		;

	task->ret = ret;
@@ -29,7 +29,7 @@ static void do_task(struct tasklet_struct *t)
	int cont;
	int ret;
	struct rxe_task *task = from_tasklet(task, t, tasklet);
	struct rxe_qp *qp = (struct rxe_qp *)task->arg;
	struct rxe_qp *qp = (struct rxe_qp *)task->qp;
	unsigned int iterations = RXE_MAX_ITERATIONS;

	spin_lock_bh(&task->lock);
@@ -54,7 +54,7 @@ static void do_task(struct tasklet_struct *t)

	do {
		cont = 0;
		ret = task->func(task->arg);
		ret = task->func(task->qp);

		spin_lock_bh(&task->lock);
		switch (task->state) {
@@ -91,9 +91,10 @@ static void do_task(struct tasklet_struct *t)
	task->ret = ret;
}

int rxe_init_task(struct rxe_task *task, void *arg, int (*func)(void *))
int rxe_init_task(struct rxe_task *task, struct rxe_qp *qp,
		  int (*func)(struct rxe_qp *))
{
	task->arg	= arg;
	task->qp	= qp;
	task->func	= func;
	task->destroyed	= false;

Loading