]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/r8169.c
r8169: shuffle some registers handling around (8168 operation only)
[linux-2.6-omap-h63xx.git] / drivers / net / r8169.c
index 8086bacabcf318e005a06c501405c1e1a48b2eea..273afb5617078b56b4f40b9458e5f2cf2b3ac500 100644 (file)
@@ -2396,14 +2396,10 @@ static void rtl_hw_start_8168(struct net_device *dev)
 
        rtl_set_rx_max_size(ioaddr);
 
-       rtl_set_rx_tx_config_registers(tp);
-
        tp->cp_cmd |= RTL_R16(CPlusCmd) | PktCntrDisable | INTT_1;
 
        RTL_W16(CPlusCmd, tp->cp_cmd);
 
-       rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT);
-
        RTL_W16(IntrMitigate, 0x5151);
 
        /* Work around for RxFIFO overflow. */
@@ -2414,14 +2410,19 @@ static void rtl_hw_start_8168(struct net_device *dev)
 
        rtl_set_rx_tx_desc_registers(tp, ioaddr);
 
-       RTL_W8(Cfg9346, Cfg9346_Lock);
+       rtl_set_rx_mode(dev);
+
+       RTL_W32(TxConfig, (TX_DMA_BURST << TxDMAShift) |
+               (InterFrameGap << TxInterFrameGapShift));
 
        RTL_R8(IntrMask);
 
-       rtl_set_rx_mode(dev);
+       rtl_tx_performance_tweak(pdev, 0x5 << MAX_READ_REQUEST_SHIFT);
 
        RTL_W8(ChipCmd, CmdTxEnb | CmdRxEnb);
 
+       RTL_W8(Cfg9346, Cfg9346_Lock);
+
        RTL_W16(MultiIntr, RTL_R16(MultiIntr) & 0xF000);
 
        RTL_W16(IntrMask, tp->intr_event);