On Do, 2018-11-22 at 12:06 +0100, Frédéric Parrenin wrote: > Le 22/11/2018 à 11:22, Oliver Neukum a écrit : > > On Mi, 2018-11-21 at 16:50 +0100, Frédéric Parrenin wrote: > > > which over rides the Mac on the dock. So, the answer is, "it's not an > > > issue if the dock supports it, as the laptop BIOS is what is determining > > > if it is supported". > > > > > > So what is the truth? > > > > For pass thru you must meet multiple conditions: > > > > /* if this is not an RTL8153-AD, no eFuse mac passthru set, > > * or system doesn't provide valid _SB.AMAC this will be > > * be expected to non-zero > > */> > > > > They can be manually verified. Do you need a debugging patch? > > OK, let us try a debugging patch. Here you go. PLease enable dynamic debugging for the driver and ramp up your logging level. Regards Oliver
From 3661ff35782f7b26df3204f4f7a18929e0c74ff7 Mon Sep 17 00:00:00 2001 From: Oliver Neukum <oneukum@xxxxxxxx> Date: Thu, 22 Nov 2018 18:08:43 +0100 Subject: [PATCH] rtl8152: debugging for MAC pass-through This adds debugging statements for failure cases in MAC pass-through Signed-off-by: Oliver Neukum <oneukum@xxxxxxxx> --- drivers/net/usb/r8152.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c index 7345a2258ee4..3ed52806164c 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -1168,19 +1168,28 @@ static int vendor_mac_passthru_addr_read(struct r8152 *tp, struct sockaddr *sa) /* test for -AD variant of RTL8153 */ ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_MISC_0); - if ((ocp_data & AD_MASK) != 0x1000) + if ((ocp_data & AD_MASK) != 0x1000) { + netif_dbg(tp, probe, tp->netdev, + "Not an AD type.\n"); return -ENODEV; + } /* test for MAC address pass-through bit */ ocp_data = ocp_read_byte(tp, MCU_TYPE_USB, EFUSE); - if ((ocp_data & PASS_THRU_MASK) != 1) + if ((ocp_data & PASS_THRU_MASK) != 1) { + netif_dbg(tp, probe, tp->netdev, + "pass-through bit not set.\n"); return -ENODEV; + } /* returns _AUXMAC_#AABBCCDDEEFF# */ status = acpi_evaluate_object(NULL, "\\_SB.AMAC", NULL, &buffer); obj = (union acpi_object *)buffer.pointer; - if (!ACPI_SUCCESS(status)) + if (!ACPI_SUCCESS(status)) { + netif_warn(tp, probe, tp->netdev, + "pass-through firmware failure.\n"); return -ENODEV; + } if (obj->type != ACPI_TYPE_BUFFER || obj->string.length != 0x17) { netif_warn(tp, probe, tp->netdev, "Invalid buffer for pass-thru MAC addr: (%d, %d)\n", -- 2.16.4