@@ -322,9 +322,11 @@ static int dev_map_hash_get_next_key(struct bpf_map *map, void *key,
322322
323323static int dev_map_bpf_prog_run (struct bpf_prog * xdp_prog ,
324324 struct xdp_frame * * frames , int n ,
325- struct net_device * dev )
325+ struct net_device * tx_dev ,
326+ struct net_device * rx_dev )
326327{
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 };
328330 struct xdp_buff xdp ;
329331 int i , nframes = 0 ;
330332
@@ -335,6 +337,7 @@ static int dev_map_bpf_prog_run(struct bpf_prog *xdp_prog,
335337
336338 xdp_convert_frame_to_buff (xdpf , & xdp );
337339 xdp .txq = & txq ;
340+ xdp .rxq = & rxq ;
338341
339342 act = bpf_prog_run_xdp (xdp_prog , & xdp );
340343 switch (act ) {
@@ -349,7 +352,7 @@ static int dev_map_bpf_prog_run(struct bpf_prog *xdp_prog,
349352 bpf_warn_invalid_xdp_action (NULL , xdp_prog , act );
350353 fallthrough ;
351354 case XDP_ABORTED :
352- trace_xdp_exception (dev , xdp_prog , act );
355+ trace_xdp_exception (tx_dev , xdp_prog , act );
353356 fallthrough ;
354357 case XDP_DROP :
355358 xdp_return_frame_rx_napi (xdpf );
@@ -377,7 +380,7 @@ static void bq_xmit_all(struct xdp_dev_bulk_queue *bq, u32 flags)
377380 }
378381
379382 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 );
381384 if (!to_send )
382385 goto out ;
383386 }
0 commit comments