diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/r8169.c | 72 |
1 files changed, 5 insertions, 67 deletions
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index 49e599bc3f48..2ac532a6ed3e 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c | |||
@@ -8,19 +8,6 @@ | |||
8 | May 20 2002 - Add link status force-mode and TBI mode support. | 8 | May 20 2002 - Add link status force-mode and TBI mode support. |
9 | 2004 - Massive updates. See kernel SCM system for details. | 9 | 2004 - Massive updates. See kernel SCM system for details. |
10 | ========================================================================= | 10 | ========================================================================= |
11 | 1. [DEPRECATED: use ethtool instead] The media can be forced in 5 modes. | ||
12 | Command: 'insmod r8169 media = SET_MEDIA' | ||
13 | Ex: 'insmod r8169 media = 0x04' will force PHY to operate in 100Mpbs Half-duplex. | ||
14 | |||
15 | SET_MEDIA can be: | ||
16 | _10_Half = 0x01 | ||
17 | _10_Full = 0x02 | ||
18 | _100_Half = 0x04 | ||
19 | _100_Full = 0x08 | ||
20 | _1000_Full = 0x10 | ||
21 | |||
22 | 2. Support TBI mode. | ||
23 | ========================================================================= | ||
24 | VERSION 1.1 <2002/10/4> | 11 | VERSION 1.1 <2002/10/4> |
25 | 12 | ||
26 | The bit4:0 of MII register 4 is called "selector field", and have to be | 13 | The bit4:0 of MII register 4 is called "selector field", and have to be |
@@ -108,11 +95,6 @@ VERSION 2.2LK <2005/01/25> | |||
108 | #define rtl8169_rx_quota(count, quota) count | 95 | #define rtl8169_rx_quota(count, quota) count |
109 | #endif | 96 | #endif |
110 | 97 | ||
111 | /* media options */ | ||
112 | #define MAX_UNITS 8 | ||
113 | static int media[MAX_UNITS] = { -1, -1, -1, -1, -1, -1, -1, -1 }; | ||
114 | static int num_media = 0; | ||
115 | |||
116 | /* Maximum events (Rx packets, etc.) to handle at each interrupt. */ | 98 | /* Maximum events (Rx packets, etc.) to handle at each interrupt. */ |
117 | static const int max_interrupt_work = 20; | 99 | static const int max_interrupt_work = 20; |
118 | 100 | ||
@@ -364,13 +346,6 @@ enum RTL8169_register_content { | |||
364 | LinkStatus = 0x02, | 346 | LinkStatus = 0x02, |
365 | FullDup = 0x01, | 347 | FullDup = 0x01, |
366 | 348 | ||
367 | /* _MediaType */ | ||
368 | _10_Half = 0x01, | ||
369 | _10_Full = 0x02, | ||
370 | _100_Half = 0x04, | ||
371 | _100_Full = 0x08, | ||
372 | _1000_Full = 0x10, | ||
373 | |||
374 | /* _TBICSRBit */ | 349 | /* _TBICSRBit */ |
375 | TBILinkOK = 0x02000000, | 350 | TBILinkOK = 0x02000000, |
376 | 351 | ||
@@ -472,8 +447,6 @@ struct rtl8169_private { | |||
472 | 447 | ||
473 | MODULE_AUTHOR("Realtek and the Linux r8169 crew <netdev@vger.kernel.org>"); | 448 | MODULE_AUTHOR("Realtek and the Linux r8169 crew <netdev@vger.kernel.org>"); |
474 | MODULE_DESCRIPTION("RealTek RTL-8169 Gigabit Ethernet driver"); | 449 | MODULE_DESCRIPTION("RealTek RTL-8169 Gigabit Ethernet driver"); |
475 | module_param_array(media, int, &num_media, 0); | ||
476 | MODULE_PARM_DESC(media, "force phy operation. Deprecated by ethtool (8)."); | ||
477 | module_param(rx_copybreak, int, 0); | 450 | module_param(rx_copybreak, int, 0); |
478 | MODULE_PARM_DESC(rx_copybreak, "Copy breakpoint for copy-only-tiny-frames"); | 451 | MODULE_PARM_DESC(rx_copybreak, "Copy breakpoint for copy-only-tiny-frames"); |
479 | module_param(use_dac, int, 0); | 452 | module_param(use_dac, int, 0); |
@@ -601,38 +574,6 @@ static void rtl8169_check_link_status(struct net_device *dev, | |||
601 | spin_unlock_irqrestore(&tp->lock, flags); | 574 | spin_unlock_irqrestore(&tp->lock, flags); |
602 | } | 575 | } |
603 | 576 | ||
604 | static void rtl8169_link_option(int idx, u8 *autoneg, u16 *speed, u8 *duplex) | ||
605 | { | ||
606 | struct { | ||
607 | u16 speed; | ||
608 | u8 duplex; | ||
609 | u8 autoneg; | ||
610 | u8 media; | ||
611 | } link_settings[] = { | ||
612 | { SPEED_10, DUPLEX_HALF, AUTONEG_DISABLE, _10_Half }, | ||
613 | { SPEED_10, DUPLEX_FULL, AUTONEG_DISABLE, _10_Full }, | ||
614 | { SPEED_100, DUPLEX_HALF, AUTONEG_DISABLE, _100_Half }, | ||
615 | { SPEED_100, DUPLEX_FULL, AUTONEG_DISABLE, _100_Full }, | ||
616 | { SPEED_1000, DUPLEX_FULL, AUTONEG_DISABLE, _1000_Full }, | ||
617 | /* Make TBI happy */ | ||
618 | { SPEED_1000, DUPLEX_FULL, AUTONEG_ENABLE, 0xff } | ||
619 | }, *p; | ||
620 | unsigned char option; | ||
621 | |||
622 | option = ((idx < MAX_UNITS) && (idx >= 0)) ? media[idx] : 0xff; | ||
623 | |||
624 | if ((option != 0xff) && !idx && netif_msg_drv(&debug)) | ||
625 | printk(KERN_WARNING PFX "media option is deprecated.\n"); | ||
626 | |||
627 | for (p = link_settings; p->media != 0xff; p++) { | ||
628 | if (p->media == option) | ||
629 | break; | ||
630 | } | ||
631 | *autoneg = p->autoneg; | ||
632 | *speed = p->speed; | ||
633 | *duplex = p->duplex; | ||
634 | } | ||
635 | |||
636 | static void rtl8169_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) | 577 | static void rtl8169_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) |
637 | { | 578 | { |
638 | struct rtl8169_private *tp = netdev_priv(dev); | 579 | struct rtl8169_private *tp = netdev_priv(dev); |
@@ -1425,11 +1366,6 @@ static void rtl8169_phy_reset(struct net_device *dev, | |||
1425 | static void rtl8169_init_phy(struct net_device *dev, struct rtl8169_private *tp) | 1366 | static void rtl8169_init_phy(struct net_device *dev, struct rtl8169_private *tp) |
1426 | { | 1367 | { |
1427 | void __iomem *ioaddr = tp->mmio_addr; | 1368 | void __iomem *ioaddr = tp->mmio_addr; |
1428 | static int board_idx = -1; | ||
1429 | u8 autoneg, duplex; | ||
1430 | u16 speed; | ||
1431 | |||
1432 | board_idx++; | ||
1433 | 1369 | ||
1434 | rtl8169_hw_phy_config(dev); | 1370 | rtl8169_hw_phy_config(dev); |
1435 | 1371 | ||
@@ -1448,11 +1384,13 @@ static void rtl8169_init_phy(struct net_device *dev, struct rtl8169_private *tp) | |||
1448 | mdio_write(ioaddr, 0x0b, 0x0000); //w 0x0b 15 0 0 | 1384 | mdio_write(ioaddr, 0x0b, 0x0000); //w 0x0b 15 0 0 |
1449 | } | 1385 | } |
1450 | 1386 | ||
1451 | rtl8169_link_option(board_idx, &autoneg, &speed, &duplex); | ||
1452 | |||
1453 | rtl8169_phy_reset(dev, tp); | 1387 | rtl8169_phy_reset(dev, tp); |
1454 | 1388 | ||
1455 | rtl8169_set_speed(dev, autoneg, speed, duplex); | 1389 | /* |
1390 | * rtl8169_set_speed_xmii takes good care of the Fast Ethernet | ||
1391 | * only 8101. Don't panic. | ||
1392 | */ | ||
1393 | rtl8169_set_speed(dev, AUTONEG_ENABLE, SPEED_1000, DUPLEX_FULL); | ||
1456 | 1394 | ||
1457 | if ((RTL_R8(PHYstatus) & TBI_Enable) && netif_msg_link(tp)) | 1395 | if ((RTL_R8(PHYstatus) & TBI_Enable) && netif_msg_link(tp)) |
1458 | printk(KERN_INFO PFX "%s: TBI auto-negotiating\n", dev->name); | 1396 | printk(KERN_INFO PFX "%s: TBI auto-negotiating\n", dev->name); |