[PATCH 5/9] net: fec: add set_promisc function

Ramon Fried rfried.dev at gmail.com
Fri Jul 2 11:46:25 CEST 2021


On Thu, Jul 1, 2021 at 2:50 AM Tim Harvey <tharvey at gateworks.com> wrote:
>
> Enabling promiscuous mode is necessary if FEC is the master of a DSA
> switch driver where each port has their own MAC address.
>
> Signed-off-by: Tim Harvey <tharvey at gateworks.com>
> ---
>  drivers/net/fec_mxc.c | 13 +++++++++++++
>  drivers/net/fec_mxc.h |  1 +
>  2 files changed, 14 insertions(+)
>
> diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
> index 77680491d0..db2cdaf684 100644
> --- a/drivers/net/fec_mxc.c
> +++ b/drivers/net/fec_mxc.c
> @@ -458,6 +458,9 @@ static void fec_reg_setup(struct fec_priv *fec)
>         else if (fec->xcv_type == RMII)
>                 rcntrl |= FEC_RCNTRL_RMII;
>
> +       if (fec->promisc)
> +               rcntrl |= 0x8;
> +
>         writel(rcntrl, &fec->eth->r_cntrl);
>  }
>
> @@ -1278,6 +1281,15 @@ static int fecmxc_read_rom_hwaddr(struct udevice *dev)
>         return fec_get_hwaddr(priv->dev_id, pdata->enetaddr);
>  }
>
> +static int fecmxc_set_promisc(struct udevice *dev, bool enable)
> +{
> +       struct fec_priv *priv = dev_get_priv(dev);
> +
> +       priv->promisc = enable;
> +
> +       return 0;
> +}
> +
>  static int fecmxc_free_pkt(struct udevice *dev, uchar *packet, int length)
>  {
>         if (packet)
> @@ -1294,6 +1306,7 @@ static const struct eth_ops fecmxc_ops = {
>         .stop                   = fecmxc_halt,
>         .write_hwaddr           = fecmxc_set_hwaddr,
>         .read_rom_hwaddr        = fecmxc_read_rom_hwaddr,
> +       .set_promisc            = fecmxc_set_promisc,
>  };
>
>  static int device_get_phy_addr(struct fec_priv *priv, struct udevice *dev)
> diff --git a/drivers/net/fec_mxc.h b/drivers/net/fec_mxc.h
> index 5ccde9193b..62b55ef395 100644
> --- a/drivers/net/fec_mxc.h
> +++ b/drivers/net/fec_mxc.h
> @@ -272,6 +272,7 @@ struct fec_priv {
>         struct clk clk_ref;
>         struct clk clk_ptp;
>         u32 clk_rate;
> +       char promisc;
>  };
>
>  /**
> --
> 2.17.1
>
Reviewed-by: Ramon Fried <rfried.dev at gmail.com>


More information about the U-Boot mailing list