diff options
author | Josh Blum <josh@joshknows.com> | 2010-11-09 18:38:39 -0800 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2010-11-09 18:38:39 -0800 |
commit | 3bca8c492514564a065e34d3284cb468873fcc8c (patch) | |
tree | 73f11afc14eb62ac1c1ff5374dce9c3cb33c0278 /firmware/microblaze/apps/txrx_uhd.c | |
parent | 073518083f2c7044d4b0c16948a192c5623d0752 (diff) | |
parent | c0dfc2cf47b98734c4218427c7c6f5eb92025a9c (diff) | |
download | uhd-3bca8c492514564a065e34d3284cb468873fcc8c.tar.gz uhd-3bca8c492514564a065e34d3284cb468873fcc8c.tar.bz2 uhd-3bca8c492514564a065e34d3284cb468873fcc8c.zip |
Merge branch 'master' into usrp_e_next
Diffstat (limited to 'firmware/microblaze/apps/txrx_uhd.c')
-rw-r--r-- | firmware/microblaze/apps/txrx_uhd.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/firmware/microblaze/apps/txrx_uhd.c b/firmware/microblaze/apps/txrx_uhd.c index 1dd6e80ac..b7837f207 100644 --- a/firmware/microblaze/apps/txrx_uhd.c +++ b/firmware/microblaze/apps/txrx_uhd.c @@ -422,6 +422,7 @@ link_changed_callback(int speed) link_is_up = speed != 0; hal_set_leds(link_is_up ? LED_RJ45 : 0x0, LED_RJ45); printf("\neth link changed: speed = %d\n", speed); + if (link_is_up) send_gratuitous_arp(); } static void setup_network(void){ @@ -479,15 +480,18 @@ main(void) printf("FPGA compatibility number: %d\n", USRP2_FPGA_COMPAT_NUM); printf("Firmware compatibility number: %d\n", USRP2_FW_COMPAT_NUM); - ethernet_register_link_changed_callback(link_changed_callback); - ethernet_init(); - + //1) register the addresses into the network stack register_mac_addr(ethernet_mac_addr()); register_ip_addr(get_ip_addr()); + //2) register callbacks for udp ports we service register_udp_listener(USRP2_UDP_CTRL_PORT, handle_udp_ctrl_packet); register_udp_listener(USRP2_UDP_DATA_PORT, handle_udp_data_packet); + //3) setup ethernet hardware to bring the link up + ethernet_register_link_changed_callback(link_changed_callback); + ethernet_init(); + // initialize double buffering state machine for ethernet -> DSP Tx dbsm_init(&dsp_tx_sm, DSP_TX_BUF_0, @@ -536,7 +540,7 @@ main(void) } if (pending & PIC_OVERRUN_INT){ - dbsm_handle_rx_overrun(&dsp_rx_sm); + //dbsm_handle_rx_overrun(&dsp_rx_sm); pic_regs->pending = PIC_OVERRUN_INT; // clear pending interrupt // FIXME Figure out how to handle this robustly. |