[PATCH rtems-libbsd] freebsd/if_cgem: Remove QEMU workaround

Chris Johns chrisj at rtems.org
Wed Jun 28 02:34:26 UTC 2023


This looks good.

Thanks
Chris

On 28/6/2023 1:30 am, Kinsey Moore wrote:
> Note that this patch is for 6-freebsd-12 and its removal reduces the burden to
> make the master branch match functionality.
> 
> On Tue, Jun 27, 2023 at 10:28 AM Kinsey Moore <kinsey.moore at oarcorp.com
> <mailto:kinsey.moore at oarcorp.com>> wrote:
> 
>     This removes the workaround applied on the fly for QEMU that disables
>     priority queueing. The priority queue interrupt was not previously
>     hooked up properly in QEMU and RSB now has the patches to allow it to
>     work.
>     ---
>      freebsd/sys/dev/cadence/if_cgem.c | 26 +++++++-------------------
>      1 file changed, 7 insertions(+), 19 deletions(-)
> 
>     diff --git a/freebsd/sys/dev/cadence/if_cgem.c
>     b/freebsd/sys/dev/cadence/if_cgem.c
>     index 689c3611..c1c88e77 100644
>     --- a/freebsd/sys/dev/cadence/if_cgem.c
>     +++ b/freebsd/sys/dev/cadence/if_cgem.c
>     @@ -133,7 +133,6 @@ struct cgem_softc {
>             uint32_t                net_ctl_shadow;
>      #ifdef __rtems__
>             uint32_t                net_cfg_shadow;
>     -       int                     neednullqs;
>             int                     phy_contype;
>      #endif /* __rtems__ */
>             int                     ref_clk_num;
>     @@ -458,9 +457,8 @@ cgem_setup_descs(struct cgem_softc *sc)
>             int desc_rings_size = CGEM_NUM_RX_DESCS * sizeof(struct cgem_rx_desc) +
>                 CGEM_NUM_TX_DESCS * sizeof(struct cgem_tx_desc);
> 
>     -       if (sc->neednullqs)
>     -               desc_rings_size += sizeof(struct cgem_rx_desc) +
>     -                   sizeof(struct cgem_tx_desc);
>     +       desc_rings_size += sizeof(struct cgem_rx_desc) +
>     +           sizeof(struct cgem_tx_desc);
>      #endif /* __rtems__ */
>             sc->txring = NULL;
>             sc->rxring = NULL;
>     @@ -609,13 +607,11 @@ cgem_setup_descs(struct cgem_softc *sc)
>             sc->txring_queued = 0;
> 
>      #ifdef __rtems__
>     -       if (sc->neednullqs) {
>     -               sc->null_qs = (void *)(sc->txring + CGEM_NUM_TX_DESCS);
>     -               sc->null_qs_physaddr = sc->txring_physaddr +
>     -                   CGEM_NUM_TX_DESCS * sizeof(struct cgem_tx_desc);
>     +       sc->null_qs = (void *)(sc->txring + CGEM_NUM_TX_DESCS);
>     +       sc->null_qs_physaddr = sc->txring_physaddr +
>     +           CGEM_NUM_TX_DESCS * sizeof(struct cgem_tx_desc);
> 
>     -               cgem_null_qs(sc);
>     -       }
>     +       cgem_null_qs(sc);
>      #endif /* __rtems__ */
> 
>             return (0);
>     @@ -2074,15 +2070,7 @@ cgem_attach(device_t dev)
> 
>             sc->if_old_flags = if_getflags(ifp);
>             sc->rxbufs = DEFAULT_NUM_RX_BUFS;
>     -#if defined(CGEM64) && defined(__rtems__)
>     -       uint32_t design_cfg6 = RD4(sc, CGEM_DESIGN_CFG6);
>     -       /*
>     -        * QEMU does not have PBUF_CUTTHRU defined and is broken when trying
>     -        * to use nullqs
>     -        */
>     -       if ((design_cfg6 & CGEM_DESIGN_CFG6_PBUF_CUTTHRU))
>     -               sc->neednullqs = 1;
>     -#else
>     +#if !defined(CGEM64) && defined(__rtems__)
>             sc->rxhangwar = 1;
>      #endif
> 
>     -- 
>     2.30.2
> 
>     _______________________________________________
>     devel mailing list
>     devel at rtems.org <mailto:devel at rtems.org>
>     http://lists.rtems.org/mailman/listinfo/devel
>     <http://lists.rtems.org/mailman/listinfo/devel>
> 
> 
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list