Now that page_pool reference counting is dispatched directly from each netmem's type and skb->pp_recycle has been removed, skb_mark_for_recycle() is a no-op stub with no remaining purpose. Remove its definition, all in-tree callers, and its reference in Documentation/networking/page_pool.rst.
Signed-off-by: Mina Almasry <[email protected]> --- Documentation/networking/page_pool.rst | 1 - drivers/net/ethernet/airoha/airoha_eth.c | 1 - drivers/net/ethernet/alibaba/eea/eea_rx.c | 3 --- drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c | 1 - drivers/net/ethernet/broadcom/bnge/bnge_txrx.c | 5 ----- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 8 -------- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 2 -- drivers/net/ethernet/cisco/enic/enic_rq.c | 1 - drivers/net/ethernet/engleder/tsnep_main.c | 2 -- drivers/net/ethernet/freescale/fec_main.c | 1 - drivers/net/ethernet/google/gve/gve_rx_dqo.c | 9 --------- drivers/net/ethernet/hisilicon/hibmcge/hbg_txrx.c | 1 - drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 6 ------ drivers/net/ethernet/huawei/hinic3/hinic3_rx.c | 1 - drivers/net/ethernet/intel/iavf/iavf_txrx.c | 2 -- drivers/net/ethernet/marvell/mvneta.c | 2 -- drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 2 -- .../net/ethernet/marvell/octeontx2/nic/otx2_txrx.c | 1 - drivers/net/ethernet/mediatek/mtk_eth_soc.c | 1 - drivers/net/ethernet/mellanox/mlx4/en_rx.c | 1 - drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 8 -------- drivers/net/ethernet/mellanox/mlxsw/pci.c | 2 -- drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c | 2 -- .../ethernet/microchip/sparx5/lan969x/lan969x_fdma.c | 1 - drivers/net/ethernet/microsoft/mana/mana_en.c | 3 --- drivers/net/ethernet/mucse/rnpgbe/rnpgbe_lib.c | 1 - drivers/net/ethernet/pensando/ionic/ionic_txrx.c | 2 -- drivers/net/ethernet/realtek/rtase/rtase_main.c | 1 - drivers/net/ethernet/renesas/ravb_main.c | 2 -- drivers/net/ethernet/socionext/netsec.c | 1 - drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 1 - drivers/net/ethernet/tehuti/tn40.c | 1 - drivers/net/ethernet/ti/am65-cpsw-nuss.c | 1 - drivers/net/ethernet/ti/cpsw.c | 2 -- drivers/net/ethernet/ti/cpsw_new.c | 2 -- drivers/net/ethernet/ti/icssg/icssg_common.c | 1 - drivers/net/ethernet/wangxun/libwx/wx_lib.c | 2 -- drivers/net/virtio_net.c | 8 +------- drivers/net/vmxnet3/vmxnet3_xdp.c | 1 - drivers/net/wireless/mediatek/mt76/dma.c | 1 - drivers/net/wireless/mediatek/mt76/mt7996/mac.c | 1 - drivers/net/wireless/mediatek/mt76/npu.c | 1 - drivers/net/wireless/mediatek/mt76/usb.c | 1 - drivers/net/xen-netfront.c | 1 - include/linux/skbuff.h | 5 ----- include/net/page_pool/helpers.h | 5 ++--- net/core/skbuff.c | 1 - net/core/xdp.c | 11 ++--------- 48 files changed, 5 insertions(+), 115 deletions(-) diff --git a/Documentation/networking/page_pool.rst b/Documentation/networking/page_pool.rst index d0be2b800a060..5b2d6d011fc1b 100644 --- a/Documentation/networking/page_pool.rst +++ b/Documentation/networking/page_pool.rst @@ -166,7 +166,6 @@ NAPI poller if XDP_DROP: page_pool_recycle_direct(page_pool, page); } else (packet_is_skb) { - skb_mark_for_recycle(skb); new_page = page_pool_dev_alloc_pages(page_pool); } } diff --git a/drivers/net/ethernet/airoha/airoha_eth.c b/drivers/net/ethernet/airoha/airoha_eth.c index b164a78ddac9d..980b8c1d0dc49 100644 --- a/drivers/net/ethernet/airoha/airoha_eth.c +++ b/drivers/net/ethernet/airoha/airoha_eth.c @@ -925,7 +925,6 @@ static int airoha_qdma_rx_process(struct airoha_queue *q, int budget) skb_reserve(q->skb, AIROHA_RX_HEADROOM); __skb_put(q->skb, len); - skb_mark_for_recycle(q->skb); q->skb->dev = netdev; q->skb->ip_summed = CHECKSUM_UNNECESSARY; skb_record_rx_queue(q->skb, qid); diff --git a/drivers/net/ethernet/alibaba/eea/eea_rx.c b/drivers/net/ethernet/alibaba/eea/eea_rx.c index 5dfb7cb2ba6d2..27feb9cdedd7e 100644 --- a/drivers/net/ethernet/alibaba/eea/eea_rx.c +++ b/drivers/net/ethernet/alibaba/eea/eea_rx.c @@ -319,8 +319,6 @@ static struct sk_buff *eea_rx_build_split_hdr_skb(struct eea_net_rx *rx, skb_add_rx_frag(skb, 0, page, offset, ctx->len, truesize); } - skb_mark_for_recycle(skb); - return skb; } @@ -345,7 +343,6 @@ static struct sk_buff *eea_rx_build_skb(struct eea_net_rx *rx, return NULL; truesize = eea_consume_rx_buffer(rx, meta, bufsize); - skb_mark_for_recycle(skb); skb->truesize += truesize - bufsize; diff --git a/drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c b/drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c index f09054a02feb6..005476e150710 100644 --- a/drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c +++ b/drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c @@ -576,7 +576,6 @@ static int bcmasp_rx_poll(struct napi_struct *napi, int budget) skb_reserve(skb, NET_SKB_PAD); skb_put(skb, len); memcpy(skb->data, data, len); - skb_mark_for_recycle(skb); /* Skip the 2-byte hardware alignment pad. */ skb_pull(skb, 2); diff --git a/drivers/net/ethernet/broadcom/bnge/bnge_txrx.c b/drivers/net/ethernet/broadcom/bnge/bnge_txrx.c index 472b02cc43b3c..de352d53628c9 100644 --- a/drivers/net/ethernet/broadcom/bnge/bnge_txrx.c +++ b/drivers/net/ethernet/broadcom/bnge/bnge_txrx.c @@ -240,7 +240,6 @@ static struct sk_buff *bnge_rx_agg_netmems_skb(struct bnge_net *bn, total_frag_len = __bnge_rx_agg_netmems(bn, cpr, idx, agg_bufs, tpa, skb); if (!total_frag_len) { - skb_mark_for_recycle(skb); dev_kfree_skb(skb); return NULL; } @@ -468,7 +467,6 @@ void bnge_reuse_rx_data(struct bnge_rx_ring_info *rxr, u16 cons, void *data) static void bnge_deliver_skb(struct bnge_net *bn, struct bnge_napi *bnapi, struct sk_buff *skb) { - skb_mark_for_recycle(skb); skb_record_rx_queue(skb, bnapi->index); napi_gro_receive(&bnapi->napi, skb); } @@ -659,7 +657,6 @@ static struct sk_buff *bnge_tpa_end(struct bnge_net *bn, bnge_abort_tpa(cpr, idx, agg_bufs); return NULL; } - skb_mark_for_recycle(skb); skb_reserve(skb, bn->rx_offset); skb_put(skb, len); } @@ -761,7 +758,6 @@ static struct sk_buff *bnge_rx_vlan(struct sk_buff *skb, u8 cmp_type, return skb; vlan_err: - skb_mark_for_recycle(skb); dev_kfree_skb(skb); return NULL; } @@ -790,7 +786,6 @@ static struct sk_buff *bnge_rx_skb(struct bnge_net *bn, return NULL; } - skb_mark_for_recycle(skb); skb_reserve(skb, bn->rx_offset); skb_put(skb, len); return skb; diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 757c7266ce15d..af385c0c43b6e 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -1226,7 +1226,6 @@ static struct sk_buff *bnxt_rx_multi_page_skb(struct bnxt *bp, bnxt_reuse_rx_data(rxr, cons, data); return NULL; } - skb_mark_for_recycle(skb); skb_reserve(skb, data_ptr - (u8 *)frag_start); __skb_put(skb, len); @@ -1265,7 +1264,6 @@ static struct sk_buff *bnxt_rx_page_skb(struct bnxt *bp, return NULL; } - skb_mark_for_recycle(skb); off = (void *)data_ptr - page_address(page); skb_add_rx_frag(skb, 0, page, off, len, rxr->rx_page_size); memcpy(skb->data - NET_IP_ALIGN, data_ptr - NET_IP_ALIGN, @@ -1304,7 +1302,6 @@ static struct sk_buff *bnxt_rx_skb(struct bnxt *bp, return NULL; } - skb_mark_for_recycle(skb); skb_reserve(skb, bp->rx_offset); skb_put(skb, offset_and_len & 0xffff); return skb; @@ -1411,7 +1408,6 @@ static struct sk_buff *bnxt_rx_agg_netmems_skb(struct bnxt *bp, total_frag_len = __bnxt_rx_agg_netmems(bp, cpr, idx, agg_bufs, tpa, skb, NULL); if (!total_frag_len) { - skb_mark_for_recycle(skb); dev_kfree_skb(skb); return NULL; } @@ -2023,7 +2019,6 @@ static inline struct sk_buff *bnxt_tpa_end(struct bnxt *bp, cpr->sw_stats->rx.rx_oom_discards += 1; return NULL; } - skb_mark_for_recycle(skb); skb_reserve(skb, bp->rx_offset); skb_put(skb, len); } @@ -2088,8 +2083,6 @@ static void bnxt_tpa_agg(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, static void bnxt_deliver_skb(struct bnxt *bp, struct bnxt_napi *bnapi, struct sk_buff *skb) { - skb_mark_for_recycle(skb); - if (skb->dev != bp->dev) { /* this packet belongs to a vf-rep */ bnxt_vf_rep_rx(bp, skb); @@ -2151,7 +2144,6 @@ static struct sk_buff *bnxt_rx_vlan(struct sk_buff *skb, u8 cmp_type, } return skb; vlan_err: - skb_mark_for_recycle(skb); dev_kfree_skb(skb); return NULL; } diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c index 4d2be2a21ed1b..240d2d5e4f5fe 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -2437,8 +2437,6 @@ static unsigned int bcmgenet_desc_rx(struct bcmgenet_rx_ring *ring, goto next; } - skb_mark_for_recycle(skb); - /* Reserve the RSB + pad, then set the data length */ skb_reserve(skb, GENET_RSB_PAD); __skb_put(skb, len - GENET_RSB_PAD); diff --git a/drivers/net/ethernet/cisco/enic/enic_rq.c b/drivers/net/ethernet/cisco/enic/enic_rq.c index ccbf5c9a21d0f..1221a4a289294 100644 --- a/drivers/net/ethernet/cisco/enic/enic_rq.c +++ b/drivers/net/ethernet/cisco/enic/enic_rq.c @@ -369,7 +369,6 @@ static void enic_rq_indicate_buf(struct enic *enic, struct vnic_rq *rq, fcoe_fc_crc_ok, vlan_stripped, csum_not_calc, tcp_udp_csum_ok, ipv6, ipv4_csum_ok, vlan_tci, skb); - skb_mark_for_recycle(skb); napi_gro_frags(napi); if (enic->rx_coalesce_setting.use_adaptive_rx_coalesce) enic_intr_update_pkt_size(&cq->pkt_size_counter, diff --git a/drivers/net/ethernet/engleder/tsnep_main.c b/drivers/net/ethernet/engleder/tsnep_main.c index 5db04e209dc67..e0881dd53912d 100644 --- a/drivers/net/ethernet/engleder/tsnep_main.c +++ b/drivers/net/ethernet/engleder/tsnep_main.c @@ -1416,8 +1416,6 @@ static void tsnep_rx_page(struct tsnep_rx *rx, struct napi_struct *napi, skb = tsnep_build_skb(rx, page, length); if (skb) { - skb_mark_for_recycle(skb); - rx->packets++; rx->bytes += length; if (skb->pkt_type == PACKET_MULTICAST) diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index f7636f23d1ebb..42499a269ad6c 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -1855,7 +1855,6 @@ static struct sk_buff *fec_build_skb(struct fec_enet_private *fep, skb_reserve(skb, FEC_ENET_XDP_HEADROOM + fep->rx_shift); skb_put(skb, len); - skb_mark_for_recycle(skb); /* Get offloads from the enhanced buffer descriptor */ if (fep->bufdesc_ex) { diff --git a/drivers/net/ethernet/google/gve/gve_rx_dqo.c b/drivers/net/ethernet/google/gve/gve_rx_dqo.c index 82ed5e48b00ab..3942e5d117c14 100644 --- a/drivers/net/ethernet/google/gve/gve_rx_dqo.c +++ b/drivers/net/ethernet/google/gve/gve_rx_dqo.c @@ -622,9 +622,6 @@ static int gve_rx_append_frags(struct napi_struct *napi, if (!skb) return -1; - if (rx->dqo.page_pool) - skb_mark_for_recycle(skb); - if (rx->ctx.skb_tail == rx->ctx.skb_head) skb_shinfo(rx->ctx.skb_head)->frag_list = skb; else @@ -883,9 +880,6 @@ static int gve_rx_dqo(struct napi_struct *napi, struct gve_rx_ring *rx, if (unlikely(!rx->ctx.skb_head)) goto error; rx->ctx.skb_tail = rx->ctx.skb_head; - - if (rx->dqo.page_pool) - skb_mark_for_recycle(rx->ctx.skb_head); } else { unsplit = 1; } @@ -988,9 +982,6 @@ static int gve_rx_dqo(struct napi_struct *napi, struct gve_rx_ring *rx, return 0; } - if (rx->dqo.page_pool) - skb_mark_for_recycle(rx->ctx.skb_head); - gve_skb_add_rx_frag(rx, buf_state, 0, buf_len); gve_reuse_buffer(rx, buf_state); return 0; diff --git a/drivers/net/ethernet/hisilicon/hibmcge/hbg_txrx.c b/drivers/net/ethernet/hisilicon/hibmcge/hbg_txrx.c index 2ea025fd964fd..3204203230795 100644 --- a/drivers/net/ethernet/hisilicon/hibmcge/hbg_txrx.c +++ b/drivers/net/ethernet/hisilicon/hibmcge/hbg_txrx.c @@ -471,7 +471,6 @@ static int hbg_build_skb(struct hbg_priv *priv, buffer->skb = napi_build_skb(buffer->page_addr, buffer->page_size); if (unlikely(!buffer->skb)) return -ENOMEM; - skb_mark_for_recycle(buffer->skb); /* page will be freed together with the skb */ buffer->page = NULL; diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c index 47788be64be68..ed6e75b45c25e 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c @@ -4125,9 +4125,6 @@ static int hns3_alloc_skb(struct hns3_enet_ring *ring, unsigned int length, return 0; } - if (ring->page_pool) - skb_mark_for_recycle(skb); - hns3_ring_stats_update(ring, seg_pkt_cnt); ring->pull_len = eth_get_headlen(netdev, va, HNS3_RX_HEAD_SIZE); @@ -4165,9 +4162,6 @@ static int hns3_add_frag(struct hns3_enet_ring *ring) return -ENXIO; } - if (ring->page_pool) - skb_mark_for_recycle(new_skb); - ring->frag_num = 0; if (ring->tail_skb) { diff --git a/drivers/net/ethernet/huawei/hinic3/hinic3_rx.c b/drivers/net/ethernet/huawei/hinic3/hinic3_rx.c index 309ab59013797..4f94c13eedf3f 100644 --- a/drivers/net/ethernet/huawei/hinic3/hinic3_rx.c +++ b/drivers/net/ethernet/huawei/hinic3/hinic3_rx.c @@ -234,7 +234,6 @@ static void hinic3_add_rx_frag(struct hinic3_rxq *rxq, skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, page, rx_info->page_offset, size, rxq->buf_len); - skb_mark_for_recycle(skb); } static void packaging_skb(struct hinic3_rxq *rxq, struct sk_buff *skb, diff --git a/drivers/net/ethernet/intel/iavf/iavf_txrx.c b/drivers/net/ethernet/intel/iavf/iavf_txrx.c index 8982cf75466fa..6b863035d3ae9 100644 --- a/drivers/net/ethernet/intel/iavf/iavf_txrx.c +++ b/drivers/net/ethernet/intel/iavf/iavf_txrx.c @@ -1229,8 +1229,6 @@ static struct sk_buff *iavf_build_skb(const struct libeth_fqe *rx_buffer, if (unlikely(!skb)) return NULL; - skb_mark_for_recycle(skb); - /* update pointers within the skb to store the data */ skb_reserve(skb, hr); __skb_put(skb, size); diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c index ea755cf05b9ef..0554595fbd143 100644 --- a/drivers/net/ethernet/marvell/mvneta.c +++ b/drivers/net/ethernet/marvell/mvneta.c @@ -2407,8 +2407,6 @@ mvneta_swbm_build_skb(struct mvneta_port *pp, struct page_pool *pool, if (!skb) return ERR_PTR(-ENOMEM); - skb_mark_for_recycle(skb); - skb_reserve(skb, xdp->data - xdp->data_hard_start); skb_put(skb, xdp->data_end - xdp->data); if (metasize) diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c index 317af54369cfe..7d4c6ce505697 100644 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c @@ -4030,8 +4030,6 @@ static int mvpp2_rx(struct mvpp2_port *port, struct napi_struct *napi, } goto err_drop_frame_retired; } - if (pp) - skb_mark_for_recycle(skb); /* If we have RX hardware timestamping enabled, grab the * timestamp from the queue and convert. diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c index 90af9b9044aa0..8869e9f1d6b5a 100644 --- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c +++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c @@ -383,7 +383,6 @@ static void otx2_rcv_pkt_handler(struct otx2_nic *pfvf, if (pfvf->flags & OTX2_FLAG_TC_MARK_ENABLED) skb->mark = parse->match_id; - skb_mark_for_recycle(skb); if (metasize) skb_metadata_set(skb, metasize); diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c index ad0fdc4133fb6..51105efb0ed6f 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -2305,7 +2305,6 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget, metasize = xdp.data - xdp.data_meta; if (metasize) skb_metadata_set(skb, metasize); - skb_mark_for_recycle(skb); } else { if (ring->frag_size <= PAGE_SIZE) new_data = napi_alloc_frag(ring->frag_size); diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c index fe18606c2ab55..6c59761b903b0 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c @@ -856,7 +856,6 @@ int mlx4_en_process_rx_cq(struct net_device *dev, struct mlx4_en_cq *cq, int bud skb = napi_get_frags(&cq->napi); if (unlikely(!skb)) goto next; - skb_mark_for_recycle(skb); if (unlikely(ring->hwtstamp_rx_filter == HWTSTAMP_FILTER_ALL)) { u64 timestamp = mlx4_en_get_cqe_ts(cqe); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c index 22fea4739a2c9..f2b5ab014d549 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c @@ -1614,7 +1614,6 @@ mlx5e_skb_from_cqe_linear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi, return NULL; /* queue up for recycling/reuse */ - skb_mark_for_recycle(skb); frag_page->frags++; return skb; @@ -1701,7 +1700,6 @@ mlx5e_skb_from_cqe_nonlinear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi if (unlikely(!skb)) return NULL; - skb_mark_for_recycle(skb); head_wi->frag_page->frags++; if (xdp_buff_has_frags(&mxbuf->xdp)) { @@ -1966,7 +1964,6 @@ mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *w rq->stats->buff_alloc_err++; return NULL; } - skb_mark_for_recycle(skb); va = skb->head; net_prefetchw(va); /* xdp_frame data area */ net_prefetchw(skb->data); @@ -2046,7 +2043,6 @@ mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *w if (unlikely(!skb)) return NULL; - skb_mark_for_recycle(skb); linear_page->frags++; if (xdp_buff_has_frags(&mxbuf->xdp)) { @@ -2146,7 +2142,6 @@ mlx5e_skb_from_cqe_mpwrq_linear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi, return NULL; /* queue up for recycling/reuse */ - skb_mark_for_recycle(skb); frag_page->frags++; return skb; @@ -2176,9 +2171,6 @@ mlx5e_skb_from_cqe_shampo(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi, head_offset, head_offset, len); __skb_put(skb, head_size); - /* queue up for recycling/reuse */ - skb_mark_for_recycle(skb); - return skb; } diff --git a/drivers/net/ethernet/mellanox/mlxsw/pci.c b/drivers/net/ethernet/mellanox/mlxsw/pci.c index dceb69945d26e..a81cff6a6b7b8 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/pci.c +++ b/drivers/net/ethernet/mellanox/mlxsw/pci.c @@ -776,8 +776,6 @@ static void mlxsw_pci_cqe_rdq_handle(struct mlxsw_pci *mlxsw_pci, goto out; } - skb_mark_for_recycle(skb); - if (mlxsw_pci_cqe_lag_get(cqe_v, cqe)) { rx_info.is_lag = true; rx_info.u.lag_id = mlxsw_pci_cqe_lag_id_get(cqe_v, cqe); diff --git a/drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c b/drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c index 21668bbcc9063..e4f091fd7956c 100644 --- a/drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c +++ b/drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c @@ -439,8 +439,6 @@ static struct sk_buff *lan966x_fdma_rx_get_frame(struct lan966x_rx *rx, if (unlikely(!skb)) goto free_page; - skb_mark_for_recycle(skb); - skb_reserve(skb, XDP_PACKET_HEADROOM); skb_put(skb, fdma_db_len_get(db)); diff --git a/drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c b/drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c index 053d125eda658..f9c610c18b2c3 100644 --- a/drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c +++ b/drivers/net/ethernet/microchip/sparx5/lan969x/lan969x_fdma.c @@ -120,7 +120,6 @@ static struct sk_buff *lan969x_fdma_rx_get_frame(struct sparx5 *sparx5, if (unlikely(!skb)) goto free_page; - skb_mark_for_recycle(skb); skb_put(skb, fdma_db_len_get(db)); skb_pull(skb, IFH_LEN * sizeof(u32)); diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/ethernet/microsoft/mana/mana_en.c index 6b7c027e497ed..2f670e3c61d80 100644 --- a/drivers/net/ethernet/microsoft/mana/mana_en.c +++ b/drivers/net/ethernet/microsoft/mana/mana_en.c @@ -2170,9 +2170,6 @@ static void mana_rx_skb(void *buf_va, bool from_pool, if (!skb) goto drop; - if (from_pool) - skb_mark_for_recycle(skb); - skb->dev = napi->dev; skb->protocol = eth_type_trans(skb, ndev); diff --git a/drivers/net/ethernet/mucse/rnpgbe/rnpgbe_lib.c b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe_lib.c index b7b0c45a0f664..03ba794d6d727 100644 --- a/drivers/net/ethernet/mucse/rnpgbe/rnpgbe_lib.c +++ b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe_lib.c @@ -332,7 +332,6 @@ static struct sk_buff *rnpgbe_build_skb(struct mucse_rx_buffer *rx_buffer, /* update pointers within the skb to store the data */ skb_reserve(skb, RNPGBE_SKB_PAD); __skb_put(skb, size); - skb_mark_for_recycle(skb); return skb; } diff --git a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c index 2543a8ff85476..8b85bb7effdd5 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_txrx.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_txrx.c @@ -198,7 +198,6 @@ static struct sk_buff *ionic_rx_build_skb(struct ionic_queue *q, q_to_rx_stats(q)->alloc_err++; return NULL; } - skb_mark_for_recycle(skb); if (headroom) frag_len = min_t(u16, len, @@ -249,7 +248,6 @@ static struct sk_buff *ionic_rx_copybreak(struct net_device *netdev, q_to_rx_stats(q)->alloc_err++; return NULL; } - skb_mark_for_recycle(skb); if (!synced) page_pool_dma_sync_for_cpu(q->page_pool, diff --git a/drivers/net/ethernet/realtek/rtase/rtase_main.c b/drivers/net/ethernet/realtek/rtase/rtase_main.c index e3cd4f7c13804..4d1cd4f8c2d07 100644 --- a/drivers/net/ethernet/realtek/rtase/rtase_main.c +++ b/drivers/net/ethernet/realtek/rtase/rtase_main.c @@ -562,7 +562,6 @@ static int rx_handler(struct rtase_ring *ring, int budget) rtase_rx_csum(tp, skb, desc); skb_put(skb, pkt_size); - skb_mark_for_recycle(skb); skb->protocol = eth_type_trans(skb, dev); if (skb->pkt_type == PACKET_MULTICAST) diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index 5a07cc0180d8b..135081fce0bbd 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -877,7 +877,6 @@ static int ravb_rx_gbeth(struct net_device *ndev, int budget, int q) true); goto refill; } - skb_mark_for_recycle(skb); skb_put(skb, desc_len); /* Save this skb if the packet spans multiple @@ -1041,7 +1040,6 @@ static int ravb_rx_rcar(struct net_device *ndev, int budget, int q) rx_buff->page, 0, true); break; } - skb_mark_for_recycle(skb); ravb_rx_rcar_hwstamp(priv, q, desc, skb); diff --git a/drivers/net/ethernet/socionext/netsec.c b/drivers/net/ethernet/socionext/netsec.c index 79a0a324c921d..95da134dc847a 100644 --- a/drivers/net/ethernet/socionext/netsec.c +++ b/drivers/net/ethernet/socionext/netsec.c @@ -1044,7 +1044,6 @@ static int netsec_process_rx(struct netsec_priv *priv, int budget) "rx failed to build skb\n"); break; } - skb_mark_for_recycle(skb); skb_reserve(skb, xdp.data - xdp.data_hard_start); skb_put(skb, xdp.data_end - xdp.data); diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 9ded31150fbe6..5ce03aec41024 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -6010,7 +6010,6 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit, u32 queue) head_pad_len = ctx.xdp.data - ctx.xdp.data_hard_start; skb_reserve(skb, head_pad_len); skb_put(skb, buf1_len); - skb_mark_for_recycle(skb); buf->page = NULL; } else if (buf1_len) { dma_sync_single_for_cpu(priv->device, buf->addr, diff --git a/drivers/net/ethernet/tehuti/tn40.c b/drivers/net/ethernet/tehuti/tn40.c index 558b791a97edd..c1fcc28e44322 100644 --- a/drivers/net/ethernet/tehuti/tn40.c +++ b/drivers/net/ethernet/tehuti/tn40.c @@ -384,7 +384,6 @@ static int tn40_rx_receive(struct tn40_priv *priv, int budget) tn40_recycle_rx_buffer(priv, rxdd); break; } - skb_mark_for_recycle(skb); skb_put(skb, len); skb->protocol = eth_type_trans(skb, priv->ndev); skb->ip_summed = diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c index 2551554add17a..48be2ba48a7f5 100644 --- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c +++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c @@ -1353,7 +1353,6 @@ static int am65_cpsw_nuss_rx_packets(struct am65_cpsw_rx_flow *flow, skb_put(skb, pkt_len); if (port->rx_ts_filter) am65_cpts_rx_timestamp(common->cpts, port_id, skb); - skb_mark_for_recycle(skb); skb->protocol = eth_type_trans(skb, ndev); am65_cpsw_nuss_rx_csum(skb, csum_info); napi_gro_receive(&flow->napi_rx, skb); diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index 8d36124520ad3..2ffdd8086b45b 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c @@ -453,8 +453,6 @@ static void cpsw_rx_handler(void *token, int len, int status) cpts_rx_timestamp(cpsw->cpts, skb); skb->protocol = eth_type_trans(skb, ndev); - /* mark skb for recycling */ - skb_mark_for_recycle(skb); netif_receive_skb(skb); ndev->stats.rx_bytes += len; diff --git a/drivers/net/ethernet/ti/cpsw_new.c b/drivers/net/ethernet/ti/cpsw_new.c index 07832cad5e3c2..996b513f349f1 100644 --- a/drivers/net/ethernet/ti/cpsw_new.c +++ b/drivers/net/ethernet/ti/cpsw_new.c @@ -397,8 +397,6 @@ static void cpsw_rx_handler(void *token, int len, int status) cpts_rx_timestamp(cpsw->cpts, skb); skb->protocol = eth_type_trans(skb, ndev); - /* mark skb for recycling */ - skb_mark_for_recycle(skb); netif_receive_skb(skb); ndev->stats.rx_bytes += len; diff --git a/drivers/net/ethernet/ti/icssg/icssg_common.c b/drivers/net/ethernet/ti/icssg/icssg_common.c index 4a7d1a6f470b1..20c5f44df2578 100644 --- a/drivers/net/ethernet/ti/icssg/icssg_common.c +++ b/drivers/net/ethernet/ti/icssg/icssg_common.c @@ -1131,7 +1131,6 @@ static int emac_rx_packet(struct prueth_emac *emac, u32 flow_id, u32 *xdp_state) skb->offload_fwd_mark = emac->offload_fwd_mark; skb->protocol = eth_type_trans(skb, ndev); - skb_mark_for_recycle(skb); napi_gro_receive(&emac->napi_rx, skb); ndev->stats.rx_bytes += pkt_len; ndev->stats.rx_packets++; diff --git a/drivers/net/ethernet/wangxun/libwx/wx_lib.c b/drivers/net/ethernet/wangxun/libwx/wx_lib.c index dcbf5811046e9..8de18c10de99b 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_lib.c +++ b/drivers/net/ethernet/wangxun/libwx/wx_lib.c @@ -259,8 +259,6 @@ static struct sk_buff *wx_build_skb(struct wx_ring *rx_ring, return skb; } - skb_mark_for_recycle(skb); - if (!wx_test_staterr(rx_desc, WX_RXD_STAT_EOP)) WX_CB(skb)->dma = rx_buffer->dma; diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 3453689bfd341..9fa7b1a40624f 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -1930,8 +1930,6 @@ static struct sk_buff *receive_small_xdp(struct net_device *dev, if (metasize) skb_metadata_set(skb, metasize); - skb_mark_for_recycle(skb); - return skb; err_xdp: @@ -1987,10 +1985,8 @@ static struct sk_buff *receive_small(struct net_device *dev, } skb = receive_small_build_skb(vi, xdp_headroom, buf, len, buflen); - if (likely(skb)) { - skb_mark_for_recycle(skb); + if (likely(skb)) return skb; - } u64_stats_inc(&stats->alloc_fail); err: @@ -2313,7 +2309,6 @@ static struct sk_buff *receive_mergeable_xdp(struct net_device *dev, break; } - skb_mark_for_recycle(head_skb); return head_skb; case XDP_TX: @@ -2425,7 +2420,6 @@ static struct sk_buff *receive_mergeable(struct net_device *dev, goto err_skb; } - skb_mark_for_recycle(head_skb); while (--num_buf) { buf = virtnet_rq_get_buf(rq, &len, &ctx); if (unlikely(!buf)) { diff --git a/drivers/net/vmxnet3/vmxnet3_xdp.c b/drivers/net/vmxnet3/vmxnet3_xdp.c index 5f470499e6002..9d1da8809501a 100644 --- a/drivers/net/vmxnet3/vmxnet3_xdp.c +++ b/drivers/net/vmxnet3/vmxnet3_xdp.c @@ -325,7 +325,6 @@ vmxnet3_build_skb(struct vmxnet3_rx_queue *rq, struct page *page, /* bpf prog might change len and data position. */ skb_reserve(skb, xdp->data - xdp->data_hard_start); skb_put(skb, xdp->data_end - xdp->data); - skb_mark_for_recycle(skb); return skb; } diff --git a/drivers/net/wireless/mediatek/mt76/dma.c b/drivers/net/wireless/mediatek/mt76/dma.c index a67880a9281c5..2ba62421c5ae0 100644 --- a/drivers/net/wireless/mediatek/mt76/dma.c +++ b/drivers/net/wireless/mediatek/mt76/dma.c @@ -1075,7 +1075,6 @@ mt76_dma_rx_process(struct mt76_dev *dev, struct mt76_queue *q, int budget) goto free_frag; skb_reserve(skb, q->buf_offset); - skb_mark_for_recycle(skb); *(u32 *)skb->cb = info; diff --git a/drivers/net/wireless/mediatek/mt76/mt7996/mac.c b/drivers/net/wireless/mediatek/mt76/mt7996/mac.c index f36da545045b8..7a3fccc74dcce 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7996/mac.c +++ b/drivers/net/wireless/mediatek/mt76/mt7996/mac.c @@ -2041,7 +2041,6 @@ void mt7996_rro_rx_process(struct mt76_dev *mdev, void *data) goto next_page; skb_reserve(skb, q->buf_offset); - skb_mark_for_recycle(skb); __skb_put(skb, len); if (ind_reason == 1 || ind_reason == 2) { diff --git a/drivers/net/wireless/mediatek/mt76/npu.c b/drivers/net/wireless/mediatek/mt76/npu.c index c4c7c0af63217..2e018d7116f33 100644 --- a/drivers/net/wireless/mediatek/mt76/npu.c +++ b/drivers/net/wireless/mediatek/mt76/npu.c @@ -91,7 +91,6 @@ static struct sk_buff *mt76_npu_dequeue(struct mt76_dev *dev, __skb_put(skb, len); skb_reset_mac_header(skb); - skb_mark_for_recycle(skb); } else { struct skb_shared_info *shinfo = skb_shinfo(skb); struct page *page = virt_to_head_page(e->buf); diff --git a/drivers/net/wireless/mediatek/mt76/usb.c b/drivers/net/wireless/mediatek/mt76/usb.c index be48a88a3ad02..f91f773ddcd68 100644 --- a/drivers/net/wireless/mediatek/mt76/usb.c +++ b/drivers/net/wireless/mediatek/mt76/usb.c @@ -563,7 +563,6 @@ mt76u_process_rx_entry(struct mt76_dev *dev, struct urb *urb, nsgs++; } - skb_mark_for_recycle(skb); dev->drv->rx_skb(dev, MT_RXQ_MAIN, skb, NULL); return nsgs; diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c index fdcb91042f290..82bef245d6d25 100644 --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c @@ -286,7 +286,6 @@ static struct sk_buff *xennet_alloc_one_rx_buffer(struct netfront_queue *queue) return NULL; } skb_add_rx_frag(skb, 0, page, 0, 0, PAGE_SIZE); - skb_mark_for_recycle(skb); /* Align ip header to a 16 bytes boundary */ skb_reserve(skb, NET_IP_ALIGN); diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 4eaf4da1f7dad..3dc77734c80a3 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -5473,11 +5473,6 @@ static inline struct kcov_common_handle_id skb_get_kcov_handle(struct sk_buff *s return skb->kcov_handle; } -/* Deprecated: page_pool recycling is now determined per netmem. */ -static inline void skb_mark_for_recycle(struct sk_buff *skb) -{ -} - ssize_t skb_splice_from_iter(struct sk_buff *skb, struct iov_iter *iter, ssize_t maxsize); diff --git a/include/net/page_pool/helpers.h b/include/net/page_pool/helpers.h index af3cb65c30416..87aca9efa40ec 100644 --- a/include/net/page_pool/helpers.h +++ b/include/net/page_pool/helpers.h @@ -42,8 +42,7 @@ * The API keeps track of in-flight pages, in order to let API users know when * it is safe to free a page_pool object, the API users must call * page_pool_put_page() or page_pool_free_va() to free the page_pool object, or - * attach the page_pool object to a page_pool-aware object like skbs marked with - * skb_mark_for_recycle(). + * attach the page_pool object to a page_pool-aware object like an skb. * * page_pool_put_page() may be called multiple times on the same page if a page * is split into multiple fragments. For the last fragment, it will either @@ -260,7 +259,7 @@ static inline void page_pool_fragment_netmem(netmem_ref netmem, long nr) * pp_ref_count represents the number of outstanding references to the page, * which will be freed using page_pool APIs (rather than page allocator APIs * like put_page()). Such references are usually held by page_pool-aware - * objects like skbs marked for page pool recycling. + * objects like skbs. * * This helper allows the caller to take (set) multiple references to a * freshly allocated page. The page must be freshly allocated (have a diff --git a/net/core/skbuff.c b/net/core/skbuff.c index e3b969e38db65..400b175a3e1ab 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -967,7 +967,6 @@ int skb_pp_cow_data(struct page_pool *pool, struct sk_buff **pskb, skb_reserve(nskb, headroom); skb_copy_header(nskb, skb); - skb_mark_for_recycle(nskb); err = skb_copy_bits(skb, 0, nskb->data, size); if (err) { diff --git a/net/core/xdp.c b/net/core/xdp.c index 6f2b9191af9ec..513a51484ecd1 100644 --- a/net/core/xdp.c +++ b/net/core/xdp.c @@ -625,8 +625,8 @@ EXPORT_SYMBOL_GPL(xdp_warn); * * Perform common operations to create a new skb to pass up the stack from * &xdp_buff: allocate an skb head from the NAPI percpu cache, initialize - * skb data pointers and offsets, set the recycle bit if the buff is - * PP-backed, Rx queue index, protocol and update frags info. + * skb data pointers and offsets, Rx queue index, protocol and update frags + * info. * * Return: new &sk_buff on success, %NULL on error. */ @@ -654,9 +654,6 @@ struct sk_buff *xdp_build_skb_from_buff(const struct xdp_buff *xdp) if (metalen > 0) skb_metadata_set(skb, metalen); - if (rxq->mem.type == MEM_TYPE_PAGE_POOL) - skb_mark_for_recycle(skb); - skb_record_rx_queue(skb, rxq->queue_index); if (unlikely(nr_frags)) { @@ -761,7 +758,6 @@ struct sk_buff *xdp_build_skb_from_zc(struct xdp_buff *xdp) goto out; } - skb_mark_for_recycle(skb); skb_reserve(skb, xdp->data_meta - xdp->data_hard_start); memcpy(__skb_put(skb, len), xdp->data_meta, LARGEST_ALIGN(len)); @@ -836,9 +832,6 @@ struct sk_buff *__xdp_build_skb_from_frame(struct xdp_frame *xdpf, * - RX ring dev queue index (skb_record_rx_queue) */ - if (xdpf->mem_type == MEM_TYPE_PAGE_POOL) - skb_mark_for_recycle(skb); - /* Allow SKB to reuse area used by xdp_frame */ xdp_scrub_frame(xdpf); -- 2.56.0.385.gac671c819a-goog
