Search Linux Wireless

Re: Alfa AWUS036NHR with RTL8188RU chipset

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/19/2011 09:37 AM, v4mp wrote:


ok, i've done what you asked me with usbmon,
but i'm not sure that is what you want

i've redone dumping dmesg trying to grab the information you are lookin for

i can't upload it on pastebin cause it's too large, i uploaded logs on megaupload

http://www.megaupload.com/?d=3D0QS1MX

I got the data. Thanks. It will take a while to analyze the usbmon data, but there is something I would like you to try. It will involve getting the kernel source for some recent kernel, and applying the attached patch. With it, xhci-hcd will dump the stack whenever the "short transfer on control ep" or "no room on ep ring" errors occur. Send me those parts of the dmesg output, but again do the dump early before the buffer wrap around happens.

Larry

Index: wireless-testing-new/drivers/usb/host/xhci-ring.c
===================================================================
--- wireless-testing-new.orig/drivers/usb/host/xhci-ring.c
+++ wireless-testing-new/drivers/usb/host/xhci-ring.c
@@ -1616,6 +1616,7 @@ static int process_ctrl_td(struct xhci_h
 	int ep_index;
 	struct xhci_ep_ctx *ep_ctx;
 	u32 trb_comp_code;
+	static int count;
 
 	slot_id = TRB_TO_SLOT_ID(le32_to_cpu(event->flags));
 	xdev = xhci->devs[slot_id];
@@ -1641,6 +1642,8 @@ static int process_ctrl_td(struct xhci_h
 		break;
 	case COMP_SHORT_TX:
 		xhci_warn(xhci, "WARN: short transfer on control ep\n");
+		if (count++ < 5)
+			dump_stack();
 		if (td->urb->transfer_flags & URB_SHORT_NOT_OK)
 			*status = -EREMOTEIO;
 		else
@@ -2429,6 +2432,7 @@ static void queue_trb(struct xhci_hcd *x
 static int prepare_ring(struct xhci_hcd *xhci, struct xhci_ring *ep_ring,
 		u32 ep_state, unsigned int num_trbs, gfp_t mem_flags)
 {
+	static int count;
 	/* Make sure the endpoint has been added to xHC schedule */
 	switch (ep_state) {
 	case EP_STATE_DISABLED:
@@ -2459,6 +2463,8 @@ static int prepare_ring(struct xhci_hcd
 	if (!room_on_ring(xhci, ep_ring, num_trbs)) {
 		/* FIXME allocate more room */
 		xhci_err(xhci, "ERROR no room on ep ring\n");
+		if (count++ < 5)
+			dump_stack();
 		return -ENOMEM;
 	}
 

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux