Aaron Ma <aaron.ma@xxxxxxxxxxxxx> > Sent: Thursday, January 27, 2022 6:01 PM [...] > @@ -1606,31 +1607,34 @@ static int vendor_mac_passthru_addr_read(struct > r8152 *tp, struct sockaddr *sa) > acpi_object_type mac_obj_type; > int mac_strlen; > > + /* test for -AD variant of RTL8153 */ > + ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_MISC_0); > + if ((ocp_data & AD_MASK) == 0x1000) { > + /* test for MAC address pass-through bit */ > + ocp_data = ocp_read_byte(tp, MCU_TYPE_USB, EFUSE); > + if ((ocp_data & PASS_THRU_MASK) != 1) { > + netif_dbg(tp, probe, tp->netdev, > + "No efuse for RTL8153-AD MAC pass through\n"); > + return -ENODEV; > + } > + } else { > + ocp_data = ocp_read_byte(tp, MCU_TYPE_USB, USB_MISC_1); > + if (tp->version == RTL_VER_09 && (ocp_data & BL_MASK)) { > + /* test for RTL8153BL for Lenovo */ > + tp->lenovo_macpassthru = 1; > + } else if ((ocp_data & BND_MASK) == 0 && (ocp_data & BD_MASK) > == 0) { > + /* test for RTL8153-BND and RTL8153-BD */ > + netif_dbg(tp, probe, tp->netdev, > + "Invalid variant for MAC pass through\n"); > + return -ENODEV; I think the devices with the VID/PID of Lenovo, such as 0x17EF/0x3082 and 0x17EF/0xA387, would always return -ENODEV here. Is it what you want? Best Regards, Hayes > + } > + } > + > if (tp->lenovo_macpassthru) { > mac_obj_name = "\\MACA"; > mac_obj_type = ACPI_TYPE_STRING; > mac_strlen = 0x16; > } else { > - /* test for -AD variant of RTL8153 */ > - ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_MISC_0); > - if ((ocp_data & AD_MASK) == 0x1000) { > - /* test for MAC address pass-through bit */ > - ocp_data = ocp_read_byte(tp, MCU_TYPE_USB, EFUSE); > - if ((ocp_data & PASS_THRU_MASK) != 1) { > - netif_dbg(tp, probe, tp->netdev, > - "No efuse for RTL8153-AD MAC pass through\n"); > - return -ENODEV; > - } > - } else { > - /* test for RTL8153-BND and RTL8153-BD */ > - ocp_data = ocp_read_byte(tp, MCU_TYPE_USB, USB_MISC_1); > - if ((ocp_data & BND_MASK) == 0 && (ocp_data & BD_MASK) > == 0) { > - netif_dbg(tp, probe, tp->netdev, > - "Invalid variant for MAC pass through\n"); > - return -ENODEV; > - } > - } > - > mac_obj_name = "\\_SB.AMAC"; > mac_obj_type = ACPI_TYPE_BUFFER; > mac_strlen = 0x17; > -- > 2.32.0