Commit 809054a6 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau
Browse files

wifi: mt76: mt7996: Convert mt7996_wed_rro_addr to LE



Do not use bitmask in mt7996_wed_rro_addr DMA descriptor in order to not
break endianness

Fixes: 950d0abb ("wifi: mt76: mt7996: add wed rx support")
Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20250909-mt7996-rro-rework-v5-11-7d66f6eb7795@kernel.org


Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 0d4dafac
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -852,6 +852,7 @@ void mt7996_rro_hw_init(struct mt7996_dev *dev)
static int mt7996_wed_rro_init(struct mt7996_dev *dev)
{
#ifdef CONFIG_NET_MEDIATEK_SOC_WED
	u32 val = FIELD_PREP(WED_RRO_ADDR_SIGNATURE_MASK, 0xff);
	struct mtk_wed_device *wed = &dev->mt76.mmio.wed;
	struct mt7996_wed_rro_addr *addr;
	void *ptr;
@@ -890,7 +891,7 @@ static int mt7996_wed_rro_init(struct mt7996_dev *dev)

		addr = dev->wed_rro.addr_elem[i].ptr;
		for (j = 0; j < MT7996_RRO_WINDOW_MAX_SIZE; j++) {
			addr->signature = 0xff;
			addr->data = cpu_to_le32(val);
			addr++;
		}

@@ -922,7 +923,7 @@ static int mt7996_wed_rro_init(struct mt7996_dev *dev)
	dev->wed_rro.session.ptr = ptr;
	addr = dev->wed_rro.session.ptr;
	for (i = 0; i < MT7996_RRO_WINDOW_MAX_LEN; i++) {
		addr->signature = 0xff;
		addr->data = cpu_to_le32(val);
		addr++;
	}

@@ -990,6 +991,7 @@ static void mt7996_wed_rro_free(struct mt7996_dev *dev)
static void mt7996_wed_rro_work(struct work_struct *work)
{
#ifdef CONFIG_NET_MEDIATEK_SOC_WED
	u32 val = FIELD_PREP(WED_RRO_ADDR_SIGNATURE_MASK, 0xff);
	struct mt7996_dev *dev;
	LIST_HEAD(list);

@@ -1026,7 +1028,7 @@ static void mt7996_wed_rro_work(struct work_struct *work)
				MT7996_RRO_WINDOW_MAX_LEN;
reset:
			elem = ptr + elem_id * sizeof(*elem);
			elem->signature = 0xff;
			elem->data |= cpu_to_le32(val);
		}
		mt7996_mcu_wed_rro_reset_sessions(dev, e->id);
out:
+5 −6
Original line number Diff line number Diff line
@@ -285,13 +285,12 @@ struct mt7996_hif {
	enum pcie_link_width width;
};

#define WED_RRO_ADDR_SIGNATURE_MASK	GENMASK(31, 24)
#define WED_RRO_ADDR_COUNT_MASK		GENMASK(14, 4)
#define WED_RRO_ADDR_HEAD_HIGH_MASK	GENMASK(3, 0)
struct mt7996_wed_rro_addr {
	u32 head_low;
	u32 head_high : 4;
	u32 count: 11;
	u32 oor: 1;
	u32 rsv : 8;
	u32 signature : 8;
	__le32 head_low;
	__le32 data;
};

struct mt7996_wed_rro_session_id {