aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--host/lib/usrp/mpmd/mpmd_impl.cpp1
-rw-r--r--host/lib/usrp/mpmd/mpmd_impl.hpp3
-rw-r--r--host/lib/usrp/mpmd/mpmd_xport.cpp3
-rw-r--r--mpm/python/usrp_mpm/periph_manager/base.py5
-rw-r--r--mpm/python/usrp_mpm/periph_manager/n310.py13
5 files changed, 14 insertions, 11 deletions
diff --git a/host/lib/usrp/mpmd/mpmd_impl.cpp b/host/lib/usrp/mpmd/mpmd_impl.cpp
index c44cc2040..911b57558 100644
--- a/host/lib/usrp/mpmd/mpmd_impl.cpp
+++ b/host/lib/usrp/mpmd/mpmd_impl.cpp
@@ -276,7 +276,6 @@ const std::string mpmd_impl::MPM_ECHO_CMD = "MPM-ECHO";
mpmd_impl::mpmd_impl(const device_addr_t& device_args)
: usrp::device3_impl()
, _device_args(device_args)
- , _sid_framer(0)
{
UHD_LOGGER_INFO("MPMD")
<< "Initializing device with args: " << device_args.to_string();
diff --git a/host/lib/usrp/mpmd/mpmd_impl.hpp b/host/lib/usrp/mpmd/mpmd_impl.hpp
index 7b81be0f6..fe98b0329 100644
--- a/host/lib/usrp/mpmd/mpmd_impl.hpp
+++ b/host/lib/usrp/mpmd/mpmd_impl.hpp
@@ -219,9 +219,6 @@ public:
//! A counter for distributing local addresses to crossbars
// No-one touches this except allocate_xbar_local_addr(), gotcha?
size_t _xbar_local_addr_ctr = 2;
-
- // TODO make sure this can't wrap
- size_t _sid_framer;
};
}} /* namespace uhd::mpmd */
diff --git a/host/lib/usrp/mpmd/mpmd_xport.cpp b/host/lib/usrp/mpmd/mpmd_xport.cpp
index c21da3839..43d5d6e2b 100644
--- a/host/lib/usrp/mpmd/mpmd_xport.cpp
+++ b/host/lib/usrp/mpmd/mpmd_xport.cpp
@@ -49,8 +49,7 @@ both_xports_t mpmd_impl::make_transport(
identify_mboard_by_xbar_addr(dst_address.get_dst_addr());
const sid_t sid(
- 0,
- _sid_framer++, // FIXME make sure we only increment if actually valid
+ 0, 0, // Not actually an address, more of an 'ignore me' value
dst_address.get_dst_addr(),
dst_address.get_dst_endpoint()
);
diff --git a/mpm/python/usrp_mpm/periph_manager/base.py b/mpm/python/usrp_mpm/periph_manager/base.py
index d1ae84df6..8acc21b90 100644
--- a/mpm/python/usrp_mpm/periph_manager/base.py
+++ b/mpm/python/usrp_mpm/periph_manager/base.py
@@ -135,7 +135,6 @@ class PeriphManagerBase(object):
self.log = get_logger('PeriphManager')
self.claimed = False
self._init_args = {}
- self._available_endpoints = list(range(256))
try:
self._init_mboard_with_eeprom()
self._init_mboard_overlays(self._eeprom_head, args)
@@ -338,7 +337,6 @@ class PeriphManagerBase(object):
for dboard in self.dboards:
dboard.deinit()
self.log.trace("Resetting SID pool...")
- self._available_endpoints = list(range(256))
def tear_down(self):
"""
@@ -647,6 +645,9 @@ class PeriphManagerBase(object):
- type: Type of transport, e.g., "UDP", "liberio".
- ipv4 (UDP only): IPv4 address to connect to.
- port (UDP only): IP port to connect to.
+ - send_sid: String version of the SID used for this transport. This is
+ the definitive version of the SID, the suggested_src_address
+ can be ignored at this point.
- allocation: This is an integer value which represents a score of
how much bandwidth is used. Note: Currently does not
have any unit, is just a counter. Higher numbers mean
diff --git a/mpm/python/usrp_mpm/periph_manager/n310.py b/mpm/python/usrp_mpm/periph_manager/n310.py
index 135f5e290..4a7997d75 100644
--- a/mpm/python/usrp_mpm/periph_manager/n310.py
+++ b/mpm/python/usrp_mpm/periph_manager/n310.py
@@ -297,6 +297,7 @@ class n310(PeriphManagerBase):
self._ext_clock_freq = None
self._clock_source = None
self._time_source = None
+ self._available_endpoints = list(range(256))
try:
self._init_peripherals(args)
self._device_initialized = True
@@ -417,6 +418,7 @@ class n310(PeriphManagerBase):
super(n310, self).deinit()
for xport_mgr in itervalues(self._xport_mgrs):
xport_mgr.deinit()
+ self._available_endpoints = list(range(256))
def tear_down(self):
"""
@@ -443,14 +445,19 @@ class n310(PeriphManagerBase):
"""
See PeriphManagerBase.request_xport() for docs.
"""
- # For now, we always accept the suggestion if available, or fail
+ # Try suggested address first, then just pick the first available one:
src_address = suggested_src_address
if src_address not in self._available_endpoints:
- raise RuntimeError("no more sids yo")
+ if len(self._available_endpoints) == 0:
+ raise RuntimeError(
+ "Depleted pool of SID endpoints for this device!")
+ else:
+ src_address = self._available_endpoints[0]
sid = SID(src_address << 16 | dst_address)
+ # Note: This SID may change its source address!
self.log.debug(
"request_xport(dst=0x%04X, suggested_src_address=0x%04X, xport_type=%s): " \
- "operating on SID: %s",
+ "operating on temporary SID: %s",
dst_address, suggested_src_address, str(xport_type), str(sid))
# FIXME token!
assert self.mboard_info['rpc_connection'] in ('remote', 'local')