Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 340600ab authored by David Brownell's avatar David Brownell Committed by Greg Kroah-Hartman
Browse files

[PATCH] USB: rndis updates (mostly cleanup)



Some bugfixes and lots of cleanup (net code shrink):

  - On reset, force the RNDIS state machine its initial state

  - Hook up the RNDIS (outgoing) filters to the CDC mechanism

  - Lots of cleanup:
     * Eliminate duplicate copy of OID table;
     * Unify handlying of the OID "query" response data pointer;
     * Reduce code duplication for calculating query response lengths;
     * Remove some checks for "can't happen" errors;
     * Get rid of debugging #ifdefs by making the debug flag an integer level

Most of the patch, by volume, relates to those query response cleanups.
It incidentally shaves off a few hundred bytes of object code.

Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 247f3105
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -95,6 +95,7 @@ static const char driver_desc [] = DRIVER_DESC;
#include "rndis.h"
#else
#define rndis_init()	0
#define rndis_uninit(x)	do{}while(0)
#define rndis_exit()	do{}while(0)
#endif

@@ -395,7 +396,8 @@ static inline int BITRATE(struct usb_gadget *g)
#define STRING_SUBSET			8
#define STRING_RNDIS			9

#define USB_BUFSIZ	256		/* holds our biggest descriptor */
/* holds our biggest descriptor (or RNDIS response) */
#define USB_BUFSIZ	256

/*
 * This device advertises one configuration, eth_config, unless RNDIS
@@ -1124,6 +1126,7 @@ static void eth_reset_config (struct eth_dev *dev)

	netif_stop_queue (dev->net);
	netif_carrier_off (dev->net);
	rndis_uninit(dev->rndis_config);

	/* disable endpoints, forcing (synchronous) completion of
	 * pending i/o.  then free the requests.
@@ -2565,7 +2568,7 @@ fail0:
		/* these set up a lot of the OIDs that RNDIS needs */
		rndis_set_host_mac (dev->rndis_config, dev->host_mac);
		if (rndis_set_param_dev (dev->rndis_config, dev->net,
					 &dev->stats))
					 &dev->stats, &dev->cdc_filter))
			goto fail0;
		if (rndis_set_param_vendor (dev->rndis_config, vendorID,
					    manufacturer))
+7 −7
Original line number Diff line number Diff line
@@ -47,17 +47,17 @@ struct NDIS_PM_WAKE_UP_CAPABILITIES {
#define NDIS_DEVICE_WAKE_ON_MAGIC_PACKET_ENABLE   0x00000004

struct NDIS_PNP_CAPABILITIES {
	u32					Flags;
	__le32					Flags;
	struct NDIS_PM_WAKE_UP_CAPABILITIES	WakeUpCapabilities;
};

struct NDIS_PM_PACKET_PATTERN {
	u32	Priority;
	u32	Reserved;
	u32	MaskSize;
	u32	PatternOffset;
	u32	PatternSize;
	u32	PatternFlags;
	__le32	Priority;
	__le32	Reserved;
	__le32	MaskSize;
	__le32	PatternOffset;
	__le32	PatternSize;
	__le32	PatternFlags;
};