[rt2x00-users] [RFC/RFT 4/5] rt2x00: rt2800usb: do not check packedid for aggregated frames

Helmut Schaa helmut.schaa at googlemail.com
Mon Mar 12 21:45:56 EST 2012


On Wed, Mar 7, 2012 at 8:07 PM, Stanislaw Gruszka <sgruszka at redhat.com> wrote:
> Tx statuses of aggregated subframes contain packetid of first subframe
> in the AMPDU. We can not identify AMPDU subframes based on packedid, so
> simply assume that status match first pending frame in the queue. Thats
> mostly the same what 2800pci do.
>
> Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>

Makes sense to me!

Acked-by: Helmut Schaa <helmut.schaa at googlemail.com>

> ---
>  drivers/net/wireless/rt2x00/rt2800usb.c |    5 +++--
>  1 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
> index 151bde6..1eb0cc3 100644
> --- a/drivers/net/wireless/rt2x00/rt2800usb.c
> +++ b/drivers/net/wireless/rt2x00/rt2800usb.c
> @@ -502,7 +502,7 @@ rt2800usb_txdone_entry_check(struct queue_entry *entry, u32 reg)
>        __le32 *txwi;
>        u32 word;
>        int wcid, ack, pid;
> -       int tx_wcid, tx_ack, tx_pid;
> +       int tx_wcid, tx_ack, tx_pid, is_agg;
>
>        /*
>         * This frames has returned with an IO error,
> @@ -515,6 +515,7 @@ rt2800usb_txdone_entry_check(struct queue_entry *entry, u32 reg)
>        wcid    = rt2x00_get_field32(reg, TX_STA_FIFO_WCID);
>        ack     = rt2x00_get_field32(reg, TX_STA_FIFO_TX_ACK_REQUIRED);
>        pid     = rt2x00_get_field32(reg, TX_STA_FIFO_PID_TYPE);
> +       is_agg  = rt2x00_get_field32(reg, TX_STA_FIFO_TX_AGGRE);
>
>        /*
>         * Validate if this TX status report is intended for
> @@ -527,7 +528,7 @@ rt2800usb_txdone_entry_check(struct queue_entry *entry, u32 reg)
>        tx_ack  = rt2x00_get_field32(word, TXWI_W1_ACK);
>        tx_pid  = rt2x00_get_field32(word, TXWI_W1_PACKETID);
>
> -       if ((wcid != tx_wcid) || (ack != tx_ack) || (pid != tx_pid)) {
> +       if (wcid != tx_wcid || ack != tx_ack || (!is_agg && pid != tx_pid)) {
>                WARNING(entry->queue->rt2x00dev,
>                        "TX status report missed for queue %d entry %d\n",
>                        entry->queue->qid, entry->entry_idx);
> --
> 1.7.1
>
>
> _______________________________________________
> users mailing list
> users at rt2x00.serialmonkey.com
> http://rt2x00.serialmonkey.com/mailman/listinfo/users_rt2x00.serialmonkey.com



More information about the users mailing list