Patch from Stanislaw Gruszka to fix rt2x00 USB access point (rhbz 828824)

This commit is contained in:
Josh Boyer 2012-07-04 11:30:05 -04:00
parent f594e5be67
commit 83ef0f3582
2 changed files with 53 additions and 1 deletions

View File

@ -62,7 +62,7 @@ Summary: The Linux kernel
# For non-released -rc kernels, this will be appended after the rcX and
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
#
%global baserelease 1
%global baserelease 2
%global fedora_build %{baserelease}
# base_sublevel is the kernel version we're starting with and patching
@ -742,6 +742,9 @@ Patch22000: weird-root-dentry-name-debug.patch
#selinux ptrace child permissions
Patch22001: selinux-apply-different-permission-to-ptrace-child.patch
#rhbz 828824
Patch22043: rt2x00usb-fix-indexes-ordering-on-RX-queue-kick.patch
# END OF PATCH DEFINITIONS
%endif
@ -1430,6 +1433,9 @@ ApplyPatch selinux-apply-different-permission-to-ptrace-child.patch
#Highbank clock functions
ApplyPatch highbank-export-clock-functions.patch
#rhbz 828824
ApplyPatch rt2x00usb-fix-indexes-ordering-on-RX-queue-kick.patch
# END OF PATCH APPLICATIONS
%endif
@ -2286,6 +2292,9 @@ fi
# ||----w |
# || ||
%changelog
* Wed Jul 4 2012 Josh Boyer <jwboyer@redhat.com>
- Patch from Stanislaw Gruszka to fix rt2x00 USB access point (rhbz 828824)
* Tue Jul 03 2012 Justin M. Forbes <jforbes@redhat.com> - 3.5.0-0.rc5.git1.1
- Linux v3.5-rc5-6-g9d4056a

View File

@ -0,0 +1,43 @@
From e899a84a6e9bec0ce653713a48ca121cd754430c Mon Sep 17 00:00:00 2001
From: Stanislaw Gruszka <sgruszka@redhat.com>
Date: Mon, 2 Jul 2012 09:42:14 +0200
Subject: [PATCH] rt2x00usb: fix indexes ordering on RX queue kick
On rt2x00_dmastart() we increase index specified by Q_INDEX and on
rt2x00_dmadone() we increase index specified by Q_INDEX_DONE. So entries
between Q_INDEX_DONE and Q_INDEX are those we currently process in the
hardware. Entries between Q_INDEX and Q_INDEX_DONE are those we can
submit to the hardware.
According to that fix rt2x00usb_kick_queue(), as we need to submit rx
entries that are not processed by the hardware. It worked before only
for empty queue, otherwise was broken.
Note that for TX queues indexes ordering are ok. We need to kick entries
that have filled skb, but was not submitted to the hardware, i.e.
strted from Q_INDEX_DONE and have ENTRY_DATA_PENDING bit set.
From practical standpoint this patch fixes AP mode connection hangs.
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
---
drivers/net/wireless/rt2x00/rt2x00usb.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt2x00usb.c b/drivers/net/wireless/rt2x00/rt2x00usb.c
index d357d1e..74ecc33 100644
--- a/drivers/net/wireless/rt2x00/rt2x00usb.c
+++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
@@ -436,8 +436,8 @@ void rt2x00usb_kick_queue(struct data_queue *queue)
case QID_RX:
if (!rt2x00queue_full(queue))
rt2x00queue_for_each_entry(queue,
- Q_INDEX_DONE,
Q_INDEX,
+ Q_INDEX_DONE,
NULL,
rt2x00usb_kick_rx_entry);
break;
--
1.7.1