diff mbox

[for-next,4/5] IB/mlx5: Add Scatter FCS support for Raw Packet QP

Message ID 1460902778-5977-5-git-send-email-matanb@mellanox.com (mailing list archive)
State Accepted
Headers show

Commit Message

Matan Barak April 17, 2016, 2:19 p.m. UTC
From: Majd Dibbiny <majd@mellanox.com>

Enable Scatter FCS in the RQ context when the user passes
Scatter FCS create flag.

Signed-off-by: Majd Dibbiny <majd@mellanox.com>
Signed-off-by: Matan Barak <matanb@mellanox.com>
---
 drivers/infiniband/hw/mlx5/mlx5_ib.h |  1 +
 drivers/infiniband/hw/mlx5/qp.c      | 20 +++++++++++++++++++-
 2 files changed, 20 insertions(+), 1 deletion(-)

Comments

kernel test robot April 17, 2016, 3:10 p.m. UTC | #1
Hi Majd,

[auto build test ERROR on rdma/master]
[also build test ERROR on v4.6-rc3 next-20160415]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

url:    https://github.com/0day-ci/linux/commits/Matan-Barak/Add-scatter-FCS-support/20160417-222225
base:   https://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma master
config: tile-allmodconfig (attached as .config)
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=tile 

All errors (new ones prefixed by >>):

   drivers/infiniband/hw/mlx5/qp.c: In function 'create_raw_packet_qp_rq':
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'

vim +1056 drivers/infiniband/hw/mlx5/qp.c

  1050		MLX5_SET(rqc, rqc, state, MLX5_RQC_STATE_RST);
  1051		MLX5_SET(rqc, rqc, flush_in_error_en, 1);
  1052		MLX5_SET(rqc, rqc, user_index, MLX5_GET(qpc, qpc, user_index));
  1053		MLX5_SET(rqc, rqc, cqn, MLX5_GET(qpc, qpc, cqn_rcv));
  1054	
  1055		if (mqp->flags & MLX5_IB_QP_CAP_SCATTER_FCS)
> 1056			MLX5_SET(rqc, rqc, scatter_fcs, 1);
  1057	
  1058		wq = MLX5_ADDR_OF(rqc, rqc, wq);
  1059		MLX5_SET(wq, wq, wq_type, MLX5_WQ_TYPE_CYCLIC);

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
kernel test robot April 17, 2016, 3:32 p.m. UTC | #2
Hi Majd,

[auto build test ERROR on rdma/master]
[also build test ERROR on v4.6-rc3 next-20160415]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

url:    https://github.com/0day-ci/linux/commits/Matan-Barak/Add-scatter-FCS-support/20160417-222225
base:   https://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma master
config: xtensa-allmodconfig (attached as .config)
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=xtensa 

All error/warnings (new ones prefixed by >>):

   In file included from include/linux/mlx5/driver.h:45:0,
                    from drivers/infiniband/hw/mlx5/mlx5_ib.h:40,
                    from drivers/infiniband/hw/mlx5/qp.c:37:
   drivers/infiniband/hw/mlx5/qp.c: In function 'create_raw_packet_qp_rq':
>> include/linux/mlx5/device.h:51:80: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_off(typ, fld) ((unsigned)(unsigned long)(&(__mlx5_nullp(typ)->fld)))
                                                                                   ^
>> include/linux/mlx5/device.h:52:34: note: in expansion of macro '__mlx5_bit_off'
    #define __mlx5_dw_off(typ, fld) (__mlx5_bit_off(typ, fld) / 32)
                                     ^
>> include/linux/mlx5/device.h:70:20: note: in expansion of macro '__mlx5_dw_off'
     *((__be32 *)(p) + __mlx5_dw_off(typ, fld)) = \
                       ^
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: note: in expansion of macro 'MLX5_SET'
      MLX5_SET(rqc, rqc, scatter_fcs, 1);
      ^
   In file included from include/linux/byteorder/big_endian.h:4:0,
                    from arch/xtensa/include/uapi/asm/byteorder.h:7,
                    from arch/xtensa/include/asm/bitops.h:23,
                    from include/linux/bitops.h:36,
                    from include/linux/kernel.h:10,
                    from include/linux/list.h:8,
                    from include/linux/module.h:9,
                    from drivers/infiniband/hw/mlx5/qp.c:33:
>> include/linux/mlx5/device.h:51:80: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_off(typ, fld) ((unsigned)(unsigned long)(&(__mlx5_nullp(typ)->fld)))
                                                                                   ^
   include/uapi/linux/byteorder/big_endian.h:38:51: note: in definition of macro '__cpu_to_be32'
    #define __cpu_to_be32(x) ((__force __be32)(__u32)(x))
                                                      ^
>> include/linux/byteorder/generic.h:94:21: note: in expansion of macro '__be32_to_cpu'
    #define be32_to_cpu __be32_to_cpu
                        ^
