* [PATCH 0/3] net: fec fixes @ 2010-02-05 18:56 Amit Kucheria 2010-02-05 18:56 ` [PATCH 1/3] fec: fix uninitialized rx buffer usage Amit Kucheria 2010-02-10 21:06 ` [PATCH 0/3] net: fec fixes David Miller 0 siblings, 2 replies; 6+ messages in thread From: Amit Kucheria @ 2010-02-05 18:56 UTC (permalink / raw) To: List Linux Kernel Cc: davem, netdev, s.hauer, gerg, u.kleine-koenig, amit.kucheria Some fixes to the fec driver to get it to work on the Freescale i.MX5 SoC platform Amit Kucheria (2): fec: Add LAN8700 phy support fec: Add ARCH_MX5 as a dependency Rob Herring (1): fec: fix uninitialized rx buffer usage drivers/net/Kconfig | 3 +- drivers/net/fec.c | 78 ++++++++++++++++++++++++++++++++------------------ 2 files changed, 52 insertions(+), 29 deletions(-) ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/3] fec: fix uninitialized rx buffer usage 2010-02-05 18:56 [PATCH 0/3] net: fec fixes Amit Kucheria @ 2010-02-05 18:56 ` Amit Kucheria 2010-02-05 18:56 ` [PATCH 2/3] fec: Add LAN8700 phy support Amit Kucheria 2010-02-08 2:55 ` [PATCH 1/3] fec: fix uninitialized rx buffer usage Greg Ungerer 2010-02-10 21:06 ` [PATCH 0/3] net: fec fixes David Miller 1 sibling, 2 replies; 6+ messages in thread From: Amit Kucheria @ 2010-02-05 18:56 UTC (permalink / raw) To: List Linux Kernel Cc: Rob Herring, davem, netdev, s.hauer, gerg, u.kleine-koenig, amit.kucheria From: Rob Herring <r.herring@freescale.com> The fec driver was enabling receive buffer descriptor without allocating the buffers. Make sure the buffer descriptors are initialized to not start receiving packets. Open also calls fec_restart after the rx buffers are allocated. With the code in fec_restart, it zeroes out the buffer descriptors that have just been setup. Signed-off-by: Rob Herring <r.herring@freescale.com> Signed-off-by: Amit Kucheria <amit.kucheria@canonical.com> Acked-by: Grant Likely <grant.likely@secretlab.ca> --- drivers/net/fec.c | 57 +++++++++++++++++++++++++++-------------------------- 1 files changed, 29 insertions(+), 28 deletions(-) diff --git a/drivers/net/fec.c b/drivers/net/fec.c index 16a1d58..9a8743d 100644 --- a/drivers/net/fec.c +++ b/drivers/net/fec.c @@ -1658,6 +1658,7 @@ static int fec_enet_init(struct net_device *dev, int index) { struct fec_enet_private *fep = netdev_priv(dev); struct bufdesc *cbd_base; + struct bufdesc *bdp; int i; /* Allocate memory for buffer descriptors. */ @@ -1710,6 +1711,34 @@ static int fec_enet_init(struct net_device *dev, int index) /* Set MII speed to 2.5 MHz */ fep->phy_speed = ((((clk_get_rate(fep->clk) / 2 + 4999999) / 2500000) / 2) & 0x3F) << 1; + + /* Initialize the receive buffer descriptors. */ + bdp = fep->rx_bd_base; + for (i = 0; i < RX_RING_SIZE; i++) { + + /* Initialize the BD for every fragment in the page. */ + bdp->cbd_sc = 0; + bdp++; + } + + /* Set the last buffer to wrap */ + bdp--; + bdp->cbd_sc |= BD_SC_WRAP; + + /* ...and the same for transmit */ + bdp = fep->tx_bd_base; + for (i = 0; i < TX_RING_SIZE; i++) { + + /* Initialize the BD for every fragment in the page. */ + bdp->cbd_sc = 0; + bdp->cbd_bufaddr = 0; + bdp++; + } + + /* Set the last buffer to wrap */ + bdp--; + bdp->cbd_sc |= BD_SC_WRAP; + fec_restart(dev, 0); /* Queue up command to detect the PHY and initialize the @@ -1730,7 +1759,6 @@ static void fec_restart(struct net_device *dev, int duplex) { struct fec_enet_private *fep = netdev_priv(dev); - struct bufdesc *bdp; int i; /* Whack a reset. We should wait for this. */ @@ -1768,33 +1796,6 @@ fec_restart(struct net_device *dev, int duplex) } } - /* Initialize the receive buffer descriptors. */ - bdp = fep->rx_bd_base; - for (i = 0; i < RX_RING_SIZE; i++) { - - /* Initialize the BD for every fragment in the page. */ - bdp->cbd_sc = BD_ENET_RX_EMPTY; - bdp++; - } - - /* Set the last buffer to wrap */ - bdp--; - bdp->cbd_sc |= BD_SC_WRAP; - - /* ...and the same for transmit */ - bdp = fep->tx_bd_base; - for (i = 0; i < TX_RING_SIZE; i++) { - - /* Initialize the BD for every fragment in the page. */ - bdp->cbd_sc = 0; - bdp->cbd_bufaddr = 0; - bdp++; - } - - /* Set the last buffer to wrap */ - bdp--; - bdp->cbd_sc |= BD_SC_WRAP; - /* Enable MII mode */ if (duplex) { /* MII enable / FD enable */ -- 1.6.3.3 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/3] fec: Add LAN8700 phy support 2010-02-05 18:56 ` [PATCH 1/3] fec: fix uninitialized rx buffer usage Amit Kucheria @ 2010-02-05 18:56 ` Amit Kucheria 2010-02-05 18:56 ` [PATCH 3/3] fec: Add ARCH_MX5 as a dependency Amit Kucheria 2010-02-08 2:55 ` [PATCH 1/3] fec: fix uninitialized rx buffer usage Greg Ungerer 1 sibling, 1 reply; 6+ messages in thread From: Amit Kucheria @ 2010-02-05 18:56 UTC (permalink / raw) To: List Linux Kernel Cc: davem, netdev, s.hauer, gerg, u.kleine-koenig, amit.kucheria The i.MX51 babbage board has a FEC ethernet controller with this phy. In the long term we should resurrect the phylib patches for fec. Signed-off-by: Amit Kucheria <amit.kucheria@canonical.com> Acked-by: Grant Likely <grant.likely@secretlab.ca> --- drivers/net/fec.c | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+), 0 deletions(-) diff --git a/drivers/net/fec.c b/drivers/net/fec.c index 9a8743d..5d0d332 100644 --- a/drivers/net/fec.c +++ b/drivers/net/fec.c @@ -1128,6 +1128,26 @@ static phy_info_t phy_info_dp83848= { }, }; +static phy_info_t phy_info_lan8700 = { + 0x0007C0C, + "LAN8700", + (const phy_cmd_t []) { /* config */ + { mk_mii_read(MII_REG_CR), mii_parse_cr }, + { mk_mii_read(MII_REG_ANAR), mii_parse_anar }, + { mk_mii_end, } + }, + (const phy_cmd_t []) { /* startup */ + { mk_mii_write(MII_REG_CR, 0x1200), NULL }, /* autonegotiate */ + { mk_mii_read(MII_REG_SR), mii_parse_sr }, + { mk_mii_end, } + }, + (const phy_cmd_t []) { /* act_int */ + { mk_mii_end, } + }, + (const phy_cmd_t []) { /* shutdown */ + { mk_mii_end, } + }, +}; /* ------------------------------------------------------------------------- */ static phy_info_t const * const phy_info[] = { @@ -1137,6 +1157,7 @@ static phy_info_t const * const phy_info[] = { &phy_info_am79c874, &phy_info_ks8721bl, &phy_info_dp83848, + &phy_info_lan8700, NULL }; -- 1.6.3.3 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/3] fec: Add ARCH_MX5 as a dependency 2010-02-05 18:56 ` [PATCH 2/3] fec: Add LAN8700 phy support Amit Kucheria @ 2010-02-05 18:56 ` Amit Kucheria 0 siblings, 0 replies; 6+ messages in thread From: Amit Kucheria @ 2010-02-05 18:56 UTC (permalink / raw) To: List Linux Kernel Cc: davem, netdev, s.hauer, gerg, u.kleine-koenig, amit.kucheria i.MX51 babbage board has a FEC ethernet controller Signed-off-by: Amit Kucheria <amit.kucheria@canonical.com> --- drivers/net/Kconfig | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index dd9a09c..515658e 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -1883,7 +1883,8 @@ config 68360_ENET config FEC bool "FEC ethernet controller (of ColdFire and some i.MX CPUs)" - depends on M523x || M527x || M5272 || M528x || M520x || M532x || MACH_MX27 || ARCH_MX35 || ARCH_MX25 + depends on M523x || M527x || M5272 || M528x || M520x || M532x || \ + MACH_MX27 || ARCH_MX35 || ARCH_MX25 || ARCH_MX5 help Say Y here if you want to use the built-in 10/100 Fast ethernet controller on some Motorola ColdFire and Freescale i.MX processors. -- 1.6.3.3 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/3] fec: fix uninitialized rx buffer usage 2010-02-05 18:56 ` [PATCH 1/3] fec: fix uninitialized rx buffer usage Amit Kucheria 2010-02-05 18:56 ` [PATCH 2/3] fec: Add LAN8700 phy support Amit Kucheria @ 2010-02-08 2:55 ` Greg Ungerer 1 sibling, 0 replies; 6+ messages in thread From: Greg Ungerer @ 2010-02-08 2:55 UTC (permalink / raw) To: Amit Kucheria Cc: List Linux Kernel, Rob Herring, davem, netdev, s.hauer, gerg, u.kleine-koenig, amit.kucheria Amit Kucheria wrote: > From: Rob Herring <r.herring@freescale.com> > > The fec driver was enabling receive buffer descriptor without allocating > the buffers. Make sure the buffer descriptors are initialized to not > start receiving packets. > > Open also calls fec_restart after the rx buffers are allocated. With the code > in fec_restart, it zeroes out the buffer descriptors that have just been > setup. > > Signed-off-by: Rob Herring <r.herring@freescale.com> > Signed-off-by: Amit Kucheria <amit.kucheria@canonical.com> > Acked-by: Grant Likely <grant.likely@secretlab.ca> Acked-by: Greg Ungerer <gerg@uclinux.org> > --- > drivers/net/fec.c | 57 +++++++++++++++++++++++++++-------------------------- > 1 files changed, 29 insertions(+), 28 deletions(-) > > diff --git a/drivers/net/fec.c b/drivers/net/fec.c > index 16a1d58..9a8743d 100644 > --- a/drivers/net/fec.c > +++ b/drivers/net/fec.c > @@ -1658,6 +1658,7 @@ static int fec_enet_init(struct net_device *dev, int index) > { > struct fec_enet_private *fep = netdev_priv(dev); > struct bufdesc *cbd_base; > + struct bufdesc *bdp; > int i; > > /* Allocate memory for buffer descriptors. */ > @@ -1710,6 +1711,34 @@ static int fec_enet_init(struct net_device *dev, int index) > /* Set MII speed to 2.5 MHz */ > fep->phy_speed = ((((clk_get_rate(fep->clk) / 2 + 4999999) > / 2500000) / 2) & 0x3F) << 1; > + > + /* Initialize the receive buffer descriptors. */ > + bdp = fep->rx_bd_base; > + for (i = 0; i < RX_RING_SIZE; i++) { > + > + /* Initialize the BD for every fragment in the page. */ > + bdp->cbd_sc = 0; > + bdp++; > + } > + > + /* Set the last buffer to wrap */ > + bdp--; > + bdp->cbd_sc |= BD_SC_WRAP; > + > + /* ...and the same for transmit */ > + bdp = fep->tx_bd_base; > + for (i = 0; i < TX_RING_SIZE; i++) { > + > + /* Initialize the BD for every fragment in the page. */ > + bdp->cbd_sc = 0; > + bdp->cbd_bufaddr = 0; > + bdp++; > + } > + > + /* Set the last buffer to wrap */ > + bdp--; > + bdp->cbd_sc |= BD_SC_WRAP; > + > fec_restart(dev, 0); > > /* Queue up command to detect the PHY and initialize the > @@ -1730,7 +1759,6 @@ static void > fec_restart(struct net_device *dev, int duplex) > { > struct fec_enet_private *fep = netdev_priv(dev); > - struct bufdesc *bdp; > int i; > > /* Whack a reset. We should wait for this. */ > @@ -1768,33 +1796,6 @@ fec_restart(struct net_device *dev, int duplex) > } > } > > - /* Initialize the receive buffer descriptors. */ > - bdp = fep->rx_bd_base; > - for (i = 0; i < RX_RING_SIZE; i++) { > - > - /* Initialize the BD for every fragment in the page. */ > - bdp->cbd_sc = BD_ENET_RX_EMPTY; > - bdp++; > - } > - > - /* Set the last buffer to wrap */ > - bdp--; > - bdp->cbd_sc |= BD_SC_WRAP; > - > - /* ...and the same for transmit */ > - bdp = fep->tx_bd_base; > - for (i = 0; i < TX_RING_SIZE; i++) { > - > - /* Initialize the BD for every fragment in the page. */ > - bdp->cbd_sc = 0; > - bdp->cbd_bufaddr = 0; > - bdp++; > - } > - > - /* Set the last buffer to wrap */ > - bdp--; > - bdp->cbd_sc |= BD_SC_WRAP; > - > /* Enable MII mode */ > if (duplex) { > /* MII enable / FD enable */ -- ------------------------------------------------------------------------ Greg Ungerer -- Principal Engineer EMAIL: gerg@snapgear.com SnapGear Group, McAfee PHONE: +61 7 3435 2888 8 Gardner Close FAX: +61 7 3217 5323 Milton, QLD, 4064, Australia WEB: http://www.SnapGear.com ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/3] net: fec fixes 2010-02-05 18:56 [PATCH 0/3] net: fec fixes Amit Kucheria 2010-02-05 18:56 ` [PATCH 1/3] fec: fix uninitialized rx buffer usage Amit Kucheria @ 2010-02-10 21:06 ` David Miller 1 sibling, 0 replies; 6+ messages in thread From: David Miller @ 2010-02-10 21:06 UTC (permalink / raw) To: amit.kucheria Cc: linux-kernel, netdev, s.hauer, gerg, u.kleine-koenig, amit.kucheria From: Amit Kucheria <amit.kucheria@canonical.com> Date: Fri, 5 Feb 2010 10:56:19 -0800 > Some fixes to the fec driver to get it to work on the Freescale i.MX5 SoC > platform > > Amit Kucheria (2): > fec: Add LAN8700 phy support > fec: Add ARCH_MX5 as a dependency > > Rob Herring (1): > fec: fix uninitialized rx buffer usage All applied to net-next-2.6, thanks. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-02-10 21:06 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-02-05 18:56 [PATCH 0/3] net: fec fixes Amit Kucheria 2010-02-05 18:56 ` [PATCH 1/3] fec: fix uninitialized rx buffer usage Amit Kucheria 2010-02-05 18:56 ` [PATCH 2/3] fec: Add LAN8700 phy support Amit Kucheria 2010-02-05 18:56 ` [PATCH 3/3] fec: Add ARCH_MX5 as a dependency Amit Kucheria 2010-02-08 2:55 ` [PATCH 1/3] fec: fix uninitialized rx buffer usage Greg Ungerer 2010-02-10 21:06 ` [PATCH 0/3] net: fec fixes David Miller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).