From nobody Mon May 12 05:57:08 2025
Received: from mx3.wp.pl (mx3.wp.pl [212.77.101.9])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(No client certificate requested)
	by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9ED8C1A3147
	for <linux-kernel@vger.kernel.org>; Sat,  5 Apr 2025 18:48:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
 arc=none smtp.client-ip=212.77.101.9
ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
	t=1743878904; cv=none;
 b=tqChqTz1CCa7iSIJIlATCMhseQ0gjLze8CELabjeii3MZqnY+y6dtiDpvM8xvpHPMDpuS4Y5t5VrVvDv3fFVO+HQRuzYzl2x/mtX4D9/ftL3GCCLh7mfH3mURQ/2RwPpYr3ccMbz1UBxbIkHNDPHIFLBT0DfgeVyXuXbAlCHD5Y=
ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1743878904; c=relaxed/simple;
	bh=Aw0Fjl2LGfjmnj6jsCLXEfIc+aXrL/Jx39Jr17fsb1g=;
	h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
	 MIME-Version;
 b=SyTqhLQb8H3AJfMrpdjA3gH4fX8z708UVvNMutEejCTb+Z3Wulc4FkmmJpcmIIT+bJdqrrkD1VqcELclzuiGTB0EkHJXi9vcqXgDAQ95pp7cvcgBc7x5jzOifDvPx0T7ovHxOIASQsmHD0dX9+fI4k/PuA8zSqUWSzKfWqzOBPI=
ARC-Authentication-Results: i=1; smtp.subspace.kernel.org;
 dmarc=pass (p=none dis=none) header.from=wp.pl; spf=pass smtp.mailfrom=wp.pl;
 dkim=pass (2048-bit key) header.d=wp.pl header.i=@wp.pl header.b=EkhOm7eb;
 arc=none smtp.client-ip=212.77.101.9
Authentication-Results: smtp.subspace.kernel.org;
 dmarc=pass (p=none dis=none) header.from=wp.pl
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wp.pl
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (2048-bit key) header.d=wp.pl header.i=@wp.pl header.b="EkhOm7eb"
Received: (wp-smtpd smtp.wp.pl 35058 invoked from network);
 5 Apr 2025 20:48:14 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wp.pl; s=20241105;
          t=1743878894; bh=/dtxDq+GKagSWsFC89cjsqL1xKgQwJW78+dbI6wLr5w=;
          h=From:To:Cc:Subject;
          b=EkhOm7ebbVZhmAgH8ueYuXTSFMmi6OsDxMKf/ZDYHMtelwqE+JerbeU9A0f8BGQUQ
           S5Y2DPahbGW9v1tgvrwMlDzngNH70RWpUL+vI/P99FrO+6vt/Pj0A0EuGR37k/7WRV
           8EehL/hsAD4wnYIFAWhrF26N2Bzejyzu1bQJG7S9ztdDUatcgG8HwMrcgOQQaPbQZX
           cbpz5CI19C6fspHw8DggelehGMcQvkyFpl8aVV8sojV3w456S2RV6LkszUH057UFsl
           jJ3HpbzkMjG+ekobrSuAdZrwANwN2gBLiabQ09HlHyRgVetDkEXY05uu2VyPanYq8i
           PcVthNMCc1EEQ==
Received: from 83.5.244.88.ipv4.supernova.orange.pl (HELO laptop-olek.home)
 (olek2@wp.pl@[83.5.244.88])
          (envelope-sender <olek2@wp.pl>)
          by smtp.wp.pl (WP-SMTPD) with ECDHE-RSA-AES256-GCM-SHA384 encrypted
 SMTP
          for <johannes@sipsolutions.net>; 5 Apr 2025 20:48:13 +0200
From: Aleksander Jan Bajkowski <olek2@wp.pl>
To: johannes@sipsolutions.net,
	ilan.peer@intel.com,
	christopher.a.wills@intel.com,
	slakkavalli@datto.com,
	john@phrozen.org,
	linux-wireless@vger.kernel.org,
	linux-kernel@vger.kernel.org
