[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-rdma
Subject:    Re: [PATCH 2/5] IB/hfi1: Fix AHG KDETH Intr shift
From:       "Dalessandro, Dennis" <dennis.dalessandro () intel ! com>
Date:       2016-08-31 15:26:35
Message-ID: 1472657193.2332.1.camel () intel ! com
[Download RAW message or body]

This patch should say:

From: Jubin John <jubin.john@intel.com>

Not sure why it got cut off. Let me know if you want a v2 or if you
just want to tack that on yourself.

-Denny


On Wed, 2016-08-31 at 07:24 -0700, Dennis Dalessandro wrote:
> In the set_txreq_header_ahg(), The KDETH Intr bit is obtained from
> the
> header in the user sdma request using a KDETH_GET shift and mask
> macro.
> This value is then futher right shifted by 16 causing us to lose the
> value i.e it is shifted to zero, leading to the following
> smatch warning:
> drivers/infiniband/hw/hfi1/user_sdma.c:1482 set_txreq_header_ahg()
> warn: mask and shift to zero
> 
> The Intr bit should be left shifted into its correct position in the
> KDETH header before the AHG update.
> 
> Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
> Reviewed-by: Mitko Haralanov <mitko.haralanov@intel.com>
> Reviewed-by: Harish Chegondi <harish.chegondi@intel.com>
> Signed-off-by: Jubin John <jubin.john@intel.com>
> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
> ---
>  drivers/infiniband/hw/hfi1/user_sdma.c |    5 ++++-
>  1 files changed, 4 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/infiniband/hw/hfi1/user_sdma.c
> b/drivers/infiniband/hw/hfi1/user_sdma.c
> index 0ecf279..1694037 100644
> --- a/drivers/infiniband/hw/hfi1/user_sdma.c
> +++ b/drivers/infiniband/hw/hfi1/user_sdma.c
> @@ -114,6 +114,8 @@ MODULE_PARM_DESC(sdma_comp_size, "Size of User
> SDMA completion ring. Default: 12
>  #define KDETH_HCRC_LOWER_SHIFT    24
>  #define KDETH_HCRC_LOWER_MASK     0xff
>  
> +#define AHG_KDETH_INTR_SHIFT 12
> +
>  #define PBC2LRH(x) ((((x) & 0xfff) << 2) - 4)
>  #define LRH2PBC(x) ((((x) >> 2) + 1) & 0xfff)
>  
> @@ -1480,7 +1482,8 @@ static int set_txreq_header_ahg(struct
> user_sdma_request *req,
>  		/* Clear KDETH.SH on last packet */
>  		if (unlikely(tx->flags & TXREQ_FLAGS_REQ_LAST_PKT))
> {
>  			val |= cpu_to_le16(KDETH_GET(hdr-
> >kdeth.ver_tid_offset,
> -								INTR
> ) >> 16);
> +						     INTR) <<
> +					   AHG_KDETH_INTR_SHIFT);
>  			val &= cpu_to_le16(~(1U << 13));
>  			AHG_HEADER_SET(req->ahg, diff, 7, 16, 14,
> val);
>  		} else {
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" 
> in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic