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]

Reply via email to