Skip to content
Snippets Groups Projects
Commit e5bf351d authored by Ruud Overeem's avatar Ruud Overeem
Browse files

Bug 1284: Fixed bug with RSPboard swap in second serdes ring when splitter is on.

parent 720ecb39
No related branches found
No related tags found
No related merge requests found
...@@ -93,31 +93,27 @@ inline double convert_uint32_to_double(uint32 val) ...@@ -93,31 +93,27 @@ inline double convert_uint32_to_double(uint32 val)
GCFEvent::TResult BstRead::handleack(GCFEvent& event, GCFPortInterface& /*port*/) GCFEvent::TResult BstRead::handleack(GCFEvent& event, GCFPortInterface& /*port*/)
{ {
if (EPA_BST_STATS != event.signal) if (EPA_BST_STATS != event.signal) {
{
LOG_WARN("BstRead::handleack: unexpected ack"); LOG_WARN("BstRead::handleack: unexpected ack");
return GCFEvent::NOT_HANDLED; return GCFEvent::NOT_HANDLED;
} }
EPABstStatsEvent ack(event); EPABstStatsEvent ack(event);
if (!ack.hdr.isValidAck(m_hdr)) if (!ack.hdr.isValidAck(m_hdr)) {
{
Cache::getInstance().getState().bst().read_error(getBoardId()); Cache::getInstance().getState().bst().read_error(getBoardId());
LOG_ERROR("BstRead::handleack: invalid ack"); LOG_ERROR("BstRead::handleack: invalid ack");
return GCFEvent::NOT_HANDLED; return GCFEvent::NOT_HANDLED;
} }
LOG_DEBUG(formatString("BstRead::handleack: boardid=%d", LOG_DEBUG(formatString("BstRead::handleack: boardid=%d", getBoardId()));
getBoardId()));
Range fragment_range(0, MEPHeader::N_DATA_SLOTS - 1); Range fragment_range(0, MEPHeader::N_DATA_SLOTS - 1);
fragment_range = fragment_range + (getCurrentIndex() * MEPHeader::N_DATA_SLOTS); fragment_range = fragment_range + (getCurrentIndex() * MEPHeader::N_DATA_SLOTS);
LOG_DEBUG_STR("fragment_range=" << fragment_range); // LOG_INFO_STR("fragment_range[" << getBoardId() << "," << getCurrentIndex() << "]=" << fragment_range);
if (getCurrentIndex() != ack.hdr.m_fields.addr.regid) if (getCurrentIndex() != ack.hdr.m_fields.addr.regid) {
{
LOG_ERROR("invalid bst ack"); LOG_ERROR("invalid bst ack");
return GCFEvent::HANDLED; return GCFEvent::HANDLED;
} }
......
...@@ -164,8 +164,9 @@ void CDOWrite::sendrequest() ...@@ -164,8 +164,9 @@ void CDOWrite::sendrequest()
cdo.hdr.set(MEPHeader::CDO_SETTINGS_HDR); cdo.hdr.set(MEPHeader::CDO_SETTINGS_HDR);
int output_lane = -1; int output_lane = -1;
int lane;
// LOG_INFO_STR("CDO: splitter[" << getBoardId() << "] is " << (Cache::getInstance().getBack().isSplitterActive() ? "ON" : "OFF")); // LOG_INFO_STR("CDO: splitter[" << getBoardId() << "] is " << (Cache::getInstance().getBack().isSplitterActive() ? "ON" : "OFF"));
for (int lane = 0; lane < MEPHeader::N_SERDES_LANES; lane++) { for (lane = 0; lane < MEPHeader::N_SERDES_LANES; lane++) {
char paramname[64]; char paramname[64];
// look if board is selected for sector 0 // look if board is selected for sector 0
snprintf(paramname, 64, "RSPDriver.LANE_%02d_BLET_OUT", lane); snprintf(paramname, 64, "RSPDriver.LANE_%02d_BLET_OUT", lane);
...@@ -183,7 +184,7 @@ void CDOWrite::sendrequest() ...@@ -183,7 +184,7 @@ void CDOWrite::sendrequest()
} }
} }
cdo.station_id.lane = output_lane; cdo.station_id.lane = lane;
cdo.station_id.id = GET_CONFIG("RS.STATION_ID", i); cdo.station_id.id = GET_CONFIG("RS.STATION_ID", i);
// fill in some magic so we recognise these fields easily in tcpdump/ethereal output // fill in some magic so we recognise these fields easily in tcpdump/ethereal output
...@@ -207,9 +208,9 @@ void CDOWrite::sendrequest() ...@@ -207,9 +208,9 @@ void CDOWrite::sendrequest()
l_srcip = string2ip_uint32(GET_CONFIG_STRING(srcip)); l_srcip = string2ip_uint32(GET_CONFIG_STRING(srcip));
l_dstip = string2ip_uint32(GET_CONFIG_STRING(dstip)); l_dstip = string2ip_uint32(GET_CONFIG_STRING(dstip));
LOG_INFO(formatString("CDO: RSP=%d, lane=%d, src=[%s,%s], dst=[%s,%s,%d]", LOG_INFO(formatString("CDO: RSP=%d, lane=%d(%d), src=[%s,%s], dst=[%s,%s,%d]",
getBoardId(), getBoardId(),
output_lane, output_lane, lane,
srcmac, GET_CONFIG_STRING(srcip), srcmac, GET_CONFIG_STRING(srcip),
GET_CONFIG_STRING(dstmac), GET_CONFIG_STRING(dstip), BASEUDPPORT+getBoardId())); GET_CONFIG_STRING(dstmac), GET_CONFIG_STRING(dstip), BASEUDPPORT+getBoardId()));
...@@ -218,7 +219,7 @@ void CDOWrite::sendrequest() ...@@ -218,7 +219,7 @@ void CDOWrite::sendrequest()
if (Cache::getInstance().getBack().isCepEnabled() == false) { if (Cache::getInstance().getBack().isCepEnabled() == false) {
cdo.control.enable = 0; cdo.control.enable = 0;
} }
cdo.control.lane = output_lane; cdo.control.lane = lane;
cdo.control.fb_enable = GET_CONFIG("RSPDriver.FB_ENABLE", i); cdo.control.fb_enable = GET_CONFIG("RSPDriver.FB_ENABLE", i);
cdo.control.arp_enable = 1; cdo.control.arp_enable = 1;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment