rndis_host: Poll status channel before control channel
Subsystems (3)
PATCH 1/1 rndis_host: Poll status channel before control channel
Some RNDIS devices don't respond on the control channel until polled on the status channel. In particular, this was reported to be the case for the 2Wire HomePortal 1000SW.
This is roughly based on a patch by John Carr <[email protected]> which is reported to be needed for use with some Windows Mobile devices and which is currently applied by Mandriva.
---
Note that this change hasn't yet been tested with any other RNDIS devices. John, can you confirm whether this also handles the WinMob devices?
Ben.
drivers/net/usb/rndis_host.c | 18 ++++++++++++------ 1 files changed, 12 insertions(+), 6 deletions(-)
drivers/net/usb/rndis_host.c +12 -6
@@ -103,8 +103,10 @@ static void rndis_msg_indicate(struct usbnet *dev, struct rndis_indicate *msg,int rndis_command (struct usbnet *dev,struct rndis_msg_hdr *buf,int buflen) {struct cdc_state *info = (void *) &dev->data; +struct usb_cdc_notification notification;int master_ifnum;int retval; +int partial;unsigned count;__le32 rsp;u32 xid =0 , msg_len, request_id;
@@ -132,13 +134,17 @@ int rndis_command(struct usbnet *dev, struct rndis_msg_hdr *buf, int buflen)if (unlikely (retval <0 || xid ==0 ))return retval; -// FIXME Seems like some devices discard responses when -// we time out and cancel our "get response" requests... -// so, this is fragile. Probably need to poll for status. +/* Some devices don't respond on the control channel until +* polled on the status channel, so do that first. */ + retval =usb_interrupt_msg ( + dev->udev, +usb_rcvintpipe (dev->udev, dev->status->desc.bEndpointAddress), + ¬ification,sizeof (notification), &partial, +RNDIS_CONTROL_TIMEOUT_MS ); +if (unlikely (retval <0 )) +return retval; -/* ignore status endpoint, just poll the control channel; -* the request probably completed immediately -*/ +/* Poll the control channel; the request probably completed immediately */ rsp = buf->msg_type |RNDIS_MSG_COMPLETION ;for (count =0 ; count <10 ; count++) {memset (buf,0 ,CONTROL_BUFFER_SIZE );
Signature · 1 line
1.7.0.3
David Miller
maintainerFrom: Ben Hutchings <[email protected]>
Date: Tue, 20 Apr 2010 00:08:28 +0100
Quoted 8 lines
Some RNDIS devices don't respond on the control channel until polled on the status channel. In particular, this was reported to be the case for the 2Wire HomePortal 1000SW.
This is roughly based on a patch by John Carr <[email protected]> which is reported to be needed for use with some Windows Mobile devices and which is currently applied by Mandriva.
Quoted 7 lines
Reported-by Mark Glassberg <[email protected]>Signed-off-by Ben Hutchings <[email protected]>Tested-by Mark Glassberg <[email protected]>---
Note that this change hasn't yet been tested with any other RNDIS devices. John, can you confirm whether this also handles the WinMob devices?
I haven't seen any other testing for this patch and I'm real hesitant to apply something like this in that case.
David Miller
maintainerFrom: Ben Hutchings <[email protected]>
Date: Tue, 20 Apr 2010 00:08:28 +0100
Quoted 8 lines
Some RNDIS devices don't respond on the control channel until polled on the status channel. In particular, this was reported to be the case for the 2Wire HomePortal 1000SW.
This is roughly based on a patch by John Carr <[email protected]> which is reported to be needed for use with some Windows Mobile devices and which is currently applied by Mandriva.
Quoted 7 lines
Reported-by Mark Glassberg <[email protected]>Signed-off-by Ben Hutchings <[email protected]>Tested-by Mark Glassberg <[email protected]>---
Note that this change hasn't yet been tested with any other RNDIS devices. John, can you confirm whether this also handles the WinMob devices?
Still waiting for this to get tested. Is there really nobody in the world with RNDIS devices who can test this patch? If so, maybe that's a good reason to not apply it :-))))
Quoted 19 lines · David Miller
From: Ben Hutchings <[email protected]>
Date: Tue, 20 Apr 2010 00:08:28 +0100Quoted 8 lines
Some RNDIS devices don't respond on the control channel until polled on the status channel. In particular, this was reported to be the case for the 2Wire HomePortal 1000SW.
This is roughly based on a patch by John Carr <[email protected]> which is reported to be needed for use with some Windows Mobile devices and which is currently applied by Mandriva.
Quoted 7 lines
Reported-by Mark Glassberg <[email protected]>Signed-off-by Ben Hutchings <[email protected]>Tested-by Mark Glassberg <[email protected]>---
Note that this change hasn't yet been tested with any other RNDIS devices. John, can you confirm whether this also handles the WinMob devices?
Quoted 3 lines
Still waiting for this to get tested. Is there really nobody in the world with RNDIS devices who can test this patch? If so, maybe that's a good reason to not apply it :-))))
This has been in Debian unstable since 1 May and I haven't seen any fall-out yet. However I acknowledge that absence of evidence is not evidence of absence.
Ben.
Signature · 2 lines
Ben Hutchings Once a job is fouled up, anything done to improve it makes it worse.
David Miller
maintainerFrom: Ben Hutchings <[email protected]>
Date: Sat, 15 May 2010 14:37:15 +0100
Quoted 20 lines · David Miller
Quoted 19 lines
From: Ben Hutchings <[email protected]>
Date: Tue, 20 Apr 2010 00:08:28 +0100Quoted 15 lines
Some RNDIS devices don't respond on the control channel until polled on the status channel. In particular, this was reported to be the case for the 2Wire HomePortal 1000SW.
This is roughly based on a patch by John Carr <[email protected]> which is reported to be needed for use with some Windows Mobile devices and which is currently applied by Mandriva.
Reported-by Mark Glassberg <[email protected]>Signed-off-by Ben Hutchings <[email protected]>Tested-by Mark Glassberg <[email protected]>---
Note that this change hasn't yet been tested with any other RNDIS devices. John, can you confirm whether this also handles the WinMob devices?
Quoted 7 lines
Quoted 3 lines
Still waiting for this to get tested. Is there really nobody in the world with RNDIS devices who can test this patch? If so, maybe that's a good reason to not apply it :-))))
This has been in Debian unstable since 1 May and I haven't seen any fall-out yet. However I acknowledge that absence of evidence is not evidence of absence.
I think I'll toss it into net-next-2.6 and we'll see if any monsters come out of that.
Thanks.