Message ID | 20190218140057.17030-1-david0813@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [V2] r8152: Add support for MAC address pass through on RTL8153-BD | expand |
On 18. 02. 19, 15:00, David Chen wrote: > From: David Chen <david.chen7@dell.com> > > RTL8153-BD is used in Dell DA300 type-C dongle. > It should be added to the whitelist of devices to activate MAC address > pass through. > > Per confirming with Realtek all devices containing RTL8153-BD should > activate MAC pass through and there won't use pass through bit on efuse > like in RTL8153-AD. > > Signed-off-by: David Chen <david.chen7@dell.com> > --- > drivers/net/usb/r8152.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c > index 60dd1ec1665f..86c8c64fbb0f 100644 > --- a/drivers/net/usb/r8152.c > +++ b/drivers/net/usb/r8152.c > @@ -557,6 +557,7 @@ enum spd_duplex { > /* MAC PASSTHRU */ > #define AD_MASK 0xfee0 > #define BND_MASK 0x0004 > +#define BD_MASK 0x0001 > #define EFUSE 0xcfdb > #define PASS_THRU_MASK 0x1 > > @@ -1176,9 +1177,9 @@ static int vendor_mac_passthru_addr_read(struct r8152 *tp, struct sockaddr *sa) > return -ENODEV; > } > } else { > - /* test for RTL8153-BND */ > + /* 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) { > + if ((ocp_data & BND_MASK) == 0 && (ocp_data & BD_MASK) == 0) { Can you ensure that BND won't have the BD's bit set and vice versa? I.e. should the check be something like: if (isBND() && (ocp_data & BND_MASK) == 0 || isBD() && (ocp_data & BD_MASK) == 0) instead? thanks,
Hi Jiri, Thanks for your comments. BND_MASK and BD_MASK are defined separately, and I have tested RTL8153-BD and RTL8153-BND devices, both work as expected. Thanks and Regards, -David > Jiri Slaby <jslaby@suse.cz> 於 2019年2月18日 下午10:22 寫道: > >> On 18. 02. 19, 15:00, David Chen wrote: >> From: David Chen <david.chen7@dell.com> >> >> RTL8153-BD is used in Dell DA300 type-C dongle. >> It should be added to the whitelist of devices to activate MAC address >> pass through. >> >> Per confirming with Realtek all devices containing RTL8153-BD should >> activate MAC pass through and there won't use pass through bit on efuse >> like in RTL8153-AD. >> >> Signed-off-by: David Chen <david.chen7@dell.com> >> --- >> drivers/net/usb/r8152.c | 5 +++-- >> 1 file changed, 3 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c >> index 60dd1ec1665f..86c8c64fbb0f 100644 >> --- a/drivers/net/usb/r8152.c >> +++ b/drivers/net/usb/r8152.c >> @@ -557,6 +557,7 @@ enum spd_duplex { >> /* MAC PASSTHRU */ >> #define AD_MASK 0xfee0 >> #define BND_MASK 0x0004 >> +#define BD_MASK 0x0001 >> #define EFUSE 0xcfdb >> #define PASS_THRU_MASK 0x1 >> >> @@ -1176,9 +1177,9 @@ static int vendor_mac_passthru_addr_read(struct r8152 *tp, struct sockaddr *sa) >> return -ENODEV; >> } >> } else { >> - /* test for RTL8153-BND */ >> + /* 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) { >> + if ((ocp_data & BND_MASK) == 0 && (ocp_data & BD_MASK) == 0) { > > Can you ensure that BND won't have the BD's bit set and vice versa? I.e. > should the check be something like: > if (isBND() && (ocp_data & BND_MASK) == 0 || > isBD() && (ocp_data & BD_MASK) == 0) > instead? > > thanks, > -- > js > suse labs
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c index 60dd1ec1665f..86c8c64fbb0f 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -557,6 +557,7 @@ enum spd_duplex { /* MAC PASSTHRU */ #define AD_MASK 0xfee0 #define BND_MASK 0x0004 +#define BD_MASK 0x0001 #define EFUSE 0xcfdb #define PASS_THRU_MASK 0x1 @@ -1176,9 +1177,9 @@ static int vendor_mac_passthru_addr_read(struct r8152 *tp, struct sockaddr *sa) return -ENODEV; } } else { - /* test for RTL8153-BND */ + /* 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) { + 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;