@@ -333,9 +333,11 @@ static int dev_map_hash_get_next_key(struct bpf_map *map, void *key,
333333
334334static int dev_map_bpf_prog_run (struct bpf_prog * xdp_prog ,
335335 struct xdp_frame * * frames , int n ,
336- struct net_device * dev )
336+ struct net_device * tx_dev ,
337+ struct net_device * rx_dev )
337338{
338- struct xdp_txq_info txq = { .dev = dev };
339+ struct xdp_txq_info txq = { .dev = tx_dev };
340+ struct xdp_rxq_info rxq = { .dev = rx_dev };
339341 struct xdp_buff xdp ;
340342 int i , nframes = 0 ;
341343
@@ -346,6 +348,7 @@ static int dev_map_bpf_prog_run(struct bpf_prog *xdp_prog,
346348
347349 xdp_convert_frame_to_buff (xdpf , & xdp );
348350 xdp .txq = & txq ;
351+ xdp .rxq = & rxq ;
349352
350353 act = bpf_prog_run_xdp (xdp_prog , & xdp );
351354 switch (act ) {
@@ -360,7 +363,7 @@ static int dev_map_bpf_prog_run(struct bpf_prog *xdp_prog,
360363 bpf_warn_invalid_xdp_action (NULL , xdp_prog , act );
361364 fallthrough ;
362365 case XDP_ABORTED :
363- trace_xdp_exception (dev , xdp_prog , act );
366+ trace_xdp_exception (tx_dev , xdp_prog , act );
364367 fallthrough ;
365368 case XDP_DROP :
366369 xdp_return_frame_rx_napi (xdpf );
@@ -388,7 +391,7 @@ static void bq_xmit_all(struct xdp_dev_bulk_queue *bq, u32 flags)
388391 }
389392
390393 if (bq -> xdp_prog ) {
391- to_send = dev_map_bpf_prog_run (bq -> xdp_prog , bq -> q , cnt , dev );
394+ to_send = dev_map_bpf_prog_run (bq -> xdp_prog , bq -> q , cnt , dev , bq -> dev_rx );
392395 if (!to_send )
393396 goto out ;
394397 }
0 commit comments