diff options
author | Christian Marangi <ansuelsmth@gmail.com> | 2022-10-12 20:18:36 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2022-10-14 10:22:28 +0300 |
commit | a2550d3ce53c68f54042bc5e468c4d07491ffe0e (patch) | |
tree | 7b4b095a99ab0cbcf8dad9f77408287805fbfa2f /include/linux | |
parent | 777ecaabd614d47c482a5c9031579e66da13989a (diff) | |
download | linux-a2550d3ce53c68f54042bc5e468c4d07491ffe0e.tar.xz |
net: dsa: qca8k: fix inband mgmt for big-endian systems
The header and the data of the skb for the inband mgmt requires
to be in little-endian. This is problematic for big-endian system
as the mgmt header is written in the cpu byte order.
Fix this by converting each value for the mgmt header and data to
little-endian, and convert to cpu byte order the mgmt header and
data sent by the switch.
Fixes: 5950c7c0a68c ("net: dsa: qca8k: add support for mgmt read/write in Ethernet packet")
Tested-by: Pawel Dembicki <paweldembicki@gmail.com>
Tested-by: Lech Perczak <lech.perczak@gmail.com>
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Reviewed-by: Lech Perczak <lech.perczak@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/dsa/tag_qca.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/include/linux/dsa/tag_qca.h b/include/linux/dsa/tag_qca.h index 50be7cbd93a5..0e176da1e43f 100644 --- a/include/linux/dsa/tag_qca.h +++ b/include/linux/dsa/tag_qca.h @@ -61,9 +61,9 @@ struct sk_buff; /* Special struct emulating a Ethernet header */ struct qca_mgmt_ethhdr { - u32 command; /* command bit 31:0 */ - u32 seq; /* seq 63:32 */ - u32 mdio_data; /* first 4byte mdio */ + __le32 command; /* command bit 31:0 */ + __le32 seq; /* seq 63:32 */ + __le32 mdio_data; /* first 4byte mdio */ __be16 hdr; /* qca hdr */ } __packed; |