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

From: Heiner Kallweit
Date: Mon Oct 30 2023 - 15:38:37 EST


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;
>>