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 New smatch warnings: drivers/net/virtio_net.c:437 __virtnet_xdp_xmit() warn: signedness bug returning '(-75)' Old smatch warnings: drivers/net/virtio_net.c:441 __virtnet_xdp_xmit() warn: signedness bug returning '(-95)' drivers/net/virtio_net.c:444 __virtnet_xdp_xmit() warn: signedness bug returning '(-75)' # https://github.com/0day-ci/linux/commit/22fb2349485f20be1ba096243ae9a8d9a20edda5 git remote add linux-review https://github.com/0day-ci/linux git remote update linux-review git checkout 22fb2349485f20be1ba096243ae9a8d9a20edda5 vim +437 drivers/net/virtio_net.c 186b3c998 Jason Wang 2017-09-19 417 186b3c998 Jason Wang 2017-09-19 418 static bool __virtnet_xdp_xmit(struct virtnet_info *vi, f6b10209b Jason Wang 2017-02-21 419 struct xdp_buff *xdp) 56434a01b John Fastabend 2016-12-15 420 { 56434a01b John Fastabend 2016-12-15 421 struct virtio_net_hdr_mrg_rxbuf *hdr; 22fb23494 Jesper Dangaard Brouer 2018-03-29 422 struct xdp_frame *xdpf, *xdpf_sent; 722d82830 John Fastabend 2017-02-02 423 struct send_queue *sq; 22fb23494 Jesper Dangaard Brouer 2018-03-29 424 unsigned int len; 722d82830 John Fastabend 2017-02-02 425 unsigned int qp; 56434a01b John Fastabend 2016-12-15 426 int err; 56434a01b John Fastabend 2016-12-15 427 722d82830 John Fastabend 2017-02-02 428 qp = vi->curr_queue_pairs - vi->xdp_queue_pairs + smp_processor_id(); 722d82830 John Fastabend 2017-02-02 429 sq = &vi->sq[qp]; 722d82830 John Fastabend 2017-02-02 430 56434a01b John Fastabend 2016-12-15 431 /* Free up any pending old buffers before queueing new ones. */ 22fb23494 Jesper Dangaard Brouer 2018-03-29 432 while ((xdpf_sent = virtqueue_get_buf(sq->vq, &len)) != NULL) 22fb23494 Jesper Dangaard Brouer 2018-03-29 433 xdp_return_frame(xdpf_sent->data, &xdpf_sent->mem); bb91accf2 Jason Wang 2016-12-23 434 22fb23494 Jesper Dangaard Brouer 2018-03-29 435 xdpf = convert_to_xdp_frame(xdp); 22fb23494 Jesper Dangaard Brouer 2018-03-29 436 if (unlikely(!xdpf)) 22fb23494 Jesper Dangaard Brouer 2018-03-29 @437 return -EOVERFLOW; 22fb23494 Jesper Dangaard Brouer 2018-03-29 438 22fb23494 Jesper Dangaard Brouer 2018-03-29 439 /* virtqueue want to use data area in-front of packet */ 22fb23494 Jesper Dangaard Brouer 2018-03-29 440 if (unlikely(xdpf->metasize > 0)) 22fb23494 Jesper Dangaard Brouer 2018-03-29 441 return -EOPNOTSUPP; 22fb23494 Jesper Dangaard Brouer 2018-03-29 442 22fb23494 Jesper Dangaard Brouer 2018-03-29 443 if (unlikely(xdpf->headroom < vi->hdr_len)) 22fb23494 Jesper Dangaard Brouer 2018-03-29 444 return -EOVERFLOW; 56434a01b John Fastabend 2016-12-15 445 22fb23494 Jesper Dangaard Brouer 2018-03-29 446 /* Make room for virtqueue hdr (also change xdpf->headroom?) */ 22fb23494 Jesper Dangaard Brouer 2018-03-29 447 xdpf->data -= vi->hdr_len; 56434a01b John Fastabend 2016-12-15 448 /* Zero header and leave csum up to XDP layers */ 22fb23494 Jesper Dangaard Brouer 2018-03-29 449 hdr = xdpf->data; 56434a01b John Fastabend 2016-12-15 450 memset(hdr, 0, vi->hdr_len); 22fb23494 Jesper Dangaard Brouer 2018-03-29 451 hdr->hdr.hdr_len = xdpf->len; /* Q: is this needed? */ 22fb23494 Jesper Dangaard Brouer 2018-03-29 452 xdpf->len += vi->hdr_len; 56434a01b John Fastabend 2016-12-15 453 22fb23494 Jesper Dangaard Brouer 2018-03-29 454 sg_init_one(sq->sg, xdpf->data, xdpf->len); bb91accf2 Jason Wang 2016-12-23 455 22fb23494 Jesper Dangaard Brouer 2018-03-29 456 err = virtqueue_add_outbuf(sq->vq, sq->sg, 1, xdpf, GFP_ATOMIC); 11b7d897c Jesper Dangaard Brouer 2018-02-20 457 if (unlikely(err)) 11b7d897c Jesper Dangaard Brouer 2018-02-20 458 return false; /* Caller handle free/refcnt */ 56434a01b John Fastabend 2016-12-15 459 a67edbf4f Daniel Borkmann 2017-01-25 460 return true; 56434a01b John Fastabend 2016-12-15 461 } 56434a01b John Fastabend 2016-12-15 462 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation _______________________________________________ kbuild mailing list kbuild@lists.01.org https://lists.01.org/mailman/listinfo/kbuild