Skip to content

Improve LTP performance: faster crc16 checksum and remove unnecessary memset#73

Open
zebastian wants to merge 1 commit intonasa-jpl:integrationfrom
zebastian:ltp-optimizations
Open

Improve LTP performance: faster crc16 checksum and remove unnecessary memset#73
zebastian wants to merge 1 commit intonasa-jpl:integrationfrom
zebastian:ltp-optimizations

Conversation

@zebastian
Copy link
Copy Markdown

@zebastian zebastian commented Mar 20, 2026

  • sdrxn.c: Skip redundant memset in _sdrfetch DRAM path
  • Add slice-by-8 CRC16-X25 fast path under ENABLE_HIGH_SPEED Add ion_CRC16_1021_X25_slice() using an 8×256 lookup table to process 8 bytes per iteration, matching the existing CRC32 slice-by-16 pattern. Wire it into computeBufferCrc() and serializePrimaryBlock() behind the ENABLE_HIGH_SPEED guard.

Profiling showed CRC16 consuming 56% of receiver daemon CPU in LTP benchmarks. With this change, 1 MB bundle throughput rises from 1,159 to 1,858 Mbps (+60%).

… memset

- sdrxn.c: Skip redundant memset in _sdrfetch DRAM path
- Add slice-by-8 CRC16-X25 fast path under ENABLE_HIGH_SPEED
  Add ion_CRC16_1021_X25_slice() using an 8×256 lookup table to process
  8 bytes per iteration, matching the existing CRC32 slice-by-16 pattern.
  Wire it into computeBufferCrc() and serializePrimaryBlock() behind
  the ENABLE_HIGH_SPEED guard.

Profiling showed CRC16 consuming 56% of receiver daemon CPU in LTP
benchmarks. With this change, 1 MB bundle throughput rises from
1,159 to 1,858 Mbps (+60%).
@zebastian zebastian changed the title Improve LTP performance: faster crc16 checksum and remove unnecessary… Improve LTP performance: faster crc16 checksum and remove unnecessary memset Mar 20, 2026
@zebastian
Copy link
Copy Markdown
Author

note: the crc16 LUTs were generated with a python script
i also checked with various tests, whether the crc16 original and new version yield the same crc sums
Let me know if:

  • you need also the generator script for the LUTs
  • testcases proving new ion_CRC16_1021_X25_slice functionality

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.

1 participant