OSDN Git Service

IB/hfi1: Consolidate the creation of user TIDs
authorDean Luick <dean.luick@cornelisnetworks.com>
Mon, 9 Jan 2023 19:04:14 +0000 (14:04 -0500)
committerLeon Romanovsky <leon@kernel.org>
Tue, 10 Jan 2023 10:52:35 +0000 (12:52 +0200)
The function rcventry2tidinfo() only creates part of
a TID and all calls to it are only used to make a user
TID.  Consolidate all usage into a single routine.

Signed-off-by: Dean Luick <dean.luick@cornelisnetworks.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
Link: https://lore.kernel.org/r/167329105402.1472990.9685946655723333660.stgit@awfm-02.cornelisnetworks.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/hfi1/exp_rcv.h
drivers/infiniband/hw/hfi1/user_exp_rcv.c

index c6291bb..41f7fe5 100644 (file)
@@ -133,12 +133,13 @@ static inline struct tid_group *tid_group_pop(struct exp_tid_set *set)
        return grp;
 }
 
-static inline u32 rcventry2tidinfo(u32 rcventry)
+static inline u32 create_tid(u32 rcventry, u32 npages)
 {
        u32 pair = rcventry & ~0x1;
 
        return EXP_TID_SET(IDX, pair >> 1) |
-               EXP_TID_SET(CTRL, 1 << (rcventry - pair));
+               EXP_TID_SET(CTRL, 1 << (rcventry - pair)) |
+               EXP_TID_SET(LEN, npages);
 }
 
 /**
index b7e6282..b61c440 100644 (file)
@@ -652,8 +652,7 @@ static int program_rcvarray(struct hfi1_filedata *fd, struct tid_user_buf *tbuf,
                        return ret;
                mapped += npages;
 
-               tidinfo = rcventry2tidinfo(rcventry - uctxt->expected_base) |
-                       EXP_TID_SET(LEN, npages);
+               tidinfo = create_tid(rcventry - uctxt->expected_base, npages);
                tidlist[(*tididx)++] = tidinfo;
                grp->used++;
                grp->map |= 1 << useidx++;
@@ -853,9 +852,8 @@ static bool tid_rb_invalidate(struct mmu_interval_notifier *mni,
        spin_lock(&fdata->invalid_lock);
        if (fdata->invalid_tid_idx < uctxt->expected_count) {
                fdata->invalid_tids[fdata->invalid_tid_idx] =
-                       rcventry2tidinfo(node->rcventry - uctxt->expected_base);
-               fdata->invalid_tids[fdata->invalid_tid_idx] |=
-                       EXP_TID_SET(LEN, node->npages);
+                       create_tid(node->rcventry - uctxt->expected_base,
+                                  node->npages);
                if (!fdata->invalid_tid_idx) {
                        unsigned long *ev;