Message ID | 20201111170453.32693-3-sven.auhagen@voleatech.de |
---|---|
State | Superseded |
Headers | show |
Series | igb: xdp patches followup | expand |
> From: sven.auhagen@voleatech.de <sven.auhagen@voleatech.de> > Sent: Wednesday, November 11, 2020 10:35 PM > To: Nguyen, Anthony L <anthony.l.nguyen@intel.com>; Fijalkowski, Maciej > <maciej.fijalkowski@intel.com>; kuba@kernel.org > Cc: davem@davemloft.net; intel-wired-lan@lists.osuosl.org; > netdev@vger.kernel.org; nhorman@redhat.com; sassmann@redhat.com; > Penigalapati, Sandeep <sandeep.penigalapati@intel.com>; > brouer@redhat.com; pmenzel@molgen.mpg.de > Subject: [PATCH v4 2/6] igb: take vlan double header into account > > From: Sven Auhagen <sven.auhagen@voleatech.de> > > Increase the packet header padding to include double VLAN tagging. > This patch uses a macro for this. > > Suggested-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com> > Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com> > Acked-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com> > Signed-off-by: Sven Auhagen <sven.auhagen@voleatech.de> > --- > drivers/net/ethernet/intel/igb/igb.h | 5 +++++ > drivers/net/ethernet/intel/igb/igb_main.c | 7 +++---- > 2 files changed, 8 insertions(+), 4 deletions(-) > Tested-by: Sandeep Penigalapati <sandeep.penigalapati@intel.com>
On Tue, 1 Dec 2020 08:23:23 +0000
"Penigalapati, Sandeep" <sandeep.penigalapati@intel.com> wrote:
> Tested-by: Sandeep Penigalapati <sandeep.penigalapati@intel.com>
Very happy that you are testing this.
Have you also tested that samples/bpf/ xdp_redirect_cpu program works?
On Tue, Dec 01, 2020 at 09:58:52AM +0100, Jesper Dangaard Brouer wrote: > On Tue, 1 Dec 2020 08:23:23 +0000 > "Penigalapati, Sandeep" <sandeep.penigalapati@intel.com> wrote: > > > Tested-by: Sandeep Penigalapati <sandeep.penigalapati@intel.com> > > Very happy that you are testing this. > > Have you also tested that samples/bpf/ xdp_redirect_cpu program works? Hi Jesper, I have tested the xdp routing example but it would be good if someone can double check this. Best Sven > > -- > Best regards, > Jesper Dangaard Brouer > MSc.CS, Principal Kernel Engineer at Red Hat > LinkedIn: https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.linkedin.com%2Fin%2Fbrouer&data=04%7C01%7Csven.auhagen%40voleatech.de%7C5a78333f75c945b9bcee08d895d75e5b%7Cb82a99f679814a7295344d35298f847b%7C0%7C0%7C637424099531073949%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=g80690tGbCHAi3lr412ZlKoxwIFSIzn5e8V8nO1aZcw%3D&reserved=0 >
On Tue, Dec 01, 2020 at 09:58:52AM +0100, Jesper Dangaard Brouer wrote: > > On Tue, 1 Dec 2020 08:23:23 +0000 > > "Penigalapati, Sandeep" <sandeep.penigalapati@intel.com> wrote: > > > > > Tested-by: Sandeep Penigalapati <sandeep.penigalapati@intel.com> > > > > Very happy that you are testing this. > > > > Have you also tested that samples/bpf/ xdp_redirect_cpu program works? > > Hi Jesper, > > I have tested the xdp routing example but it would be good if someone can > double check this. > > Best > Sven > Hi Jesper, Sven I have tested xdp_redirect_cpu and it is working. Thanks, Sandeep > > > > -- > > Best regards, > > Jesper Dangaard Brouer > > MSc.CS, Principal Kernel Engineer at Red Hat > > LinkedIn: > > > https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.l > > > inkedin.com%2Fin%2Fbrouer&data=04%7C01%7Csven.auhagen%40vol > eatech. > > > de%7C5a78333f75c945b9bcee08d895d75e5b%7Cb82a99f679814a7295344d3 > 5298f84 > > > 7b%7C0%7C0%7C637424099531073949%7CUnknown%7CTWFpbGZsb3d8eyJ > WIjoiMC4wLj > > > AwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000& > sdata= > > g80690tGbCHAi3lr412ZlKoxwIFSIzn5e8V8nO1aZcw%3D&reserved=0 > >
On Tue, 8 Dec 2020 10:52:28 +0000 "Penigalapati, Sandeep" <sandeep.penigalapati@intel.com> wrote: > On Tue, Dec 01, 2020 at 09:58:52AM +0100, Jesper Dangaard Brouer wrote: > > > On Tue, 1 Dec 2020 08:23:23 +0000 > > > "Penigalapati, Sandeep" <sandeep.penigalapati@intel.com> wrote: > > > > > > > Tested-by: Sandeep Penigalapati <sandeep.penigalapati@intel.com> > > > > > > Very happy that you are testing this. > > > > > > Have you also tested that samples/bpf/ xdp_redirect_cpu program works? > > > > Hi Jesper, > > > > I have tested the xdp routing example but it would be good if someone can > > double check this. > > > Hi Jesper, Sven > > I have tested xdp_redirect_cpu and it is working. Thanks this is great to hear. You have tested with large frames right? As cpumap just creates SKBs based on xdp_frame, and send them to the normal network stack (on remote CPU), you can just to a standard TCP-stream throughput test with iperf or netperf. That should hopefully blowup if we screwed up the boundaries of the two packets sharing the same page. (In principle we should verify the content of the TCP transfer, so maybe a scp + md5sum is a better test).
diff --git a/drivers/net/ethernet/intel/igb/igb.h b/drivers/net/ethernet/intel/igb/igb.h index 0286d2fceee4..aaa954aae574 100644 --- a/drivers/net/ethernet/intel/igb/igb.h +++ b/drivers/net/ethernet/intel/igb/igb.h @@ -138,6 +138,8 @@ struct vf_mac_filter { /* this is the size past which hardware will drop packets when setting LPE=0 */ #define MAXIMUM_ETHERNET_VLAN_SIZE 1522 +#define IGB_ETH_PKT_HDR_PAD (ETH_HLEN + ETH_FCS_LEN + (VLAN_HLEN * 2)) + /* Supported Rx Buffer Sizes */ #define IGB_RXBUFFER_256 256 #define IGB_RXBUFFER_1536 1536 @@ -247,6 +249,9 @@ enum igb_tx_flags { #define IGB_SFF_ADDRESSING_MODE 0x4 #define IGB_SFF_8472_UNSUP 0x00 +/* TX resources are shared between XDP and netstack + * and we need to tag the buffer type to distinguish them + */ enum igb_tx_buf_type { IGB_TYPE_SKB = 0, IGB_TYPE_XDP, diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index 08cc6f59aa2e..0a9198037b98 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -2826,7 +2826,7 @@ static int igb_setup_tc(struct net_device *dev, enum tc_setup_type type, static int igb_xdp_setup(struct net_device *dev, struct bpf_prog *prog) { - int i, frame_size = dev->mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN; + int i, frame_size = dev->mtu + IGB_ETH_PKT_HDR_PAD; struct igb_adapter *adapter = netdev_priv(dev); bool running = netif_running(dev); struct bpf_prog *old_prog; @@ -3950,8 +3950,7 @@ static int igb_sw_init(struct igb_adapter *adapter) /* set default work limits */ adapter->tx_work_limit = IGB_DEFAULT_TX_WORK; - adapter->max_frame_size = netdev->mtu + ETH_HLEN + ETH_FCS_LEN + - VLAN_HLEN; + adapter->max_frame_size = netdev->mtu + IGB_ETH_PKT_HDR_PAD; adapter->min_frame_size = ETH_ZLEN + ETH_FCS_LEN; spin_lock_init(&adapter->nfc_lock); @@ -6491,7 +6490,7 @@ static void igb_get_stats64(struct net_device *netdev, static int igb_change_mtu(struct net_device *netdev, int new_mtu) { struct igb_adapter *adapter = netdev_priv(netdev); - int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN; + int max_frame = new_mtu + IGB_ETH_PKT_HDR_PAD; if (adapter->xdp_prog) { int i;