[PATCH] RDMA/ionic: Replace cpu_to_be64 + le64_to_cpu with swab64

Thorsten Blum posted 1 patch 3 days, 13 hours ago
drivers/infiniband/hw/ionic/ionic_datapath.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] RDMA/ionic: Replace cpu_to_be64 + le64_to_cpu with swab64
Posted by Thorsten Blum 3 days, 13 hours ago
Replace cpu_to_be64(le64_to_cpu()) with swab64() to simplify
ionic_prep_reg().  No functional changes.

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
---
 drivers/infiniband/hw/ionic/ionic_datapath.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/infiniband/hw/ionic/ionic_datapath.c b/drivers/infiniband/hw/ionic/ionic_datapath.c
index aa2944887f23..1a1cf82d1745 100644
--- a/drivers/infiniband/hw/ionic/ionic_datapath.c
+++ b/drivers/infiniband/hw/ionic/ionic_datapath.c
@@ -1105,7 +1105,7 @@ static int ionic_prep_reg(struct ionic_qp *qp,
 	wqe->reg_mr.length = cpu_to_be64(mr->ibmr.length);
 	wqe->reg_mr.offset = ionic_pgtbl_off(&mr->buf, mr->ibmr.iova);
 	dma_addr = ionic_pgtbl_dma(&mr->buf, mr->ibmr.iova);
-	wqe->reg_mr.dma_addr = cpu_to_be64(le64_to_cpu(dma_addr));
+	wqe->reg_mr.dma_addr = swab64(dma_addr);
 
 	wqe->reg_mr.map_count = cpu_to_be32(mr->buf.tbl_pages);
 	wqe->reg_mr.flags = cpu_to_be16(flags);
-- 
Thorsten Blum <thorsten.blum@linux.dev>
GPG: 1D60 735E 8AEF 3BE4 73B6  9D84 7336 78FD 8DFE EAD4
Re: [PATCH] RDMA/ionic: Replace cpu_to_be64 + le64_to_cpu with swab64
Posted by Jason Gunthorpe 1 day, 19 hours ago
On Wed, Dec 10, 2025 at 02:14:29PM +0100, Thorsten Blum wrote:
> Replace cpu_to_be64(le64_to_cpu()) with swab64() to simplify
> ionic_prep_reg().  No functional changes.
> 
> Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
> ---
>  drivers/infiniband/hw/ionic/ionic_datapath.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/infiniband/hw/ionic/ionic_datapath.c b/drivers/infiniband/hw/ionic/ionic_datapath.c
> index aa2944887f23..1a1cf82d1745 100644
> --- a/drivers/infiniband/hw/ionic/ionic_datapath.c
> +++ b/drivers/infiniband/hw/ionic/ionic_datapath.c
> @@ -1105,7 +1105,7 @@ static int ionic_prep_reg(struct ionic_qp *qp,
>  	wqe->reg_mr.length = cpu_to_be64(mr->ibmr.length);
>  	wqe->reg_mr.offset = ionic_pgtbl_off(&mr->buf, mr->ibmr.iova);
>  	dma_addr = ionic_pgtbl_dma(&mr->buf, mr->ibmr.iova);
> -	wqe->reg_mr.dma_addr = cpu_to_be64(le64_to_cpu(dma_addr));
> +	wqe->reg_mr.dma_addr = swab64(dma_addr);

This doesn't make any sense to me. The original code looks wrong and
would fail sparse, switching to swab just highlights how nonsense it
is, there is no way that is right on BE and LE.

Pensando guys what is the right thing to do here??

Jason
Re: [PATCH] RDMA/ionic: Replace cpu_to_be64 + le64_to_cpu with swab64
Posted by Abhijit Gangurde 1 day, 17 hours ago
On 12/12/25 12:19, Jason Gunthorpe wrote:
> On Wed, Dec 10, 2025 at 02:14:29PM +0100, Thorsten Blum wrote:
>> Replace cpu_to_be64(le64_to_cpu()) with swab64() to simplify
>> ionic_prep_reg().  No functional changes.
>>
>> Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
>> ---
>>   drivers/infiniband/hw/ionic/ionic_datapath.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/infiniband/hw/ionic/ionic_datapath.c b/drivers/infiniband/hw/ionic/ionic_datapath.c
>> index aa2944887f23..1a1cf82d1745 100644
>> --- a/drivers/infiniband/hw/ionic/ionic_datapath.c
>> +++ b/drivers/infiniband/hw/ionic/ionic_datapath.c
>> @@ -1105,7 +1105,7 @@ static int ionic_prep_reg(struct ionic_qp *qp,
>>   	wqe->reg_mr.length = cpu_to_be64(mr->ibmr.length);
>>   	wqe->reg_mr.offset = ionic_pgtbl_off(&mr->buf, mr->ibmr.iova);
>>   	dma_addr = ionic_pgtbl_dma(&mr->buf, mr->ibmr.iova);
>> -	wqe->reg_mr.dma_addr = cpu_to_be64(le64_to_cpu(dma_addr));
>> +	wqe->reg_mr.dma_addr = swab64(dma_addr);
> This doesn't make any sense to me. The original code looks wrong and
> would fail sparse, switching to swab just highlights how nonsense it
> is, there is no way that is right on BE and LE.
>
> Pensando guys what is the right thing to do here??
>
> Jason

The original code does not have sparse failure. ionic_pgtbl_dma() is 
returning __le64, which is what swapped to __be64 for 
wqe->reg_me.dma_addr. However the proposed fix is definitely going to 
throw sparse warning.

Thanks,
Abhijit