CC: [email protected]
BCC: [email protected]
CC: Linux Memory Management List <[email protected]>
TO: Taehee Yoo <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git 
master
head:   38a288f5941ef03752887ad86f2d85442358c99a
commit: 26efaef759a1bc43e819ee44cfd8a1fc4514e8c9 [4133/9759] net: atlantic: 
Implement xdp data plane
:::::: branch date: 3 days ago
:::::: commit date: 3 weeks ago
config: ia64-randconfig-m031-20220508 
(https://download.01.org/0day-ci/archive/20220509/[email protected]/config)
compiler: ia64-linux-gcc (GCC) 11.3.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:473 aq_xdp_run_prog() error: 
(-2147483647) too low for ERR_PTR

vim +473 drivers/net/ethernet/aquantia/atlantic/aq_ring.c

ad703c2b9127f9 Dmitry Bogdanov 2018-11-09  391  
26efaef759a1bc Taehee Yoo      2022-04-17  392  static struct sk_buff 
*aq_xdp_run_prog(struct aq_nic_s *aq_nic,
26efaef759a1bc Taehee Yoo      2022-04-17  393                                  
       struct xdp_buff *xdp,
26efaef759a1bc Taehee Yoo      2022-04-17  394                                  
       struct aq_ring_s *rx_ring,
26efaef759a1bc Taehee Yoo      2022-04-17  395                                  
       struct aq_ring_buff_s *buff)
26efaef759a1bc Taehee Yoo      2022-04-17  396  {
26efaef759a1bc Taehee Yoo      2022-04-17  397          int result = 
NETDEV_TX_BUSY;
26efaef759a1bc Taehee Yoo      2022-04-17  398          struct aq_ring_s 
*tx_ring;
26efaef759a1bc Taehee Yoo      2022-04-17  399          struct xdp_frame *xdpf;
26efaef759a1bc Taehee Yoo      2022-04-17  400          struct bpf_prog *prog;
26efaef759a1bc Taehee Yoo      2022-04-17  401          u32 act = XDP_ABORTED;
26efaef759a1bc Taehee Yoo      2022-04-17  402          struct sk_buff *skb;
26efaef759a1bc Taehee Yoo      2022-04-17  403  
26efaef759a1bc Taehee Yoo      2022-04-17  404          
u64_stats_update_begin(&rx_ring->stats.rx.syncp);
26efaef759a1bc Taehee Yoo      2022-04-17  405          
++rx_ring->stats.rx.packets;
26efaef759a1bc Taehee Yoo      2022-04-17  406          rx_ring->stats.rx.bytes 
+= xdp_get_buff_len(xdp);
26efaef759a1bc Taehee Yoo      2022-04-17  407          
u64_stats_update_end(&rx_ring->stats.rx.syncp);
26efaef759a1bc Taehee Yoo      2022-04-17  408  
26efaef759a1bc Taehee Yoo      2022-04-17  409          prog = 
READ_ONCE(rx_ring->xdp_prog);
26efaef759a1bc Taehee Yoo      2022-04-17  410          if (!prog)
26efaef759a1bc Taehee Yoo      2022-04-17  411                  goto pass;
26efaef759a1bc Taehee Yoo      2022-04-17  412  
26efaef759a1bc Taehee Yoo      2022-04-17  413          
prefetchw(xdp->data_hard_start); /* xdp_frame write */
26efaef759a1bc Taehee Yoo      2022-04-17  414  
26efaef759a1bc Taehee Yoo      2022-04-17  415          /* single buffer XDP 
program, but packet is multi buffer, aborted */
26efaef759a1bc Taehee Yoo      2022-04-17  416          if 
(xdp_buff_has_frags(xdp) && !prog->aux->xdp_has_frags)
26efaef759a1bc Taehee Yoo      2022-04-17  417                  goto 
out_aborted;
26efaef759a1bc Taehee Yoo      2022-04-17  418  
26efaef759a1bc Taehee Yoo      2022-04-17  419          act = 
bpf_prog_run_xdp(prog, xdp);
26efaef759a1bc Taehee Yoo      2022-04-17  420          switch (act) {
26efaef759a1bc Taehee Yoo      2022-04-17  421          case XDP_PASS:
26efaef759a1bc Taehee Yoo      2022-04-17  422  pass:
26efaef759a1bc Taehee Yoo      2022-04-17  423                  xdpf = 
xdp_convert_buff_to_frame(xdp);
26efaef759a1bc Taehee Yoo      2022-04-17  424                  if 
(unlikely(!xdpf))
26efaef759a1bc Taehee Yoo      2022-04-17  425                          goto 
out_aborted;
26efaef759a1bc Taehee Yoo      2022-04-17  426                  skb = 
xdp_build_skb_from_frame(xdpf, aq_nic->ndev);
26efaef759a1bc Taehee Yoo      2022-04-17  427                  if (!skb)
26efaef759a1bc Taehee Yoo      2022-04-17  428                          goto 
out_aborted;
26efaef759a1bc Taehee Yoo      2022-04-17  429                  
u64_stats_update_begin(&rx_ring->stats.rx.syncp);
26efaef759a1bc Taehee Yoo      2022-04-17  430                  
++rx_ring->stats.rx.xdp_pass;
26efaef759a1bc Taehee Yoo      2022-04-17  431                  
u64_stats_update_end(&rx_ring->stats.rx.syncp);
26efaef759a1bc Taehee Yoo      2022-04-17  432                  
aq_get_rxpages_xdp(buff, xdp);
26efaef759a1bc Taehee Yoo      2022-04-17  433                  return skb;
26efaef759a1bc Taehee Yoo      2022-04-17  434          case XDP_TX:
26efaef759a1bc Taehee Yoo      2022-04-17  435                  xdpf = 
xdp_convert_buff_to_frame(xdp);
26efaef759a1bc Taehee Yoo      2022-04-17  436                  if 
(unlikely(!xdpf))
26efaef759a1bc Taehee Yoo      2022-04-17  437                          goto 
out_aborted;
26efaef759a1bc Taehee Yoo      2022-04-17  438                  tx_ring = 
aq_nic->aq_ring_tx[rx_ring->idx];
26efaef759a1bc Taehee Yoo      2022-04-17  439                  result = 
aq_nic_xmit_xdpf(aq_nic, tx_ring, xdpf);
26efaef759a1bc Taehee Yoo      2022-04-17  440                  if (result == 
NETDEV_TX_BUSY)
26efaef759a1bc Taehee Yoo      2022-04-17  441                          goto 
out_aborted;
26efaef759a1bc Taehee Yoo      2022-04-17  442                  
u64_stats_update_begin(&rx_ring->stats.rx.syncp);
26efaef759a1bc Taehee Yoo      2022-04-17  443                  
++rx_ring->stats.rx.xdp_tx;
26efaef759a1bc Taehee Yoo      2022-04-17  444                  
u64_stats_update_end(&rx_ring->stats.rx.syncp);
26efaef759a1bc Taehee Yoo      2022-04-17  445                  
aq_get_rxpages_xdp(buff, xdp);
26efaef759a1bc Taehee Yoo      2022-04-17  446                  break;
26efaef759a1bc Taehee Yoo      2022-04-17  447          case XDP_REDIRECT:
26efaef759a1bc Taehee Yoo      2022-04-17  448                  if 
(xdp_do_redirect(aq_nic->ndev, xdp, prog) < 0)
26efaef759a1bc Taehee Yoo      2022-04-17  449                          goto 
out_aborted;
26efaef759a1bc Taehee Yoo      2022-04-17  450                  xdp_do_flush();
26efaef759a1bc Taehee Yoo      2022-04-17  451                  
u64_stats_update_begin(&rx_ring->stats.rx.syncp);
26efaef759a1bc Taehee Yoo      2022-04-17  452                  
++rx_ring->stats.rx.xdp_redirect;
26efaef759a1bc Taehee Yoo      2022-04-17  453                  
u64_stats_update_end(&rx_ring->stats.rx.syncp);
26efaef759a1bc Taehee Yoo      2022-04-17  454                  
aq_get_rxpages_xdp(buff, xdp);
26efaef759a1bc Taehee Yoo      2022-04-17  455                  break;
26efaef759a1bc Taehee Yoo      2022-04-17  456          default:
26efaef759a1bc Taehee Yoo      2022-04-17  457                  fallthrough;
26efaef759a1bc Taehee Yoo      2022-04-17  458          case XDP_ABORTED:
26efaef759a1bc Taehee Yoo      2022-04-17  459  out_aborted:
26efaef759a1bc Taehee Yoo      2022-04-17  460                  
u64_stats_update_begin(&rx_ring->stats.rx.syncp);
26efaef759a1bc Taehee Yoo      2022-04-17  461                  
++rx_ring->stats.rx.xdp_aborted;
26efaef759a1bc Taehee Yoo      2022-04-17  462                  
u64_stats_update_end(&rx_ring->stats.rx.syncp);
26efaef759a1bc Taehee Yoo      2022-04-17  463                  
trace_xdp_exception(aq_nic->ndev, prog, act);
26efaef759a1bc Taehee Yoo      2022-04-17  464                  
bpf_warn_invalid_xdp_action(aq_nic->ndev, prog, act);
26efaef759a1bc Taehee Yoo      2022-04-17  465                  break;
26efaef759a1bc Taehee Yoo      2022-04-17  466          case XDP_DROP:
26efaef759a1bc Taehee Yoo      2022-04-17  467                  
u64_stats_update_begin(&rx_ring->stats.rx.syncp);
26efaef759a1bc Taehee Yoo      2022-04-17  468                  
++rx_ring->stats.rx.xdp_drop;
26efaef759a1bc Taehee Yoo      2022-04-17  469                  
u64_stats_update_end(&rx_ring->stats.rx.syncp);
26efaef759a1bc Taehee Yoo      2022-04-17  470                  break;
26efaef759a1bc Taehee Yoo      2022-04-17  471          }
26efaef759a1bc Taehee Yoo      2022-04-17  472  
26efaef759a1bc Taehee Yoo      2022-04-17 @473          return ERR_PTR(-result);
26efaef759a1bc Taehee Yoo      2022-04-17  474  }
26efaef759a1bc Taehee Yoo      2022-04-17  475  

-- 
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