On 2/13/25 6:31 AM, Suman Ghosh wrote: > +void otx2_zc_napi_handler(struct otx2_nic *pfvf, struct xsk_buff_pool *pool, > + int queue, int budget) > +{ > + struct xdp_desc *xdp_desc = pool->tx_descs; > + int err, i, work_done = 0, batch; > + > + budget = min(budget, otx2_read_free_sqe(pfvf, queue)); > + batch = xsk_tx_peek_release_desc_batch(pool, budget); > + if (!batch) > + return; > + > + for (i = 0; i < batch; i++) { > + dma_addr_t dma_addr; > + > + dma_addr = xsk_buff_raw_get_dma(pool, xdp_desc[i].addr); > + err = otx2_xdp_sq_append_pkt(pfvf, NULL, dma_addr, xdp_desc[i].len, > + queue, OTX2_AF_XDP_FRAME); > + if (!err) { > + netdev_err(pfvf->netdev, "AF_XDP: Unable to transfer packet err%d\n", err); Here `err` is always 0, dumping it's value is quite confusing. The root cause is that otx2_xdp_sq_append_pkt() returns a success boolean value, the variable holding it should possibly be renamed accordingly. Since this is the only nit I could find, I think we are better without a repost, but please follow-up on this chunk soon. Thanks, Paolo