mbox series

[v5,intel-next,0/9] XDP_TX improvements for ice

Message ID 20210814140812.46632-1-maciej.fijalkowski@intel.com
Headers show
Series XDP_TX improvements for ice | expand

Message

Maciej Fijalkowski Aug. 14, 2021, 2:08 p.m. UTC
With the v5, I think it's time for a proper change log.

v4->v5:
* fix issues pointed by lkp; variables used for updating ring stats
  could be un-inited
* s/ice_ring/ice_rx_ring; it looks now symmetric given that we have
  ice_tx_ring struct dedicated for Tx ring
* go through the code and use ice_for_each_* macros; it was spotted by
  Brett that there was a place around that code that this set is
  touching that was not using the ice_for_each_txq. Turned out that there
  were more such places
* take care of coalesce related code; carry the info about type of ring
  container in ice_ring_container
* pull out getting rid of @ring_active onto separate patch, as suggested
  by Brett

v3->v4:
* fix lkp issues;

v2->v3:
* improve XDP_TX in a proper way
* split ice_ring
* propagate XDP ring pointer to Rx ring

v1->v2:
* try to improve XDP_TX processing

v4 : https://lore.kernel.org/bpf/20210806095539.34423-1-maciej.fijalkowski@intel.com/
v3 : https://lore.kernel.org/bpf/20210805230046.28715-1-maciej.fijalkowski@intel.com/
v2 : https://lore.kernel.org/bpf/20210705164338.58313-1-maciej.fijalkowski@intel.com/
v1 : https://lore.kernel.org/bpf/20210601113236.42651-1-maciej.fijalkowski@intel.com/

Thanks!
Maciej

Maciej Fijalkowski (9):
  ice: remove ring_active from ice_ring
  ice: move ice_container_type onto ice_ring_container
  ice: split ice_ring onto Tx/Rx separate structs
  ice: unify xdp_rings accesses
  ice: do not create xdp_frame on XDP_TX
  ice: propagate xdp_ring onto rx_ring
  ice: optimize XDP_TX workloads
  ice: introduce XDP_TX fallback path
  ice: make use of ice_for_each_* macros

 drivers/net/ethernet/intel/ice/ice.h          |  41 +++-
 drivers/net/ethernet/intel/ice/ice_arfs.c     |   2 +-
 drivers/net/ethernet/intel/ice/ice_base.c     |  51 ++---
 drivers/net/ethernet/intel/ice/ice_base.h     |   8 +-
 drivers/net/ethernet/intel/ice/ice_dcb_lib.c  |   9 +-
 drivers/net/ethernet/intel/ice/ice_dcb_lib.h  |  10 +-
 drivers/net/ethernet/intel/ice/ice_ethtool.c  |  93 +++++----
 drivers/net/ethernet/intel/ice/ice_lib.c      |  88 +++++----
 drivers/net/ethernet/intel/ice/ice_lib.h      |   6 +-
 drivers/net/ethernet/intel/ice/ice_main.c     | 142 +++++++++-----
 drivers/net/ethernet/intel/ice/ice_ptp.c      |   2 +-
 drivers/net/ethernet/intel/ice/ice_ptp.h      |   4 +-
 drivers/net/ethernet/intel/ice/ice_trace.h    |  28 +--
 drivers/net/ethernet/intel/ice/ice_txrx.c     | 183 +++++++++++-------
 drivers/net/ethernet/intel/ice/ice_txrx.h     | 126 +++++++-----
 drivers/net/ethernet/intel/ice/ice_txrx_lib.c |  98 ++++++++--
 drivers/net/ethernet/intel/ice/ice_txrx_lib.h |  14 +-
 .../net/ethernet/intel/ice/ice_virtchnl_pf.c  |   2 +-
 drivers/net/ethernet/intel/ice/ice_xsk.c      |  70 ++++---
 drivers/net/ethernet/intel/ice/ice_xsk.h      |  20 +-
 20 files changed, 607 insertions(+), 390 deletions(-)

Comments

Tony Nguyen Aug. 17, 2021, 8:59 p.m. UTC | #1
On Sat, 2021-08-14 at 16:08 +0200, Maciej Fijalkowski wrote:
> With the v5, I think it's time for a proper change log.

