Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=36033766533176d61ba15793d8ef219775499c2f
Commit:     36033766533176d61ba15793d8ef219775499c2f
Parent:     ca7e235f5eb960d83b45cef4384b490672538cd9
Author:     Olof Johansson <[EMAIL PROTECTED]>
AuthorDate: Wed Sep 26 16:24:42 2007 -0500
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Wed Oct 10 16:53:43 2007 -0700

    pasemi_mac: don't enable rx before there are buffers on the ring
    
    pasemi_mac: don't enable rx before there are buffers on the ring
    
    Reorder initialization of the DMA channels and the interface. Before there
    was a time window when the interface was enabled before DMA was enabled.
    Also, now there will always be RX buffers available at the time the
    MAC interface is enabled, to avoid temporary out-of-buffer errors for the
    very first packets (on busy networks).
    
    Signed-off-by: Olof Johansson <[EMAIL PROTECTED]>
    Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
---
 drivers/net/pasemi_mac.c |   21 +++++++++++----------
 1 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/drivers/net/pasemi_mac.c b/drivers/net/pasemi_mac.c
index 8892b65..643fce8 100644
--- a/drivers/net/pasemi_mac.c
+++ b/drivers/net/pasemi_mac.c
@@ -786,14 +786,6 @@ static int pasemi_mac_open(struct net_device *dev)
 
        write_mac_reg(mac, PAS_MAC_CFG_TXP, flags);
 
-       flags = PAS_MAC_CFG_PCFG_S1 | PAS_MAC_CFG_PCFG_PE |
-               PAS_MAC_CFG_PCFG_PR | PAS_MAC_CFG_PCFG_CE;
-
-       if (mac->type == MAC_TYPE_GMAC)
-               flags |= PAS_MAC_CFG_PCFG_TSR_1G | PAS_MAC_CFG_PCFG_SPD_1G;
-       else
-               flags |= PAS_MAC_CFG_PCFG_TSR_10G | PAS_MAC_CFG_PCFG_SPD_10G;
-
        write_iob_reg(mac, PAS_IOB_DMA_RXCH_CFG(mac->dma_rxch),
                           PAS_IOB_DMA_RXCH_CFG_CNTTH(0));
 
@@ -808,8 +800,6 @@ static int pasemi_mac_open(struct net_device *dev)
        write_iob_reg(mac, PAS_IOB_DMA_COM_TIMEOUTCFG,
                           PAS_IOB_DMA_COM_TIMEOUTCFG_TCNT(0xffffff));
 
-       write_mac_reg(mac, PAS_MAC_CFG_PCFG, flags);
-
        ret = pasemi_mac_setup_rx_resources(dev);
        if (ret)
                goto out_rx_resources;
@@ -837,6 +827,17 @@ static int pasemi_mac_open(struct net_device *dev)
 
        pasemi_mac_replenish_rx_ring(dev);
 
+       flags = PAS_MAC_CFG_PCFG_S1 | PAS_MAC_CFG_PCFG_PE |
+               PAS_MAC_CFG_PCFG_PR | PAS_MAC_CFG_PCFG_CE;
+
+       if (mac->type == MAC_TYPE_GMAC)
+               flags |= PAS_MAC_CFG_PCFG_TSR_1G | PAS_MAC_CFG_PCFG_SPD_1G;
+       else
+               flags |= PAS_MAC_CFG_PCFG_TSR_10G | PAS_MAC_CFG_PCFG_SPD_10G;
+
+       /* Enable interface in MAC */
+       write_mac_reg(mac, PAS_MAC_CFG_PCFG, flags);
+
        ret = pasemi_mac_phy_init(dev);
        /* Some configs don't have PHYs (XAUI etc), so don't complain about
         * failed init due to -ENODEV.
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to