Skip to content

Fix repair transmission flagging - #113

Merged
bebopagogo merged 1 commit into
USNavalResearchLaboratory:masterfrom
sleepybishop:mym2m
Aug 28, 2026
Merged

bebopagogo merged 1 commit into
USNavalResearchLaboratory:masterfrom
sleepybishop:mym2m

Conversation

@sleepybishop

@sleepybishop sleepybishop commented Aug 27, 2026 •

Copy link
Copy Markdown
Contributor

Hello,

This PR fixes an issue where re-transmitted data and metadata packets were not properly flagged as repairs.

What's included

  • Restored the NormObjectMsg::FLAG_REPAIR assignment in normObject.cpp and updated pending_info transitions so that NORM_INFO and NORM_DATA messages properly track when they are reactive repairs.
  • Updated NormBlock::TxUpdate() in normSegment.cpp to explicitly mark a block as IN_REPAIR whenever its repair state increases.
  • A new test suite tests/normRepairFlagTest.cpp to validate block repair states and receiver synchronization policies against flagged messages.

Notes

  • Properly flagging these messages is important for receiver-side logic, like sync policies, which rely on distinguishing between original data and repair packets.
  • I'd be happy to adjust the tests or approach if there's a preferred way you'd like these repair states tracked in NORM.

If the fix looks ok, I think this should resolve TODO 0.

@sleepybishop sleepybishop changed the title Add many-to-many (M2M) optimizations, adaptive CC enhancements, and EMANE scaling suite fix repair flag Aug 27, 2026
@sleepybishop
sleepybishop force-pushed the mym2m branch 2 times, most recently from 1f3693d to 3ba247b Compare August 27, 2026 21:08
@sleepybishop sleepybishop changed the title fix repair flag Fix repair transmission flagging Aug 27, 2026
Mark reactive NORM_DATA and NORM_INFO transmissions with FLAG_REPAIR, including fixed-code repairs accepted during sender holdoff. Preserve first-pass and proactive parity semantics across INFO retransmission and object requeue. Add deterministic repair-state, message-generation, and receiver sync-policy coverage.
@sleepybishop

Copy link
Copy Markdown
Contributor Author

Thanks for the review. Two things...

  • The ci failure seems to happen because some things from protolib don't seem to be wired in cmake.
  • Tangentially related to Add basic rateless codec support #102, in a rateless repair world, a third policy is useful in addition to SYNC_ALL and SYNC_CURRENT. For example a SYNC_REPAIR policy could accept repair symbols on current objects. Let me know if that would be a useful follow up.

@bebopagogo
bebopagogo marked this pull request as ready for review August 28, 2026 22:10
@bebopagogo
bebopagogo merged commit 8f4d731 into USNavalResearchLaboratory:master Aug 28, 2026
9 of 11 checks passed
@bebopagogo

Copy link
Copy Markdown
Collaborator

How would SYNC_REPAIR differ from SYNC_CURRENT .... basically be the same but be more permissive on allowing sync to parity packets and not just packets with user data content? That definitely makes sense for rateless and possibly even the existing FEC codecs when those symbols are not flagged as repair transmissions? I.e., we could just modify the SYNC_CURRENT policy to allow sync on non-flagged parity symbols ... since you added the code that makes that distinction more clear that may make sense versus an additional sync policy? The main intent of that was to limit late joining receivers impact on the session ... the other "rule" for sync current was to allow sync only during the first FEC block and, of course, with rateless that's a different sort of paradigm since generally it will be a single logical "block" ... just thinking out loud here if you have any specific use cases in mind.

@sleepybishop

Copy link
Copy Markdown
Contributor Author

How would SYNC_REPAIR differ from SYNC_CURRENT .... basically be the same but be more permissive on allowing sync to parity packets and not just packets with user data content?

Precisely. I don't have a preference, but I had thought a third sync policy might prevent backwards incompatibilities, however this change in itself already did since prior to it was already behaving that way because the REPAIR_FLAG was missing, so I could see the case for just expanding SYNC_CURRENT.

@sleepybishop
sleepybishop deleted the mym2m branch October 7, 2026 00:59
bebopagogo pushed a commit that referenced this pull request Oct 12, 2026
Mark reactive NORM_DATA and NORM_INFO transmissions with FLAG_REPAIR, including fixed-code repairs accepted during sender holdoff. Preserve first-pass and proactive parity semantics across INFO retransmission and object requeue. Add deterministic repair-state, message-generation, and receiver sync-policy coverage.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants