summaryrefslogtreecommitdiffstats
path: root/app/steth.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/steth.c')
-rw-r--r--app/steth.c31
1 files changed, 29 insertions, 2 deletions
diff --git a/app/steth.c b/app/steth.c
index 26429aa..5b94e1d 100644
--- a/app/steth.c
+++ b/app/steth.c
@@ -14,7 +14,7 @@ static int ready;
static uint8_t __attribute__ ((aligned (4))) eth_buf[ETH_BUF_LEN];
-static uint8_t sa[ETHARP_HWADDR_LEN] = { 0xc0, 0xf1, 0xee, 0xc0, 0xff, 0xdd };
+static uint8_t sa[ETHARP_HWADDR_LEN];
extern uint32_t TxBD;
extern uint32_t RxBD;
@@ -32,6 +32,29 @@ extern uint32_t RxBD;
+void steth_calculate_mac(void)
+{
+ uint32_t uid[3];
+ uint8_t *ptr;
+ unsigned i;
+ desig_get_unique_id (uid);
+
+ ptr=(uint8_t *)uid;
+
+ for (i=0;i<ETHARP_HWADDR_LEN;++i)
+ sa[i]^=*(ptr++);
+ for (i=0;i<ETHARP_HWADDR_LEN;++i)
+ sa[i]^=*(ptr++);
+
+ sa[0]&=0xfe; /*Clear I/G */
+ sa[0]|=0x2; /*Set U/L */
+
+printf("MAC ADDRESS is %02x:%02x:%02x:%02x:%02x:%02x\r\n",sa[0],sa[1],sa[2],sa[3],sa[4],sa[5]);
+}
+
+
+
+
static void mac_stat (void)
{
//uint32_t d, s;
@@ -122,6 +145,7 @@ steth_rx (void)
struct pbuf *p;
uint32_t len;
+
p = pbuf_alloc (PBUF_RAW, MTU, PBUF_POOL);
if (!p) return ERR_MEM;
@@ -166,6 +190,7 @@ steth_lwip_init (struct netif *netif)
{
LWIP_ASSERT ("netif != NULL", (netif != NULL));
+
#if LWIP_NETIF_HOSTNAME
/* Initialize interface hostname */
netif->hostname = "lwip";
@@ -297,8 +322,8 @@ static void eth_reset (void)
phy_stat();
eth_set_mac (sa);
- eth_enable_checksum_offload();
eth_desc_init (eth_buf, TX_BUFS, RX_BUFS, FRAME_SZ, FRAME_SZ, 1);
+ // eth_enable_checksum_offload();
eth_irq_enable (ETH_DMAIER_NISE);
eth_irq_enable (ETH_DMAIER_RIE);
@@ -314,6 +339,8 @@ static void eth_start_an (void)
phy_autoneg_enable (PHY);
}
+
+
void
steth_init (void)
{