* [PATCH 04/14] [rndis_host] Halt device if rndis_bind fails.
@ 2008-01-20 0:14 Jussi Kivilinna
[not found] ` <20080120001404.25718.6901.stgit-q/85JClnwdg@public.gmane.org>
0 siblings, 1 reply; 3+ messages in thread
From: Jussi Kivilinna @ 2008-01-20 0:14 UTC (permalink / raw)
To: linux-wireless; +Cc: bjd, dbrownell, netdev
When bind fails after device was initialized, shutdown device properly
by sending RNDIS_MSG_HALT.
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: Bjorge Dijkstra <bjd@jooz.net>
---
drivers/net/usb/rndis_host.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index 42b161c..c686025 100644
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
@@ -467,6 +467,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf)
struct rndis_query_c *get_c;
struct rndis_set *set;
struct rndis_set_c *set_c;
+ struct rndis_halt *halt;
} u;
u32 tmp;
int reply_len;
@@ -517,7 +518,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf)
"dev can't take %u byte packets (max %u)\n",
dev->hard_mtu, tmp);
retval = -EINVAL;
- goto fail_and_release;
+ goto halt_fail_and_release;
}
dev->hard_mtu = tmp;
net->mtu = dev->hard_mtu - net->hard_header_len;
@@ -539,7 +540,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf)
48, (void **) &bp, &reply_len);
if (unlikely(retval< 0)) {
dev_err(&intf->dev, "rndis get ethaddr, %d\n", retval);
- goto fail_and_release;
+ goto halt_fail_and_release;
}
memcpy(net->dev_addr, bp, ETH_ALEN);
@@ -555,7 +556,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf)
retval = rndis_command(dev, u.header);
if (unlikely(retval < 0)) {
dev_err(&intf->dev, "rndis set packet filter, %d\n", retval);
- goto fail_and_release;
+ goto halt_fail_and_release;
}
retval = 0;
@@ -563,6 +564,11 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf)
kfree(u.buf);
return retval;
+halt_fail_and_release:
+ memset(u.halt, 0, sizeof *u.halt);
+ u.halt->msg_type = RNDIS_MSG_HALT;
+ u.halt->msg_len = ccpu2(sizeof *u.halt);
+ (void) rndis_command(dev, (void *)u.halt);
fail_and_release:
usb_set_intfdata(info->data, NULL);
usb_driver_release_interface(driver_of(intf), info->data);
^ permalink raw reply related [flat|nested] 3+ messages in thread[parent not found: <20080120001404.25718.6901.stgit-q/85JClnwdg@public.gmane.org>]
* Re: [PATCH 04/14] [rndis_host] Halt device if rndis_bind fails. [not found] ` <20080120001404.25718.6901.stgit-q/85JClnwdg@public.gmane.org> @ 2008-01-25 0:55 ` David Brownell 0 siblings, 0 replies; 3+ messages in thread From: David Brownell @ 2008-01-25 0:55 UTC (permalink / raw) To: Jussi Kivilinna Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA, bjd-a1rhEgazXTw, netdev-u79uwXL29TY76Z2rM5mHXA On Saturday 19 January 2008, Jussi Kivilinna wrote: > When bind fails after device was initialized, shutdown device properly > by sending RNDIS_MSG_HALT. > > Signed-off-by: Jussi Kivilinna <jussi.kivilinna-E01nCVcF24I@public.gmane.org> > Signed-off-by: Bjorge Dijkstra <bjd-a1rhEgazXTw@public.gmane.org> Acked-by: David Brownell <dbrownell-Rn4VEauK+AKRv+LV9MX5uipxlwaOVQ5f@public.gmane.org> > --- > > drivers/net/usb/rndis_host.c | 12 +++++++++--- > 1 files changed, 9 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c > index 42b161c..c686025 100644 > --- a/drivers/net/usb/rndis_host.c > +++ b/drivers/net/usb/rndis_host.c > @@ -467,6 +467,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf) > struct rndis_query_c *get_c; > struct rndis_set *set; > struct rndis_set_c *set_c; > + struct rndis_halt *halt; > } u; > u32 tmp; > int reply_len; > @@ -517,7 +518,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf) > "dev can't take %u byte packets (max %u)\n", > dev->hard_mtu, tmp); > retval = -EINVAL; > - goto fail_and_release; > + goto halt_fail_and_release; > } > dev->hard_mtu = tmp; > net->mtu = dev->hard_mtu - net->hard_header_len; > @@ -539,7 +540,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf) > 48, (void **) &bp, &reply_len); > if (unlikely(retval< 0)) { > dev_err(&intf->dev, "rndis get ethaddr, %d\n", retval); > - goto fail_and_release; > + goto halt_fail_and_release; > } > memcpy(net->dev_addr, bp, ETH_ALEN); > > @@ -555,7 +556,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf) > retval = rndis_command(dev, u.header); > if (unlikely(retval < 0)) { > dev_err(&intf->dev, "rndis set packet filter, %d\n", retval); > - goto fail_and_release; > + goto halt_fail_and_release; > } > > retval = 0; > @@ -563,6 +564,11 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf) > kfree(u.buf); > return retval; > > +halt_fail_and_release: > + memset(u.halt, 0, sizeof *u.halt); > + u.halt->msg_type = RNDIS_MSG_HALT; > + u.halt->msg_len = ccpu2(sizeof *u.halt); > + (void) rndis_command(dev, (void *)u.halt); > fail_and_release: > usb_set_intfdata(info->data, NULL); > usb_driver_release_interface(driver_of(intf), info->data); > ^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 00/14][v3]: Driver for Wireless RNDIS USB devices.
@ 2008-01-25 22:50 Jussi Kivilinna
[not found] ` <20080125225032.11716.77713.stgit-q/85JClnwdg@public.gmane.org>
0 siblings, 1 reply; 3+ messages in thread
From: Jussi Kivilinna @ 2008-01-25 22:50 UTC (permalink / raw)
To: linux-wireless-u79uwXL29TY76Z2rM5mHXA
Cc: netdev-u79uwXL29TY76Z2rM5mHXA, bjd-a1rhEgazXTw,
david-b-yBeKhBN/0LDR7s880joybQ
Hello,
Here is the third try on wireless RNDIS patchset.
Patches 1-9 are from second patchset (with name change rndis_wext -> rndis_wlan
in comments where needed):
1. Fix sparse warning: returning void valued expression
2. [cdc_ether] Hardwire CDC descriptors when missing
3. [rndis_host] Use 1KB buffer in rndis_unbind
4. [rndis_host] Halt device if rndis_bind fails
5. [rndis_host] Fix rndis packet filter flags
6. [usbnet] Use wlan device name for RNDIS wireless devices
7. [rndis_host] Split up rndis_host.c
8. [rndis_host] export functions
9. [usbnet] add driver_priv pointer to 'struct usbnet'
Changed patches 10-14:
10. [rndis_host] Add early_init function pointer to 'struct rndis_data'.
11. [rndis_host] Add link_change function pointer to 'struct rndis_data'.
12. [rndis_host] Add RNDIS physical medium checking into generic_rndis_bind()
13. Move usbnet.h and rndis_host.h to include/linux/usb
14. Add new driver 'rndis_wlan' for wireless RNDIS devices.
Devices are now detected by RNDIS physical medium type instead of
vendor/product ids. Driver has new infrastucture/authentication/encryption
setup code (from ndiswrapper) which fixes issued with WEP and AdHoc.
List of modes I've tested and work:
- WEP
- WPA2 PSK (with CCMP)
- unencrypted
- unencrypted ad-hoc
- hidden unencrypted
- ad-hoc WEP
- hidden WEP
That do not work:
- WPA PSK (with TKIP), I couldn't get this work with Windows driver using
ndiswrapper and driver from previous patchset and no call were made
to driver with SIOCSIWENCODEEXT so I'm starting to think problem is with
the version of wpa_supplicant I have.
- Hidden WPA, didn't work with earlier driver and as far as I know ndiswrapper
has the same problem.
Untested:
- WPA PSK with CCMP
- WPA2 PSK with TKIP
- WPA/WPA2 Enterprise
Patches should be applied in order, series apply cleanly to 2.6.24-git1.
- Jussi Kivilinna
^ permalink raw reply [flat|nested] 3+ messages in thread[parent not found: <20080125225032.11716.77713.stgit-q/85JClnwdg@public.gmane.org>]
* [PATCH 04/14] [rndis_host] Halt device if rndis_bind fails. [not found] ` <20080125225032.11716.77713.stgit-q/85JClnwdg@public.gmane.org> @ 2008-01-25 22:50 ` Jussi Kivilinna 0 siblings, 0 replies; 3+ messages in thread From: Jussi Kivilinna @ 2008-01-25 22:50 UTC (permalink / raw) To: linux-wireless-u79uwXL29TY76Z2rM5mHXA Cc: netdev-u79uwXL29TY76Z2rM5mHXA, bjd-a1rhEgazXTw, david-b-yBeKhBN/0LDR7s880joybQ When bind fails after device was initialized, shutdown device properly by sending RNDIS_MSG_HALT. Signed-off-by: Jussi Kivilinna <jussi.kivilinna-E01nCVcF24I@public.gmane.org> Signed-off-by: Bjorge Dijkstra <bjd-a1rhEgazXTw@public.gmane.org> --- drivers/net/usb/rndis_host.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c index 42b161c..c686025 100644 --- a/drivers/net/usb/rndis_host.c +++ b/drivers/net/usb/rndis_host.c @@ -467,6 +467,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf) struct rndis_query_c *get_c; struct rndis_set *set; struct rndis_set_c *set_c; + struct rndis_halt *halt; } u; u32 tmp; int reply_len; @@ -517,7 +518,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf) "dev can't take %u byte packets (max %u)\n", dev->hard_mtu, tmp); retval = -EINVAL; - goto fail_and_release; + goto halt_fail_and_release; } dev->hard_mtu = tmp; net->mtu = dev->hard_mtu - net->hard_header_len; @@ -539,7 +540,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf) 48, (void **) &bp, &reply_len); if (unlikely(retval< 0)) { dev_err(&intf->dev, "rndis get ethaddr, %d\n", retval); - goto fail_and_release; + goto halt_fail_and_release; } memcpy(net->dev_addr, bp, ETH_ALEN); @@ -555,7 +556,7 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf) retval = rndis_command(dev, u.header); if (unlikely(retval < 0)) { dev_err(&intf->dev, "rndis set packet filter, %d\n", retval); - goto fail_and_release; + goto halt_fail_and_release; } retval = 0; @@ -563,6 +564,11 @@ static int rndis_bind(struct usbnet *dev, struct usb_interface *intf) kfree(u.buf); return retval; +halt_fail_and_release: + memset(u.halt, 0, sizeof *u.halt); + u.halt->msg_type = RNDIS_MSG_HALT; + u.halt->msg_len = ccpu2(sizeof *u.halt); + (void) rndis_command(dev, (void *)u.halt); fail_and_release: usb_set_intfdata(info->data, NULL); usb_driver_release_interface(driver_of(intf), info->data); ^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-01-25 22:50 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-20 0:14 [PATCH 04/14] [rndis_host] Halt device if rndis_bind fails Jussi Kivilinna
[not found] ` <20080120001404.25718.6901.stgit-q/85JClnwdg@public.gmane.org>
2008-01-25 0:55 ` David Brownell
-- strict thread matches above, loose matches on Subject: below --
2008-01-25 22:50 [PATCH 00/14][v3]: Driver for Wireless RNDIS USB devices Jussi Kivilinna
[not found] ` <20080125225032.11716.77713.stgit-q/85JClnwdg@public.gmane.org>
2008-01-25 22:50 ` [PATCH 04/14] [rndis_host] Halt device if rndis_bind fails Jussi Kivilinna
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).