aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/r8169.c
diff options
context:
space:
mode:
authorFrancois Romieu <romieu@fr.zoreil.com>2008-06-01 06:31:57 -0400
committerFrancois Romieu <romieu@fr.zoreil.com>2008-10-10 17:08:30 -0400
commitb8363901596f64ef74db906df0c4a95daea47464 (patch)
treeb963b19399fdd0121aaab0c42b5ba5069ba7e5aa /drivers/net/r8169.c
parent236b8082aa239e91c3cd9cb466d0527a735e54db (diff)
r8169: shuffle some registers handling around (8168 operation only)
I can not argue strongly for (or against) a specific ordering on a purely technical ground but the patch avoids to swallow Realtek's changes in one big, hard-to-read gulp. Let aside the way the RxConfig register is written (see rtl_set_rx_tx_config_registers / RxConfig / rtl_set_rx_mode), this change brings the registers write ordering closer with Realtek's driver one (version 8.006.00) for the 8168 chipsets. More 8168 specific code which touches the Configx registers will be added in the section covered by Cfg9346_UnLock / Cfg9346_Lock. This code should not be the cause of regression for 810x and 8110 users. Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Cc: Edward Hsu <edward_hsu@realtek.com.tw>
Diffstat (limited to 'drivers/net/r8169.c')
-rw-r--r--drivers/net/r8169.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
index 8086bacabcf3..273afb561707 100644
--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -2396,14 +2396,10 @@ static void rtl_hw_start_8168(struct net_device *dev)
2396 2396
2397 rtl_set_rx_max_size(ioaddr); 2397 rtl_set_rx_max_size(ioaddr);
2398 2398
2399 rtl_set_rx_tx_config_registers(tp);
2400
2401 tp->cp_cmd |= RTL_R16(CPlusCmd) | PktCntrDisable | INTT_1; 2399 tp->cp_cmd |= RTL_R16(CPlusCmd) | PktCntrDisable | INTT_1;
2402 2400
2403 RTL_W16(CPlusCmd, tp->cp_cmd); 2401 RTL_W16(CPlusCmd, tp->cp_cmd);
2404 2402
2405 rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT);
2406
2407 RTL_W16(IntrMitigate, 0x5151); 2403 RTL_W16(IntrMitigate, 0x5151);
2408 2404
2409 /* Work around for RxFIFO overflow. */ 2405 /* Work around for RxFIFO overflow. */
@@ -2414,14 +2410,19 @@ static void rtl_hw_start_8168(struct net_device *dev)
2414 2410
2415 rtl_set_rx_tx_desc_registers(tp, ioaddr); 2411 rtl_set_rx_tx_desc_registers(tp, ioaddr);
2416 2412
2417 RTL_W8(Cfg9346, Cfg9346_Lock); 2413 rtl_set_rx_mode(dev);
2414
2415 RTL_W32(TxConfig, (TX_DMA_BURST << TxDMAShift) |
2416 (InterFrameGap << TxInterFrameGapShift));
2418 2417
2419 RTL_R8(IntrMask); 2418 RTL_R8(IntrMask);
2420 2419
2421 rtl_set_rx_mode(dev); 2420 rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT);
2422 2421
2423 RTL_W8(ChipCmd, CmdTxEnb | CmdRxEnb); 2422 RTL_W8(ChipCmd, CmdTxEnb | CmdRxEnb);
2424 2423
2424 RTL_W8(Cfg9346, Cfg9346_Lock);
2425
2425 RTL_W16(MultiIntr, RTL_R16(MultiIntr) & 0xF000); 2426 RTL_W16(MultiIntr, RTL_R16(MultiIntr) & 0xF000);
2426 2427
2427 RTL_W16(IntrMask, tp->intr_event); 2428 RTL_W16(IntrMask, tp->intr_event);