This isn't applying to the Intel-wired-LAN tree. If you want it to go
through there, could you base the patches on that tree?

Also, looking at NIPA, it looks like patches 2 and 3 have kdoc issues.

Thanks,
Tony

> v4->v5:
> * fix issues pointed by lkp; variables used for updating ring stats
>   could be un-inited
> * s/ice_ring/ice_rx_ring; it looks now symmetric given that we have
>   ice_tx_ring struct dedicated for Tx ring
> * go through the code and use ice_for_each_* macros; it was spotted
> by
>   Brett that there was a place around that code that this set is
>   touching that was not using the ice_for_each_txq. Turned out that
> there
>   were more such places
> * take care of coalesce related code; carry the info about type of
> ring
>   container in ice_ring_container
> * pull out getting rid of @ring_active onto separate patch, as
> suggested
>   by Brett
> 
> v3->v4:
> * fix lkp issues;
> 
> v2->v3:
> * improve XDP_TX in a proper way
> * split ice_ring
> * propagate XDP ring pointer to Rx ring
> 
> v1->v2:
> * try to improve XDP_TX processing
> 
> v4 : 
> https://lore.kernel.org/bpf/20210806095539.34423-1-maciej.fijalkowski@intel.com/
> v3 : 
> https://lore.kernel.org/bpf/20210805230046.28715-1-maciej.fijalkowski@intel.com/
> v2 : 
> https://lore.kernel.org/bpf/20210705164338.58313-1-maciej.fijalkowski@intel.com/
> v1 : 
> https://lore.kernel.org/bpf/20210601113236.42651-1-maciej.fijalkowski@intel.com/
> 
> Thanks!
> Maciej
> 
> Maciej Fijalkowski (9):
>   ice: remove ring_active from ice_ring
>   ice: move ice_container_type onto ice_ring_container
>   ice: split ice_ring onto Tx/Rx separate structs
>   ice: unify xdp_rings accesses
>   ice: do not create xdp_frame on XDP_TX
>   ice: propagate xdp_ring onto rx_ring
>   ice: optimize XDP_TX workloads
>   ice: introduce XDP_TX fallback path
>   ice: make use of ice_for_each_* macros
> 
>  drivers/net/ethernet/intel/ice/ice.h          |  41 +++-
>  drivers/net/ethernet/intel/ice/ice_arfs.c     |   2 +-
>  drivers/net/ethernet/intel/ice/ice_base.c     |  51 ++---
>  drivers/net/ethernet/intel/ice/ice_base.h     |   8 +-
>  drivers/net/ethernet/intel/ice/ice_dcb_lib.c  |   9 +-
>  drivers/net/ethernet/intel/ice/ice_dcb_lib.h  |  10 +-
>  drivers/net/ethernet/intel/ice/ice_ethtool.c  |  93 +++++----
>  drivers/net/ethernet/intel/ice/ice_lib.c      |  88 +++++----
>  drivers/net/ethernet/intel/ice/ice_lib.h      |   6 +-
>  drivers/net/ethernet/intel/ice/ice_main.c     | 142 +++++++++-----
>  drivers/net/ethernet/intel/ice/ice_ptp.c      |   2 +-
>  drivers/net/ethernet/intel/ice/ice_ptp.h      |   4 +-
>  drivers/net/ethernet/intel/ice/ice_trace.h    |  28 +--
>  drivers/net/ethernet/intel/ice/ice_txrx.c     | 183 +++++++++++-----
> --
>  drivers/net/ethernet/intel/ice/ice_txrx.h     | 126 +++++++-----
>  drivers/net/ethernet/intel/ice/ice_txrx_lib.c |  98 ++++++++--
>  drivers/net/ethernet/intel/ice/ice_txrx_lib.h |  14 +-
>  .../net/ethernet/intel/ice/ice_virtchnl_pf.c  |   2 +-
>  drivers/net/ethernet/intel/ice/ice_xsk.c      |  70 ++++---
>  drivers/net/ethernet/intel/ice/ice_xsk.h      |  20 +-
>  20 files changed, 607 insertions(+), 390 deletions(-)
>
Maciej Fijalkowski Aug. 18, 2021, 7:52 a.m. UTC | #2
On Tue, Aug 17, 2021 at 09:59:01PM +0100, Nguyen, Anthony L wrote:
> On Sat, 2021-08-14 at 16:08 +0200, Maciej Fijalkowski wrote:
> > With the v5, I think it's time for a proper change log.
> 
> This isn't applying to the Intel-wired-LAN tree. If you want it to go
> through there, could you base the patches on that tree?