Cc: Aleksander Jan Bajkowski <olek2@wp.pl>
Subject: [PATCH iw,v2 1/3] iw: fix HE capabilities on Big Endian platforms
Date: Sat,  5 Apr 2025 20:48:05 +0200
Message-Id: <20250405184807.701728-2-olek2@wp.pl>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250405184807.701728-1-olek2@wp.pl>
References: <20250405184807.701728-1-olek2@wp.pl>
Precedence: bulk
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
X-WP-DKIM-Status: good (id: wp.pl)                                                      
X-WP-MailID: 14c5875161ffd2af919c11b87cd50322
X-WP-AV: skaner antywirusowy Poczty Wirtualnej Polski
X-WP-SPAM: NO 0000000 [wRPk]                               
Content-Type: text/plain; charset="utf-8"

IE fields are encoded in Little Endian and are not correctly
printed on Big Endian platforms.

Fixes: c741be9f6ca3 ("iw: print HE capabilities")
Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
---
 util.c | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/util.c b/util.c
index dc84886..6502788 100644
--- a/util.c
+++ b/util.c
@@ -1262,14 +1262,15 @@ static void __print_he_capa(const __u16 *mac_cap,
=20
 	#define PRINT_HE_CAP(_var, _idx, _bit, _str) \
 	do { \
-		if (_var[_idx] & BIT(_bit)) \
+		if (le16toh(_var[_idx]) & BIT(_bit)) \
 			printf("%s\t\t\t" _str "\n", pre); \
 	} while (0)
=20
 	#define PRINT_HE_CAP_MASK(_var, _idx, _shift, _mask, _str) \
 	do { \
-		if ((_var[_idx] >> _shift) & _mask) \
-			printf("%s\t\t\t" _str ": %d\n", pre, (_var[_idx] >> _shift) & _mask); \
+		if ((le16toh(_var[_idx]) >> _shift) & _mask) \
+			printf("%s\t\t\t" _str ": %d\n", pre, \
+			       (le16toh(_var[_idx]) >> _shift) & _mask); \
 	} while (0)
=20
 	#define PRINT_HE_MAC_CAP(...) PRINT_HE_CAP(mac_cap, __VA_ARGS__)
@@ -1280,7 +1281,7 @@ static void __print_he_capa(const __u16 *mac_cap,
=20
 	printf("%s\t\tHE MAC Capabilities (0x", pre);
 	for (i =3D 0; i < 3; i++)
-		printf("%04x", mac_cap[i]);
+		printf("%04x", le16toh(mac_cap[i]));
 	printf("):\n");
=20
 	PRINT_HE_MAC_CAP(0, 0, "+HTC HE Supported");
@@ -1394,18 +1395,18 @@ static void __print_he_capa(const __u16 *mac_cap,
 		char *bw[] =3D { "<=3D 80", "160", "80+80" };
 		int j;
=20
-		if ((phy_cap[0] & (phy_cap_support[i] << 8)) =3D=3D 0)
+		if ((le16toh(phy_cap[0]) & (phy_cap_support[i] << 8)) =3D=3D 0)
 			continue;
=20
 		/* Supports more, but overflow? Abort. */
-		if ((i * 2 + 2) * sizeof(mcs_set[0]) >=3D mcs_len)
+		if ((i * 2 + 2) * sizeof(le16toh(mcs_set[0])) >=3D mcs_len)
 			return;
=20
 		for (j =3D 0; j < 2; j++) {
 			int k;
 			printf("%s\t\tHE %s MCS and NSS set %s MHz\n", pre, j ? "TX" : "RX", bw=
[i]);
 			for (k =3D 0; k < 8; k++) {
-				__u16 mcs =3D mcs_set[(i * 2) + j];
+				__u16 mcs =3D le16toh(mcs_set[(i * 2) + j]);
 				mcs >>=3D k * 2;
 				mcs &=3D 0x3;
 				printf("%s\t\t\t%d streams: ", pre, k + 1);
@@ -1428,7 +1429,7 @@ static void __print_he_capa(const __u16 *mac_cap,
 			ppet_len =3D 0;
 	}
=20
-	if (ppet_len && (phy_cap[3] & BIT(15))) {
+	if (ppet_len && (le16toh(phy_cap[3]) & BIT(15))) {
 		printf("%s\t\tPPE Threshold ", pre);
 		for (i =3D 0; i < ppet_len; i++)
 			if (ppet[i])
--=20
2.39.5