diff options
author | Jesper Dangaard Brouer <brouer@redhat.com> | 2018-05-24 10:46:17 -0400 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2018-05-24 21:36:15 -0400 |
commit | e74de52e55c092e7113f839e74400ce9dbe12ceb (patch) | |
tree | 811913647e2becd8bfa53ea1a36bf4dc631aeb1d /kernel/bpf/devmap.c | |
parent | 735fc4054b3a25034445c6713d259da0f96f8131 (diff) |
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: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'kernel/bpf/devmap.c')
-rw-r--r-- | kernel/bpf/devmap.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/bpf/devmap.c b/kernel/bpf/devmap.c index 77908311ec98..ae16d0c373ef 100644 --- a/kernel/bpf/devmap.c +++ b/kernel/bpf/devmap.c | |||
@@ -220,7 +220,7 @@ static int bq_xmit_all(struct bpf_dtab_netdev *obj, | |||
220 | struct xdp_bulk_queue *bq) | 220 | struct xdp_bulk_queue *bq) |
221 | { | 221 | { |
222 | struct net_device *dev = obj->dev; | 222 | struct net_device *dev = obj->dev; |
223 | int sent = 0, drops = 0; | 223 | int sent = 0, drops = 0, err = 0; |
224 | int i; | 224 | int i; |
225 | 225 | ||
226 | if (unlikely(!bq->count)) | 226 | if (unlikely(!bq->count)) |
@@ -234,6 +234,7 @@ static int bq_xmit_all(struct bpf_dtab_netdev *obj, | |||
234 | 234 | ||
235 | sent = dev->netdev_ops->ndo_xdp_xmit(dev, bq->count, bq->q); | 235 | sent = dev->netdev_ops->ndo_xdp_xmit(dev, bq->count, bq->q); |
236 | if (sent < 0) { | 236 | if (sent < 0) { |
237 | err = sent; | ||
237 | sent = 0; | 238 | sent = 0; |
238 | goto error; | 239 | goto error; |
239 | } | 240 | } |
@@ -242,7 +243,7 @@ out: | |||
242 | bq->count = 0; | 243 | bq->count = 0; |
243 | 244 | ||
244 | trace_xdp_devmap_xmit(&obj->dtab->map, obj->bit, | 245 | trace_xdp_devmap_xmit(&obj->dtab->map, obj->bit, |
245 | sent, drops, bq->dev_rx, dev); | 246 | sent, drops, bq->dev_rx, dev, err); |
246 | bq->dev_rx = NULL; | 247 | bq->dev_rx = NULL; |
247 | return 0; | 248 | return 0; |
248 | error: | 249 | error: |