Re: [PATCH 1/1] net: fec: add initial XDP support
From: kernel test robot <hidden>
Date: 2022-09-29 02:44:11
Also in:
imx, lkml
Hi Shenwei, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on net-next/master] [also build test WARNING on next-20220928] [cannot apply to net/master linus/master v6.0-rc7] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Shenwei-Wang/net-fec-add-initial-XDP-support/20220928-232917 base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git b9a5cbf8ba24e88071a97a51a09ef5cdf0d1f6a1 config: parisc-randconfig-m031-20220925 compiler: hppa64-linux-gcc (GCC) 12.1.0 If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot [off-list ref] New smatch warnings: drivers/net/ethernet/freescale/fec_main.c:3285 fec_enet_alloc_rxq_buffers() warn: unsigned 'err' is never less than zero. Old smatch warnings: drivers/net/ethernet/freescale/fec_main.c:3658 fec_enet_select_queue() warn: potential spectre issue 'fec_enet_vlan_pri_to_queue' [r] vim +/err +3285 drivers/net/ethernet/freescale/fec_main.c 3269 3270 static int 3271 fec_enet_alloc_rxq_buffers(struct net_device *ndev, unsigned int queue) 3272 { 3273 struct fec_enet_private *fep = netdev_priv(ndev); 3274 unsigned int i, err; 3275 struct bufdesc *bdp; 3276 struct fec_enet_priv_rx_q *rxq; 3277 3278 dma_addr_t phys_addr; 3279 struct page *page; 3280 3281 rxq = fep->rx_queue[queue]; 3282 bdp = rxq->bd.base; 3283 3284 err = fec_enet_create_page_pool(fep, rxq, rxq->bd.ring_size);
3285 if (err < 0) { 3286 netdev_err(ndev, "%s failed queue %d (%d)\n", __func__, queue, err);
3287 return err;
3288 }
3289
3290 for (i = 0; i < rxq->bd.ring_size; i++) {
3291 page = page_pool_dev_alloc_pages(rxq->page_pool);
3292 if (!page)
3293 goto err_alloc;
3294
3295 phys_addr = page_pool_get_dma_addr(page) + FEC_ENET_XDP_HEADROOM;
3296 bdp->cbd_bufaddr = cpu_to_fec32(phys_addr);
3297
3298 rxq->rx_skb_info[i].page = page;
3299 rxq->rx_skb_info[i].offset = FEC_ENET_XDP_HEADROOM;
3300 bdp->cbd_sc = cpu_to_fec16(BD_ENET_RX_EMPTY);
3301
3302 if (fep->bufdesc_ex) {
3303 struct bufdesc_ex *ebdp = (struct bufdesc_ex *)bdp;
3304 ebdp->cbd_esc = cpu_to_fec32(BD_ENET_RX_INT);
3305 }
3306
3307 bdp = fec_enet_get_nextdesc(bdp, &rxq->bd);
3308 }
3309
3310 /* Set the last buffer to wrap. */
3311 bdp = fec_enet_get_prevdesc(bdp, &rxq->bd);
3312 bdp->cbd_sc |= cpu_to_fec16(BD_SC_WRAP);
3313 return 0;
3314
3315 err_alloc:
3316 fec_enet_free_buffers(ndev);
3317 return -ENOMEM;
3318 }
3319
--
0-DAY CI Kernel Test Service
https://01.org/lkp