RE: [PATCH v2] r8152: Add support for setting MAC to system's Auxiliary MAC address

From: Mario_Limonciello
Date: Fri Jun 03 2016 - 11:08:22 EST


> -----Original Message-----
> From: Hayes Wang [mailto:hayeswang@xxxxxxxxxxx]
> Sent: Friday, June 3, 2016 4:44 AM
> To: Limonciello, Mario <Mario_Limonciello@xxxxxxxx>
> Cc: LKML <linux-kernel@xxxxxxxxxxxxxxx>; Netdev
> <netdev@xxxxxxxxxxxxxxx>; Linux USB <linux-usb@xxxxxxxxxxxxxxx>;
> pali.rohar@xxxxxxxxx; anthony.wong@xxxxxxxxxxxxx; Greg KH
> <gregkh@xxxxxxxxxxxxxxxxxxx>
> Subject: RE: [PATCH v2] r8152: Add support for setting MAC to system's
> Auxiliary MAC address
>
> Mario Limonciello [mailto:mario_limonciello@xxxxxxxx]
> > Sent: Friday, June 03, 2016 12:58 AM
> [...]
> > @@ -500,6 +502,7 @@ enum rtl8152_flags {
> > SELECTIVE_SUSPEND,
> > PHY_RESET,
> > SCHEDULE_NAPI,
> > + MAC_PASSTHRU = 0,
>
> I don't think you have to give this a value.
>
> > };
> >
> [...]
> > static int set_ethernet_addr(struct r8152 *tp)
> > {
> > struct net_device *dev = tp->netdev;
> > @@ -1041,6 +1088,10 @@ static int set_ethernet_addr(struct r8152 *tp)
> > else
> > ret = pla_ocp_read(tp, PLA_BACKUP, 8, sa.sa_data);
> >
> > + /* if system provides auxiliary MAC address */
> > + if (get_auxiliary_addr(tp, &sa))
> > + ret = 0;
>
> It still has problem when tp->version == RTL_VER_01.
> First, you would read the current MAC address (MAC1) to sa.sa_data.
> Then sa.sa_data may be modified by MAC2 after get_auxiliary_addr().
> However, the MAC2 wouldn't be set to the device, because
>
> if (tp->version == RTL_VER_01)
> ether_addr_copy(dev->dev_addr, sa.sa_data);
>
> Therefore, you would find that dev_addr is MAC2, and the device
> uses MAC1.
>
> Best Regards,
> Hayes
>

Hayes,

>From the information that I got that this is only a valid thing to do on
RTL-8153-AD (when dock bit set), should this only match with
tp->version >= RTL_VER_03?

How can I confirm that the chip is 8153-AD specifically? I didn't see
something obvious in driver to tell this.

Thanks,