Interestingly this is the first time that happens to me and I always based
my XDP related driver work on bpf-next.

iwl tree is some standalone tree or is it just the net-next ?

> 
> Also, looking at NIPA, it looks like patches 2 and 3 have kdoc issues.

Yeah I saw kdoc issue on patch 3 and wanted to ask you to fix this if you
would be applying that set but given that you're asking for a re-submit
i'll fix those by myself.

> 
> Thanks,
> Tony
> 
> > v4->v5:
> > * fix issues pointed by lkp; variables used for updating ring stats
> >   could be un-inited
> > * s/ice_ring/ice_rx_ring; it looks now symmetric given that we have
> >   ice_tx_ring struct dedicated for Tx ring
> > * go through the code and use ice_for_each_* macros; it was spotted
> > by
> >   Brett that there was a place around that code that this set is
> >   touching that was not using the ice_for_each_txq. Turned out that
> > there
> >   were more such places
> > * take care of coalesce related code; carry the info about type of
> > ring
> >   container in ice_ring_container
> > * pull out getting rid of @ring_active onto separate patch, as
> > suggested
> >   by Brett
> >
> > v3->v4:
> > * fix lkp issues;
> >
> > v2->v3:
> > * improve XDP_TX in a proper way
> > * split ice_ring
> > * propagate XDP ring pointer to Rx ring
> >
> > v1->v2:
> > * try to improve XDP_TX processing
> >
> > v4 :
> > https://lore.kernel.org/bpf/20210806095539.34423-1-maciej.fijalkowski@intel.com/
> > v3 :
> > https://lore.kernel.org/bpf/20210805230046.28715-1-maciej.fijalkowski@intel.com/
> > v2 :
> > https://lore.kernel.org/bpf/20210705164338.58313-1-maciej.fijalkowski@intel.com/
> > v1 :
> > https://lore.kernel.org/bpf/20210601113236.42651-1-maciej.fijalkowski@intel.com/
> >
> > Thanks!
> > Maciej
> >
> > Maciej Fijalkowski (9):
> >   ice: remove ring_active from ice_ring
> >   ice: move ice_container_type onto ice_ring_container
> >   ice: split ice_ring onto Tx/Rx separate structs
> >   ice: unify xdp_rings accesses
> >   ice: do not create xdp_frame on XDP_TX
> >   ice: propagate xdp_ring onto rx_ring
> >   ice: optimize XDP_TX workloads
> >   ice: introduce XDP_TX fallback path
> >   ice: make use of ice_for_each_* macros
> >
> >  drivers/net/ethernet/intel/ice/ice.h          |  41 +++-
> >  drivers/net/ethernet/intel/ice/ice_arfs.c     |   2 +-
> >  drivers/net/ethernet/intel/ice/ice_base.c     |  51 ++---
> >  drivers/net/ethernet/intel/ice/ice_base.h     |   8 +-
> >  drivers/net/ethernet/intel/ice/ice_dcb_lib.c  |   9 +-
> >  drivers/net/ethernet/intel/ice/ice_dcb_lib.h  |  10 +-
> >  drivers/net/ethernet/intel/ice/ice_ethtool.c  |  93 +++++----
> >  drivers/net/ethernet/intel/ice/ice_lib.c      |  88 +++++----
> >  drivers/net/ethernet/intel/ice/ice_lib.h      |   6 +-
> >  drivers/net/ethernet/intel/ice/ice_main.c     | 142 +++++++++-----
> >  drivers/net/ethernet/intel/ice/ice_ptp.c      |   2 +-
> >  drivers/net/ethernet/intel/ice/ice_ptp.h      |   4 +-
> >  drivers/net/ethernet/intel/ice/ice_trace.h    |  28 +--
> >  drivers/net/ethernet/intel/ice/ice_txrx.c     | 183 +++++++++++-----
> > --
> >  drivers/net/ethernet/intel/ice/ice_txrx.h     | 126 +++++++-----
> >  drivers/net/ethernet/intel/ice/ice_txrx_lib.c |  98 ++++++++--
> >  drivers/net/ethernet/intel/ice/ice_txrx_lib.h |  14 +-
> >  .../net/ethernet/intel/ice/ice_virtchnl_pf.c  |   2 +-
> >  drivers/net/ethernet/intel/ice/ice_xsk.c      |  70 ++++---
> >  drivers/net/ethernet/intel/ice/ice_xsk.h      |  20 +-
> >  20 files changed, 607 insertions(+), 390 deletions(-)
> >
Maciej Fijalkowski Aug. 18, 2021, 2:03 p.m. UTC | #3
On Wed, Aug 18, 2021 at 09:52:56AM +0200, Maciej Fijalkowski wrote:
> On Tue, Aug 17, 2021 at 09:59:01PM +0100, Nguyen, Anthony L wrote:
> > On Sat, 2021-08-14 at 16:08 +0200, Maciej Fijalkowski wrote:
> > > With the v5, I think it's time for a proper change log.
> > 
> > This isn't applying to the Intel-wired-LAN tree. If you want it to go
> > through there, could you base the patches on that tree?
> 
> Interestingly this is the first time that happens to me and I always based
> my XDP related driver work on bpf-next.
> 
> iwl tree is some standalone tree or is it just the net-next ?

