[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202212010623.w4eLJMFb-lkp@intel.com>
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