Hi Stanislav, I love your patch! Yet something to improve: [auto build test ERROR 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: i386-allmodconfig compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # 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 COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 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 All errors (new ones prefixed by >>): >> drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1818:8: error: too few arguments to function call, expected 4, have 3 skb = INDIRECT_CALL_2(rq->wqe.skb_from_cqe, ^ include/linux/indirect_call_wrapper.h:23:35: note: expanded from macro 'INDIRECT_CALL_2' likely(f == f2) ? f2(__VA_ARGS__) : \ ~~ ^ drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1574:1: note: 'mlx5e_skb_from_cqe_linear' declared here mlx5e_skb_from_cqe_linear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi, ^ >> drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1818:8: error: too few arguments to function call, expected 4, have 3 skb = INDIRECT_CALL_2(rq->wqe.skb_from_cqe, ^ include/linux/indirect_call_wrapper.h:24:7: note: expanded from macro 'INDIRECT_CALL_2' INDIRECT_CALL_1(f, f1, __VA_ARGS__); \ ^ ~~ include/linux/indirect_call_wrapper.h:19:35: note: expanded from macro 'INDIRECT_CALL_1' likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__); \ ~~ ^ drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1620:1: note: 'mlx5e_skb_from_cqe_nonlinear' declared here mlx5e_skb_from_cqe_nonlinear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi, ^ >> drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1818:8: error: too few arguments to function call, expected 4, have 3 skb = INDIRECT_CALL_2(rq->wqe.skb_from_cqe, ^ ~~~~~~~~~~~~~~~~~~~~ include/linux/indirect_call_wrapper.h:24:7: note: expanded from macro 'INDIRECT_CALL_2' INDIRECT_CALL_1(f, f1, __VA_ARGS__); \ ^ ~ include/linux/indirect_call_wrapper.h:19:52: note: expanded from macro 'INDIRECT_CALL_1' likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__); \ ~ ^ drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1877:8: error: too few arguments to function call, expected 6, have 5 skb = INDIRECT_CALL_2(rq->mpwqe.skb_from_cqe_mpwrq, ^ include/linux/indirect_call_wrapper.h:23:35: note: expanded from macro 'INDIRECT_CALL_2' likely(f == f2) ? f2(__VA_ARGS__) : \ ~~ ^ drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:64:1: note: 'mlx5e_skb_from_cqe_mpwrq_linear' declared here mlx5e_skb_from_cqe_mpwrq_linear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi, ^ drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1877:8: error: too few arguments to function call, expected 6, have 5 skb = INDIRECT_CALL_2(rq->mpwqe.skb_from_cqe_mpwrq, ^ include/linux/indirect_call_wrapper.h:24:7: note: expanded from macro 'INDIRECT_CALL_2' INDIRECT_CALL_1(f, f1, __VA_ARGS__); \ ^ ~~ include/linux/indirect_call_wrapper.h:19:35: note: expanded from macro 'INDIRECT_CALL_1' likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__); \ ~~ ^ drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:68:1: note: 'mlx5e_skb_from_cqe_mpwrq_nonlinear' declared here mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi, ^ drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1877:8: error: too few arguments to function call, expected 6, have 5 skb = INDIRECT_CALL_2(rq->mpwqe.skb_from_cqe_mpwrq, ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/indirect_call_wrapper.h:24:7: note: expanded from macro 'INDIRECT_CALL_2' INDIRECT_CALL_1(f, f1, __VA_ARGS__); \ ^ ~ include/linux/indirect_call_wrapper.h:19:52: note: expanded from macro 'INDIRECT_CALL_1' likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__); \ ~ ^ drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:2485:8: error: too few arguments to function call, expected 4, have 3 skb = INDIRECT_CALL_2(rq->wqe.skb_from_cqe, ^ include/linux/indirect_call_wrapper.h:23:35: note: expanded from macro 'INDIRECT_CALL_2' likely(f == f2) ? f2(__VA_ARGS__) : \ ~~ ^ drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1574:1: note: 'mlx5e_skb_from_cqe_linear' declared here mlx5e_skb_from_cqe_linear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi, ^ drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:2485:8: error: too few arguments to function call, expected 4, have 3 skb = INDIRECT_CALL_2(rq->wqe.skb_from_cqe, ^ include/linux/indirect_call_wrapper.h:24:7: note: expanded from macro 'INDIRECT_CALL_2' INDIRECT_CALL_1(f, f1, __VA_ARGS__); \ ^ ~~ include/linux/indirect_call_wrapper.h:19:35: note: expanded from macro 'INDIRECT_CALL_1' likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__); \ ~~ ^ drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:1620:1: note: 'mlx5e_skb_from_cqe_nonlinear' declared here mlx5e_skb_from_cqe_nonlinear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi, ^ drivers/net/ethernet/mellanox/mlx5/core/en_rx.c:2485:8: error: too few arguments to function call, expected 4, have 3 skb = INDIRECT_CALL_2(rq->wqe.skb_from_cqe, ^ ~~~~~~~~~~~~~~~~~~~~ include/linux/indirect_call_wrapper.h:24:7: note: expanded from macro 'INDIRECT_CALL_2' INDIRECT_CALL_1(f, f1, __VA_ARGS__); \ ^ ~ include/linux/indirect_call_wrapper.h:19:52: note: expanded from macro 'INDIRECT_CALL_1' likely(f == f1) ? f1(__VA_ARGS__) : f(__VA_ARGS__); \ ~ ^ 9 errors generated. vim +1818 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 -- 0-DAY CI Kernel Test Service https://01.org/lkp