diff options
author | Francois Romieu <romieu@fr.zoreil.com> | 2007-10-03 18:42:50 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-10-05 14:05:48 -0400 |
commit | c946b3047205d7e107be16885bbb42ab9f10350a (patch) | |
tree | d5493adf30f328f21d129b5404adb1cd9c7427c4 /drivers/net/r8169.c | |
parent | af299901efac5ede381e01448a31a560a4eca853 (diff) |
r8169: revert part of 6dccd16b7c2703e8bbf8bca62b5cf248332afbe2
The 8169/8110SC currently announces itself as:
[...]
eth0: RTL8169sc/8110sc at 0x........, ..:..:..:..:..:.., XID 18000000 IRQ ..
^^^^^^^^
It uses RTL_GIGA_MAC_VER_05 and this part of the changeset can cut
its performance by a factor of 2~2.5 as reported by Timo.
(the driver includes code just before the hunk to write the ChipCmd
register when mac_version == RTL_GIGA_MAC_VER_0[1-4])
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Timo Jantunen <jeti@welho.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/r8169.c')
-rw-r--r-- | drivers/net/r8169.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index c921ec32c232..c76dd29c8e9a 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c | |||
@@ -1918,7 +1918,11 @@ static void rtl_hw_start_8169(struct net_device *dev) | |||
1918 | 1918 | ||
1919 | rtl_set_rx_max_size(ioaddr); | 1919 | rtl_set_rx_max_size(ioaddr); |
1920 | 1920 | ||
1921 | rtl_set_rx_tx_config_registers(tp); | 1921 | if ((tp->mac_version == RTL_GIGA_MAC_VER_01) || |
1922 | (tp->mac_version == RTL_GIGA_MAC_VER_02) || | ||
1923 | (tp->mac_version == RTL_GIGA_MAC_VER_03) || | ||
1924 | (tp->mac_version == RTL_GIGA_MAC_VER_04)) | ||
1925 | rtl_set_rx_tx_config_registers(tp); | ||
1922 | 1926 | ||
1923 | tp->cp_cmd |= rtl_rw_cpluscmd(ioaddr) | PCIMulRW; | 1927 | tp->cp_cmd |= rtl_rw_cpluscmd(ioaddr) | PCIMulRW; |
1924 | 1928 | ||
@@ -1941,6 +1945,14 @@ static void rtl_hw_start_8169(struct net_device *dev) | |||
1941 | 1945 | ||
1942 | rtl_set_rx_tx_desc_registers(tp, ioaddr); | 1946 | rtl_set_rx_tx_desc_registers(tp, ioaddr); |
1943 | 1947 | ||
1948 | if ((tp->mac_version != RTL_GIGA_MAC_VER_01) && | ||
1949 | (tp->mac_version != RTL_GIGA_MAC_VER_02) && | ||
1950 | (tp->mac_version != RTL_GIGA_MAC_VER_03) && | ||
1951 | (tp->mac_version != RTL_GIGA_MAC_VER_04)) { | ||
1952 | RTL_W8(ChipCmd, CmdTxEnb | CmdRxEnb); | ||
1953 | rtl_set_rx_tx_config_registers(tp); | ||
1954 | } | ||
1955 | |||
1944 | RTL_W8(Cfg9346, Cfg9346_Lock); | 1956 | RTL_W8(Cfg9346, Cfg9346_Lock); |
1945 | 1957 | ||
1946 | /* Initially a 10 us delay. Turned it into a PCI commit. - FR */ | 1958 | /* Initially a 10 us delay. Turned it into a PCI commit. - FR */ |
@@ -1955,8 +1967,6 @@ static void rtl_hw_start_8169(struct net_device *dev) | |||
1955 | 1967 | ||
1956 | /* Enable all known interrupts by setting the interrupt mask. */ | 1968 | /* Enable all known interrupts by setting the interrupt mask. */ |
1957 | RTL_W16(IntrMask, tp->intr_event); | 1969 | RTL_W16(IntrMask, tp->intr_event); |
1958 | |||
1959 | RTL_W8(ChipCmd, CmdTxEnb | CmdRxEnb); | ||
1960 | } | 1970 | } |
1961 | 1971 | ||
1962 | static void rtl_hw_start_8168(struct net_device *dev) | 1972 | static void rtl_hw_start_8168(struct net_device *dev) |