On Tue, Oct 10, 2023 at 9:51 AM Ferruh Yigit <ferruh.yigit@amd.com> wrote:
>
> On 10/5/2023 9:52 PM, Ed Czeck wrote:
> > features and function have been removed from FPGA firmware
> >
>
> I am always a little confused how you manage the deployment, if a
> customer requires RQ pacing, how you manage it, at least should it be
> documented in driver documentation that RQ pacing supported before
> v23.11, or something like that?
> If this doesn't make sense for your deployment model, scratch it, this
> is just a reminder if it is useful.

Our deployment needs to balance the DPDK  release, our FPGA firmware, our (not yet
published) DPDKpatches and external FPGA-IP firmware from AMD (Xilinx) and Intel 
(Altera).  We have safety code to ensure that these fall into a valid alignment. We also 
try to maintain SW/FPGA compatibility and evolve without breaking things unnecessarily. 
Our releases follow DPDK's and we update other tools as they are released.

For RQ pacing, it was an internal feature needed for older Xilinx PCIE IP, with a
narrow exposure via our PMD.  The Xilinx IP no longer requires this module, our
firmware no longer includes it, and the PMD can drop.  It was not user controllable 
nor an advertised feature.

>
>
> > Signed-off-by: Ed Czeck <ed.czeck@atomicrules.com>
> > ---
> >  drivers/net/ark/ark_ethdev.c | 62 ++++++++------------------------
> >  drivers/net/ark/ark_global.h |  3 --
> >  drivers/net/ark/ark_rqp.c    | 70 ------------------------------------
> >  drivers/net/ark/ark_rqp.h    | 58 ------------------------------
> >  drivers/net/ark/meson.build  |  1 -
> >  5 files changed, 15 insertions(+), 179 deletions(-)
> >  delete mode 100644 drivers/net/ark/ark_rqp.c
> >  delete mode 100644 drivers/net/ark/ark_rqp.h
> >
> > diff --git a/drivers/net/ark/ark_ethdev.c b/drivers/net/ark/ark_ethdev.c
> > index 90d3c8abe6..306121ba31 100644
> > --- a/drivers/net/ark/ark_ethdev.c
> > +++ b/drivers/net/ark/ark_ethdev.c
> > @@ -17,7 +17,6 @@
> >  #include "ark_mpu.h"
> >  #include "ark_ddm.h"
> >  #include "ark_udm.h"
> > -#include "ark_rqp.h"
> >  #include "ark_pktdir.h"
> >  #include "ark_pktgen.h"
> >  #include "ark_pktchkr.h"
> > @@ -107,36 +106,32 @@ static const struct rte_pci_id pci_id_ark_map[] = {
> >   * This structure is used to statically define the capabilities
> >   * of supported devices.
> >   * Capabilities:
> > - *  rqpacing -
> > - * Some HW variants require that PCIe read-requests be correctly throttled.
> > - * This is called "rqpacing" and has to do with credit and flow control
> > - * on certain Arkville implementations.
> > + *    isvf -- defined for function id that are virtual
> >   */
> >  struct ark_caps {
> > -     bool rqpacing;
> >       bool isvf;
> >  };
> >  struct ark_dev_caps {
> >       uint32_t  device_id;
> >       struct ark_caps  caps;
> >  };
> > -#define SET_DEV_CAPS(id, rqp, vf)                    \
> > -     {id, {.rqpacing = rqp, .isvf = vf} }
> > +#define SET_DEV_CAPS(id, vf)                 \
> > +     {id, {.isvf = vf} }
> >
> >  static const struct ark_dev_caps
> >  ark_device_caps[] = {
> > -                  SET_DEV_CAPS(0x100d, true, false),
> > -                  SET_DEV_CAPS(0x100e, true, false),
> > -                  SET_DEV_CAPS(0x100f, true, false),
> > -                  SET_DEV_CAPS(0x1010, false, false),
> > -                  SET_DEV_CAPS(0x1017, true, false),
> > -                  SET_DEV_CAPS(0x1018, true, false),
> > -                  SET_DEV_CAPS(0x1019, true, false),
> > -                  SET_DEV_CAPS(0x101a, true, false),
> > -                  SET_DEV_CAPS(0x101b, true, false),
> > -                  SET_DEV_CAPS(0x101c, true, true),
> > -                  SET_DEV_CAPS(0x101e, false, false),
> > -                  SET_DEV_CAPS(0x101f, false, false),
> > +                  SET_DEV_CAPS(0x100d, false),
> > +                  SET_DEV_CAPS(0x100e, false),
> > +                  SET_DEV_CAPS(0x100f, false),
> > +                  SET_DEV_CAPS(0x1010, false),
> > +                  SET_DEV_CAPS(0x1017, false),
> > +                  SET_DEV_CAPS(0x1018, false),
> > +                  SET_DEV_CAPS(0x1019, false),
> > +                  SET_DEV_CAPS(0x101a, false),
> > +                  SET_DEV_CAPS(0x101b, false),
> > +                  SET_DEV_CAPS(0x101c, true),
> > +                  SET_DEV_CAPS(0x101e, false),
> > +                  SET_DEV_CAPS(0x101f, false),
> >                    {.device_id = 0,}
> >  };
> >
> > @@ -301,9 +296,6 @@ eth_ark_dev_init(struct rte_eth_dev *dev)
> >       int port_count = 1;
> >       int p;
> >       uint16_t num_queues;
> > -     bool rqpacing = false;
> > -
> > -     ark->eth_dev = dev;
> >
>
> Above "ark->eth_dev" assignment doesn't look directly related with RQ
> pacing, I just want to double check if it is removed intentionally?

This change is in error.   Thanks for catching it.  New patch to follow.

>
>