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);
|
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_dev *rxe = to_rdev(qp->ibqp.device);
|
||||||
struct rxe_send_wqe *wqe = NULL;
|
struct rxe_send_wqe *wqe = NULL;
|
||||||
struct sk_buff *skb = 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);
|
void rxe_dealloc(struct ib_device *ib_dev);
|
||||||
|
|
||||||
int rxe_completer(void *arg);
|
int rxe_completer(struct rxe_qp *qp);
|
||||||
int rxe_requester(void *arg);
|
int rxe_requester(struct rxe_qp *qp);
|
||||||
int rxe_responder(void *arg);
|
int rxe_responder(struct rxe_qp *qp);
|
||||||
|
|
||||||
/* rxe_icrc.c */
|
/* rxe_icrc.c */
|
||||||
int rxe_icrc_init(struct rxe_dev *rxe);
|
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;
|
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_dev *rxe = to_rdev(qp->ibqp.device);
|
||||||
struct rxe_pkt_info pkt;
|
struct rxe_pkt_info pkt;
|
||||||
struct sk_buff *skb;
|
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);
|
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);
|
struct rxe_dev *rxe = to_rdev(qp->ibqp.device);
|
||||||
enum resp_states state;
|
enum resp_states state;
|
||||||
struct rxe_pkt_info *pkt = NULL;
|
struct rxe_pkt_info *pkt = NULL;
|
||||||
|
|
|
@ -11,7 +11,7 @@ int __rxe_do_task(struct rxe_task *task)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
while ((ret = task->func(task->arg)) == 0)
|
while ((ret = task->func(task->qp)) == 0)
|
||||||
;
|
;
|
||||||
|
|
||||||
task->ret = ret;
|
task->ret = ret;
|
||||||
|
@ -29,7 +29,7 @@ static void do_task(struct tasklet_struct *t)
|
||||||
int cont;
|
int cont;
|
||||||
int ret;
|
int ret;
|
||||||
struct rxe_task *task = from_tasklet(task, t, tasklet);
|
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;
|
unsigned int iterations = RXE_MAX_ITERATIONS;
|
||||||
|
|
||||||
spin_lock_bh(&task->lock);
|
spin_lock_bh(&task->lock);
|
||||||
|
@ -54,7 +54,7 @@ static void do_task(struct tasklet_struct *t)
|
||||||
|
|
||||||
do {
|
do {
|
||||||
cont = 0;
|
cont = 0;
|
||||||
ret = task->func(task->arg);
|
ret = task->func(task->qp);
|
||||||
|
|
||||||
spin_lock_bh(&task->lock);
|
spin_lock_bh(&task->lock);
|
||||||
switch (task->state) {
|
switch (task->state) {
|
||||||
|
@ -91,9 +91,10 @@ static void do_task(struct tasklet_struct *t)
|
||||||
task->ret = ret;
|
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->func = func;
|
||||||
task->destroyed = false;
|
task->destroyed = false;
|
||||||
|
|
||||||
|
|
|
@ -22,18 +22,19 @@ struct rxe_task {
|
||||||
struct tasklet_struct tasklet;
|
struct tasklet_struct tasklet;
|
||||||
int state;
|
int state;
|
||||||
spinlock_t lock;
|
spinlock_t lock;
|
||||||
void *arg;
|
struct rxe_qp *qp;
|
||||||
int (*func)(void *arg);
|
int (*func)(struct rxe_qp *qp);
|
||||||
int ret;
|
int ret;
|
||||||
bool destroyed;
|
bool destroyed;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* init rxe_task structure
|
* init rxe_task structure
|
||||||
* arg => parameter to pass to fcn
|
* qp => parameter to pass to func
|
||||||
* func => function to call until it returns != 0
|
* 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 */
|
/* cleanup task */
|
||||||
void rxe_cleanup_task(struct rxe_task *task);
|
void rxe_cleanup_task(struct rxe_task *task);
|
||||||
|
|
Loading…
Reference in New Issue