netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] cdc-ether: clean packet filter upon probe
@ 2014-07-28  8:56 Oliver Neukum
  2014-07-29 19:22 ` David Miller
  2014-08-14 11:11 ` Bjørn Mork
  0 siblings, 2 replies; 11+ messages in thread
From: Oliver Neukum @ 2014-07-28  8:56 UTC (permalink / raw)
  To: davem, netdev; +Cc: Oliver Neukum

There are devices that don't do reset all the way. So the packet filter should
be set to a sane initial value. Failure to do so leads to intermittent failures
of DHCP on some systems under some conditions.

Signed-off-by: Oliver Neukum <oneukum@suse.de>
---
 drivers/net/usb/cdc_ether.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
index 9ea4bfe..2a32d91 100644
--- a/drivers/net/usb/cdc_ether.c
+++ b/drivers/net/usb/cdc_ether.c
@@ -341,6 +341,22 @@ next_desc:
 		usb_driver_release_interface(driver, info->data);
 		return -ENODEV;
 	}
+
+	/* Some devices don't initialise properly. In particular
+	 * the packet filter is not reset. There are devices that
+	 * don't do reset all the way. So the packet filter should
+	 * be set to a sane initial value.
+	 */
+	usb_control_msg(dev->udev,
+			usb_sndctrlpipe(dev->udev, 0),
+			USB_CDC_SET_ETHERNET_PACKET_FILTER,
+			USB_TYPE_CLASS | USB_RECIP_INTERFACE,
+			USB_CDC_PACKET_TYPE_ALL_MULTICAST | USB_CDC_PACKET_TYPE_DIRECTED | USB_CDC_PACKET_TYPE_BROADCAST,
+			intf->cur_altsetting->desc.bInterfaceNumber,
+			NULL,
+			0,
+			USB_CTRL_SET_TIMEOUT
+		);
 	return 0;
 
 bad_desc:
-- 
1.8.4.5

^ permalink raw reply related	[flat|nested] 11+ messages in thread
* [PATCH] cdc-ether: clean packet filter upon probe
@ 2014-07-24 11:56 Oliver Neukum
  2014-07-28  5:30 ` David Miller
  0 siblings, 1 reply; 11+ messages in thread
From: Oliver Neukum @ 2014-07-24 11:56 UTC (permalink / raw)
  To: davem, netdev; +Cc: Oliver Neukum

There are devices that don't do reset all the way. So the packet filter should
be set to a sane initial value. Failure to do so leads to intermittent failures
of DHCP on some systems under some conditions.

Signed-off-by: Oliver Neukum <oneukum@suse.de>
---
 drivers/net/usb/cdc_ether.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
index 9ea4bfe..ef8f8f8 100644
--- a/drivers/net/usb/cdc_ether.c
+++ b/drivers/net/usb/cdc_ether.c
@@ -341,6 +341,22 @@ next_desc:
 		usb_driver_release_interface(driver, info->data);
 		return -ENODEV;
 	}
+
+	/* Some devices don't initialise properly. In particular
+	 * the packet filter is not reset. There are devices that
+	 * don't do reset all the way. So the packet filter should
+	 * be set to a sane initial value.
+	 */
+	usb_control_msg(dev->udev,
+			usb_sndctrlpipe(dev->udev, 0),
+			USB_CDC_SET_ETHERNET_PACKET_FILTER,
+			USB_TYPE_CLASS | USB_RECIP_INTERFACE,
+			USB_CDC_PACKET_TYPE_ALL_MULTICAST | USB_CDC_PACKET_TYPE_DIRECTED | USB_CDC_PACKET_TYPE_BROADCAST,
+			intf->cur_altsetting->desc.bInterfaceNumber,
+			NULL,
+			0,
+			1000 /* out of thin air */
+		);
 	return 0;
 
 bad_desc:
-- 
1.8.4.5

^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2014-08-25 12:13 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-28  8:56 [PATCH] cdc-ether: clean packet filter upon probe Oliver Neukum
2014-07-29 19:22 ` David Miller
2014-08-14 11:11 ` Bjørn Mork
2014-08-15  6:12   ` Oliver Neukum
2014-08-15  7:13     ` Bjørn Mork
2014-08-25  8:07       ` Oliver Neukum
2014-08-25  8:39         ` Bjørn Mork
2014-08-25 12:13           ` Oliver Neukum
  -- strict thread matches above, loose matches on Subject: below --
2014-07-24 11:56 Oliver Neukum
2014-07-28  5:30 ` David Miller
2014-07-28  9:22   ` Oliver Neukum

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).