> -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@xxxxxxxxxx> On Behalf Of > Kurt Kanzenbach > Sent: Friday, October 18, 2024 1:40 AM > To: Nguyen, Anthony L <anthony.l.nguyen@xxxxxxxxx>; Kitszel, Przemyslaw > <przemyslaw.kitszel@xxxxxxxxx> > Cc: David S. Miller <davem@xxxxxxxxxxxxx>; Eric Dumazet > <edumazet@xxxxxxxxxx>; Jakub Kicinski <kuba@xxxxxxxxxx>; Paolo Abeni > <pabeni@xxxxxxxxxx>; Alexei Starovoitov <ast@xxxxxxxxxx>; Daniel > Borkmann <daniel@xxxxxxxxxxxxx>; Jesper Dangaard Brouer > <hawk@xxxxxxxxxx>; John Fastabend <john.fastabend@xxxxxxxxx>; Richard > Cochran <richardcochran@xxxxxxxxx>; Sriram Yagnaraman > <sriram.yagnaraman@xxxxxxxxxxxx>; Benjamin Steinke > <benjamin.steinke@xxxxxxxxxxxxxx>; Sebastian Andrzej Siewior > <bigeasy@xxxxxxxxxxxxx>; Fijalkowski, Maciej <maciej.fijalkowski@xxxxxxxxx>; > intel-wired-lan@xxxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; > bpf@xxxxxxxxxxxxxxx; Sriram Yagnaraman <sriram.yagnaraman@xxxxxxxx>; > Kurt Kanzenbach <kurt@xxxxxxxxxxxxx> > Subject: [Intel-wired-lan] [PATCH iwl-next v9 6/6] igb: Add AF_XDP zero-copy > Tx support > > From: Sriram Yagnaraman <sriram.yagnaraman@xxxxxxxx> > > Add support for AF_XDP zero-copy transmit path. > > A new TX buffer type IGB_TYPE_XSK is introduced to indicate that the Tx frame > was allocated from the xsk buff pool, so igb_clean_tx_ring() and > igb_clean_tx_irq() can clean the buffers correctly based on type. > > igb_xmit_zc() performs the actual packet transmit when AF_XDP zero-copy is > enabled. We share the TX ring between slow path, XDP and AF_XDP zero- > copy, so we use the netdev queue lock to ensure mutual exclusion. > > Signed-off-by: Sriram Yagnaraman <sriram.yagnaraman@xxxxxxxx> > [Kurt: Set olinfo_status in igb_xmit_zc() so that frames are transmitted, > Use READ_ONCE() for xsk_pool and check Tx disabled and carrier in > igb_xmit_zc(), Add FIXME for RS bit] > Signed-off-by: Kurt Kanzenbach <kurt@xxxxxxxxxxxxx> > Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@xxxxxxxxx> > --- > drivers/net/ethernet/intel/igb/igb.h | 2 + > drivers/net/ethernet/intel/igb/igb_main.c | 61 > +++++++++++++++++++++++++----- > drivers/net/ethernet/intel/igb/igb_xsk.c | 63 > +++++++++++++++++++++++++++++++ > 3 files changed, 116 insertions(+), 10 deletions(-) > Tested-by: George Kuruvinakunnel <george.kuruvinakunnel@xxxxxxxxx>