mirror of https://gitee.com/openkylin/linux.git
[PATCH] sis190: compare the lpa to the local advertisement
The station control register must depend on both the advertisement and the lpa The link partner ability has better be intersected with the current advertised value before it is feed to the station control register. Sight-catched-by: Lars Vahlenberg <lars.vahlenberg@gmail.com> Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
This commit is contained in:
parent
560d3d521d
commit
8348b4db5f
|
@ -952,12 +952,17 @@ static void sis190_phy_task(void * data)
|
|||
0x01 | _10bpsH },
|
||||
{ 0, "unknown", 0x0000 }
|
||||
}, *p;
|
||||
u16 adv;
|
||||
|
||||
val = mdio_read(ioaddr, phy_id, 0x1f);
|
||||
net_link(tp, KERN_INFO "%s: mii ext = %04x.\n", dev->name, val);
|
||||
|
||||
val = mdio_read(ioaddr, phy_id, MII_LPA);
|
||||
net_link(tp, KERN_INFO "%s: mii lpa = %04x.\n", dev->name, val);
|
||||
adv = mdio_read(ioaddr, phy_id, MII_ADVERTISE);
|
||||
net_link(tp, KERN_INFO "%s: mii lpa = %04x adv = %04x.\n",
|
||||
dev->name, val, adv);
|
||||
|
||||
val &= adv;
|
||||
|
||||
for (p = reg31; p->ctl; p++) {
|
||||
if ((val & p->val) == p->val)
|
||||
|
|
Loading…
Reference in New Issue