Attention is currently required from: laforge, pespin, dexter.
3 comments:
File src/common/l1sap.c:
Patch Set #1, Line 1264: static bool rtppayload_validate_hr(struct msgb *msg)
this function is now not really validating, but converting.
The same is already the case for rtppayload_validate_{fr,efr} - those functions call osmo_{fr,efr}_sid_preen(), and the latter functions apply a transformation to the bits: if the received frame was a deemed-valid SID with some bit errors, that SID is rejuvenated by clearing all those errored bits.
Should we perhaps rename all these functions to rtppayload_preen_*() instead of validate? Please ack if I should make a preliminary patch renaming the two existing functions and then use the new name in the next spin of the present patch.
Patch Set #1, Line 1270: case GSM_HR_BYTES_RTP_RFC5993:
I'm not against this patch, I don't even know whether any of the existing backends is already using […]
I concur with @laforge, and my initial thoughts on how to approach OS#5688 on the fundamental design level (before going down to code implementation level) were/are based on the same principle: it is unreasonable to anticipate new hypothetical DSP backends that would differ from what we have currently.
@pespin:
> I don't even know whether any of the existing backends is already using it.
Prior to recent libosmocoding fixes, there was this issue: the channel encoding function used by osmo-bts-trx stupidly required 15-byte format even though it never actually looked at the ToC octet. That design bug is now fixed in libosmocoding in a backward-compatible way (that's what the Depends: line in the present patch refers to), and now that same function happily accepts 14-byte payloads.
memmove(msg->data, msg->data + 1, GSM_HR_BYTES);
msgb_get(msg, 1);
I'm wondering why we are moving data around in the msgb? This is potentially quite expensive on our […]
Please read the long C comment on the 7 lines immediately preceding your highlight. The obvious msgb_pull() way was the first thing I tried, quite naturally, but it immediately brought the sysmoBTS unit to its knees! The visible symptoms were: as soon as that code path starts executing (as soon as RTP packets come in that require this one octet stripping), the MS on the test call would declare radio link failure, I seem to recall other MS also going into No Service because they stopped receiving PCH, and the vty telnet session was slowed to a crawl. I reason that the bad behavior is caused by misaligned accesses to 32-bit fields inside the l1sap header being added by l1sap_tch_rts_ind() - that header becomes misaligned once the msgb_pull() moves off the aligned position by 1 byte.
I agree with you that the memmove way is inefficient - but the simple way doesn't work right now. Can we perhaps brainstorm some better way?
To view, visit change 32968. To unsubscribe, or for help writing mail filters, visit settings.