>> include/linux/mlx5/device.h:52:34: note: in expansion of macro '__mlx5_bit_off'
    #define __mlx5_dw_off(typ, fld) (__mlx5_bit_off(typ, fld) / 32)
                                     ^
   include/linux/mlx5/device.h:71:45: note: in expansion of macro '__mlx5_dw_off'
     cpu_to_be32((be32_to_cpu(*((__be32 *)(p) + __mlx5_dw_off(typ, fld))) & \
                                                ^
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: note: in expansion of macro 'MLX5_SET'
      MLX5_SET(rqc, rqc, scatter_fcs, 1);
      ^
   include/linux/mlx5/device.h:50:57: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_sz(typ, fld) sizeof(__mlx5_nullp(typ)->fld)
                                                            ^
   include/uapi/linux/byteorder/big_endian.h:38:51: note: in definition of macro '__cpu_to_be32'
    #define __cpu_to_be32(x) ((__force __be32)(__u32)(x))
                                                      ^
>> include/linux/mlx5/device.h:55:47: note: in expansion of macro '__mlx5_bit_sz'
    #define __mlx5_mask(typ, fld) ((u32)((1ull << __mlx5_bit_sz(typ, fld)) - 1))
                                                  ^
>> include/linux/mlx5/device.h:56:35: note: in expansion of macro '__mlx5_mask'
    #define __mlx5_dw_mask(typ, fld) (__mlx5_mask(typ, fld) << __mlx5_dw_bit_off(typ, fld))
                                      ^
>> include/linux/mlx5/device.h:72:10: note: in expansion of macro '__mlx5_dw_mask'
           (~__mlx5_dw_mask(typ, fld))) | (((v) & __mlx5_mask(typ, fld)) \
             ^
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: note: in expansion of macro 'MLX5_SET'
      MLX5_SET(rqc, rqc, scatter_fcs, 1);
      ^
   include/linux/mlx5/device.h:50:57: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_sz(typ, fld) sizeof(__mlx5_nullp(typ)->fld)
                                                            ^
   include/uapi/linux/byteorder/big_endian.h:38:51: note: in definition of macro '__cpu_to_be32'
    #define __cpu_to_be32(x) ((__force __be32)(__u32)(x))
                                                      ^
   include/linux/mlx5/device.h:54:43: note: in expansion of macro '__mlx5_bit_sz'
    #define __mlx5_dw_bit_off(typ, fld) (32 - __mlx5_bit_sz(typ, fld) - (__mlx5_bit_off(typ, fld) & 0x1f))
                                              ^
>> include/linux/mlx5/device.h:56:60: note: in expansion of macro '__mlx5_dw_bit_off'
    #define __mlx5_dw_mask(typ, fld) (__mlx5_mask(typ, fld) << __mlx5_dw_bit_off(typ, fld))
                                                               ^
>> include/linux/mlx5/device.h:72:10: note: in expansion of macro '__mlx5_dw_mask'
           (~__mlx5_dw_mask(typ, fld))) | (((v) & __mlx5_mask(typ, fld)) \
             ^
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: note: in expansion of macro 'MLX5_SET'
      MLX5_SET(rqc, rqc, scatter_fcs, 1);
      ^
>> include/linux/mlx5/device.h:51:80: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_off(typ, fld) ((unsigned)(unsigned long)(&(__mlx5_nullp(typ)->fld)))
                                                                                   ^
   include/uapi/linux/byteorder/big_endian.h:38:51: note: in definition of macro '__cpu_to_be32'
    #define __cpu_to_be32(x) ((__force __be32)(__u32)(x))
                                                      ^
   include/linux/mlx5/device.h:54:70: note: in expansion of macro '__mlx5_bit_off'
    #define __mlx5_dw_bit_off(typ, fld) (32 - __mlx5_bit_sz(typ, fld) - (__mlx5_bit_off(typ, fld) & 0x1f))
                                                                         ^
>> include/linux/mlx5/device.h:56:60: note: in expansion of macro '__mlx5_dw_bit_off'
    #define __mlx5_dw_mask(typ, fld) (__mlx5_mask(typ, fld) << __mlx5_dw_bit_off(typ, fld))
                                                               ^
>> include/linux/mlx5/device.h:72:10: note: in expansion of macro '__mlx5_dw_mask'
           (~__mlx5_dw_mask(typ, fld))) | (((v) & __mlx5_mask(typ, fld)) \
             ^
>> drivers/infiniband/hw/mlx5/qp.c:1056:3: note: in expansion of macro 'MLX5_SET'
      MLX5_SET(rqc, rqc, scatter_fcs, 1);
      ^
   include/linux/mlx5/device.h:50:57: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_sz(typ, fld) sizeof(__mlx5_nullp(typ)->fld)
                                                            ^
   include/uapi/linux/byteorder/big_endian.h:38:51: note: in definition of macro '__cpu_to_be32'
    #define __cpu_to_be32(x) ((__force __be32)(__u32)(x))
                                                      ^
>> include/linux/mlx5/device.h:55:47: note: in expansion of macro '__mlx5_bit_sz'
    #define __mlx5_mask(typ, fld) ((u32)((1ull << __mlx5_bit_sz(typ, fld)) - 1))
                                                  ^
   include/linux/mlx5/device.h:72:47: note: in expansion of macro '__mlx5_mask'
           (~__mlx5_dw_mask(typ, fld))) | (((v) & __mlx5_mask(typ, fld)) \
                                                  ^

vim +51 include/linux/mlx5/device.h

e126ba97 Eli Cohen      2013-07-07  44  #else
e126ba97 Eli Cohen      2013-07-07  45  #error Host endianness not defined
e126ba97 Eli Cohen      2013-07-07  46  #endif
e126ba97 Eli Cohen      2013-07-07  47  
d29b796a Eli Cohen      2014-10-02  48  /* helper macros */
d29b796a Eli Cohen      2014-10-02  49  #define __mlx5_nullp(typ) ((struct mlx5_ifc_##typ##_bits *)0)
d29b796a Eli Cohen      2014-10-02 @50  #define __mlx5_bit_sz(typ, fld) sizeof(__mlx5_nullp(typ)->fld)
d29b796a Eli Cohen      2014-10-02 @51  #define __mlx5_bit_off(typ, fld) ((unsigned)(unsigned long)(&(__mlx5_nullp(typ)->fld)))
d29b796a Eli Cohen      2014-10-02 @52  #define __mlx5_dw_off(typ, fld) (__mlx5_bit_off(typ, fld) / 32)
d29b796a Eli Cohen      2014-10-02  53  #define __mlx5_64_off(typ, fld) (__mlx5_bit_off(typ, fld) / 64)
d29b796a Eli Cohen      2014-10-02  54  #define __mlx5_dw_bit_off(typ, fld) (32 - __mlx5_bit_sz(typ, fld) - (__mlx5_bit_off(typ, fld) & 0x1f))
d29b796a Eli Cohen      2014-10-02 @55  #define __mlx5_mask(typ, fld) ((u32)((1ull << __mlx5_bit_sz(typ, fld)) - 1))
d29b796a Eli Cohen      2014-10-02 @56  #define __mlx5_dw_mask(typ, fld) (__mlx5_mask(typ, fld) << __mlx5_dw_bit_off(typ, fld))
d29b796a Eli Cohen      2014-10-02  57  #define __mlx5_st_sz_bits(typ) sizeof(struct mlx5_ifc_##typ##_bits)
d29b796a Eli Cohen      2014-10-02  58  
d29b796a Eli Cohen      2014-10-02  59  #define MLX5_FLD_SZ_BYTES(typ, fld) (__mlx5_bit_sz(typ, fld) / 8)
d29b796a Eli Cohen      2014-10-02  60  #define MLX5_ST_SZ_BYTES(typ) (sizeof(struct mlx5_ifc_##typ##_bits) / 8)
d29b796a Eli Cohen      2014-10-02  61  #define MLX5_ST_SZ_DW(typ) (sizeof(struct mlx5_ifc_##typ##_bits) / 32)
938fe83c Saeed Mahameed 2015-05-28  62  #define MLX5_UN_SZ_BYTES(typ) (sizeof(union mlx5_ifc_##typ##_bits) / 8)
938fe83c Saeed Mahameed 2015-05-28  63  #define MLX5_UN_SZ_DW(typ) (sizeof(union mlx5_ifc_##typ##_bits) / 32)
d29b796a Eli Cohen      2014-10-02  64  #define MLX5_BYTE_OFF(typ, fld) (__mlx5_bit_off(typ, fld) / 8)
d29b796a Eli Cohen      2014-10-02  65  #define MLX5_ADDR_OF(typ, p, fld) ((char *)(p) + MLX5_BYTE_OFF(typ, fld))
d29b796a Eli Cohen      2014-10-02  66  
d29b796a Eli Cohen      2014-10-02  67  /* insert a value to a struct */
d29b796a Eli Cohen      2014-10-02  68  #define MLX5_SET(typ, p, fld, v) do { \
d29b796a Eli Cohen      2014-10-02  69  	BUILD_BUG_ON(__mlx5_st_sz_bits(typ) % 32);             \
d29b796a Eli Cohen      2014-10-02 @70  	*((__be32 *)(p) + __mlx5_dw_off(typ, fld)) = \
d29b796a Eli Cohen      2014-10-02  71  	cpu_to_be32((be32_to_cpu(*((__be32 *)(p) + __mlx5_dw_off(typ, fld))) & \
d29b796a Eli Cohen      2014-10-02 @72  		     (~__mlx5_dw_mask(typ, fld))) | (((v) & __mlx5_mask(typ, fld)) \
d29b796a Eli Cohen      2014-10-02 @73  		     << __mlx5_dw_bit_off(typ, fld))); \
d29b796a Eli Cohen      2014-10-02  74  } while (0)
d29b796a Eli Cohen      2014-10-02  75  
e281682b Saeed Mahameed 2015-05-28  76  #define MLX5_SET_TO_ONES(typ, p, fld) do { \

:::::: The code at line 51 was first introduced by commit
:::::: d29b796adada8780db3512c4a34b339f9aeef1ae net/mlx5_core: Use hardware registers description header file

:::::: TO: Eli Cohen <eli@mellanox.com>
:::::: CC: David S. Miller <davem@davemloft.net>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
kernel test robot April 17, 2016, 3:44 p.m. UTC | #3
Hi Majd,

[auto build test WARNING on rdma/master]
[also build test WARNING on v4.6-rc3 next-20160415]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

url:    https://github.com/0day-ci/linux/commits/Matan-Barak/Add-scatter-FCS-support/20160417-222225
base:   https://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma master
config: alpha-allmodconfig (attached as .config)
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=alpha 

All warnings (new ones prefixed by >>):

   In file included from include/linux/mlx5/driver.h:45:0,
                    from drivers/infiniband/hw/mlx5/mlx5_ib.h:40,
                    from drivers/infiniband/hw/mlx5/qp.c:37:
   drivers/infiniband/hw/mlx5/qp.c: In function 'create_raw_packet_qp_rq':
   include/linux/mlx5/device.h:51:80: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_off(typ, fld) ((unsigned)(unsigned long)(&(__mlx5_nullp(typ)->fld)))
                                                                                   ^
   include/linux/mlx5/device.h:52:34: note: in expansion of macro '__mlx5_bit_off'
    #define __mlx5_dw_off(typ, fld) (__mlx5_bit_off(typ, fld) / 32)
                                     ^
   include/linux/mlx5/device.h:70:20: note: in expansion of macro '__mlx5_dw_off'
     *((__be32 *)(p) + __mlx5_dw_off(typ, fld)) = \
                       ^
   drivers/infiniband/hw/mlx5/qp.c:1056:3: note: in expansion of macro 'MLX5_SET'
      MLX5_SET(rqc, rqc, scatter_fcs, 1);
      ^
   In file included from include/linux/swab.h:4:0,
                    from include/uapi/linux/byteorder/little_endian.h:12,
                    from include/linux/byteorder/little_endian.h:4,
                    from arch/alpha/include/uapi/asm/byteorder.h:4,
                    from include/asm-generic/bitops/le.h:5,
                    from arch/alpha/include/asm/bitops.h:454,
                    from include/linux/bitops.h:36,
                    from include/linux/kernel.h:10,
                    from include/linux/list.h:8,
                    from include/linux/module.h:9,
                    from drivers/infiniband/hw/mlx5/qp.c:33:
   include/linux/mlx5/device.h:51:80: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_off(typ, fld) ((unsigned)(unsigned long)(&(__mlx5_nullp(typ)->fld)))
                                                                                   ^
   include/uapi/linux/swab.h:115:32: note: in definition of macro '__swab32'
     (__builtin_constant_p((__u32)(x)) ? \
                                   ^
>> include/linux/byteorder/generic.h:93:21: note: in expansion of macro '__cpu_to_be32'
    #define cpu_to_be32 __cpu_to_be32
                        ^
>> include/uapi/linux/byteorder/little_endian.h:39:26: note: in expansion of macro '__swab32'
    #define __be32_to_cpu(x) __swab32((__force __u32)(__be32)(x))
                             ^
   include/linux/byteorder/generic.h:94:21: note: in expansion of macro '__be32_to_cpu'
    #define be32_to_cpu __be32_to_cpu
                        ^
   include/linux/mlx5/device.h:52:34: note: in expansion of macro '__mlx5_bit_off'
    #define __mlx5_dw_off(typ, fld) (__mlx5_bit_off(typ, fld) / 32)
                                     ^
   include/linux/mlx5/device.h:71:45: note: in expansion of macro '__mlx5_dw_off'
     cpu_to_be32((be32_to_cpu(*((__be32 *)(p) + __mlx5_dw_off(typ, fld))) & \
                                                ^
   drivers/infiniband/hw/mlx5/qp.c:1056:3: note: in expansion of macro 'MLX5_SET'
      MLX5_SET(rqc, rqc, scatter_fcs, 1);
      ^
   include/linux/mlx5/device.h:51:80: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_off(typ, fld) ((unsigned)(unsigned long)(&(__mlx5_nullp(typ)->fld)))
                                                                                   ^
   include/uapi/linux/swab.h:115:32: note: in definition of macro '__swab32'
     (__builtin_constant_p((__u32)(x)) ? \
                                   ^
>> include/linux/byteorder/generic.h:93:21: note: in expansion of macro '__cpu_to_be32'
    #define cpu_to_be32 __cpu_to_be32
                        ^
>> include/uapi/linux/swab.h:116:2: note: in expansion of macro '___constant_swab32'
     ___constant_swab32(x) :   \
     ^
>> include/uapi/linux/byteorder/little_endian.h:39:26: note: in expansion of macro '__swab32'
    #define __be32_to_cpu(x) __swab32((__force __u32)(__be32)(x))
                             ^
   include/linux/byteorder/generic.h:94:21: note: in expansion of macro '__be32_to_cpu'
    #define be32_to_cpu __be32_to_cpu
                        ^
   include/linux/mlx5/device.h:52:34: note: in expansion of macro '__mlx5_bit_off'
    #define __mlx5_dw_off(typ, fld) (__mlx5_bit_off(typ, fld) / 32)
                                     ^
   include/linux/mlx5/device.h:71:45: note: in expansion of macro '__mlx5_dw_off'
     cpu_to_be32((be32_to_cpu(*((__be32 *)(p) + __mlx5_dw_off(typ, fld))) & \
                                                ^
   drivers/infiniband/hw/mlx5/qp.c:1056:3: note: in expansion of macro 'MLX5_SET'
      MLX5_SET(rqc, rqc, scatter_fcs, 1);
      ^
   include/linux/mlx5/device.h:51:80: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_off(typ, fld) ((unsigned)(unsigned long)(&(__mlx5_nullp(typ)->fld)))
                                                                                   ^
   include/uapi/linux/swab.h:115:32: note: in definition of macro '__swab32'
     (__builtin_constant_p((__u32)(x)) ? \
                                   ^
>> include/linux/byteorder/generic.h:93:21: note: in expansion of macro '__cpu_to_be32'
    #define cpu_to_be32 __cpu_to_be32
                        ^
>> include/uapi/linux/swab.h:116:2: note: in expansion of macro '___constant_swab32'
     ___constant_swab32(x) :   \
     ^
>> include/uapi/linux/byteorder/little_endian.h:39:26: note: in expansion of macro '__swab32'
    #define __be32_to_cpu(x) __swab32((__force __u32)(__be32)(x))
                             ^
   include/linux/byteorder/generic.h:94:21: note: in expansion of macro '__be32_to_cpu'
    #define be32_to_cpu __be32_to_cpu
                        ^
   include/linux/mlx5/device.h:52:34: note: in expansion of macro '__mlx5_bit_off'
    #define __mlx5_dw_off(typ, fld) (__mlx5_bit_off(typ, fld) / 32)
                                     ^
   include/linux/mlx5/device.h:71:45: note: in expansion of macro '__mlx5_dw_off'
     cpu_to_be32((be32_to_cpu(*((__be32 *)(p) + __mlx5_dw_off(typ, fld))) & \
                                                ^
   drivers/infiniband/hw/mlx5/qp.c:1056:3: note: in expansion of macro 'MLX5_SET'
      MLX5_SET(rqc, rqc, scatter_fcs, 1);
      ^
   include/linux/mlx5/device.h:51:80: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_off(typ, fld) ((unsigned)(unsigned long)(&(__mlx5_nullp(typ)->fld)))
                                                                                   ^
   include/uapi/linux/swab.h:115:32: note: in definition of macro '__swab32'
     (__builtin_constant_p((__u32)(x)) ? \
                                   ^
>> include/linux/byteorder/generic.h:93:21: note: in expansion of macro '__cpu_to_be32'
    #define cpu_to_be32 __cpu_to_be32
                        ^
>> include/uapi/linux/swab.h:116:2: note: in expansion of macro '___constant_swab32'
     ___constant_swab32(x) :   \
     ^
>> include/uapi/linux/byteorder/little_endian.h:39:26: note: in expansion of macro '__swab32'
    #define __be32_to_cpu(x) __swab32((__force __u32)(__be32)(x))
                             ^
   include/linux/byteorder/generic.h:94:21: note: in expansion of macro '__be32_to_cpu'
    #define be32_to_cpu __be32_to_cpu
                        ^
   include/linux/mlx5/device.h:52:34: note: in expansion of macro '__mlx5_bit_off'
    #define __mlx5_dw_off(typ, fld) (__mlx5_bit_off(typ, fld) / 32)
                                     ^
   include/linux/mlx5/device.h:71:45: note: in expansion of macro '__mlx5_dw_off'
     cpu_to_be32((be32_to_cpu(*((__be32 *)(p) + __mlx5_dw_off(typ, fld))) & \
                                                ^
   drivers/infiniband/hw/mlx5/qp.c:1056:3: note: in expansion of macro 'MLX5_SET'
      MLX5_SET(rqc, rqc, scatter_fcs, 1);
      ^
   include/linux/mlx5/device.h:51:80: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_off(typ, fld) ((unsigned)(unsigned long)(&(__mlx5_nullp(typ)->fld)))
                                                                                   ^
   include/uapi/linux/swab.h:115:32: note: in definition of macro '__swab32'
     (__builtin_constant_p((__u32)(x)) ? \
                                   ^
>> include/linux/byteorder/generic.h:93:21: note: in expansion of macro '__cpu_to_be32'
    #define cpu_to_be32 __cpu_to_be32
                        ^
>> include/uapi/linux/swab.h:116:2: note: in expansion of macro '___constant_swab32'
     ___constant_swab32(x) :   \
     ^
>> include/uapi/linux/byteorder/little_endian.h:39:26: note: in expansion of macro '__swab32'
    #define __be32_to_cpu(x) __swab32((__force __u32)(__be32)(x))
                             ^
   include/linux/byteorder/generic.h:94:21: note: in expansion of macro '__be32_to_cpu'
    #define be32_to_cpu __be32_to_cpu
                        ^
   include/linux/mlx5/device.h:52:34: note: in expansion of macro '__mlx5_bit_off'
    #define __mlx5_dw_off(typ, fld) (__mlx5_bit_off(typ, fld) / 32)
                                     ^
   include/linux/mlx5/device.h:71:45: note: in expansion of macro '__mlx5_dw_off'
     cpu_to_be32((be32_to_cpu(*((__be32 *)(p) + __mlx5_dw_off(typ, fld))) & \
                                                ^
   drivers/infiniband/hw/mlx5/qp.c:1056:3: note: in expansion of macro 'MLX5_SET'
      MLX5_SET(rqc, rqc, scatter_fcs, 1);
      ^
   include/linux/mlx5/device.h:51:80: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_off(typ, fld) ((unsigned)(unsigned long)(&(__mlx5_nullp(typ)->fld)))
                                                                                   ^
   include/uapi/linux/swab.h:115:32: note: in definition of macro '__swab32'
     (__builtin_constant_p((__u32)(x)) ? \
                                   ^
>> include/linux/byteorder/generic.h:93:21: note: in expansion of macro '__cpu_to_be32'
    #define cpu_to_be32 __cpu_to_be32
                        ^
>> include/uapi/linux/byteorder/little_endian.h:39:26: note: in expansion of macro '__swab32'
    #define __be32_to_cpu(x) __swab32((__force __u32)(__be32)(x))
                             ^
   include/linux/byteorder/generic.h:94:21: note: in expansion of macro '__be32_to_cpu'
    #define be32_to_cpu __be32_to_cpu
                        ^
   include/linux/mlx5/device.h:52:34: note: in expansion of macro '__mlx5_bit_off'
    #define __mlx5_dw_off(typ, fld) (__mlx5_bit_off(typ, fld) / 32)
                                     ^
   include/linux/mlx5/device.h:71:45: note: in expansion of macro '__mlx5_dw_off'
     cpu_to_be32((be32_to_cpu(*((__be32 *)(p) + __mlx5_dw_off(typ, fld))) & \
                                                ^
   drivers/infiniband/hw/mlx5/qp.c:1056:3: note: in expansion of macro 'MLX5_SET'
      MLX5_SET(rqc, rqc, scatter_fcs, 1);
      ^
   include/linux/mlx5/device.h:50:57: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_sz(typ, fld) sizeof(__mlx5_nullp(typ)->fld)
                                                            ^
   include/uapi/linux/swab.h:115:32: note: in definition of macro '__swab32'
     (__builtin_constant_p((__u32)(x)) ? \
                                   ^
>> include/linux/byteorder/generic.h:93:21: note: in expansion of macro '__cpu_to_be32'
    #define cpu_to_be32 __cpu_to_be32
                        ^
   include/linux/mlx5/device.h:55:47: note: in expansion of macro '__mlx5_bit_sz'
    #define __mlx5_mask(typ, fld) ((u32)((1ull << __mlx5_bit_sz(typ, fld)) - 1))
                                                  ^
   include/linux/mlx5/device.h:56:35: note: in expansion of macro '__mlx5_mask'
    #define __mlx5_dw_mask(typ, fld) (__mlx5_mask(typ, fld) << __mlx5_dw_bit_off(typ, fld))
                                      ^
   include/linux/mlx5/device.h:72:10: note: in expansion of macro '__mlx5_dw_mask'
           (~__mlx5_dw_mask(typ, fld))) | (((v) & __mlx5_mask(typ, fld)) \
             ^
   drivers/infiniband/hw/mlx5/qp.c:1056:3: note: in expansion of macro 'MLX5_SET'
      MLX5_SET(rqc, rqc, scatter_fcs, 1);
      ^
   include/linux/mlx5/device.h:50:57: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_sz(typ, fld) sizeof(__mlx5_nullp(typ)->fld)
                                                            ^
   include/uapi/linux/swab.h:115:32: note: in definition of macro '__swab32'
     (__builtin_constant_p((__u32)(x)) ? \
                                   ^
>> include/linux/byteorder/generic.h:93:21: note: in expansion of macro '__cpu_to_be32'
    #define cpu_to_be32 __cpu_to_be32
                        ^
   include/linux/mlx5/device.h:54:43: note: in expansion of macro '__mlx5_bit_sz'
    #define __mlx5_dw_bit_off(typ, fld) (32 - __mlx5_bit_sz(typ, fld) - (__mlx5_bit_off(typ, fld) & 0x1f))
                                              ^
   include/linux/mlx5/device.h:56:60: note: in expansion of macro '__mlx5_dw_bit_off'
    #define __mlx5_dw_mask(typ, fld) (__mlx5_mask(typ, fld) << __mlx5_dw_bit_off(typ, fld))
                                                               ^
   include/linux/mlx5/device.h:72:10: note: in expansion of macro '__mlx5_dw_mask'
           (~__mlx5_dw_mask(typ, fld))) | (((v) & __mlx5_mask(typ, fld)) \
             ^
   drivers/infiniband/hw/mlx5/qp.c:1056:3: note: in expansion of macro 'MLX5_SET'
      MLX5_SET(rqc, rqc, scatter_fcs, 1);
      ^
   include/linux/mlx5/device.h:51:80: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_off(typ, fld) ((unsigned)(unsigned long)(&(__mlx5_nullp(typ)->fld)))
                                                                                   ^
   include/uapi/linux/swab.h:115:32: note: in definition of macro '__swab32'
     (__builtin_constant_p((__u32)(x)) ? \
                                   ^
>> include/linux/byteorder/generic.h:93:21: note: in expansion of macro '__cpu_to_be32'
    #define cpu_to_be32 __cpu_to_be32
                        ^
   include/linux/mlx5/device.h:54:70: note: in expansion of macro '__mlx5_bit_off'
    #define __mlx5_dw_bit_off(typ, fld) (32 - __mlx5_bit_sz(typ, fld) - (__mlx5_bit_off(typ, fld) & 0x1f))
                                                                         ^
   include/linux/mlx5/device.h:56:60: note: in expansion of macro '__mlx5_dw_bit_off'
    #define __mlx5_dw_mask(typ, fld) (__mlx5_mask(typ, fld) << __mlx5_dw_bit_off(typ, fld))
                                                               ^
   include/linux/mlx5/device.h:72:10: note: in expansion of macro '__mlx5_dw_mask'
           (~__mlx5_dw_mask(typ, fld))) | (((v) & __mlx5_mask(typ, fld)) \
             ^
   drivers/infiniband/hw/mlx5/qp.c:1056:3: note: in expansion of macro 'MLX5_SET'
      MLX5_SET(rqc, rqc, scatter_fcs, 1);
      ^
   include/linux/mlx5/device.h:50:57: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_sz(typ, fld) sizeof(__mlx5_nullp(typ)->fld)
                                                            ^
   include/uapi/linux/swab.h:115:32: note: in definition of macro '__swab32'
     (__builtin_constant_p((__u32)(x)) ? \
                                   ^
>> include/linux/byteorder/generic.h:93:21: note: in expansion of macro '__cpu_to_be32'
    #define cpu_to_be32 __cpu_to_be32
                        ^
   include/linux/mlx5/device.h:55:47: note: in expansion of macro '__mlx5_bit_sz'
    #define __mlx5_mask(typ, fld) ((u32)((1ull << __mlx5_bit_sz(typ, fld)) - 1))
                                                  ^
   include/linux/mlx5/device.h:72:47: note: in expansion of macro '__mlx5_mask'
           (~__mlx5_dw_mask(typ, fld))) | (((v) & __mlx5_mask(typ, fld)) \
                                                  ^
   drivers/infiniband/hw/mlx5/qp.c:1056:3: note: in expansion of macro 'MLX5_SET'
      MLX5_SET(rqc, rqc, scatter_fcs, 1);
      ^
   include/linux/mlx5/device.h:50:57: error: 'struct mlx5_ifc_rqc_bits' has no member named 'scatter_fcs'
    #define __mlx5_bit_sz(typ, fld) sizeof(__mlx5_nullp(typ)->fld)
                                                            ^
   include/uapi/linux/swab.h:115:32: note: in definition of macro '__swab32'
     (__builtin_constant_p((__u32)(x)) ? \
                                   ^

vim +/__cpu_to_be32 +93 include/linux/byteorder/generic.h

^1da177e Linus Torvalds 2005-04-16   77   *	cpu_to_[bl]eXXs(__uXX x)
^1da177e Linus Torvalds 2005-04-16   78   *	[bl]eXX_to_cpus(__uXX x)
^1da177e Linus Torvalds 2005-04-16   79   *
^1da177e Linus Torvalds 2005-04-16   80   * See asm-foo/byteorder.h for examples of how to provide
^1da177e Linus Torvalds 2005-04-16   81   * architecture-optimized versions
^1da177e Linus Torvalds 2005-04-16   82   *
^1da177e Linus Torvalds 2005-04-16   83   */
^1da177e Linus Torvalds 2005-04-16   84  
^1da177e Linus Torvalds 2005-04-16   85  #define cpu_to_le64 __cpu_to_le64
^1da177e Linus Torvalds 2005-04-16   86  #define le64_to_cpu __le64_to_cpu
^1da177e Linus Torvalds 2005-04-16   87  #define cpu_to_le32 __cpu_to_le32
^1da177e Linus Torvalds 2005-04-16   88  #define le32_to_cpu __le32_to_cpu
^1da177e Linus Torvalds 2005-04-16   89  #define cpu_to_le16 __cpu_to_le16
^1da177e Linus Torvalds 2005-04-16   90  #define le16_to_cpu __le16_to_cpu
^1da177e Linus Torvalds 2005-04-16   91  #define cpu_to_be64 __cpu_to_be64
^1da177e Linus Torvalds 2005-04-16   92  #define be64_to_cpu __be64_to_cpu
^1da177e Linus Torvalds 2005-04-16  @93  #define cpu_to_be32 __cpu_to_be32
^1da177e Linus Torvalds 2005-04-16   94  #define be32_to_cpu __be32_to_cpu
^1da177e Linus Torvalds 2005-04-16   95  #define cpu_to_be16 __cpu_to_be16
^1da177e Linus Torvalds 2005-04-16   96  #define be16_to_cpu __be16_to_cpu
^1da177e Linus Torvalds 2005-04-16   97  #define cpu_to_le64p __cpu_to_le64p
^1da177e Linus Torvalds 2005-04-16   98  #define le64_to_cpup __le64_to_cpup
^1da177e Linus Torvalds 2005-04-16   99  #define cpu_to_le32p __cpu_to_le32p
^1da177e Linus Torvalds 2005-04-16  100  #define le32_to_cpup __le32_to_cpup
^1da177e Linus Torvalds 2005-04-16  101  #define cpu_to_le16p __cpu_to_le16p

:::::: The code at line 93 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
diff mbox

Patch

diff --git a/drivers/infiniband/hw/mlx5/mlx5_ib.h b/drivers/infiniband/hw/mlx5/mlx5_ib.h
index f16c818..ac23780 100644
--- a/drivers/infiniband/hw/mlx5/mlx5_ib.h
+++ b/drivers/infiniband/hw/mlx5/mlx5_ib.h
@@ -356,6 +356,7 @@  enum mlx5_ib_qp_flags {
 	MLX5_IB_QP_SIGNATURE_HANDLING           = 1 << 5,
 	/* QP uses 1 as its source QP number */
 	MLX5_IB_QP_SQPN_QP1			= 1 << 6,
+	MLX5_IB_QP_CAP_SCATTER_FCS		= 1 << 7,
 };
 
 struct mlx5_umr_wr {
diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c
index 8dee8bc..5041176 100644
--- a/drivers/infiniband/hw/mlx5/qp.c
+++ b/drivers/infiniband/hw/mlx5/qp.c
@@ -1028,6 +1028,7 @@  static int get_rq_pas_size(void *qpc)
 static int create_raw_packet_qp_rq(struct mlx5_ib_dev *dev,
 				   struct mlx5_ib_rq *rq, void *qpin)
 {
+	struct mlx5_ib_qp *mqp = rq->base.container_mibqp;
 	__be64 *pas;
 	__be64 *qp_pas;
 	void *in;
@@ -1051,6 +1052,9 @@  static int create_raw_packet_qp_rq(struct mlx5_ib_dev *dev,
 	MLX5_SET(rqc, rqc, user_index, MLX5_GET(qpc, qpc, user_index));
 	MLX5_SET(rqc, rqc, cqn, MLX5_GET(qpc, qpc, cqn_rcv));
 
+	if (mqp->flags & MLX5_IB_QP_CAP_SCATTER_FCS)
+		MLX5_SET(rqc, rqc, scatter_fcs, 1);
+
 	wq = MLX5_ADDR_OF(rqc, rqc, wq);
 	MLX5_SET(wq, wq, wq_type, MLX5_WQ_TYPE_CYCLIC);
 	MLX5_SET(wq, wq, end_padding_mode,
@@ -1136,11 +1140,12 @@  static int create_raw_packet_qp(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
 	}
 
 	if (qp->rq.wqe_cnt) {
+		rq->base.container_mibqp = qp;
+
 		err = create_raw_packet_qp_rq(dev, rq, in);
 		if (err)
 			goto err_destroy_sq;
 
-		rq->base.container_mibqp = qp;
 
 		err = create_raw_packet_qp_tir(dev, rq, tdn);
 		if (err)
@@ -1252,6 +1257,19 @@  static int create_qp_common(struct mlx5_ib_dev *dev, struct ib_pd *pd,
 			return -EOPNOTSUPP;
 		}
 
+	if (init_attr->create_flags & IB_QP_CREATE_SCATTER_FCS) {
+		if (init_attr->qp_type != IB_QPT_RAW_PACKET) {
+			mlx5_ib_dbg(dev, "Scatter FCS is supported only for Raw Packet QPs");
+			return -EOPNOTSUPP;
+		}
+		if (!MLX5_CAP_GEN(dev->mdev, eth_net_offloads) ||
+		    !MLX5_CAP_ETH(dev->mdev, scatter_fcs)) {
+			mlx5_ib_dbg(dev, "Scatter FCS isn't supported\n");
+			return -EOPNOTSUPP;
+		}
+		qp->flags |= MLX5_IB_QP_CAP_SCATTER_FCS;
+	}
+
 	if (init_attr->sq_sig_type == IB_SIGNAL_ALL_WR)
 		qp->sq_signal_bits = MLX5_WQE_CTRL_CQ_UPDATE;