Hey,
I've encountered that same problem a few days ago, found this thread
and these (unmerged) patches, "ported" them to a more current version
of the kernel (wasn't much work, let's be honest), and I was wondering
if it would be possible to get them merged, because this is still a
problem with cdc_ncm.
Here's the three "up to date" patches (based on 5.8-rc5), they work
insofar as I'm running with them, the bug isn't there anymore (I get
ethernet multicast packets correctly), and there's no obvious bug. I'm
not a dev though, so I have no idea if these are formatted correctly,
if the patch separation is correct, or anything like that, I just think
it would be great if this could be merged into mainline!
On Sun, 2018-07-01 at 11:05 +0200, Miguel Rodríguez Pérez wrote:
quoted hunk ↗ jump to hunk
Remove some unneded varibles to make the code easier to read
and, replace the generic usb_control_msg function for the
more specific usbnet_write_cmd.
Signed-off-by: Miguel Rodríguez Pérez <redacted>
NACKED-BY: Oliver Neukum [off-list ref]
---
drivers/net/usb/cdc_ether.c | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)
diff --git a/drivers/net/usb/cdc_ether.c
b/drivers/net/usb/cdc_ether.c
index 178b956501a7..815ed0dc18fe 100644
--- a/drivers/net/usb/cdc_ether.c
+++ b/drivers/net/usb/cdc_ether.c
@@ -77,9 +77,7 @@ static const u8 mbm_guid[16] = {
static void usbnet_cdc_update_filter(struct usbnet *dev)
{
- struct cdc_state *info = (void *) &dev->data;
- struct usb_interface *intf = info->control;
- struct net_device *net = dev->net;
+ struct net_device *net = dev->net;
u16 cdc_filter = USB_CDC_PACKET_TYPE_DIRECTED
| USB_CDC_PACKET_TYPE_BROADCAST;@@ -93,16 +91,13 @@ static void usbnet_cdc_update_filter(struct
usbnet *dev)
if (!netdev_mc_empty(net) || (net->flags & IFF_ALLMULTI))
cdc_filter |= USB_CDC_PACKET_TYPE_ALL_MULTICAST;
- usb_control_msg(dev->udev,
- usb_sndctrlpipe(dev->udev, 0),
+ usbnet_write_cmd(dev,
USB_CDC_SET_ETHERNET_PACKET_FILTER,
- USB_TYPE_CLASS | USB_RECIP_INTERFACE,
+ USB_TYPE_CLASS | USB_DIR_OUT |
USB_RECIP_INTERFACE,
cdc_filter,
- intf->cur_altsetting->desc.bInterfaceNumber,
+ dev->intf->cur_altsetting-
quoted
desc.bInterfaceNumber,
NULL,
- 0,
- USB_CTRL_SET_TIMEOUT
- );
+ 0);
}
/* probes control interface, claims data interface, collects the
bulk
--
Wxcafé [off-list ref]