[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1024328: IPv6 connectivity broken with 6.0.x. RAs seem to be dropped for the CDC_NCM interface



Control: tags -1 + upstream patch

Hi there,

El 17/11/22 a las 17:08, Santiago R.R. escribió:
> Package: src:linux
> Version: 6.0.8-1
> Severity: important
> Tags: ipv6
> Control: Found -1 6.1~rc3-1~exp1
> 
> Dear linux maintainers,
> 
> The related machine to this bug is connected to the network via a Dell
> D6000 USB-C docking station. Since a recent linux-image-amd64 update, it
> cannot reach external networks on IPv6. It is able to autoconfigure an
> IPv6 address, but it doesn't get any answer to the router sollicitations
> messages, so it is not able to configure any default route.
> 
> A WiFi interface successfully configures its ip6 route, running on the
> same kernel.
> 
> The problem didn't exist on 5.x, since 5.9 (when IP6 multicast support
> for cdc_ncm was fixed). I've just checked with
> linux-image-5.10.0-12-amd64.
> And the problem is also present in linux-image-6.1.0-0-amd64 6.1~rc3-1~exp1.
> 
> Concerned devices is:
> 
>   *-network
>        description: Ethernet interface
>        physical id: 14
>        bus info: usb@2:1.1
>        logical name: enxabcdef123456
>        serial: ab:cd:ef:12:34:56
>        size: 100Mbit/s
>        capabilities: ethernet physical
>        configuration: autonegotiation=off broadcast=yes driver=cdc_ncm driverversion=6.0.0-4-amd64 duplex=half firmware=CDC NCM (SEND ZLP) ip=x.x.x.x link=yes multicast=yes port=twisted pair speed=100Mbit/s
> 
[snip]

I've tested the attached patch against debian/6.1_rc5-1_exp1, and IPv6
connectivity is restored in my machine on the DisplayLink-based Dell
D6000 dock.

For convenience, I've created a MR:
https://salsa.debian.org/kernel-team/linux/-/merge_requests/588

Cheers,

 -- Santiago
From 308b171d568530d20ad721dfe72df697d9c0a0b6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Santiago=20Ruano=20Rinc=C3=B3n?=
 <santiago.ruano-rincon@imt-atlantique.fr>
Date: Mon, 21 Nov 2022 11:52:10 +0100
Subject: [PATCH] net/cdc_ncm: Fix multicast RX support for CDC NCM devices
 with ZLP
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

ZLP for DisplayLink ethernet devices was enabled in 6.0:
266c0190aee3 ("net/cdc_ncm: Enable ZLP for DisplayLink ethernet devices").
The related driver_info should be the "same as cdc_ncm_info, but with
FLAG_SEND_ZLP". However, set_rx_mode that enables handling multicast
traffic was missing in the new cdc_ncm_zlp_info.

usbnet_cdc_update_filter rx mode was introduced in linux 5.9 with:
e10dcb1b6ba7 ("net: cdc_ncm: hook into set_rx_mode to admit multicast
traffic")

Without this hook, multicast, and then IPv6 SLAAC, is broken.

Fixes: 266c0190aee3 ("net/cdc_ncm: Enable ZLP for DisplayLink ethernet
devices")

Signed-off-by: Santiago Ruano Rincón <santiago.ruano-rincon@imt-atlantique.fr>
---
 drivers/net/usb/cdc_ncm.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
index 8d5cbda33f66..0897fdb6254b 100644
--- a/drivers/net/usb/cdc_ncm.c
+++ b/drivers/net/usb/cdc_ncm.c
@@ -1915,6 +1915,7 @@ static const struct driver_info cdc_ncm_zlp_info = {
 	.status = cdc_ncm_status,
 	.rx_fixup = cdc_ncm_rx_fixup,
 	.tx_fixup = cdc_ncm_tx_fixup,
+	.set_rx_mode = usbnet_cdc_update_filter,
 };
 
 /* Same as cdc_ncm_info, but with FLAG_WWAN */
-- 
2.38.1

Attachment: signature.asc
Description: PGP signature


Reply to: