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 <l...@intel.com>


"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-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to