Hi Jesper,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on net-next/master]

url:    
https://github.com/0day-ci/linux/commits/Jesper-Dangaard-Brouer/XDP-redirect-memory-return-API/20180330-203122
reproduce:
        # apt-get install sparse
        make ARCH=x86_64 allmodconfig
        make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)

>> drivers/net/virtio_net.c:451:26: sparse: incorrect type in assignment 
>> (different base types) @@    expected restricted __virtio16 [usertype] 
>> hdr_len @@    got unsirestricted __virtio16 [usertype] hdr_len @@
   drivers/net/virtio_net.c:451:26:    expected restricted __virtio16 
[usertype] hdr_len
   drivers/net/virtio_net.c:451:26:    got unsigned short [unsigned] [usertype] 
len
   drivers/net/virtio_net.c:2140:27: sparse: incorrect type in assignment 
(different base types) @@    expected unsigned long long [unsigned] [usertype] 
ctrl_offloads @@    got unsigned] [usertype] ctrl_offloads @@
   drivers/net/virtio_net.c:2140:27:    expected unsigned long long [unsigned] 
[usertype] ctrl_offloads
   drivers/net/virtio_net.c:2140:27:    got restricted __virtio64

vim +451 drivers/net/virtio_net.c

   417  
   418  static bool __virtnet_xdp_xmit(struct virtnet_info *vi,
   419                                 struct xdp_buff *xdp)
   420  {
   421          struct virtio_net_hdr_mrg_rxbuf *hdr;
   422          struct xdp_frame *xdpf, *xdpf_sent;
   423          struct send_queue *sq;
   424          unsigned int len;
   425          unsigned int qp;
   426          int err;
   427  
   428          qp = vi->curr_queue_pairs - vi->xdp_queue_pairs + 
smp_processor_id();
   429          sq = &vi->sq[qp];
   430  
   431          /* Free up any pending old buffers before queueing new ones. */
   432          while ((xdpf_sent = virtqueue_get_buf(sq->vq, &len)) != NULL)
   433                  xdp_return_frame(xdpf_sent->data, &xdpf_sent->mem);
   434  
   435          xdpf = convert_to_xdp_frame(xdp);
   436          if (unlikely(!xdpf))
   437                  return -EOVERFLOW;
   438  
   439          /* virtqueue want to use data area in-front of packet */
   440          if (unlikely(xdpf->metasize > 0))
   441                  return -EOPNOTSUPP;
   442  
   443          if (unlikely(xdpf->headroom < vi->hdr_len))
   444                  return -EOVERFLOW;
   445  
   446          /* Make room for virtqueue hdr (also change xdpf->headroom?) */
   447          xdpf->data -= vi->hdr_len;
   448          /* Zero header and leave csum up to XDP layers */
   449          hdr = xdpf->data;
   450          memset(hdr, 0, vi->hdr_len);
 > 451          hdr->hdr.hdr_len = xdpf->len; /* Q: is this needed? */
   452          xdpf->len   += vi->hdr_len;
   453  
   454          sg_init_one(sq->sg, xdpf->data, xdpf->len);
   455  
   456          err = virtqueue_add_outbuf(sq->vq, sq->sg, 1, xdpf, GFP_ATOMIC);
   457          if (unlikely(err))
   458                  return false; /* Caller handle free/refcnt */
   459  
   460          return true;
   461  }
   462  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Reply via email to