From: Aleksander Jan Bajkowski Date: Sat, 5 Apr 2025 18:48:06 +0000 (+0200) Subject: iw: fix HE operation on Big Endian platforms X-Git-Tag: v6.17~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=41a07a818090da424ddd24bf07f468cf5725cdc6;p=thirdparty%2Fiw.git iw: fix HE operation on Big Endian platforms IE fields are encoded in Little Endian and are not correctly printed on Big Endian platforms. Fixes: 422419e06d55 ("scan: Add printing of HE Operation Element") Signed-off-by: Aleksander Jan Bajkowski Link: https://patch.msgid.link/20250405184807.701728-3-olek2@wp.pl Signed-off-by: Johannes Berg --- diff --git a/util.c b/util.c index 3fb2545..e197264 100644 --- a/util.c +++ b/util.c @@ -1825,7 +1825,7 @@ void print_he_operation(const uint8_t *ie, int len) { uint8_t oper_parameters[3] = {ie[0], ie[1], ie[2] }; uint8_t bss_color = ie[3]; - uint16_t nss_mcs_set = *(uint16_t*)(&ie[4]); + uint16_t nss_mcs_set = le16toh(*(uint16_t *)(&ie[4])); uint8_t vht_oper_present = oper_parameters[1] & 0x40; uint8_t co_hosted_bss_present = oper_parameters[1] & 0x80; uint8_t uhb_operation_info_present = oper_parameters[2] & 0x02; @@ -1838,7 +1838,7 @@ void print_he_operation(const uint8_t *ie, int len) printf("\t\t\tTWT Required\n"); printf("\t\t\tTXOP Duration RTS Threshold: %hu\n", - (*(uint16_t*)(oper_parameters)) >> 4 & 0x03ff); + le16toh((*(uint16_t *)(oper_parameters))) >> 4 & 0x03ff); if (oper_parameters[1] & 0x40) printf("\t\t\tVHT Operation Information Present\n");