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

From: Patrick Thompson
Date: Mon Oct 30 2023 - 16:35:36 EST


The packet being filtered out by the multicast filter has a unicast
destination address matching the device, the frame only contains the
eapol protocol and does not have an IPv4 address associated with it.

I will send out a v3 patch with VER_48 included.

Sorry, I sent a non-plaintext email previously so I am resending it.

On Mon, Oct 30, 2023 at 3:38 PM Heiner Kallweit <hkallweit1@xxxxxxxxx> wrote:
>
> On 30.10.2023 17:52, Patrick Thompson wrote:
> > 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.
> >
>
> I'm not an EAP(OL) expert, just read that EAPOL can use unicast,
> broadcast , and ethernet multicast (01:80:C2:00:00:03).
> What's that target MAC and IP4 address of the packet being
> filtered out in your case?
>
> > 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.
> >
> Yes, VER_48 should be included because it has the same MAC as 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;
> >>
>