Make MAC address configurable using hw files.
[bertos.git] / bertos / cpu / arm / drv / eth_at91.c
index 5d365b20ae712b720c8a7d43816b300fd0cf52de..4f19fca14c05f7f67b2e5b0561f99c54ed1f8530 100644 (file)
 #define EMAC_RX_INTS   (BV(EMAC_RCOMP) | BV(EMAC_ROVR) | BV(EMAC_RXUBR))
 #define EMAC_TX_INTS   (BV(EMAC_TCOMP) | BV(EMAC_TXUBR) | BV(EMAC_RLEX))
 
-/*
- * MAC address configuration (please change this in your project!).
- *
- * TODO: make this paramater user-configurable from the Wizard.
- */
-const uint8_t mac_addr[] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 };
-
 /* Silent Doxygen bug... */
 #ifndef __doxygen__
 /*
@@ -425,7 +418,11 @@ ssize_t eth_getFrame(uint8_t *buf, size_t len)
                        rd_len += EMAC_RX_BUFSIZ;
                else
                        rd_len += len - rd_len;
-               ASSERT(rx_buf_tab[rx_buf_idx].addr & RXBUF_OWNERSHIP);
+               if (UNLIKELY(!(rx_buf_tab[rx_buf_idx].addr & RXBUF_OWNERSHIP)))
+               {
+                       LOG_INFO("bad frame found\n");
+                       return 0;
+               }
                rx_buf_tab[rx_buf_idx].addr &= ~RXBUF_OWNERSHIP;
                if (++rx_buf_idx >= EMAC_RX_DESCRIPTORS)
                        rx_buf_idx = 0;