tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: df964ce9ef9fea10cf131bf6bad8658fde7956f6 commit: a251eee62133774cf35ff829041377e721ef9c8c [4524/8790] idpf: add SRIOV support and other ndo_ops config: loongarch-randconfig-r023-20230605 (https://download.01.org/0day-ci/archive/20231002/202310020136.RIwZa52o-lkp@xxxxxxxxx/config) compiler: loongarch64-linux-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231002/202310020136.RIwZa52o-lkp@xxxxxxxxx/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202310020136.RIwZa52o-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): loongarch64-linux-ld: drivers/net/ethernet/intel/idpf/idpf_txrx.o: in function `idpf_rx_rsc': >> drivers/net/ethernet/intel/idpf/idpf_txrx.c:2909:(.text+0x49cc): undefined reference to `tcp_gro_complete' vim +2909 drivers/net/ethernet/intel/idpf/idpf_txrx.c 3a8845af66edb3 Alan Brady 2023-08-07 2845 3a8845af66edb3 Alan Brady 2023-08-07 2846 /** 3a8845af66edb3 Alan Brady 2023-08-07 2847 * idpf_rx_rsc - Set the RSC fields in the skb 3a8845af66edb3 Alan Brady 2023-08-07 2848 * @rxq : Rx descriptor ring packet is being transacted on 3a8845af66edb3 Alan Brady 2023-08-07 2849 * @skb : pointer to current skb being populated 3a8845af66edb3 Alan Brady 2023-08-07 2850 * @rx_desc: Receive descriptor 3a8845af66edb3 Alan Brady 2023-08-07 2851 * @decoded: Decoded Rx packet type related fields 3a8845af66edb3 Alan Brady 2023-08-07 2852 * 3a8845af66edb3 Alan Brady 2023-08-07 2853 * Return 0 on success and error code on failure 3a8845af66edb3 Alan Brady 2023-08-07 2854 * 3a8845af66edb3 Alan Brady 2023-08-07 2855 * Populate the skb fields with the total number of RSC segments, RSC payload 3a8845af66edb3 Alan Brady 2023-08-07 2856 * length and packet type. 3a8845af66edb3 Alan Brady 2023-08-07 2857 */ 3a8845af66edb3 Alan Brady 2023-08-07 2858 static int idpf_rx_rsc(struct idpf_queue *rxq, struct sk_buff *skb, 3a8845af66edb3 Alan Brady 2023-08-07 2859 struct virtchnl2_rx_flex_desc_adv_nic_3 *rx_desc, 3a8845af66edb3 Alan Brady 2023-08-07 2860 struct idpf_rx_ptype_decoded *decoded) 3a8845af66edb3 Alan Brady 2023-08-07 2861 { 3a8845af66edb3 Alan Brady 2023-08-07 2862 u16 rsc_segments, rsc_seg_len; 3a8845af66edb3 Alan Brady 2023-08-07 2863 bool ipv4, ipv6; 3a8845af66edb3 Alan Brady 2023-08-07 2864 int len; 3a8845af66edb3 Alan Brady 2023-08-07 2865 3a8845af66edb3 Alan Brady 2023-08-07 2866 if (unlikely(!decoded->outer_ip)) 3a8845af66edb3 Alan Brady 2023-08-07 2867 return -EINVAL; 3a8845af66edb3 Alan Brady 2023-08-07 2868 3a8845af66edb3 Alan Brady 2023-08-07 2869 rsc_seg_len = le16_to_cpu(rx_desc->misc.rscseglen); 3a8845af66edb3 Alan Brady 2023-08-07 2870 if (unlikely(!rsc_seg_len)) 3a8845af66edb3 Alan Brady 2023-08-07 2871 return -EINVAL; 3a8845af66edb3 Alan Brady 2023-08-07 2872 3a8845af66edb3 Alan Brady 2023-08-07 2873 ipv4 = IDPF_RX_PTYPE_TO_IPV(decoded, IDPF_RX_PTYPE_OUTER_IPV4); 3a8845af66edb3 Alan Brady 2023-08-07 2874 ipv6 = IDPF_RX_PTYPE_TO_IPV(decoded, IDPF_RX_PTYPE_OUTER_IPV6); 3a8845af66edb3 Alan Brady 2023-08-07 2875 3a8845af66edb3 Alan Brady 2023-08-07 2876 if (unlikely(!(ipv4 ^ ipv6))) 3a8845af66edb3 Alan Brady 2023-08-07 2877 return -EINVAL; 3a8845af66edb3 Alan Brady 2023-08-07 2878 3a8845af66edb3 Alan Brady 2023-08-07 2879 rsc_segments = DIV_ROUND_UP(skb->data_len, rsc_seg_len); 3a8845af66edb3 Alan Brady 2023-08-07 2880 if (unlikely(rsc_segments == 1)) 3a8845af66edb3 Alan Brady 2023-08-07 2881 return 0; 3a8845af66edb3 Alan Brady 2023-08-07 2882 3a8845af66edb3 Alan Brady 2023-08-07 2883 NAPI_GRO_CB(skb)->count = rsc_segments; 3a8845af66edb3 Alan Brady 2023-08-07 2884 skb_shinfo(skb)->gso_size = rsc_seg_len; 3a8845af66edb3 Alan Brady 2023-08-07 2885 3a8845af66edb3 Alan Brady 2023-08-07 2886 skb_reset_network_header(skb); 3a8845af66edb3 Alan Brady 2023-08-07 2887 len = skb->len - skb_transport_offset(skb); 3a8845af66edb3 Alan Brady 2023-08-07 2888 3a8845af66edb3 Alan Brady 2023-08-07 2889 if (ipv4) { 3a8845af66edb3 Alan Brady 2023-08-07 2890 struct iphdr *ipv4h = ip_hdr(skb); 3a8845af66edb3 Alan Brady 2023-08-07 2891 3a8845af66edb3 Alan Brady 2023-08-07 2892 skb_shinfo(skb)->gso_type = SKB_GSO_TCPV4; 3a8845af66edb3 Alan Brady 2023-08-07 2893 3a8845af66edb3 Alan Brady 2023-08-07 2894 /* Reset and set transport header offset in skb */ 3a8845af66edb3 Alan Brady 2023-08-07 2895 skb_set_transport_header(skb, sizeof(struct iphdr)); 3a8845af66edb3 Alan Brady 2023-08-07 2896 3a8845af66edb3 Alan Brady 2023-08-07 2897 /* Compute the TCP pseudo header checksum*/ 3a8845af66edb3 Alan Brady 2023-08-07 2898 tcp_hdr(skb)->check = 3a8845af66edb3 Alan Brady 2023-08-07 2899 ~tcp_v4_check(len, ipv4h->saddr, ipv4h->daddr, 0); 3a8845af66edb3 Alan Brady 2023-08-07 2900 } else { 3a8845af66edb3 Alan Brady 2023-08-07 2901 struct ipv6hdr *ipv6h = ipv6_hdr(skb); 3a8845af66edb3 Alan Brady 2023-08-07 2902 3a8845af66edb3 Alan Brady 2023-08-07 2903 skb_shinfo(skb)->gso_type = SKB_GSO_TCPV6; 3a8845af66edb3 Alan Brady 2023-08-07 2904 skb_set_transport_header(skb, sizeof(struct ipv6hdr)); 3a8845af66edb3 Alan Brady 2023-08-07 2905 tcp_hdr(skb)->check = 3a8845af66edb3 Alan Brady 2023-08-07 2906 ~tcp_v6_check(len, &ipv6h->saddr, &ipv6h->daddr, 0); 3a8845af66edb3 Alan Brady 2023-08-07 2907 } 3a8845af66edb3 Alan Brady 2023-08-07 2908 3a8845af66edb3 Alan Brady 2023-08-07 @2909 tcp_gro_complete(skb); 3a8845af66edb3 Alan Brady 2023-08-07 2910 3a8845af66edb3 Alan Brady 2023-08-07 2911 u64_stats_update_begin(&rxq->stats_sync); 3a8845af66edb3 Alan Brady 2023-08-07 2912 u64_stats_inc(&rxq->q_stats.rx.rsc_pkts); 3a8845af66edb3 Alan Brady 2023-08-07 2913 u64_stats_update_end(&rxq->stats_sync); 3a8845af66edb3 Alan Brady 2023-08-07 2914 3a8845af66edb3 Alan Brady 2023-08-07 2915 return 0; 3a8845af66edb3 Alan Brady 2023-08-07 2916 } 3a8845af66edb3 Alan Brady 2023-08-07 2917 :::::: The code at line 2909 was first introduced by commit :::::: 3a8845af66edb340ba9210bb8a0da040c7d6e590 idpf: add RX splitq napi poll support :::::: TO: Alan Brady <alan.brady@xxxxxxxxx> :::::: CC: Tony Nguyen <anthony.l.nguyen@xxxxxxxxx> -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki