summaryrefslogtreecommitdiffstats
path: root/firmware/microblaze
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/microblaze')
-rw-r--r--firmware/microblaze/apps/txrx_uhd.c2
-rw-r--r--firmware/microblaze/lib/eth_mac.c4
-rw-r--r--firmware/microblaze/lib/net_common.c10
-rw-r--r--firmware/microblaze/lib/pkt_ctrl.c16
-rw-r--r--firmware/microblaze/lib/pkt_ctrl.h8
-rw-r--r--firmware/microblaze/usrp2/memory_map.h2
-rw-r--r--firmware/microblaze/usrp2p/memory_map.h2
7 files changed, 25 insertions, 19 deletions
diff --git a/firmware/microblaze/apps/txrx_uhd.c b/firmware/microblaze/apps/txrx_uhd.c
index 6f852bb18..8ee53ac3e 100644
--- a/firmware/microblaze/apps/txrx_uhd.c
+++ b/firmware/microblaze/apps/txrx_uhd.c
@@ -349,7 +349,7 @@ main(void)
//1) register the addresses into the network stack
register_addrs(ethernet_mac_addr(), get_ip_addr());
- pkt_ctrl_register_ip_addr(get_ip_addr());
+ pkt_ctrl_program_inspector(get_ip_addr(), USRP2_UDP_DATA_PORT);
//2) register callbacks for udp ports we service
register_udp_listener(USRP2_UDP_CTRL_PORT, handle_udp_ctrl_packet);
diff --git a/firmware/microblaze/lib/eth_mac.c b/firmware/microblaze/lib/eth_mac.c
index 034a4d494..581a5c69f 100644
--- a/firmware/microblaze/lib/eth_mac.c
+++ b/firmware/microblaze/lib/eth_mac.c
@@ -28,6 +28,7 @@
void
eth_mac_set_addr(const eth_mac_addr_t *src)
{
+ /* disable because MAC_SET_PASS_ALL is set below
eth_mac->ucast_hi =
(((unsigned int)src->addr[0])<<8) +
((unsigned int)src->addr[1]);
@@ -36,6 +37,7 @@ eth_mac_set_addr(const eth_mac_addr_t *src)
(((unsigned int)src->addr[3])<<16) +
(((unsigned int)src->addr[4])<<8) +
(((unsigned int)src->addr[5]));
+*/
}
@@ -45,7 +47,7 @@ eth_mac_init(const eth_mac_addr_t *src)
eth_mac->miimoder = 25; // divider from CPU clock (50MHz/25 = 2MHz)
eth_mac_set_addr(src);
- eth_mac->settings = MAC_SET_PAUSE_EN | MAC_SET_PASS_BCAST | MAC_SET_PASS_UCAST | MAC_SET_PAUSE_SEND_EN;
+ eth_mac->settings = MAC_SET_PAUSE_EN | MAC_SET_PASS_BCAST | MAC_SET_PASS_UCAST | MAC_SET_PAUSE_SEND_EN | MAC_SET_PASS_ALL;
eth_mac->pause_time = 38;
eth_mac->pause_thresh = 1200;
diff --git a/firmware/microblaze/lib/net_common.c b/firmware/microblaze/lib/net_common.c
index 9804ae4c5..947f41dae 100644
--- a/firmware/microblaze/lib/net_common.c
+++ b/firmware/microblaze/lib/net_common.c
@@ -37,6 +37,8 @@
#include <string.h>
#include "pkt_ctrl.h"
+static const bool debug = false;
+
static const eth_mac_addr_t BCAST_MAC_ADDR = {{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}};
// ------------------------------------------------------------------------
@@ -159,7 +161,7 @@ send_pkt(eth_mac_addr_t dst, int ethertype,
total_len = 60;
pkt_ctrl_commit_outgoing_buffer(total_len/4);
- //printf("sent %d bytes\n", total_len);
+ if (debug) printf("sent %d bytes\n", (int)total_len);
}
unsigned int CHKSUM(unsigned int x, unsigned int *chksum)
@@ -388,9 +390,9 @@ handle_arp_packet(struct arp_eth_ipv4 *p, size_t size)
void
handle_eth_packet(uint32_t *p, size_t nlines)
{
- //static size_t bcount = 0;
- //printf("===> %d\n", bcount++);
- //print_buffer(p, nlines);
+ static size_t bcount = 0;
+ if (debug) printf("===> %d\n", (int)bcount++);
+ if (debug) print_buffer(p, nlines);
padded_eth_hdr_t *eth_hdr = (padded_eth_hdr_t *)p;
diff --git a/firmware/microblaze/lib/pkt_ctrl.c b/firmware/microblaze/lib/pkt_ctrl.c
index 9870a1f8a..f4b4b7825 100644
--- a/firmware/microblaze/lib/pkt_ctrl.c
+++ b/firmware/microblaze/lib/pkt_ctrl.c
@@ -17,8 +17,6 @@
#include "pkt_ctrl.h"
#include "memory_map.h"
-#include <stdint.h>
-#include <stdbool.h>
#include <nonstdio.h>
static void set_control(uint32_t value, uint32_t mask){
@@ -47,15 +45,11 @@ static bool is_status_bit_set(int bit){
#define MODE_BIT 2
#define CLR_BIT 8
-void pkt_ctrl_register_ip_addr(const struct ip_addr *ip_addr){
- //program in the ip addr
- set_control(0x1 << 4, 0x3 << 4);
- set_control((ip_addr->addr & 0x0000ffff) << 16, 0xffff << 16);
- set_control(0x2 << 4, 0x3 << 4);
- set_control((ip_addr->addr & 0xffff0000) << 0, 0xffff << 16);
-
- //clear cmd
- set_control(0x0, 0x3 << 4);
+void pkt_ctrl_program_inspector(
+ const struct ip_addr *ip_addr, uint16_t dsp_udp_port
+){
+ buffer_pool_ctrl->ip_addr = ip_addr->addr;
+ buffer_pool_ctrl->udp_ports = dsp_udp_port;
}
void pkt_ctrl_set_routing_mode(pkt_ctrl_routing_mode_t mode){
diff --git a/firmware/microblaze/lib/pkt_ctrl.h b/firmware/microblaze/lib/pkt_ctrl.h
index 2e175bca0..927d1fc7a 100644
--- a/firmware/microblaze/lib/pkt_ctrl.h
+++ b/firmware/microblaze/lib/pkt_ctrl.h
@@ -19,6 +19,8 @@
#define INCLUDED_PKT_CTRL_H
#include <stddef.h>
+#include <stdint.h>
+#include <stdbool.h>
#include <lwip/ip_addr.h>
typedef enum {
@@ -26,8 +28,10 @@ typedef enum {
PKT_CTRL_ROUTING_MODE_MASTER,
} pkt_ctrl_routing_mode_t;
-//! Register the IP address into the router
-void pkt_ctrl_register_ip_addr(const struct ip_addr *ip_addr);
+//! Program the decision values into the packet inspector
+void pkt_ctrl_program_inspector(
+ const struct ip_addr *ip_addr, uint16_t dsp_udp_port
+);
//! Set the routing mode for this device
void pkt_ctrl_set_routing_mode(pkt_ctrl_routing_mode_t mode);
diff --git a/firmware/microblaze/usrp2/memory_map.h b/firmware/microblaze/usrp2/memory_map.h
index 2b07ff148..25c800893 100644
--- a/firmware/microblaze/usrp2/memory_map.h
+++ b/firmware/microblaze/usrp2/memory_map.h
@@ -247,6 +247,8 @@ hwconfig_wishbone_divisor(void)
typedef struct {
volatile uint32_t ctrl;
+ volatile uint32_t ip_addr;
+ volatile uint32_t udp_ports; //dsp0 (low 16) dsp1 (high 16)
} buffer_pool_ctrl_t;
#define buffer_pool_ctrl ((buffer_pool_ctrl_t *) BUFFER_POOL_CTRL_BASE)
diff --git a/firmware/microblaze/usrp2p/memory_map.h b/firmware/microblaze/usrp2p/memory_map.h
index 431dc19e7..dedfdac8b 100644
--- a/firmware/microblaze/usrp2p/memory_map.h
+++ b/firmware/microblaze/usrp2p/memory_map.h
@@ -274,6 +274,8 @@ hwconfig_wishbone_divisor(void)
typedef struct {
volatile uint32_t ctrl;
+ volatile uint32_t ip_addr;
+ volatile uint32_t udp_ports; //dsp0 (low 16) dsp1 (high 16)
} buffer_pool_ctrl_t;
#define buffer_pool_ctrl ((buffer_pool_ctrl_t *) BUFFER_POOL_CTRL_BASE)