Re: [PATCH v2] net: r8169: Disable multicast filter for RTL_GIGA_MAC_VER_46

From: Patrick Thompson
Date: Mon Oct 30 2023 - 12:52:41 EST


I wouldn't trust the mc filter, the eap packet being filtered is not a
multicast packet so I wonder what else could be erroneously filtered.
I do agree that it would be nice to be able to override it for testing
purposes.

Would you like me to add MAC_VER_48 to the patch? I would not be able
to test and confirm that it affects it in the same way I have for
VER_46.

It is unfortunate that the naming doesn't quite line up.

On Sat, Oct 28, 2023 at 4:38 AM Heiner Kallweit <hkallweit1@xxxxxxxxx> wrote:
>
> On 27.10.2023 23:30, Patrick Thompson wrote:
> > MAC_VER_46 ethernet adapters fail to detect eapol packets unless
> > allmulti is enabled. Add exception for VER_46 in the same way VER_35
> > has an exception.
> >
> MAC_VER_48 (RTL8107E) has the same MAC, just a different PHY.
> So I would expect that the same quirk is needed for MAC_VER_48.
>
> MAC_VER_xx is a little misleading, actually it should be NIC_VER_xx
>
> > Fixes: 6e1d0b898818 ("r8169:add support for RTL8168H and RTL8107E")
> > Signed-off-by: Patrick Thompson <ptf@xxxxxxxxxx>
> > ---
> >
> > Changes in v2:
> > - add Fixes tag
> > - add net annotation
> > - update description
> >
> > drivers/net/ethernet/realtek/r8169_main.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
> > index 361b90007148b..a775090650e3a 100644
> > --- a/drivers/net/ethernet/realtek/r8169_main.c
> > +++ b/drivers/net/ethernet/realtek/r8169_main.c
> > @@ -2584,7 +2584,8 @@ static void rtl_set_rx_mode(struct net_device *dev)
> > rx_mode |= AcceptAllPhys;
> > } else if (netdev_mc_count(dev) > MC_FILTER_LIMIT ||
> > dev->flags & IFF_ALLMULTI ||
> > - tp->mac_version == RTL_GIGA_MAC_VER_35) {
> > + tp->mac_version == RTL_GIGA_MAC_VER_35 ||
> > + tp->mac_version == RTL_GIGA_MAC_VER_46) {
> > /* accept all multicasts */
> > } else if (netdev_mc_empty(dev)) {
> > rx_mode &= ~AcceptMulticast;
>