From: Larry Finger <Larry.Finger@lwfinger.net>
To: Christian Lamparter <chunkeey@googlemail.com>
Cc: Ian Jeffray <ian@emobix.co.uk>, linux-wireless@vger.kernel.org
Subject: Re: r8712u driver - on ARM
Date: Sat, 01 Oct 2011 12:52:37 -0500 [thread overview]
Message-ID: <4E875365.50206@lwfinger.net> (raw)
In-Reply-To: <201110011822.00637.chunkeey@googlemail.com>
On 10/01/2011 11:22 AM, Christian Lamparter wrote:
> On Saturday 01 October 2011 18:01:08 Larry Finger wrote:
>> Ian,
>>
>> Most of the skb assignments in r8712u are aligned OK and most aligned on
>> 512-byte boundaries, but there was one that had the minimal offset of 14 bytes.
>> The attached patch should fix it. Does it help?
> Interesting, this "patch" goes in a completely different direction.
> Can you tell me where the driver aligns the frames which will be
> xmitted by the device [i.e.: which is passed to the usb subsystem
> by usb_submit_urb]? Because that's what actually matters.
In this driver, all references are to _usb_submit_urb(), which is defined to be
usb_submit_urb() in one of the header files. That made it easy to insert a test
for misalignment of the DMA buffer as follows:
Index: wireless-testing-new/drivers/staging/rtl8712/osdep_service.h
===================================================================
--- wireless-testing-new.orig/drivers/staging/rtl8712/osdep_service.h
+++ wireless-testing-new/drivers/staging/rtl8712/osdep_service.h
@@ -34,7 +34,7 @@
#include <linux/if_arp.h>
#include <linux/firmware.h>
#define _usb_alloc_urb(x, y) usb_alloc_urb(x, y)
-#define _usb_submit_urb(x, y) usb_submit_urb(x, y)
+//#define _usb_submit_urb(x, y) usb_submit_urb(x, y)
struct __queue {
struct list_head queue;
@@ -232,5 +232,13 @@ static inline u32 _RND512(u32 sz)
return ((sz >> 9) + ((sz & 511) ? 1 : 0)) << 9;
}
+static inline int _usb_submit_urb(struct urb *urb, gfp_t mem_flags)
+{
+ if (urb->transfer_dma & 3) {
+ pr_info("Transfer_dma 0x%x not on 4-byte boundary\n",
(uint)urb->transfer_dma);
+ dump_stack();
+ }
+ return usb_submit_urb(urb, mem_flags);
+}
#endif
I never hit the pr_info() and the associated dump_stack(). If that test is
sufficient, then buffer misalignment is not the source of the problem.
Larry
next prev parent reply other threads:[~2011-10-01 17:52 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-27 15:36 r8712u driver - on ARM Ian Jeffray
2011-09-27 16:24 ` Larry Finger
2011-09-30 18:39 ` Ian Jeffray
2011-09-30 19:06 ` Christian Lamparter
2011-10-01 0:51 ` Larry Finger
2011-10-01 16:01 ` Larry Finger
2011-10-01 16:22 ` Christian Lamparter
2011-10-01 17:52 ` Larry Finger [this message]
2011-10-01 18:01 ` Christian Lamparter
2011-10-01 18:10 ` Ian Jeffray
2011-10-01 18:49 ` Larry Finger
2011-10-01 18:54 ` Christian Lamparter
2011-10-01 19:24 ` Larry Finger
2011-10-01 23:24 ` Ian Jeffray
2011-10-12 15:30 ` Ian Jeffray
2011-10-12 17:28 ` Larry Finger
2011-10-01 17:00 ` Ian Jeffray
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E875365.50206@lwfinger.net \
--to=larry.finger@lwfinger.net \
--cc=chunkeey@googlemail.com \
--cc=ian@emobix.co.uk \
--cc=linux-wireless@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.