Turns out that you have the switchdev set in your branch and it's not on
net-next yet. I have adjusted my set on top of that code and sent a v6.

> 
> > 
> > Also, looking at NIPA, it looks like patches 2 and 3 have kdoc issues.
> 
> Yeah I saw kdoc issue on patch 3 and wanted to ask you to fix this if you
> would be applying that set but given that you're asking for a re-submit
> i'll fix those by myself.
> 
> > 
> > Thanks,
> > Tony
> > 
> > > v4->v5:
> > > * fix issues pointed by lkp; variables used for updating ring stats
> > >   could be un-inited
> > > * s/ice_ring/ice_rx_ring; it looks now symmetric given that we have
> > >   ice_tx_ring struct dedicated for Tx ring
> > > * go through the code and use ice_for_each_* macros; it was spotted
> > > by
> > >   Brett that there was a place around that code that this set is
> > >   touching that was not using the ice_for_each_txq. Turned out that
> > > there
> > >   were more such places
> > > * take care of coalesce related code; carry the info about type of
> > > ring
> > >   container in ice_ring_container
> > > * pull out getting rid of @ring_active onto separate patch, as
> > > suggested
> > >   by Brett
> > >
> > > v3->v4:
> > > * fix lkp issues;
> > >
> > > v2->v3:
> > > * improve XDP_TX in a proper way
> > > * split ice_ring
> > > * propagate XDP ring pointer to Rx ring
> > >
> > > v1->v2:
> > > * try to improve XDP_TX processing
> > >
> > > v4 :
> > > https://lore.kernel.org/bpf/20210806095539.34423-1-maciej.fijalkowski@intel.com/
> > > v3 :
> > > https://lore.kernel.org/bpf/20210805230046.28715-1-maciej.fijalkowski@intel.com/
> > > v2 :
> > > https://lore.kernel.org/bpf/20210705164338.58313-1-maciej.fijalkowski@intel.com/
> > > v1 :
> > > https://lore.kernel.org/bpf/20210601113236.42651-1-maciej.fijalkowski@intel.com/
> > >
> > > Thanks!
> > > Maciej
> > >
> > > Maciej Fijalkowski (9):
> > >   ice: remove ring_active from ice_ring
> > >   ice: move ice_container_type onto ice_ring_container
> > >   ice: split ice_ring onto Tx/Rx separate structs
> > >   ice: unify xdp_rings accesses
> > >   ice: do not create xdp_frame on XDP_TX
> > >   ice: propagate xdp_ring onto rx_ring
> > >   ice: optimize XDP_TX workloads
> > >   ice: introduce XDP_TX fallback path
> > >   ice: make use of ice_for_each_* macros
> > >
> > >  drivers/net/ethernet/intel/ice/ice.h          |  41 +++-
> > >  drivers/net/ethernet/intel/ice/ice_arfs.c     |   2 +-
> > >  drivers/net/ethernet/intel/ice/ice_base.c     |  51 ++---
> > >  drivers/net/ethernet/intel/ice/ice_base.h     |   8 +-
> > >  drivers/net/ethernet/intel/ice/ice_dcb_lib.c  |   9 +-
> > >  drivers/net/ethernet/intel/ice/ice_dcb_lib.h  |  10 +-
> > >  drivers/net/ethernet/intel/ice/ice_ethtool.c  |  93 +++++----
> > >  drivers/net/ethernet/intel/ice/ice_lib.c      |  88 +++++----
> > >  drivers/net/ethernet/intel/ice/ice_lib.h      |   6 +-
> > >  drivers/net/ethernet/intel/ice/ice_main.c     | 142 +++++++++-----
> > >  drivers/net/ethernet/intel/ice/ice_ptp.c      |   2 +-
> > >  drivers/net/ethernet/intel/ice/ice_ptp.h      |   4 +-
> > >  drivers/net/ethernet/intel/ice/ice_trace.h    |  28 +--
> > >  drivers/net/ethernet/intel/ice/ice_txrx.c     | 183 +++++++++++-----
> > > --
> > >  drivers/net/ethernet/intel/ice/ice_txrx.h     | 126 +++++++-----
> > >  drivers/net/ethernet/intel/ice/ice_txrx_lib.c |  98 ++++++++--
> > >  drivers/net/ethernet/intel/ice/ice_txrx_lib.h |  14 +-
> > >  .../net/ethernet/intel/ice/ice_virtchnl_pf.c  |   2 +-
> > >  drivers/net/ethernet/intel/ice/ice_xsk.c      |  70 ++++---
> > >  drivers/net/ethernet/intel/ice/ice_xsk.h      |  20 +-
> > >  20 files changed, 607 insertions(+), 390 deletions(-)
> > >
Tony Nguyen Aug. 18, 2021, 4:12 p.m. UTC | #4
On Wed, 2021-08-18 at 16:03 +0200, Maciej Fijalkowski wrote:
> On Wed, Aug 18, 2021 at 09:52:56AM +0200, Maciej Fijalkowski wrote:
> > On Tue, Aug 17, 2021 at 09:59:01PM +0100, Nguyen, Anthony L wrote:
> > > On Sat, 2021-08-14 at 16:08 +0200, Maciej Fijalkowski wrote:
> > > > With the v5, I think it's time for a proper change log.
> > > 
> > > This isn't applying to the Intel-wired-LAN tree. If you want it
> > > to go
> > > through there, could you base the patches on that tree?
> > 
> > Interestingly this is the first time that happens to me and I
> > always based
> > my XDP related driver work on bpf-next.
> > 
> > iwl tree is some standalone tree or is it just the net-next ?
> 
> Turns out that you have the switchdev set in your branch and it's not
> on
> net-next yet. I have adjusted my set on top of that code and sent a
> v6.

