On Tue, Oct 20, 2020 at 12:04:57PM +0800, Xiaoliang Yang wrote:
> +static int vsc9959_port_get_preempt(struct ocelot *ocelot, int port,
> +                                 struct ethtool_fp *fpcmd)
> +{
> +     struct ocelot_port *ocelot_port = ocelot->ports[port];
> +     u32 val;
> +
> +     val = ocelot_port_readl(ocelot_port, DEV_MM_VERIF_CONFIG);
> +     val &= DEV_MM_CONFIG_VERIF_CONFIG_PRM_VERIFY_DIS;
> +     fpcmd->enabled = (val ? 0 : 1);
> +
> +     val = ocelot_read(ocelot, QSYS_PREEMPTION_CFG);

You have a bug here. This should be:

        val = ocelot_read_rix(ocelot, QSYS_PREEMPTION_CFG, port);

otherwise you're always retrieving the frame preemption configuration of
port 0, regardless of the port passed as argument.

> +     fpcmd->min_frag_size_mult = QSYS_PREEMPTION_CFG_MM_ADD_FRAG_SIZE_X(val);
> +
> +     return 0;
> +}

Reply via email to