[rt2x00-users] [PATCH 7/7] rt2x00: Fix WMM Queue naming
helmut.schaa at googlemail.com
Sat Dec 11 01:33:45 EST 2010
Am Freitag, 10. Dezember 2010 schrieb Ivo Van Doorn:
> > What we could do easily is to use QSEL=0 for all AC_VO packets
> > (which includes MGMT):
> > diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
> > index 935b76d..476340e 100644
> > --- a/drivers/net/wireless/rt2x00/rt2800usb.c
> > +++ b/drivers/net/wireless/rt2x00/rt2800usb.c
> > @@ -317,7 +317,8 @@ static void rt2800usb_write_tx_desc(struct queue_entry *entry,
> > entry->skb->len - TXINFO_DESC_SIZE - 4);
> > rt2x00_set_field32(&word, TXINFO_W0_WIV,
> > !test_bit(ENTRY_TXD_ENCRYPT_IV, &txdesc->flags));
> > - rt2x00_set_field32(&word, TXINFO_W0_QSEL, 2);
> > + rt2x00_set_field32(&word, TXINFO_W0_QSEL,
> > + entry->queue->qid == QID_AC_VO ? 0 : 2);
> > rt2x00_set_field32(&word, TXINFO_W0_SW_USE_LAST_ROUND, 0);
> > rt2x00_set_field32(&word, TXINFO_W0_USB_DMA_NEXT_VALID, 0);
> > rt2x00_set_field32(&word, TXINFO_W0_USB_DMA_TX_BURST,
> I wouldn't consider this a valid option, since that completely ignore the
> priority rules of the other WMM queues. At most we could have a check
> which checks if it is a management frame, and put those on QSEL 0...
As I wrote before this could introduce reordering issues. Assume the following
VO1, VO2, VO3, MGMT, VO4
All are in the same DMA queue (AC_VO). Under the assumption that a QSEL:0 would
prioritize the frame over QSEL:2 the frames would be sent in the following
MGMT, VO1, VO2, VO3, VO4
That in turn could result in a wrong order of tx status results and thus in
a wrong association of tx status information to frame information.
The correct way to really queue MGMT frames through a different queue would be
to add an option to mac80211 to make use of another queue for mgmt frames.
However, I still don't see the absolute need to send MGMT frames through
another hw queue (QSEL: 0..2). At least for now I'd stick to QSEL:2 for
all frames until we know better how the hw schedules frames between the
DMA queues and the hw queues.
> But then we still need to check if TX status reporting works when
> QSEL is not 2.
Yep, that needs to be checked first.
More information about the users