diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2010-11-24 00:43:08 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2010-11-24 00:43:08 +0000 |
commit | ac80d4760811c65bde1baad9ba21dc48d9092765 (patch) | |
tree | 08376773e3853f9fcf54114cb755f096d98a5d02 /nuttx | |
parent | e940d6ad43e2af6ec9d44d711e3ef89d11b34768 (diff) | |
download | px4-nuttx-ac80d4760811c65bde1baad9ba21dc48d9092765.tar.gz px4-nuttx-ac80d4760811c65bde1baad9ba21dc48d9092765.tar.bz2 px4-nuttx-ac80d4760811c65bde1baad9ba21dc48d9092765.zip |
Now get RX message
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3124 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx')
-rw-r--r-- | nuttx/arch/arm/src/lpc17xx/lpc17_ethernet.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/nuttx/arch/arm/src/lpc17xx/lpc17_ethernet.c b/nuttx/arch/arm/src/lpc17xx/lpc17_ethernet.c index 21e60feb6..2e630cb2b 100644 --- a/nuttx/arch/arm/src/lpc17xx/lpc17_ethernet.c +++ b/nuttx/arch/arm/src/lpc17xx/lpc17_ethernet.c @@ -905,7 +905,7 @@ static void lpc17_rxdone(struct lpc17_driver_s *priv) if ((*rxstat & RXSTAT_INFO_ERROR) != 0) { - nlldbg("Error. rxstat: %08d\n", *rxstat); + nlldbg("Error. rxstat: %08x\n", *rxstat); EMAC_STAT(priv, rx_pkterr); } @@ -920,7 +920,7 @@ static void lpc17_rxdone(struct lpc17_driver_s *priv) nlldbg("Too big. pktlen: %d rxstat: %08x\n", pktlen, *rxstat); EMAC_STAT(priv, rx_pktsize); } - else if ((*rxstat & RXSTAT_INFO_LASTFLAG) != 0) + else if ((*rxstat & RXSTAT_INFO_LASTFLAG) == 0) { nlldbg("Fragment. rxstat: %08x\n", pktlen, *rxstat); EMAC_STAT(priv, rx_fragment); @@ -1240,15 +1240,16 @@ static int lpc17_interrupt(int irq, void *context) } } - /* Clear the pending interrupt. Hmmm.. I don't normally do this on - * Cortex-M3 interrupts. Why is this needed for the EMAC interrupt? - */ + /* Clear the pending interrupt */ -#if CONFIG_LPC17_NINTERFACES > 1 +#if 0 /* Apparently not necessary */ +# if CONFIG_LPC17_NINTERFACES > 1 lpc17_clrpend(priv->irq); -#else +# else lpc17_clrpend(LPC17_IRQ_ETH); +# endif #endif + return OK; } @@ -1375,16 +1376,16 @@ static int lpc17_ifup(struct uip_driver_s *dev) /* Configure the MAC station address */ - regval = (uint32_t)priv->lp_dev.d_mac.ether_addr_octet[1] << 8 | - (uint32_t)priv->lp_dev.d_mac.ether_addr_octet[0]; + regval = (uint32_t)priv->lp_dev.d_mac.ether_addr_octet[5] << 8 | + (uint32_t)priv->lp_dev.d_mac.ether_addr_octet[4]; lpc17_putreg(regval, LPC17_ETH_SA0); regval = (uint32_t)priv->lp_dev.d_mac.ether_addr_octet[3] << 8 | (uint32_t)priv->lp_dev.d_mac.ether_addr_octet[2]; lpc17_putreg(regval, LPC17_ETH_SA1); - regval = (uint32_t)priv->lp_dev.d_mac.ether_addr_octet[5] << 8 | - (uint32_t)priv->lp_dev.d_mac.ether_addr_octet[4]; + regval = (uint32_t)priv->lp_dev.d_mac.ether_addr_octet[1] << 8 | + (uint32_t)priv->lp_dev.d_mac.ether_addr_octet[0]; lpc17_putreg(regval, LPC17_ETH_SA2); /* Initialize Ethernet interface for the PHY setup */ @@ -2375,7 +2376,7 @@ static void lpc17_ethreset(struct lpc17_driver_s *priv) * restriction is desired, program this 16-bit field." */ - lpc17_putreg(CONFIG_NET_BUFSIZE+2, LPC17_ETH_MAXF); + lpc17_putreg(LPC17_MAXPACKET_SIZE, LPC17_ETH_MAXF); /* Disable all Ethernet controller interrupts */ |