CC: [email protected] BCC: [email protected] In-Reply-To: <[email protected]> References: <[email protected]> TO: Taehee Yoo <[email protected]> TO: [email protected] TO: [email protected] TO: [email protected] TO: [email protected] TO: [email protected] TO: [email protected] TO: [email protected] TO: [email protected] TO: [email protected] TO: [email protected] TO: [email protected] TO: [email protected] TO: [email protected] TO: [email protected] TO: [email protected] CC: [email protected]
Hi Taehee, I love your patch! Perhaps something to improve: [auto build test WARNING on net-next/master] url: https://github.com/intel-lab-lkp/linux/commits/Taehee-Yoo/net-atlantic-Add-XDP-support/20220409-024326 base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git e8bd70250a821edb541c3abe1eacdad9f8dc7adf :::::: branch date: 11 days ago :::::: commit date: 11 days ago config: ia64-randconfig-m031-20220418 (https://download.01.org/0day-ci/archive/20220419/[email protected]/config) compiler: ia64-linux-gcc (GCC) 11.2.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: drivers/net/ethernet/aquantia/atlantic/aq_ring.c:485 aq_xdp_run_prog() error: (-2147483647) too low for ERR_PTR vim +485 drivers/net/ethernet/aquantia/atlantic/aq_ring.c ad703c2b9127f9a Dmitry Bogdanov 2018-11-09 403 cf4452ec03cfd3d Taehee Yoo 2022-04-08 404 static struct sk_buff *aq_xdp_run_prog(struct aq_nic_s *aq_nic, cf4452ec03cfd3d Taehee Yoo 2022-04-08 405 struct xdp_buff *xdp, cf4452ec03cfd3d Taehee Yoo 2022-04-08 406 struct aq_ring_s *rx_ring, cf4452ec03cfd3d Taehee Yoo 2022-04-08 407 struct aq_ring_buff_s *buff) cf4452ec03cfd3d Taehee Yoo 2022-04-08 408 { cf4452ec03cfd3d Taehee Yoo 2022-04-08 409 int result = NETDEV_TX_BUSY; cf4452ec03cfd3d Taehee Yoo 2022-04-08 410 struct aq_ring_s *tx_ring; cf4452ec03cfd3d Taehee Yoo 2022-04-08 411 struct xdp_frame *xdpf; cf4452ec03cfd3d Taehee Yoo 2022-04-08 412 struct bpf_prog *prog; cf4452ec03cfd3d Taehee Yoo 2022-04-08 413 u32 act = XDP_ABORTED; cf4452ec03cfd3d Taehee Yoo 2022-04-08 414 struct sk_buff *skb; cf4452ec03cfd3d Taehee Yoo 2022-04-08 415 cf4452ec03cfd3d Taehee Yoo 2022-04-08 416 u64_stats_update_begin(&rx_ring->stats.rx.syncp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 417 ++rx_ring->stats.rx.packets; cf4452ec03cfd3d Taehee Yoo 2022-04-08 418 rx_ring->stats.rx.bytes += xdp_get_buff_len(xdp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 419 u64_stats_update_end(&rx_ring->stats.rx.syncp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 420 cf4452ec03cfd3d Taehee Yoo 2022-04-08 421 prog = READ_ONCE(rx_ring->xdp_prog); cf4452ec03cfd3d Taehee Yoo 2022-04-08 422 if (!prog) cf4452ec03cfd3d Taehee Yoo 2022-04-08 423 goto pass; cf4452ec03cfd3d Taehee Yoo 2022-04-08 424 cf4452ec03cfd3d Taehee Yoo 2022-04-08 425 prefetchw(xdp->data_hard_start); /* xdp_frame write */ cf4452ec03cfd3d Taehee Yoo 2022-04-08 426 cf4452ec03cfd3d Taehee Yoo 2022-04-08 427 /* single buffer XDP program, but packet is multi buffer, aborted */ cf4452ec03cfd3d Taehee Yoo 2022-04-08 428 if (xdp_buff_has_frags(xdp) && !prog->aux->xdp_has_frags) cf4452ec03cfd3d Taehee Yoo 2022-04-08 429 goto out_aborted; cf4452ec03cfd3d Taehee Yoo 2022-04-08 430 cf4452ec03cfd3d Taehee Yoo 2022-04-08 431 act = bpf_prog_run_xdp(prog, xdp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 432 switch (act) { cf4452ec03cfd3d Taehee Yoo 2022-04-08 433 case XDP_PASS: cf4452ec03cfd3d Taehee Yoo 2022-04-08 434 pass: cf4452ec03cfd3d Taehee Yoo 2022-04-08 435 xdpf = xdp_convert_buff_to_frame(xdp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 436 if (unlikely(!xdpf)) cf4452ec03cfd3d Taehee Yoo 2022-04-08 437 goto out_aborted; cf4452ec03cfd3d Taehee Yoo 2022-04-08 438 skb = xdp_build_skb_from_frame(xdpf, aq_nic->ndev); cf4452ec03cfd3d Taehee Yoo 2022-04-08 439 if (!skb) cf4452ec03cfd3d Taehee Yoo 2022-04-08 440 goto out_aborted; cf4452ec03cfd3d Taehee Yoo 2022-04-08 441 u64_stats_update_begin(&rx_ring->stats.rx.syncp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 442 ++rx_ring->stats.rx.xdp_pass; cf4452ec03cfd3d Taehee Yoo 2022-04-08 443 u64_stats_update_end(&rx_ring->stats.rx.syncp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 444 aq_unset_rxpage_xdp(rx_ring, buff, &aq_nic->ndev->dev, xdp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 445 return skb; cf4452ec03cfd3d Taehee Yoo 2022-04-08 446 case XDP_TX: cf4452ec03cfd3d Taehee Yoo 2022-04-08 447 xdpf = xdp_convert_buff_to_frame(xdp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 448 if (unlikely(!xdpf)) cf4452ec03cfd3d Taehee Yoo 2022-04-08 449 goto out_aborted; cf4452ec03cfd3d Taehee Yoo 2022-04-08 450 tx_ring = aq_nic->aq_ring_tx[rx_ring->idx]; cf4452ec03cfd3d Taehee Yoo 2022-04-08 451 result = aq_nic_xmit_xdpf(aq_nic, tx_ring, xdpf); cf4452ec03cfd3d Taehee Yoo 2022-04-08 452 if (result == NETDEV_TX_BUSY) cf4452ec03cfd3d Taehee Yoo 2022-04-08 453 goto out_aborted; cf4452ec03cfd3d Taehee Yoo 2022-04-08 454 u64_stats_update_begin(&rx_ring->stats.rx.syncp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 455 ++rx_ring->stats.rx.xdp_tx; cf4452ec03cfd3d Taehee Yoo 2022-04-08 456 u64_stats_update_end(&rx_ring->stats.rx.syncp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 457 aq_unset_rxpage_xdp(rx_ring, buff, &aq_nic->ndev->dev, xdp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 458 break; cf4452ec03cfd3d Taehee Yoo 2022-04-08 459 case XDP_REDIRECT: cf4452ec03cfd3d Taehee Yoo 2022-04-08 460 if (xdp_do_redirect(aq_nic->ndev, xdp, prog) < 0) cf4452ec03cfd3d Taehee Yoo 2022-04-08 461 goto out_aborted; cf4452ec03cfd3d Taehee Yoo 2022-04-08 462 xdp_do_flush(); cf4452ec03cfd3d Taehee Yoo 2022-04-08 463 u64_stats_update_begin(&rx_ring->stats.rx.syncp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 464 ++rx_ring->stats.rx.xdp_redirect; cf4452ec03cfd3d Taehee Yoo 2022-04-08 465 u64_stats_update_end(&rx_ring->stats.rx.syncp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 466 aq_unset_rxpage_xdp(rx_ring, buff, &aq_nic->ndev->dev, xdp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 467 break; cf4452ec03cfd3d Taehee Yoo 2022-04-08 468 default: cf4452ec03cfd3d Taehee Yoo 2022-04-08 469 fallthrough; cf4452ec03cfd3d Taehee Yoo 2022-04-08 470 case XDP_ABORTED: cf4452ec03cfd3d Taehee Yoo 2022-04-08 471 out_aborted: cf4452ec03cfd3d Taehee Yoo 2022-04-08 472 u64_stats_update_begin(&rx_ring->stats.rx.syncp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 473 ++rx_ring->stats.rx.xdp_aborted; cf4452ec03cfd3d Taehee Yoo 2022-04-08 474 u64_stats_update_end(&rx_ring->stats.rx.syncp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 475 trace_xdp_exception(aq_nic->ndev, prog, act); cf4452ec03cfd3d Taehee Yoo 2022-04-08 476 bpf_warn_invalid_xdp_action(aq_nic->ndev, prog, act); cf4452ec03cfd3d Taehee Yoo 2022-04-08 477 break; cf4452ec03cfd3d Taehee Yoo 2022-04-08 478 case XDP_DROP: cf4452ec03cfd3d Taehee Yoo 2022-04-08 479 u64_stats_update_begin(&rx_ring->stats.rx.syncp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 480 ++rx_ring->stats.rx.xdp_drop; cf4452ec03cfd3d Taehee Yoo 2022-04-08 481 u64_stats_update_end(&rx_ring->stats.rx.syncp); cf4452ec03cfd3d Taehee Yoo 2022-04-08 482 break; cf4452ec03cfd3d Taehee Yoo 2022-04-08 483 } cf4452ec03cfd3d Taehee Yoo 2022-04-08 484 cf4452ec03cfd3d Taehee Yoo 2022-04-08 @485 return ERR_PTR(-result); cf4452ec03cfd3d Taehee Yoo 2022-04-08 486 } cf4452ec03cfd3d Taehee Yoo 2022-04-08 487 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
