Re: [PATCH rfc 2/3] virtio-net: support receive timestamp

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Willem,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on ipvs/master]
[also build test WARNING on linus/master v5.11-rc6 next-20210125]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Willem-de-Bruijn/virtio-net-add-tx-hash-rx-tstamp-and-tx-tstamp/20201229-002604
base:   https://git.kernel.org/pub/scm/linux/kernel/git/horms/ipvs.git master
config: x86_64-randconfig-s021-20201228 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.3-215-g0fb77bb6-dirty
        # https://github.com/0day-ci/linux/commit/d309db6857fa35b0d7a11cc5229436d6d71ab274
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Willem-de-Bruijn/virtio-net-add-tx-hash-rx-tstamp-and-tx-tstamp/20201229-002604
        git checkout d309db6857fa35b0d7a11cc5229436d6d71ab274
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>


"sparse warnings: (new ones prefixed by >>)"
>> drivers/net/virtio_net.c:1096:80: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected unsigned long long [usertype] ns @@     got restricted __virtio64 [usertype] tstamp @@
   drivers/net/virtio_net.c:1096:80: sparse:     expected unsigned long long [usertype] ns
   drivers/net/virtio_net.c:1096:80: sparse:     got restricted __virtio64 [usertype] tstamp
   drivers/net/virtio_net.c:1580:32: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] hash_value @@     got restricted __virtio32 @@
   drivers/net/virtio_net.c:1580:32: sparse:     expected restricted __le32 [usertype] hash_value
   drivers/net/virtio_net.c:1580:32: sparse:     got restricted __virtio32
   drivers/net/virtio_net.c:1581:33: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le16 [usertype] hash_report @@     got int @@
   drivers/net/virtio_net.c:1581:33: sparse:     expected restricted __le16 [usertype] hash_report
   drivers/net/virtio_net.c:1581:33: sparse:     got int

vim +1096 drivers/net/virtio_net.c

  1048	
  1049	static void receive_buf(struct virtnet_info *vi, struct receive_queue *rq,
  1050				void *buf, unsigned int len, void **ctx,
  1051				unsigned int *xdp_xmit,
  1052				struct virtnet_rq_stats *stats)
  1053	{
  1054		struct net_device *dev = vi->dev;
  1055		struct sk_buff *skb;
  1056		struct virtio_net_hdr_mrg_rxbuf *hdr;
  1057	
  1058		if (unlikely(len < vi->hdr_len + ETH_HLEN)) {
  1059			pr_debug("%s: short packet %i\n", dev->name, len);
  1060			dev->stats.rx_length_errors++;
  1061			if (vi->mergeable_rx_bufs) {
  1062				put_page(virt_to_head_page(buf));
  1063			} else if (vi->big_packets) {
  1064				give_pages(rq, buf);
  1065			} else {
  1066				put_page(virt_to_head_page(buf));
  1067			}
  1068			return;
  1069		}
  1070	
  1071		if (vi->mergeable_rx_bufs)
  1072			skb = receive_mergeable(dev, vi, rq, buf, ctx, len, xdp_xmit,
  1073						stats);
  1074		else if (vi->big_packets)
  1075			skb = receive_big(dev, vi, rq, buf, len, stats);
  1076		else
  1077			skb = receive_small(dev, vi, rq, buf, ctx, len, xdp_xmit, stats);
  1078	
  1079		if (unlikely(!skb))
  1080			return;
  1081	
  1082		hdr = skb_vnet_hdr(skb);
  1083	
  1084		if (hdr->hdr.flags & VIRTIO_NET_HDR_F_DATA_VALID)
  1085			skb->ip_summed = CHECKSUM_UNNECESSARY;
  1086	
  1087		if (virtio_net_hdr_to_skb(skb, &hdr->hdr,
  1088					  virtio_is_little_endian(vi->vdev))) {
  1089			net_warn_ratelimited("%s: bad gso: type: %u, size: %u\n",
  1090					     dev->name, hdr->hdr.gso_type,
  1091					     hdr->hdr.gso_size);
  1092			goto frame_err;
  1093		}
  1094	
  1095		if (vi->has_rx_tstamp)
> 1096			skb_hwtstamps(skb)->hwtstamp = ns_to_ktime(skb_vnet_hdr_12(skb)->tstamp);
  1097	
  1098		skb_record_rx_queue(skb, vq2rxq(rq->vq));
  1099		skb->protocol = eth_type_trans(skb, dev);
  1100		pr_debug("Receiving skb proto 0x%04x len %i type %i\n",
  1101			 ntohs(skb->protocol), skb->len, skb->pkt_type);
  1102	
  1103		napi_gro_receive(&rq->napi, skb);
  1104		return;
  1105	
  1106	frame_err:
  1107		dev->stats.rx_frame_errors++;
  1108		dev_kfree_skb(skb);
  1109	}
  1110	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip

_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

[Index of Archives]     [KVM Development]     [Libvirt Development]     [Libvirt Users]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux