aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sis190.c
diff options
context:
space:
mode:
authorFrancois Romieu <romieu@fr.zoreil.com>2005-07-30 07:16:14 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-07-30 18:21:01 -0400
commit8348b4db5f56d2c0d3849db06055225ec15b255a (patch)
treef98fc7c7cee7c04f88d24c0cafcae0c628ace260 /drivers/net/sis190.c
parent560d3d521decc6d05dc0d6e007f1d2e1d3048102 (diff)
[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>
Diffstat (limited to 'drivers/net/sis190.c')
-rw-r--r--drivers/net/sis190.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/sis190.c b/drivers/net/sis190.c
index 84bc2299f93b..915ff009c295 100644
--- a/drivers/net/sis190.c
+++ b/drivers/net/sis190.c
@@ -952,12 +952,17 @@ static void sis190_phy_task(void * data)
952 0x01 | _10bpsH }, 952 0x01 | _10bpsH },
953 { 0, "unknown", 0x0000 } 953 { 0, "unknown", 0x0000 }
954 }, *p; 954 }, *p;
955 u16 adv;
955 956
956 val = mdio_read(ioaddr, phy_id, 0x1f); 957 val = mdio_read(ioaddr, phy_id, 0x1f);
957 net_link(tp, KERN_INFO "%s: mii ext = %04x.\n", dev->name, val); 958 net_link(tp, KERN_INFO "%s: mii ext = %04x.\n", dev->name, val);
958 959
959 val = mdio_read(ioaddr, phy_id, MII_LPA); 960 val = mdio_read(ioaddr, phy_id, MII_LPA);
960 net_link(tp, KERN_INFO "%s: mii lpa = %04x.\n", dev->name, val); 961 adv = mdio_read(ioaddr, phy_id, MII_ADVERTISE);
962 net_link(tp, KERN_INFO "%s: mii lpa = %04x adv = %04x.\n",
963 dev->name, val, adv);
964
965 val &= adv;
961 966
962 for (p = reg31; p->ctl; p++) { 967 for (p = reg31; p->ctl; p++) {
963 if ((val & p->val) == p->val) 968 if ((val & p->val) == p->val)