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