qmi_wwan_q: kernel 6.18 compatibility fixes - #256
Conversation
|
Thank you for the kernel 6.18 work and the Turkish SMS contribution. I reviewed both commits, but I cannot merge the PR as-is because it combines unrelated changes and has compatibility/regression risks:
Please split the kernel and SMS changes into separate PRs and address these points. Thanks again for testing this on IPQ807x/RG500Q-EA and for taking the time to contribute. |
|
On the IPQ807x target with kernel 6.18, only the generic QMI and MHI drivers currently build without issues—both vendor and NSS variants fail to compile. |
Addresses review feedback on FUjr#257/FUjr#256: the Turkish national language extension mappings were previously written directly into the shared gsm7bits_extend_to_latin1 table, so every GSM 7-bit message decoded through it regardless of language -- reserved extension codes used by other languages/future 3GPP additions could have been misdecoded as Turkish characters. This moves the Turkish mappings into a separate turkish_extend_to_latin1 table and adds udh_has_turkish_shift(), which walks the PDU's User Data Header IEs and only selects that table when a National Language Locking Shift (IEI 0x24) or Single Shift (IEI 0x25) IE explicitly selects Turkish (language id 0x01, per 3GPP TS 23.038 table 6.2.1.2.5). Every other message continues to decode through the original, unmodified table. Also adds a bounds check in sms_send() (operations.c): profile->sms_pdu was hex-encoded into a fixed 512-byte pdu_hex buffer with no upper bound on the source PDU length, which could overflow the stack buffer for a long/malformed PDU. This rejects PDUs longer than 255 chars (the max that fits pdu_hex[512] as hex + terminator) up front. Tested on Arcadyan AW1000 (Quectel RG500Q-EA), IPQ807x: Turkish SMS with the language shift IE set decode correctly; a batch of non-Turkish GSM 7-bit messages (EN/DE test SMS) decode unchanged before and after this patch.
|
I have rebuilt this branch on the latest The NSS changes now include:
The updated head is The two behavioral workarounds are intentionally compile-time options so a target can enable them only after validating its vendor kernel/NSS integration. Would you be comfortable merging this split and gated version? |
qmi_wwan_q: kernel 6.18 compatibility fixes
bh with a private workqueue (bh_work) that external drivers can no
longer intercept
rmnet_usb_rx_fixup(), which usbnet already calls on every completed
RX -- equivalent timing to the original hook
Tested on IPQ807x (Arcadyan AW1000, Quectel RG500Q-EA), kernel 6.18.44,
NSS-accelerated rmnet confirmed via qca-nss-drv rmnet_rx counters.