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: Bob Pearson <rpearsonhpe@gmail.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
parent
5bf944f241
commit
3946fc2a42
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -22,18 +22,19 @@ struct rxe_task {
|
|||
struct tasklet_struct tasklet;
|
||||
int state;
|
||||
spinlock_t lock;
|
||||
void *arg;
|
||||
int (*func)(void *arg);
|
||||
struct rxe_qp *qp;
|
||||
int (*func)(struct rxe_qp *qp);
|
||||
int ret;
|
||||
bool destroyed;
|
||||
};
|
||||
|
||||
/*
|
||||
* init rxe_task structure
|
||||
* arg => parameter to pass to fcn
|
||||
* qp => parameter to pass to func
|
||||
* func => function to call until it returns != 0
|
||||
*/
|
||||
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 *));
|
||||
|
||||
/* cleanup task */
|
||||
void rxe_cleanup_task(struct rxe_task *task);
|
||||
|
|
Loading…
Reference in New Issue