Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f615e9a3 authored by Ivo van Doorn's avatar Ivo van Doorn Committed by John W. Linville
Browse files

rt2x00: Fix WMM Queue naming



The Queue names were incorrectly copied from the legacy drivers,
as a result the queue names were inversed to what was expected.

This renames the queues using this mapping:
	QID_AC_BK -> QID_AC_VO (priority 0)
	QID_AC_BE -> QID_AC_VI (priority 1)
	QID_AC_VI -> QID_AC_BE (priority 2)
	QID_AC_VO -> QID_AC_BK (priority 3)

Note that this was a naming problem only, which didn't affect
the assignment of frames to their respective queues.

Signed-off-by: default avatarIvo van Doorn <IvDoorn@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent dba5dc1a
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -664,12 +664,12 @@ static void rt2400pci_kick_queue(struct data_queue *queue)
	u32 reg;

	switch (queue->qid) {
	case QID_AC_BE:
	case QID_AC_VO:
		rt2x00pci_register_read(rt2x00dev, TXCSR0, &reg);
		rt2x00_set_field32(&reg, TXCSR0_KICK_PRIO, 1);
		rt2x00pci_register_write(rt2x00dev, TXCSR0, reg);
		break;
	case QID_AC_BK:
	case QID_AC_VI:
		rt2x00pci_register_read(rt2x00dev, TXCSR0, &reg);
		rt2x00_set_field32(&reg, TXCSR0_KICK_TX, 1);
		rt2x00pci_register_write(rt2x00dev, TXCSR0, reg);
@@ -690,8 +690,8 @@ static void rt2400pci_stop_queue(struct data_queue *queue)
	u32 reg;

	switch (queue->qid) {
	case QID_AC_BE:
	case QID_AC_BK:
	case QID_AC_VO:
	case QID_AC_VI:
	case QID_ATIM:
		rt2x00pci_register_read(rt2x00dev, TXCSR0, &reg);
		rt2x00_set_field32(&reg, TXCSR0_ABORT, 1);
@@ -1322,13 +1322,13 @@ static irqreturn_t rt2400pci_interrupt_thread(int irq, void *dev_instance)
	 * 4 - Priority ring transmit done interrupt.
	 */
	if (rt2x00_get_field32(reg, CSR7_TXDONE_PRIORING))
		rt2400pci_txdone(rt2x00dev, QID_AC_BE);
		rt2400pci_txdone(rt2x00dev, QID_AC_VO);

	/*
	 * 5 - Tx ring transmit done interrupt.
	 */
	if (rt2x00_get_field32(reg, CSR7_TXDONE_TXRING))
		rt2400pci_txdone(rt2x00dev, QID_AC_BK);
		rt2400pci_txdone(rt2x00dev, QID_AC_VI);

	/* Enable interrupts again. */
	rt2x00dev->ops->lib->set_device_state(rt2x00dev,
+6 −6
Original line number Diff line number Diff line
@@ -754,12 +754,12 @@ static void rt2500pci_kick_queue(struct data_queue *queue)
	u32 reg;

	switch (queue->qid) {
	case QID_AC_BE:
	case QID_AC_VO:
		rt2x00pci_register_read(rt2x00dev, TXCSR0, &reg);
		rt2x00_set_field32(&reg, TXCSR0_KICK_PRIO, 1);
		rt2x00pci_register_write(rt2x00dev, TXCSR0, reg);
		break;
	case QID_AC_BK:
	case QID_AC_VI:
		rt2x00pci_register_read(rt2x00dev, TXCSR0, &reg);
		rt2x00_set_field32(&reg, TXCSR0_KICK_TX, 1);
		rt2x00pci_register_write(rt2x00dev, TXCSR0, reg);
@@ -780,8 +780,8 @@ static void rt2500pci_stop_queue(struct data_queue *queue)
	u32 reg;

	switch (queue->qid) {
	case QID_AC_BE:
	case QID_AC_BK:
	case QID_AC_VO:
	case QID_AC_VI:
	case QID_ATIM:
		rt2x00pci_register_read(rt2x00dev, TXCSR0, &reg);
		rt2x00_set_field32(&reg, TXCSR0_ABORT, 1);
@@ -1455,13 +1455,13 @@ static irqreturn_t rt2500pci_interrupt_thread(int irq, void *dev_instance)
	 * 4 - Priority ring transmit done interrupt.
	 */
	if (rt2x00_get_field32(reg, CSR7_TXDONE_PRIORING))
		rt2500pci_txdone(rt2x00dev, QID_AC_BE);
		rt2500pci_txdone(rt2x00dev, QID_AC_VO);

	/*
	 * 5 - Tx ring transmit done interrupt.
	 */
	if (rt2x00_get_field32(reg, CSR7_TXDONE_TXRING))
		rt2500pci_txdone(rt2x00dev, QID_AC_BK);
		rt2500pci_txdone(rt2x00dev, QID_AC_VI);

	/* Enable interrupts again. */
	rt2x00dev->ops->lib->set_device_state(rt2x00dev,
+22 −22
Original line number Diff line number Diff line
@@ -213,10 +213,10 @@

/*
 * WMM_AIFSN_CFG: Aifsn for each EDCA AC
 * AIFSN0: AC_BE
 * AIFSN1: AC_BK
 * AIFSN2: AC_VI
 * AIFSN3: AC_VO
 * AIFSN0: AC_VO
 * AIFSN1: AC_VI
 * AIFSN2: AC_BE
 * AIFSN3: AC_BK
 */
#define WMM_AIFSN_CFG			0x0214
#define WMM_AIFSN_CFG_AIFSN0		FIELD32(0x0000000f)
@@ -226,10 +226,10 @@

/*
 * WMM_CWMIN_CSR: CWmin for each EDCA AC
 * CWMIN0: AC_BE
 * CWMIN1: AC_BK
 * CWMIN2: AC_VI
 * CWMIN3: AC_VO
 * CWMIN0: AC_VO
 * CWMIN1: AC_VI
 * CWMIN2: AC_BE
 * CWMIN3: AC_BK
 */
#define WMM_CWMIN_CFG			0x0218
#define WMM_CWMIN_CFG_CWMIN0		FIELD32(0x0000000f)
@@ -239,10 +239,10 @@

/*
 * WMM_CWMAX_CSR: CWmax for each EDCA AC
 * CWMAX0: AC_BE
 * CWMAX1: AC_BK
 * CWMAX2: AC_VI
 * CWMAX3: AC_VO
 * CWMAX0: AC_VO
 * CWMAX1: AC_VI
 * CWMAX2: AC_BE
 * CWMAX3: AC_BK
 */
#define WMM_CWMAX_CFG			0x021c
#define WMM_CWMAX_CFG_CWMAX0		FIELD32(0x0000000f)
@@ -251,18 +251,18 @@
#define WMM_CWMAX_CFG_CWMAX3		FIELD32(0x0000f000)

/*
 * AC_TXOP0: AC_BK/AC_BE TXOP register
 * AC0TXOP: AC_BK in unit of 32us
 * AC1TXOP: AC_BE in unit of 32us
 * AC_TXOP0: AC_VO/AC_VI TXOP register
 * AC0TXOP: AC_VO in unit of 32us
 * AC1TXOP: AC_VI in unit of 32us
 */
#define WMM_TXOP0_CFG			0x0220
#define WMM_TXOP0_CFG_AC0TXOP		FIELD32(0x0000ffff)
#define WMM_TXOP0_CFG_AC1TXOP		FIELD32(0xffff0000)

/*
 * AC_TXOP1: AC_VO/AC_VI TXOP register
 * AC2TXOP: AC_VI in unit of 32us
 * AC3TXOP: AC_VO in unit of 32us
 * AC_TXOP1: AC_BE/AC_BK TXOP register
 * AC2TXOP: AC_BE in unit of 32us
 * AC3TXOP: AC_BK in unit of 32us
 */
#define WMM_TXOP1_CFG			0x0224
#define WMM_TXOP1_CFG_AC2TXOP		FIELD32(0x0000ffff)
@@ -288,7 +288,7 @@
#define MCU_CMD_CFG			0x022c

/*
 * AC_BK register offsets
 * AC_VO register offsets
 */
#define TX_BASE_PTR0			0x0230
#define TX_MAX_CNT0			0x0234
@@ -296,7 +296,7 @@
#define TX_DTX_IDX0			0x023c

/*
 * AC_BE register offsets
 * AC_VI register offsets
 */
#define TX_BASE_PTR1			0x0240
#define TX_MAX_CNT1			0x0244
@@ -304,7 +304,7 @@
#define TX_DTX_IDX1			0x024c

/*
 * AC_VI register offsets
 * AC_BE register offsets
 */
#define TX_BASE_PTR2			0x0250
#define TX_MAX_CNT2			0x0254
@@ -312,7 +312,7 @@
#define TX_DTX_IDX2			0x025c

/*
 * AC_VO register offsets
 * AC_BK register offsets
 */
#define TX_BASE_PTR3			0x0260
#define TX_MAX_CNT3			0x0264
+2 −2
Original line number Diff line number Diff line
@@ -217,10 +217,10 @@ static void rt2800pci_kick_queue(struct data_queue *queue)
	struct queue_entry *entry;

	switch (queue->qid) {
	case QID_AC_VO:
	case QID_AC_VI:
	case QID_AC_BE:
	case QID_AC_BK:
	case QID_AC_VI:
	case QID_AC_VO:
		entry = rt2x00queue_get_entry(queue, Q_INDEX);
		rt2800_register_write(rt2x00dev, TX_CTX_IDX(queue->qid), entry->entry_idx);
		break;
+9 −9
Original line number Diff line number Diff line
@@ -746,10 +746,10 @@ void rt2x00queue_pause_queue(struct data_queue *queue)
		return;

	switch (queue->qid) {
	case QID_AC_VO:
	case QID_AC_VI:
	case QID_AC_BE:
	case QID_AC_BK:
	case QID_AC_VI:
	case QID_AC_VO:
		/*
		 * For TX queues, we have to disable the queue
		 * inside mac80211.
@@ -770,10 +770,10 @@ void rt2x00queue_unpause_queue(struct data_queue *queue)
		return;

	switch (queue->qid) {
	case QID_AC_VO:
	case QID_AC_VI:
	case QID_AC_BE:
	case QID_AC_BK:
	case QID_AC_VI:
	case QID_AC_VO:
		/*
		 * For TX queues, we have to enable the queue
		 * inside mac80211.
@@ -834,10 +834,10 @@ void rt2x00queue_flush_queue(struct data_queue *queue, bool drop)
	unsigned int i;
	bool started;
	bool tx_queue =
		(queue->qid == QID_AC_BE) ||
		(queue->qid == QID_AC_BK) ||
		(queue->qid == QID_AC_VO) ||
		(queue->qid == QID_AC_VI) ||
		(queue->qid == QID_AC_VO);
		(queue->qid == QID_AC_BE) ||
		(queue->qid == QID_AC_BK);

	mutex_lock(&queue->status_lock);

@@ -1141,7 +1141,7 @@ int rt2x00queue_allocate(struct rt2x00_dev *rt2x00dev)
	/*
	 * Initialize queue parameters.
	 * RX: qid = QID_RX
	 * TX: qid = QID_AC_BE + index
	 * TX: qid = QID_AC_VO + index
	 * TX: cw_min: 2^5 = 32.
	 * TX: cw_max: 2^10 = 1024.
	 * BCN: qid = QID_BEACON
@@ -1149,7 +1149,7 @@ int rt2x00queue_allocate(struct rt2x00_dev *rt2x00dev)
	 */
	rt2x00queue_init(rt2x00dev, rt2x00dev->rx, QID_RX);

	qid = QID_AC_BE;
	qid = QID_AC_VO;
	tx_queue_for_each(rt2x00dev, queue)
		rt2x00queue_init(rt2x00dev, queue, qid++);

Loading