Hi Ong,
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/Ong-Boon-Leong/stmmac-add-XDP-ZC...
base:
https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git
5b489fea977c2b23e26e2f630478da0f4bfdc879
config: m68k-randconfig-m031-20210412 (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
New smatch warnings:
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1587 stmmac_reinit_rx_buffers() warn:
always true condition '(queue >= 0) => (0-u32max >= 0)'
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:1587 stmmac_reinit_rx_buffers() warn:
always true condition '(queue >= 0) => (0-u32max >= 0)'
Old smatch warnings:
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:4423 stmmac_xdp_run_prog() error:
(-2147483647) too low for ERR_PTR
vim +1587 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
1514
1515 /**
1516 * stmmac_reinit_rx_buffers - reinit the RX descriptor buffer.
1517 * @priv: driver private structure
1518 * Description: this function is called to re-allocate a receive buffer, perform
1519 * the DMA mapping and init the descriptor.
1520 */
1521 static void stmmac_reinit_rx_buffers(struct stmmac_priv *priv)
1522 {
1523 u32 rx_count = priv->plat->rx_queues_to_use;
1524 u32 queue;
1525 int i;
1526
1527 for (queue = 0; queue < rx_count; queue++) {
1528 struct stmmac_rx_queue *rx_q = &priv->rx_queue[queue];
1529
1530 for (i = 0; i < priv->dma_rx_size; i++) {
1531 struct stmmac_rx_buffer *buf = &rx_q->buf_pool[i];
1532
1533 if (buf->page) {
1534 page_pool_recycle_direct(rx_q->page_pool, buf->page);
1535 buf->page = NULL;
1536 }
1537
1538 if (priv->sph && buf->sec_page) {
1539 page_pool_recycle_direct(rx_q->page_pool, buf->sec_page);
1540 buf->sec_page = NULL;
1541 }
1542 }
1543 }
1544
1545 for (queue = 0; queue < rx_count; queue++) {
1546 struct stmmac_rx_queue *rx_q = &priv->rx_queue[queue];
1547
1548 for (i = 0; i < priv->dma_rx_size; i++) {
1549 struct stmmac_rx_buffer *buf = &rx_q->buf_pool[i];
1550 struct dma_desc *p;
1551
1552 if (priv->extend_desc)
1553 p = &((rx_q->dma_erx + i)->basic);
1554 else
1555 p = rx_q->dma_rx + i;
1556
1557 if (!buf->page) {
1558 buf->page = page_pool_dev_alloc_pages(rx_q->page_pool);
1559 if (!buf->page)
1560 goto err_reinit_rx_buffers;
1561
1562 buf->addr = page_pool_get_dma_addr(buf->page) +
1563 buf->page_offset;
1564 }
1565
1566 if (priv->sph && !buf->sec_page) {
1567 buf->sec_page = page_pool_dev_alloc_pages(rx_q->page_pool);
1568 if (!buf->sec_page)
1569 goto err_reinit_rx_buffers;
1570
1571 buf->sec_addr = page_pool_get_dma_addr(buf->sec_page);
1572 }
1573
1574 stmmac_set_desc_addr(priv, p, buf->addr);
1575 if (priv->sph)
1576 stmmac_set_desc_sec_addr(priv, p, buf->sec_addr, true);
1577 else
1578 stmmac_set_desc_sec_addr(priv, p, buf->sec_addr, false);
1579 if (priv->dma_buf_sz == BUF_SIZE_16KiB)
1580 stmmac_init_desc3(priv, p);
1581 }
1582 }
1583
1584 return;
1585
1586 err_reinit_rx_buffers:
1587 while (queue >= 0) {
1588 dma_free_rx_skbufs(priv,
queue);
1589
1590 if (queue == 0)
1591 break;
1592
1593 queue--;
1594 }
1595 }
1596
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org