@@ -325,9 +325,11 @@ static int dev_map_hash_get_next_key(struct bpf_map *map, void *key,
325
325
326
326
static int dev_map_bpf_prog_run (struct bpf_prog * xdp_prog ,
327
327
struct xdp_frame * * frames , int n ,
328
- struct net_device * dev )
328
+ struct net_device * tx_dev ,
329
+ struct net_device * rx_dev )
329
330
{
330
- struct xdp_txq_info txq = { .dev = dev };
331
+ struct xdp_txq_info txq = { .dev = tx_dev };
332
+ struct xdp_rxq_info rxq = { .dev = rx_dev };
331
333
struct xdp_buff xdp ;
332
334
int i , nframes = 0 ;
333
335
@@ -338,6 +340,7 @@ static int dev_map_bpf_prog_run(struct bpf_prog *xdp_prog,
338
340
339
341
xdp_convert_frame_to_buff (xdpf , & xdp );
340
342
xdp .txq = & txq ;
343
+ xdp .rxq = & rxq ;
341
344
342
345
act = bpf_prog_run_xdp (xdp_prog , & xdp );
343
346
switch (act ) {
@@ -352,7 +355,7 @@ static int dev_map_bpf_prog_run(struct bpf_prog *xdp_prog,
352
355
bpf_warn_invalid_xdp_action (act );
353
356
fallthrough ;
354
357
case XDP_ABORTED :
355
- trace_xdp_exception (dev , xdp_prog , act );
358
+ trace_xdp_exception (tx_dev , xdp_prog , act );
356
359
fallthrough ;
357
360
case XDP_DROP :
358
361
xdp_return_frame_rx_napi (xdpf );
@@ -380,7 +383,7 @@ static void bq_xmit_all(struct xdp_dev_bulk_queue *bq, u32 flags)
380
383
}
381
384
382
385
if (bq -> xdp_prog ) {
383
- to_send = dev_map_bpf_prog_run (bq -> xdp_prog , bq -> q , cnt , dev );
386
+ to_send = dev_map_bpf_prog_run (bq -> xdp_prog , bq -> q , cnt , dev , bq -> dev_rx );
384
387
if (!to_send )
385
388
goto out ;
386
389
}
0 commit comments