lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 1 Dec 2022 06:29:39 +0800
From:   kernel test robot <lkp@...el.com>
To:     Stanislav Fomichev <sdf@...gle.com>, bpf@...r.kernel.org
Cc:     oe-kbuild-all@...ts.linux.dev, ast@...nel.org,
        daniel@...earbox.net, andrii@...nel.org, martin.lau@...ux.dev,
        song@...nel.org, yhs@...com, john.fastabend@...il.com,
        kpsingh@...nel.org, sdf@...gle.com, haoluo@...gle.com,
        jolsa@...nel.org,
        Toke Høiland-Jørgensen <toke@...hat.com>,
        Saeed Mahameed <saeedm@...dia.com>,
        David Ahern <dsahern@...il.com>,
        Jakub Kicinski <kuba@...nel.org>,
        Willem de Bruijn <willemb@...gle.com>,
        Jesper Dangaard Brouer <brouer@...hat.com>,
        Anatoly Burakov <anatoly.burakov@...el.com>,
        Alexander Lobakin <alexandr.lobakin@...el.com>,
        Magnus Karlsson <magnus.karlsson@...il.com>,
        Maryam Tahhan <mtahhan@...hat.com>, xdp-hints@...-project.net,
        netdev@...r.kernel.org
Subject: Re: [PATCH bpf-next v3 10/11] mlx5: Support RX XDP metadata

Hi Stanislav,

I love your patch! Perhaps something to improve:

[auto build test WARNING on bpf-next/master]

url:    https://github.com/intel-lab-lkp/linux/commits/Stanislav-Fomichev/xdp-hints-via-kfuncs/20221130-092141
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
patch link:    https://lore.kernel.org/r/20221129193452.3448944-11-sdf%40google.com
patch subject: [PATCH bpf-next v3 10/11] mlx5: Support RX XDP metadata
config: x86_64-allyesconfig
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
reproduce (this is a W=1 build):
        # https://github.com/intel-lab-lkp/linux/commit/2c58eefabc23df0888018d4ae3947270ed005c46
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Stanislav-Fomichev/xdp-hints-via-kfuncs/20221130-092141
        git checkout 2c58eefabc23df0888018d4ae3947270ed005c46
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/net/ethernet/mellanox/mlx5/core/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@...el.com>

All warnings (new ones prefixed by >>):

   In file included from include/net/sock.h:62,
                    from include/linux/tcp.h:19,
                    from include/linux/ipv6.h:93,
                    from drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:34:
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c: In function 'mlx5e_handle_rx_cqe_rep':
>> drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1821:39: warning: passing argument 3 of 'mlx5e_skb_from_cqe_linear' makes pointer from integer without a cast [-Wint-conversion]
    1821 |                               rq, wi, cqe_bcnt);
         |                                       ^~~~~~~~
         |                                       |
         |                                       u32 {aka unsigned int}
   include/linux/indirect_call_wrapper.h:23:38: note: in definition of macro 'INDIRECT_CALL_2'
      23 |                 likely(f == f2) ? f2(__VA_ARGS__) :                     \
         |                                      ^~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1575:46: note: expected 'struct mlx5_cqe64 *' but argument is of type 'u32' {aka 'unsigned int'}
    1575 |                           struct mlx5_cqe64 *cqe, u32 cqe_bcnt)
         |                           ~~~~~~~~~~~~~~~~~~~^~~
   In file included from include/net/sock.h:62,
                    from include/linux/tcp.h:19,
                    from include/linux/ipv6.h:93,
                    from drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:34:
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1819:31: error: too few arguments to function 'mlx5e_skb_from_cqe_linear'
    1819 |                               mlx5e_skb_from_cqe_linear,
         |                               ^~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/indirect_call_wrapper.h:23:35: note: in definition of macro 'INDIRECT_CALL_2'
      23 |                 likely(f == f2) ? f2(__VA_ARGS__) :                     \
         |                                   ^~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1574:1: note: declared here
    1574 | mlx5e_skb_from_cqe_linear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from include/net/sock.h:62,
                    from include/linux/tcp.h:19,
                    from include/linux/ipv6.h:93,
                    from drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:34:
>> drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1821:39: warning: passing argument 3 of 'mlx5e_skb_from_cqe_nonlinear' makes pointer from integer without a cast [-Wint-conversion]
    1821 |                               rq, wi, cqe_bcnt);
         |                                       ^~~~~~~~
         |                                       |
         |                                       u32 {aka unsigned int}
   include/linux/indirect_call_wrapper.h:19:38: note: in definition of macro 'INDIRECT_CALL_1'
      19 |                 likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__);     \
         |                                      ^~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1818:15: note: in expansion of macro 'INDIRECT_CALL_2'
    1818 |         skb = INDIRECT_CALL_2(rq->wqe.skb_from_cqe,
         |               ^~~~~~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1621:49: note: expected 'struct mlx5_cqe64 *' but argument is of type 'u32' {aka 'unsigned int'}
    1621 |                              struct mlx5_cqe64 *cqe, u32 cqe_bcnt)
         |                              ~~~~~~~~~~~~~~~~~~~^~~
   In file included from include/net/sock.h:62,
                    from include/linux/tcp.h:19,
                    from include/linux/ipv6.h:93,
                    from drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:34:
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1820:31: error: too few arguments to function 'mlx5e_skb_from_cqe_nonlinear'
    1820 |                               mlx5e_skb_from_cqe_nonlinear,
         |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/indirect_call_wrapper.h:19:35: note: in definition of macro 'INDIRECT_CALL_1'
      19 |                 likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__);     \
         |                                   ^~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1818:15: note: in expansion of macro 'INDIRECT_CALL_2'
    1818 |         skb = INDIRECT_CALL_2(rq->wqe.skb_from_cqe,
         |               ^~~~~~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1620:1: note: declared here
    1620 | mlx5e_skb_from_cqe_nonlinear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from include/net/sock.h:62,
                    from include/linux/tcp.h:19,
                    from include/linux/ipv6.h:93,
                    from drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:34:
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1821:39: warning: passing argument 3 of 'rq-><Ue4c0>.wqe.skb_from_cqe' makes pointer from integer without a cast [-Wint-conversion]
    1821 |                               rq, wi, cqe_bcnt);
         |                                       ^~~~~~~~
         |                                       |
         |                                       u32 {aka unsigned int}
   include/linux/indirect_call_wrapper.h:19:55: note: in definition of macro 'INDIRECT_CALL_1'
      19 |                 likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__);     \
         |                                                       ^~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1818:15: note: in expansion of macro 'INDIRECT_CALL_2'
    1818 |         skb = INDIRECT_CALL_2(rq->wqe.skb_from_cqe,
         |               ^~~~~~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1821:39: note: expected 'struct mlx5_cqe64 *' but argument is of type 'u32' {aka 'unsigned int'}
    1821 |                               rq, wi, cqe_bcnt);
         |                                       ^~~~~~~~
   include/linux/indirect_call_wrapper.h:19:55: note: in definition of macro 'INDIRECT_CALL_1'
      19 |                 likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__);     \
         |                                                       ^~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1818:15: note: in expansion of macro 'INDIRECT_CALL_2'
    1818 |         skb = INDIRECT_CALL_2(rq->wqe.skb_from_cqe,
         |               ^~~~~~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1818:31: error: too few arguments to function 'rq-><Ue4c0>.wqe.skb_from_cqe'
    1818 |         skb = INDIRECT_CALL_2(rq->wqe.skb_from_cqe,
         |                               ^~
   include/linux/indirect_call_wrapper.h:19:53: note: in definition of macro 'INDIRECT_CALL_1'
      19 |                 likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__);     \
         |                                                     ^
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1818:15: note: in expansion of macro 'INDIRECT_CALL_2'
    1818 |         skb = INDIRECT_CALL_2(rq->wqe.skb_from_cqe,
         |               ^~~~~~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c: In function 'mlx5e_handle_rx_cqe_mpwrq_rep':
>> drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1880:39: warning: passing argument 3 of 'mlx5e_skb_from_cqe_mpwrq_linear' makes pointer from integer without a cast [-Wint-conversion]
    1880 |                               rq, wi, cqe_bcnt, head_offset, page_idx);
         |                                       ^~~~~~~~
         |                                       |
         |                                       u16 {aka short unsigned int}
   include/linux/indirect_call_wrapper.h:23:38: note: in definition of macro 'INDIRECT_CALL_2'
      23 |                 likely(f == f2) ? f2(__VA_ARGS__) :                     \
         |                                      ^~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:65:52: note: expected 'struct mlx5_cqe64 *' but argument is of type 'u16' {aka 'short unsigned int'}
      65 |                                 struct mlx5_cqe64 *cqe, u16 cqe_bcnt, u32 head_offset,
         |                                 ~~~~~~~~~~~~~~~~~~~^~~
   In file included from include/net/sock.h:62,
                    from include/linux/tcp.h:19,
                    from include/linux/ipv6.h:93,
                    from drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:34:
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1878:31: error: too few arguments to function 'mlx5e_skb_from_cqe_mpwrq_linear'
    1878 |                               mlx5e_skb_from_cqe_mpwrq_linear,
         |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/indirect_call_wrapper.h:23:35: note: in definition of macro 'INDIRECT_CALL_2'
      23 |                 likely(f == f2) ? f2(__VA_ARGS__) :                     \
         |                                   ^~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:64:1: note: declared here
      64 | mlx5e_skb_from_cqe_mpwrq_linear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from include/net/sock.h:62,
                    from include/linux/tcp.h:19,
                    from include/linux/ipv6.h:93,
                    from drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:34:
>> drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1880:39: warning: passing argument 3 of 'mlx5e_skb_from_cqe_mpwrq_nonlinear' makes pointer from integer without a cast [-Wint-conversion]
    1880 |                               rq, wi, cqe_bcnt, head_offset, page_idx);
         |                                       ^~~~~~~~
         |                                       |
         |                                       u16 {aka short unsigned int}
   include/linux/indirect_call_wrapper.h:19:38: note: in definition of macro 'INDIRECT_CALL_1'
      19 |                 likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__);     \
         |                                      ^~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1877:15: note: in expansion of macro 'INDIRECT_CALL_2'
    1877 |         skb = INDIRECT_CALL_2(rq->mpwqe.skb_from_cqe_mpwrq,
         |               ^~~~~~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:69:55: note: expected 'struct mlx5_cqe64 *' but argument is of type 'u16' {aka 'short unsigned int'}
      69 |                                    struct mlx5_cqe64 *cqe, u16 cqe_bcnt, u32 head_offset,
         |                                    ~~~~~~~~~~~~~~~~~~~^~~
   In file included from include/net/sock.h:62,
                    from include/linux/tcp.h:19,
                    from include/linux/ipv6.h:93,
                    from drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:34:
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1879:31: error: too few arguments to function 'mlx5e_skb_from_cqe_mpwrq_nonlinear'
    1879 |                               mlx5e_skb_from_cqe_mpwrq_nonlinear,
         |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/indirect_call_wrapper.h:19:35: note: in definition of macro 'INDIRECT_CALL_1'
      19 |                 likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__);     \
         |                                   ^~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1877:15: note: in expansion of macro 'INDIRECT_CALL_2'
    1877 |         skb = INDIRECT_CALL_2(rq->mpwqe.skb_from_cqe_mpwrq,
         |               ^~~~~~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:68:1: note: declared here
      68 | mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from include/net/sock.h:62,
                    from include/linux/tcp.h:19,
                    from include/linux/ipv6.h:93,
                    from drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:34:
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1880:39: warning: passing argument 3 of 'rq-><Ue4c0>.mpwqe.skb_from_cqe_mpwrq' makes pointer from integer without a cast [-Wint-conversion]
    1880 |                               rq, wi, cqe_bcnt, head_offset, page_idx);
         |                                       ^~~~~~~~
         |                                       |
         |                                       u16 {aka short unsigned int}
   include/linux/indirect_call_wrapper.h:19:55: note: in definition of macro 'INDIRECT_CALL_1'
      19 |                 likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__);     \
         |                                                       ^~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1877:15: note: in expansion of macro 'INDIRECT_CALL_2'
    1877 |         skb = INDIRECT_CALL_2(rq->mpwqe.skb_from_cqe_mpwrq,
         |               ^~~~~~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1880:39: note: expected 'struct mlx5_cqe64 *' but argument is of type 'u16' {aka 'short unsigned int'}
    1880 |                               rq, wi, cqe_bcnt, head_offset, page_idx);
         |                                       ^~~~~~~~
   include/linux/indirect_call_wrapper.h:19:55: note: in definition of macro 'INDIRECT_CALL_1'
      19 |                 likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__);     \
         |                                                       ^~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1877:15: note: in expansion of macro 'INDIRECT_CALL_2'
    1877 |         skb = INDIRECT_CALL_2(rq->mpwqe.skb_from_cqe_mpwrq,
         |               ^~~~~~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1877:31: error: too few arguments to function 'rq-><Ue4c0>.mpwqe.skb_from_cqe_mpwrq'
    1877 |         skb = INDIRECT_CALL_2(rq->mpwqe.skb_from_cqe_mpwrq,
         |                               ^~
   include/linux/indirect_call_wrapper.h:19:53: note: in definition of macro 'INDIRECT_CALL_1'
      19 |                 likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__);     \
         |                                                     ^
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1877:15: note: in expansion of macro 'INDIRECT_CALL_2'
    1877 |         skb = INDIRECT_CALL_2(rq->mpwqe.skb_from_cqe_mpwrq,
         |               ^~~~~~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c: In function 'mlx5i_handle_rx_cqe':
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:2488:39: warning: passing argument 3 of 'mlx5e_skb_from_cqe_linear' makes pointer from integer without a cast [-Wint-conversion]
    2488 |                               rq, wi, cqe_bcnt);
         |                                       ^~~~~~~~
         |                                       |
         |                                       u32 {aka unsigned int}
   include/linux/indirect_call_wrapper.h:23:38: note: in definition of macro 'INDIRECT_CALL_2'
      23 |                 likely(f == f2) ? f2(__VA_ARGS__) :                     \
         |                                      ^~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1575:46: note: expected 'struct mlx5_cqe64 *' but argument is of type 'u32' {aka 'unsigned int'}
    1575 |                           struct mlx5_cqe64 *cqe, u32 cqe_bcnt)
         |                           ~~~~~~~~~~~~~~~~~~~^~~
   In file included from include/net/sock.h:62,
                    from include/linux/tcp.h:19,
                    from include/linux/ipv6.h:93,
                    from drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:34:
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:2486:31: error: too few arguments to function 'mlx5e_skb_from_cqe_linear'
    2486 |                               mlx5e_skb_from_cqe_linear,
         |                               ^~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/indirect_call_wrapper.h:23:35: note: in definition of macro 'INDIRECT_CALL_2'
      23 |                 likely(f == f2) ? f2(__VA_ARGS__) :                     \
         |                                   ^~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1574:1: note: declared here
    1574 | mlx5e_skb_from_cqe_linear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi,
         | ^~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from include/net/sock.h:62,
                    from include/linux/tcp.h:19,
                    from include/linux/ipv6.h:93,
                    from drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:34:
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:2488:39: warning: passing argument 3 of 'mlx5e_skb_from_cqe_nonlinear' makes pointer from integer without a cast [-Wint-conversion]
    2488 |                               rq, wi, cqe_bcnt);
         |                                       ^~~~~~~~
         |                                       |
         |                                       u32 {aka unsigned int}
   include/linux/indirect_call_wrapper.h:19:38: note: in definition of macro 'INDIRECT_CALL_1'
      19 |                 likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__);     \
         |                                      ^~~~~~~~~~~
   drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:2485:15: note: in expansion of macro 'INDIRECT_CALL_2'


vim +/mlx5e_skb_from_cqe_linear +1821 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c

e586b3b0baee89 Amir Vadai         2015-05-28  1795  
e80541ecabd57b Saeed Mahameed     2017-06-05  1796  #ifdef CONFIG_MLX5_ESWITCH
5adf4c475aaa03 Tariq Toukan       2020-04-30  1797  static void mlx5e_handle_rx_cqe_rep(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe)
f5f82476090fd2 Or Gerlitz         2016-09-22  1798  {
f5f82476090fd2 Or Gerlitz         2016-09-22  1799  	struct net_device *netdev = rq->netdev;
f5f82476090fd2 Or Gerlitz         2016-09-22  1800  	struct mlx5e_priv *priv = netdev_priv(netdev);
1d447a39142e0e Saeed Mahameed     2017-04-24  1801  	struct mlx5e_rep_priv *rpriv  = priv->ppriv;
1d447a39142e0e Saeed Mahameed     2017-04-24  1802  	struct mlx5_eswitch_rep *rep = rpriv->rep;
99cbfa93a6122b Tariq Toukan       2018-04-02  1803  	struct mlx5_wq_cyc *wq = &rq->wqe.wq;
accd58833237d4 Tariq Toukan       2017-01-29  1804  	struct mlx5e_wqe_frag_info *wi;
f5f82476090fd2 Or Gerlitz         2016-09-22  1805  	struct sk_buff *skb;
f5f82476090fd2 Or Gerlitz         2016-09-22  1806  	u32 cqe_bcnt;
99cbfa93a6122b Tariq Toukan       2018-04-02  1807  	u16 ci;
f5f82476090fd2 Or Gerlitz         2016-09-22  1808  
99cbfa93a6122b Tariq Toukan       2018-04-02  1809  	ci       = mlx5_wq_cyc_ctr2ix(wq, be16_to_cpu(cqe->wqe_counter));
99cbfa93a6122b Tariq Toukan       2018-04-02  1810  	wi       = get_frag(rq, ci);
f5f82476090fd2 Or Gerlitz         2016-09-22  1811  	cqe_bcnt = be32_to_cpu(cqe->byte_cnt);
f5f82476090fd2 Or Gerlitz         2016-09-22  1812  
0a35ab3e138296 Saeed Mahameed     2019-06-14  1813  	if (unlikely(MLX5E_RX_ERR_CQE(cqe))) {
5dd29f40b25f91 Gal Pressman       2021-12-22  1814  		mlx5e_handle_rx_err_cqe(rq, cqe);
0a35ab3e138296 Saeed Mahameed     2019-06-14  1815  		goto free_wqe;
0a35ab3e138296 Saeed Mahameed     2019-06-14  1816  	}
0a35ab3e138296 Saeed Mahameed     2019-06-14  1817  
2901a5c618dd18 Tariq Toukan       2020-04-30  1818  	skb = INDIRECT_CALL_2(rq->wqe.skb_from_cqe,
2901a5c618dd18 Tariq Toukan       2020-04-30  1819  			      mlx5e_skb_from_cqe_linear,
2901a5c618dd18 Tariq Toukan       2020-04-30  1820  			      mlx5e_skb_from_cqe_nonlinear,
84a137f051a571 Maxim Mikityanskiy 2022-01-20 @1821  			      rq, wi, cqe_bcnt);
accd58833237d4 Tariq Toukan       2017-01-29  1822  	if (!skb) {
069d11465a802a Tariq Toukan       2018-05-02  1823  		/* probably for XDP */
121e89275471dc Tariq Toukan       2017-12-12  1824  		if (__test_and_clear_bit(MLX5E_RQ_FLAG_XDP_XMIT, rq->flags)) {
069d11465a802a Tariq Toukan       2018-05-02  1825  			/* do not return page to cache,
069d11465a802a Tariq Toukan       2018-05-02  1826  			 * it will be returned on XDP_TX completion.
069d11465a802a Tariq Toukan       2018-05-02  1827  			 */
99cbfa93a6122b Tariq Toukan       2018-04-02  1828  			goto wq_cyc_pop;
accd58833237d4 Tariq Toukan       2017-01-29  1829  		}
069d11465a802a Tariq Toukan       2018-05-02  1830  		goto free_wqe;
accd58833237d4 Tariq Toukan       2017-01-29  1831  	}
f5f82476090fd2 Or Gerlitz         2016-09-22  1832  
f5f82476090fd2 Or Gerlitz         2016-09-22  1833  	mlx5e_complete_rx_cqe(rq, cqe, cqe_bcnt, skb);
f5f82476090fd2 Or Gerlitz         2016-09-22  1834  
f5f82476090fd2 Or Gerlitz         2016-09-22  1835  	if (rep->vlan && skb_vlan_tag_present(skb))
f5f82476090fd2 Or Gerlitz         2016-09-22  1836  		skb_vlan_pop(skb);
f5f82476090fd2 Or Gerlitz         2016-09-22  1837  
28e7606fa8f106 Ariel Levkovich    2021-10-26  1838  	mlx5e_rep_tc_receive(cqe, rq, skb);
b8ce90370977db Paul Blakey        2020-02-16  1839  
069d11465a802a Tariq Toukan       2018-05-02  1840  free_wqe:
cb5189d173097a Tariq Toukan       2018-06-12  1841  	mlx5e_free_rx_wqe(rq, wi, true);
99cbfa93a6122b Tariq Toukan       2018-04-02  1842  wq_cyc_pop:
99cbfa93a6122b Tariq Toukan       2018-04-02  1843  	mlx5_wq_cyc_pop(wq);
f5f82476090fd2 Or Gerlitz         2016-09-22  1844  }
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1845  
5adf4c475aaa03 Tariq Toukan       2020-04-30  1846  static void mlx5e_handle_rx_cqe_mpwrq_rep(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe)
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1847  {
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1848  	u16 cstrides       = mpwrq_get_cqe_consumed_strides(cqe);
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1849  	u16 wqe_id         = be16_to_cpu(cqe->wqe_id);
258e655c00734d Maxim Mikityanskiy 2022-09-27  1850  	struct mlx5e_mpw_info *wi = mlx5e_get_mpw_info(rq, wqe_id);
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1851  	u16 stride_ix      = mpwrq_get_cqe_stride_index(cqe);
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1852  	u32 wqe_offset     = stride_ix << rq->mpwqe.log_stride_sz;
997ce6affe264e Maxim Mikityanskiy 2022-09-27  1853  	u32 head_offset    = wqe_offset & ((1 << rq->mpwqe.page_shift) - 1);
997ce6affe264e Maxim Mikityanskiy 2022-09-27  1854  	u32 page_idx       = wqe_offset >> rq->mpwqe.page_shift;
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1855  	struct mlx5e_rx_wqe_ll *wqe;
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1856  	struct mlx5_wq_ll *wq;
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1857  	struct sk_buff *skb;
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1858  	u16 cqe_bcnt;
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1859  
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1860  	wi->consumed_strides += cstrides;
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1861  
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1862  	if (unlikely(MLX5E_RX_ERR_CQE(cqe))) {
5dd29f40b25f91 Gal Pressman       2021-12-22  1863  		mlx5e_handle_rx_err_cqe(rq, cqe);
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1864  		goto mpwrq_cqe_out;
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1865  	}
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1866  
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1867  	if (unlikely(mpwrq_is_filler_cqe(cqe))) {
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1868  		struct mlx5e_rq_stats *stats = rq->stats;
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1869  
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1870  		stats->mpwqe_filler_cqes++;
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1871  		stats->mpwqe_filler_strides += cstrides;
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1872  		goto mpwrq_cqe_out;
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1873  	}
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1874  
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1875  	cqe_bcnt = mpwrq_get_cqe_byte_cnt(cqe);
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1876  
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1877  	skb = INDIRECT_CALL_2(rq->mpwqe.skb_from_cqe_mpwrq,
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1878  			      mlx5e_skb_from_cqe_mpwrq_linear,
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1879  			      mlx5e_skb_from_cqe_mpwrq_nonlinear,
dfd9e7500cd4b2 Paul Blakey        2020-02-16 @1880  			      rq, wi, cqe_bcnt, head_offset, page_idx);
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1881  	if (!skb)
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1882  		goto mpwrq_cqe_out;
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1883  
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1884  	mlx5e_complete_rx_cqe(rq, cqe, cqe_bcnt, skb);
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1885  
28e7606fa8f106 Ariel Levkovich    2021-10-26  1886  	mlx5e_rep_tc_receive(cqe, rq, skb);
b8ce90370977db Paul Blakey        2020-02-16  1887  
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1888  mpwrq_cqe_out:
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1889  	if (likely(wi->consumed_strides < rq->mpwqe.num_strides))
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1890  		return;
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1891  
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1892  	wq  = &rq->mpwqe.wq;
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1893  	wqe = mlx5_wq_ll_get_wqe(wq, wqe_id);
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1894  	mlx5e_free_rx_mpwqe(rq, wi, true);
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1895  	mlx5_wq_ll_pop(wq, cqe->wqe_id, &wqe->next.next_wqe_index);
dfd9e7500cd4b2 Paul Blakey        2020-02-16  1896  }
5adf4c475aaa03 Tariq Toukan       2020-04-30  1897  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

View attachment "config" of type "text/plain" (292604 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