It's net-next but it also contains the Intel driver patches that are
making their way to net-next. Most of the time they'll apply to either
without issue, however, it depends on those extra patches. In this case
sounds like the switchdev set didn't allow for a clean apply. Thanks
for the v6.

> > > Also, looking at NIPA, it looks like patches 2 and 3 have kdoc
> > > issues.
> > 
> > Yeah I saw kdoc issue on patch 3 and wanted to ask you to fix this
> > if you
> > would be applying that set but given that you're asking for a re-
> > submit
> > i'll fix those by myself.
> > 
> > > Thanks,
> > > Tony
> > > 
> > > > v4->v5:
> > > > * fix issues pointed by lkp; variables used for updating ring
> > > > stats
> > > >   could be un-inited
> > > > * s/ice_ring/ice_rx_ring; it looks now symmetric given that we
> > > > have
> > > >   ice_tx_ring struct dedicated for Tx ring
> > > > * go through the code and use ice_for_each_* macros; it was
> > > > spotted
> > > > by
> > > >   Brett that there was a place around that code that this set
> > > > is
> > > >   touching that was not using the ice_for_each_txq. Turned out
> > > > that
> > > > there
> > > >   were more such places
> > > > * take care of coalesce related code; carry the info about type
> > > > of
> > > > ring
> > > >   container in ice_ring_container
> > > > * pull out getting rid of @ring_active onto separate patch, as
> > > > suggested
> > > >   by Brett
> > > > 
> > > > v3->v4:
> > > > * fix lkp issues;
> > > > 
> > > > v2->v3:
> > > > * improve XDP_TX in a proper way
> > > > * split ice_ring
> > > > * propagate XDP ring pointer to Rx ring
> > > > 
> > > > v1->v2:
> > > > * try to improve XDP_TX processing
> > > > 
> > > > v4 :
> > > > https://lore.kernel.org/bpf/20210806095539.34423-1-maciej.fijalkowski@intel.com/
> > > > v3 :
> > > > https://lore.kernel.org/bpf/20210805230046.28715-1-maciej.fijalkowski@intel.com/
> > > > v2 :
> > > > https://lore.kernel.org/bpf/20210705164338.58313-1-maciej.fijalkowski@intel.com/
> > > > v1 :
> > > > https://lore.kernel.org/bpf/20210601113236.42651-1-maciej.fijalkowski@intel.com/
> > > > 
> > > > Thanks!
> > > > Maciej
> > > > 
> > > > Maciej Fijalkowski (9):
> > > >   ice: remove ring_active from ice_ring
> > > >   ice: move ice_container_type onto ice_ring_container
> > > >   ice: split ice_ring onto Tx/Rx separate structs
> > > >   ice: unify xdp_rings accesses
> > > >   ice: do not create xdp_frame on XDP_TX
> > > >   ice: propagate xdp_ring onto rx_ring
> > > >   ice: optimize XDP_TX workloads
> > > >   ice: introduce XDP_TX fallback path
> > > >   ice: make use of ice_for_each_* macros
> > > > 
> > > >  drivers/net/ethernet/intel/ice/ice.h          |  41 +++-
> > > >  drivers/net/ethernet/intel/ice/ice_arfs.c     |   2 +-
> > > >  drivers/net/ethernet/intel/ice/ice_base.c     |  51 ++---
> > > >  drivers/net/ethernet/intel/ice/ice_base.h     |   8 +-
> > > >  drivers/net/ethernet/intel/ice/ice_dcb_lib.c  |   9 +-
> > > >  drivers/net/ethernet/intel/ice/ice_dcb_lib.h  |  10 +-
> > > >  drivers/net/ethernet/intel/ice/ice_ethtool.c  |  93 +++++----
> > > >  drivers/net/ethernet/intel/ice/ice_lib.c      |  88 +++++----
> > > >  drivers/net/ethernet/intel/ice/ice_lib.h      |   6 +-
> > > >  drivers/net/ethernet/intel/ice/ice_main.c     | 142 +++++++++-
> > > > ----
> > > >  drivers/net/ethernet/intel/ice/ice_ptp.c      |   2 +-
> > > >  drivers/net/ethernet/intel/ice/ice_ptp.h      |   4 +-
> > > >  drivers/net/ethernet/intel/ice/ice_trace.h    |  28 +--
> > > >  drivers/net/ethernet/intel/ice/ice_txrx.c     | 183
> > > > +++++++++++-----
> > > > --
> > > >  drivers/net/ethernet/intel/ice/ice_txrx.h     | 126 +++++++---
> > > > --
> > > >  drivers/net/ethernet/intel/ice/ice_txrx_lib.c |  98 ++++++++--
> > > >  drivers/net/ethernet/intel/ice/ice_txrx_lib.h |  14 +-
> > > >  .../net/ethernet/intel/ice/ice_virtchnl_pf.c  |   2 +-
> > > >  drivers/net/ethernet/intel/ice/ice_xsk.c      |  70 ++++---
> > > >  drivers/net/ethernet/intel/ice/ice_xsk.h      |  20 +-
> > > >  20 files changed, 607 insertions(+), 390 deletions(-)
> > > >