On Sat, Mar 13, 2021 at 10:39:38AM +0100, Kurt Kanzenbach wrote:
> There are two functions which need to populate fdb entries. Move that to a
> helper function.
> 
> Signed-off-by: Kurt Kanzenbach <k...@kmk-computers.de>
> Reviewed-by: Andrew Lunn <and...@lunn.ch>
> ---
>  drivers/net/dsa/hirschmann/hellcreek.c | 85 +++++++++++++-------------
>  1 file changed, 43 insertions(+), 42 deletions(-)
> 
> diff --git a/drivers/net/dsa/hirschmann/hellcreek.c 
> b/drivers/net/dsa/hirschmann/hellcreek.c
> index edac39462a07..38ff0f12e8a4 100644
> --- a/drivers/net/dsa/hirschmann/hellcreek.c
> +++ b/drivers/net/dsa/hirschmann/hellcreek.c
> @@ -670,6 +670,40 @@ static int __hellcreek_fdb_del(struct hellcreek 
> *hellcreek,
>       return hellcreek_wait_fdb_ready(hellcreek);
>  }
>  
> +static void hellcreek_populate_fdb_entry(struct hellcreek *hellcreek,
> +                                      struct hellcreek_fdb_entry *entry,
> +                                      size_t idx)
> +{
> +     unsigned char addr[ETH_ALEN];

You could have assigned:

        unsigned char *addr = entry->mac;

and avoided the memcpy, but it doesn't really matter much.

> +     u16 meta, mac;
> +
> +     /* Read values */
> +     meta    = hellcreek_read(hellcreek, HR_FDBMDRD);
> +     mac     = hellcreek_read(hellcreek, HR_FDBRDL);
> +     addr[5] = mac & 0xff;
> +     addr[4] = (mac & 0xff00) >> 8;
> +     mac     = hellcreek_read(hellcreek, HR_FDBRDM);
> +     addr[3] = mac & 0xff;
> +     addr[2] = (mac & 0xff00) >> 8;
> +     mac     = hellcreek_read(hellcreek, HR_FDBRDH);
> +     addr[1] = mac & 0xff;
> +     addr[0] = (mac & 0xff00) >> 8;
> +
> +     /* Populate @entry */
> +     memcpy(entry->mac, addr, sizeof(addr));
> +     entry->idx          = idx;
> +     entry->portmask     = (meta & HR_FDBMDRD_PORTMASK_MASK) >>
> +             HR_FDBMDRD_PORTMASK_SHIFT;
> +     entry->age          = (meta & HR_FDBMDRD_AGE_MASK) >>
> +             HR_FDBMDRD_AGE_SHIFT;
> +     entry->is_obt       = !!(meta & HR_FDBMDRD_OBT);
> +     entry->pass_blocked = !!(meta & HR_FDBMDRD_PASS_BLOCKED);
> +     entry->is_static    = !!(meta & HR_FDBMDRD_STATIC);
> +     entry->reprio_tc    = (meta & HR_FDBMDRD_REPRIO_TC_MASK) >>
> +             HR_FDBMDRD_REPRIO_TC_SHIFT;
> +     entry->reprio_en    = !!(meta & HR_FDBMDRD_REPRIO_EN);
> +}
> +

Reviewed-by: Vladimir Oltean <olte...@gmail.com>

Reply via email to