Re: [PATCH rfc 3/3] virtio-net: support transmit timestamp
From: kernel test robot <hidden>
Date: 2021-02-02 13:51:02
Also in:
netdev, oe-kbuild-all
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/be9cab7692382c7886333b498d1d8adbba1881f7 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 be9cab7692382c7886333b498d1d8adbba1881f7 # 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 <redacted> "sparse warnings: (new ones prefixed by >>)" drivers/net/virtio_net.c:1099: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:1099:80: sparse: expected unsigned long long [usertype] ns drivers/net/virtio_net.c:1099:80: sparse: got restricted __virtio64 [usertype] tstamp
quoted
drivers/net/virtio_net.c:1583:33: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] value @@ got restricted __virtio32 @@
drivers/net/virtio_net.c:1583:33: sparse: expected restricted __le32 [usertype] value drivers/net/virtio_net.c:1583:33: sparse: got restricted __virtio32
quoted
drivers/net/virtio_net.c:1584:34: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le16 [usertype] report @@ got int @@
drivers/net/virtio_net.c:1584:34: sparse: expected restricted __le16 [usertype] report
drivers/net/virtio_net.c:1584:34: sparse: got int
vim +1583 drivers/net/virtio_net.c
1550
1551 static int xmit_skb(struct send_queue *sq, struct sk_buff *skb)
1552 {
1553 struct virtio_net_hdr_mrg_rxbuf *hdr;
1554 const unsigned char *dest = ((struct ethhdr *)skb->data)->h_dest;
1555 struct virtnet_info *vi = sq->vq->vdev->priv;
1556 struct virtio_net_hdr_v12 *h12;
1557 int num_sg;
1558 unsigned hdr_len = vi->hdr_len;
1559 bool can_push;
1560
1561 pr_debug("%s: xmit %p %pM\n", vi->dev->name, skb, dest);
1562
1563 can_push = vi->any_header_sg &&
1564 !((unsigned long)skb->data & (__alignof__(*hdr) - 1)) &&
1565 !skb_header_cloned(skb) && skb_headroom(skb) >= hdr_len;
1566 /* Even if we can, don't push here yet as this would skew
1567 * csum_start offset below. */
1568 if (can_push)
1569 hdr = (struct virtio_net_hdr_mrg_rxbuf *)(skb->data - hdr_len);
1570 else
1571 hdr = skb_vnet_hdr(skb);
1572
1573 if (virtio_net_hdr_from_skb(skb, &hdr->hdr,
1574 virtio_is_little_endian(vi->vdev), false,
1575 0))
1576 BUG();
1577
1578 if (vi->mergeable_rx_bufs)
1579 hdr->num_buffers = 0;
1580
1581 h12 = (void *)hdr;
1582 if (vi->has_tx_hash) {1583 h12->hash.value = cpu_to_virtio32(vi->vdev, skb->hash); 1584 h12->hash.report = skb->l4_hash ? VIRTIO_NET_HASH_REPORT_L4 :
1585 VIRTIO_NET_HASH_REPORT_OTHER;
1586 h12->hash.flow_state = VIRTIO_NET_HASH_STATE_DEFAULT;
1587 }
1588 if (vi->has_tx_tstamp)
1589 h12->tstamp = cpu_to_virtio64(vi->vdev, skb->tstamp);
1590
1591 sg_init_table(sq->sg, skb_shinfo(skb)->nr_frags + (can_push ? 1 : 2));
1592 if (can_push) {
1593 __skb_push(skb, hdr_len);
1594 num_sg = skb_to_sgvec(skb, sq->sg, 0, skb->len);
1595 if (unlikely(num_sg < 0))
1596 return num_sg;
1597 /* Pull header back to avoid skew in tx bytes calculations. */
1598 __skb_pull(skb, hdr_len);
1599 } else {
1600 sg_set_buf(sq->sg, hdr, hdr_len);
1601 num_sg = skb_to_sgvec(skb, sq->sg + 1, 0, skb->len);
1602 if (unlikely(num_sg < 0))
1603 return num_sg;
1604 num_sg++;
1605 }
1606 return virtqueue_add_outbuf(sq->vq, sq->sg, num_sg, skb, GFP_ATOMIC);
1607 }
1608
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Attachments
- .config.gz [application/gzip] 34123 bytes
- (unnamed) [text/plain] 183 bytes · preview