Commit e74de52e authored by Jesper Dangaard Brouer's avatar Jesper Dangaard Brouer Committed by Alexei Starovoitov

xdp/trace: extend tracepoint in devmap with an err

Extending tracepoint xdp:xdp_devmap_xmit in devmap with an err code
allow people to easier identify the reason behind the ndo_xdp_xmit
call to a given driver is failing.
Signed-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent 735fc405
...@@ -234,9 +234,9 @@ TRACE_EVENT(xdp_devmap_xmit, ...@@ -234,9 +234,9 @@ TRACE_EVENT(xdp_devmap_xmit,
TP_PROTO(const struct bpf_map *map, u32 map_index, TP_PROTO(const struct bpf_map *map, u32 map_index,
int sent, int drops, int sent, int drops,
const struct net_device *from_dev, const struct net_device *from_dev,
const struct net_device *to_dev), const struct net_device *to_dev, int err),
TP_ARGS(map, map_index, sent, drops, from_dev, to_dev), TP_ARGS(map, map_index, sent, drops, from_dev, to_dev, err),
TP_STRUCT__entry( TP_STRUCT__entry(
__field(int, map_id) __field(int, map_id)
...@@ -246,6 +246,7 @@ TRACE_EVENT(xdp_devmap_xmit, ...@@ -246,6 +246,7 @@ TRACE_EVENT(xdp_devmap_xmit,
__field(int, sent) __field(int, sent)
__field(int, from_ifindex) __field(int, from_ifindex)
__field(int, to_ifindex) __field(int, to_ifindex)
__field(int, err)
), ),
TP_fast_assign( TP_fast_assign(
...@@ -256,16 +257,17 @@ TRACE_EVENT(xdp_devmap_xmit, ...@@ -256,16 +257,17 @@ TRACE_EVENT(xdp_devmap_xmit,
__entry->sent = sent; __entry->sent = sent;
__entry->from_ifindex = from_dev->ifindex; __entry->from_ifindex = from_dev->ifindex;
__entry->to_ifindex = to_dev->ifindex; __entry->to_ifindex = to_dev->ifindex;
__entry->err = err;
), ),
TP_printk("ndo_xdp_xmit" TP_printk("ndo_xdp_xmit"
" map_id=%d map_index=%d action=%s" " map_id=%d map_index=%d action=%s"
" sent=%d drops=%d" " sent=%d drops=%d"
" from_ifindex=%d to_ifindex=%d", " from_ifindex=%d to_ifindex=%d err=%d",
__entry->map_id, __entry->map_index, __entry->map_id, __entry->map_index,
__print_symbolic(__entry->act, __XDP_ACT_SYM_TAB), __print_symbolic(__entry->act, __XDP_ACT_SYM_TAB),
__entry->sent, __entry->drops, __entry->sent, __entry->drops,
__entry->from_ifindex, __entry->to_ifindex) __entry->from_ifindex, __entry->to_ifindex, __entry->err)
); );
#endif /* _TRACE_XDP_H */ #endif /* _TRACE_XDP_H */
......
...@@ -220,7 +220,7 @@ static int bq_xmit_all(struct bpf_dtab_netdev *obj, ...@@ -220,7 +220,7 @@ static int bq_xmit_all(struct bpf_dtab_netdev *obj,
struct xdp_bulk_queue *bq) struct xdp_bulk_queue *bq)
{ {
struct net_device *dev = obj->dev; struct net_device *dev = obj->dev;
int sent = 0, drops = 0; int sent = 0, drops = 0, err = 0;
int i; int i;
if (unlikely(!bq->count)) if (unlikely(!bq->count))
...@@ -234,6 +234,7 @@ static int bq_xmit_all(struct bpf_dtab_netdev *obj, ...@@ -234,6 +234,7 @@ static int bq_xmit_all(struct bpf_dtab_netdev *obj,
sent = dev->netdev_ops->ndo_xdp_xmit(dev, bq->count, bq->q); sent = dev->netdev_ops->ndo_xdp_xmit(dev, bq->count, bq->q);
if (sent < 0) { if (sent < 0) {
err = sent;
sent = 0; sent = 0;
goto error; goto error;
} }
...@@ -242,7 +243,7 @@ static int bq_xmit_all(struct bpf_dtab_netdev *obj, ...@@ -242,7 +243,7 @@ static int bq_xmit_all(struct bpf_dtab_netdev *obj,
bq->count = 0; bq->count = 0;
trace_xdp_devmap_xmit(&obj->dtab->map, obj->bit, trace_xdp_devmap_xmit(&obj->dtab->map, obj->bit,
sent, drops, bq->dev_rx, dev); sent, drops, bq->dev_rx, dev, err);
bq->dev_rx = NULL; bq->dev_rx = NULL;
return 0; return 0;
error: error:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment