This patch: - Change trace_xdp_hook_exception to trace_xdp_exception - Remove XDP_SETUP_PROG and XDP_QUERY_PROG constants - Remove bpf_warn_invalid_xdp_action
Signed-off-by: Tom Herbert <t...@herbertland.com> --- drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 4 +-- drivers/net/ethernet/mellanox/mlx4/en_rx.c | 4 +-- drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 4 +-- .../net/ethernet/netronome/nfp/nfp_net_common.c | 8 +++--- drivers/net/ethernet/qlogic/qede/qede_fp.c | 6 ++--- drivers/net/virtio_net.c | 8 +++--- include/linux/filter.h | 1 - include/linux/netdevice.h | 15 ----------- include/trace/events/xdp.h | 29 ---------------------- kernel/bpf/core.c | 1 - net/core/filter.c | 6 ----- 11 files changed, 16 insertions(+), 70 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c index 3cfdc94..e894b67 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c @@ -134,7 +134,7 @@ bool bnxt_rx_xdp(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, u16 cons, case XDP_TX: if (tx_avail < 2) { - trace_xdp_hook_exception(bp->dev, last_hook, act); + trace_xdp_exception(bp->dev, last_hook, act); bnxt_reuse_rx_data(rxr, cons, page); return true; } @@ -150,7 +150,7 @@ bool bnxt_rx_xdp(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, u16 cons, xdp_warn_invalid_action(act); /* Fall thru */ case XDP_ABORTED: - trace_xdp_hook_exception(bp->dev, last_hook, act); + trace_xdp_exception(bp->dev, last_hook, act); /* Fall thru */ case XDP_DROP: bnxt_reuse_rx_data(rxr, cons, page); diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c index a8fddc0..d8648fe 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c @@ -927,12 +927,12 @@ int mlx4_en_process_rx_cq(struct net_device *dev, struct mlx4_en_cq *cq, int bud length, cq->ring, &doorbell_pending))) goto consumed; - trace_xdp_hook_exception(dev, last_hook, act); + trace_xdp_exception(dev, last_hook, act); goto xdp_drop_no_cnt; /* Drop on xmit failure */ default: xdp_warn_invalid_action(act); case XDP_ABORTED: - trace_xdp_hook_exception(dev, last_hook, act); + trace_xdp_exception(dev, last_hook, act); case XDP_DROP: ring->xdp_drop++; xdp_drop_no_cnt: diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c index 50ab4b9..1be1eef 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rx.c @@ -740,12 +740,12 @@ static inline int mlx5e_xdp_handle(struct mlx5e_rq *rq, return false; case XDP_TX: if (unlikely(!mlx5e_xmit_xdp_frame(rq, di, &xdp))) - trace_xdp_hook_exception(rq->netdev, last_hook, act); + trace_xdp_exception(rq->netdev, last_hook, act); return true; default: xdp_warn_invalid_action(act); case XDP_ABORTED: - trace_xdp_hook_exception(rq->netdev, last_hook, act); + trace_xdp_exception(rq->netdev, last_hook, act); case XDP_DROP: rq->stats.xdp_drop++; mlx5e_page_release(rq, di, true); diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c index 2dee867..381f6be 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c @@ -1613,15 +1613,13 @@ static int nfp_net_rx(struct nfp_net_rx_ring *rx_ring, int budget) if (unlikely(!nfp_net_tx_xdp_buf(nn, rx_ring, tx_ring, rxbuf, pkt_off, pkt_len))) - trace_xdp_hook_exception(nn->netdev, - last_hook, - act); + trace_xdp_exception(nn->netdev, + last_hook, act); continue; default: xdp_warn_invalid_action(act); case XDP_ABORTED: - trace_xdp_hook_exception(nn->netdev, last_hook, - act); + trace_xdp_exception(nn->netdev, last_hook, act); case XDP_DROP: nfp_net_rx_give_one(rx_ring, rxbuf->frag, rxbuf->dma_addr); diff --git a/drivers/net/ethernet/qlogic/qede/qede_fp.c b/drivers/net/ethernet/qlogic/qede/qede_fp.c index af885c3..f2800e3 100644 --- a/drivers/net/ethernet/qlogic/qede/qede_fp.c +++ b/drivers/net/ethernet/qlogic/qede/qede_fp.c @@ -1021,7 +1021,7 @@ static bool qede_rx_xdp(struct qede_dev *edev, /* We need the replacement buffer before transmit. */ if (qede_alloc_rx_buffer(rxq, true)) { qede_recycle_rx_bd_ring(rxq, 1); - trace_xdp_hook_exception(edev->ndev, last_hook, act); + trace_xdp_exception(edev->ndev, last_hook, act); goto out; } @@ -1032,7 +1032,7 @@ static bool qede_rx_xdp(struct qede_dev *edev, dma_unmap_page(rxq->dev, bd->mapping, PAGE_SIZE, DMA_BIDIRECTIONAL); __free_page(bd->data); - trace_xdp_hook_exception(edev->ndev, last_hook, act); + trace_xdp_exception(edev->ndev, last_hook, act); } /* Regardless, we've consumed an Rx BD */ @@ -1042,7 +1042,7 @@ static bool qede_rx_xdp(struct qede_dev *edev, default: xdp_warn_invalid_action(act); case XDP_ABORTED: - trace_xdp_hook_exception(edev->ndev, last_hook, act); + trace_xdp_exception(edev->ndev, last_hook, act); case XDP_DROP: qede_recycle_rx_bd_ring(rxq, cqe->bd_num); } diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index e8b1747..bd746e1 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -440,13 +440,13 @@ static struct sk_buff *receive_small(struct net_device *dev, break; case XDP_TX: if (unlikely(!virtnet_xdp_xmit(vi, rq, &xdp, skb))) - trace_xdp_hook_exception(vi->dev, last_hook, act); + trace_xdp_exception(vi->dev, last_hook, act); rcu_read_unlock(); goto xdp_xmit; default: xdp_warn_invalid_action(act); case XDP_ABORTED: - trace_xdp_hook_exception(vi->dev, last_hook, act); + trace_xdp_exception(vi->dev, last_hook, act); case XDP_DROP: goto err_xdp; } @@ -620,7 +620,7 @@ static struct sk_buff *receive_mergeable(struct net_device *dev, break; case XDP_TX: if (unlikely(!virtnet_xdp_xmit(vi, rq, &xdp, data))) - trace_xdp_hook_exception(vi->dev, last_hook, act); + trace_xdp_exception(vi->dev, last_hook, act); ewma_pkt_len_add(&rq->mrg_avg_pkt_len, len); if (unlikely(xdp_page != page)) goto err_xdp; @@ -629,7 +629,7 @@ static struct sk_buff *receive_mergeable(struct net_device *dev, default: xdp_warn_invalid_action(act); case XDP_ABORTED: - trace_xdp_hook_exception(vi->dev, last_hook, act); + trace_xdp_exception(vi->dev, last_hook, act); case XDP_DROP: if (unlikely(xdp_page != page)) __free_pages(xdp_page, 0); diff --git a/include/linux/filter.h b/include/linux/filter.h index bb9f2f2..cb98f61 100644 --- a/include/linux/filter.h +++ b/include/linux/filter.h @@ -607,7 +607,6 @@ bool bpf_helper_changes_pkt_data(void *func); struct bpf_prog *bpf_patch_insn_single(struct bpf_prog *prog, u32 off, const struct bpf_insn *patch, u32 len); -void bpf_warn_invalid_xdp_action(u32 act); #ifdef CONFIG_BPF_JIT extern int bpf_jit_enable; diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 2404e76..63c16aa 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -810,18 +810,6 @@ struct tc_to_netdev { * to the netdevice through the xdp op. */ enum xdp_netdev_command { - /* Set or clear a bpf program used in the earliest stages of packet - * rx. The prog will have been loaded as BPF_PROG_TYPE_XDP. The callee - * is responsible for calling bpf_prog_put on any old progs that are - * stored. In case of error, the callee need not release the new prog - * reference, but on success it takes ownership and must bpf_prog_put - * when it is no longer used. - */ - XDP_SETUP_PROG, - /* Check if a bpf program is set on the device. The callee should - * return true if a program is currently attached and running. - */ - XDP_QUERY_PROG, /* Initialize device to use XDP. Called when first XDP program is * registered on a device (including on a NAPI instance). */ @@ -839,11 +827,8 @@ enum xdp_netdev_command { struct netdev_xdp { enum xdp_netdev_command command; union { - /* XDP_SETUP_PROG */ /* XDP_CHECK_BPF_PROG */ struct bpf_prog *prog; - /* XDP_QUERY_PROG */ - bool prog_attached; }; }; diff --git a/include/trace/events/xdp.h b/include/trace/events/xdp.h index 3a40c6e..d225de6 100644 --- a/include/trace/events/xdp.h +++ b/include/trace/events/xdp.h @@ -26,35 +26,6 @@ __XDP_ACT_MAP(__XDP_ACT_TP_FN) TRACE_EVENT(xdp_exception, TP_PROTO(const struct net_device *dev, - const struct bpf_prog *xdp, u32 act), - - TP_ARGS(dev, xdp, act), - - TP_STRUCT__entry( - __string(name, dev->name) - __array(u8, prog_tag, 8) - __field(u32, act) - ), - - TP_fast_assign( - BUILD_BUG_ON(sizeof(__entry->prog_tag) != sizeof(xdp->tag)); - memcpy(__entry->prog_tag, xdp->tag, sizeof(xdp->tag)); - __assign_str(name, dev->name); - __entry->act = act; - ), - - TP_printk("prog=%s device=%s action=%s", - __print_hex_str(__entry->prog_tag, 8), - __get_str(name), - __print_symbolic(__entry->act, __XDP_ACT_SYM_TAB)) -); - -/* Temporaray trace function. This will be renamed to xdp_exception after all - * the calling drivers have been patched. - */ -TRACE_EVENT(xdp_hook_exception, - - TP_PROTO(const struct net_device *dev, const struct xdp_hook *hook, u32 act), TP_ARGS(dev, hook, act), diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index b80a589..fddd76b 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -1179,7 +1179,6 @@ int __weak skb_copy_bits(const struct sk_buff *skb, int offset, void *to, #include <linux/bpf_trace.h> EXPORT_TRACEPOINT_SYMBOL_GPL(xdp_exception); -EXPORT_TRACEPOINT_SYMBOL_GPL(xdp_hook_exception); EXPORT_TRACEPOINT_SYMBOL_GPL(bpf_prog_get_type); EXPORT_TRACEPOINT_SYMBOL_GPL(bpf_prog_put_rcu); diff --git a/net/core/filter.c b/net/core/filter.c index 8c01157..d7735dd 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -2991,12 +2991,6 @@ static bool xdp_is_valid_access(int off, int size, return __is_valid_xdp_access(off, size); } -void bpf_warn_invalid_xdp_action(u32 act) -{ - WARN_ONCE(1, "Illegal XDP return value %u, expect packet loss\n", act); -} -EXPORT_SYMBOL_GPL(bpf_warn_invalid_xdp_action); - static u32 bpf_convert_ctx_access(enum bpf_access_type type, const struct bpf_insn *si, struct bpf_insn *insn_buf, -- 2.9.3