lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1333874813-3861-1-git-send-email-linus.walleij@linaro.org>
Date:	Sun,  8 Apr 2012 10:46:53 +0200
From:	Linus Walleij <linus.walleij@...aro.org>
To:	netdev@...r.kernel.org, linux-usb@...r.kernel.org,
	Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
	"David S. Miller" <davem@...emloft.net>,
	Felipe Balbi <balbi@...com>
Cc:	Jussi Kivilinna <jussi.kivilinna@...et.fi>,
	Haiyang Zhang <haiyangz@...rosoft.com>,
	Wei Yongjun <yongjun_wei@...ndmicro.com.cn>,
	Ben Hutchings <ben@...adent.org.uk>,
	Linus Walleij <linus.walleij@...aro.org>
Subject: [PATCH 00/14] usb/net: rndis: first step toward consolidation

The kernel currently contains four (4) disparate implementations of
different aspects of the RNDIS (Remote Network Driver Interface
Specification) protocol. This protocol is a way of marshalling the
Windows network driver model to external devices over different
bearers.

- drivers/net/usb/rndis_host: implements the protocol for USB
  ethernet (etc) dongles, an alternative to CDC ethernet. For
  example some mobile phones also expose this interface for
  easy networking.

- drivers/net/wireless/rndis_wlan: same thing for WLAN.

- drivers/usb/gadget/*rndis: the embedded counterpart, say you
  want to create one of the above devices.

- drivers/net/hyperv/rndis_filter: when virtualizing Linux inside
  windows, windows helpfully exposes a virtual "network card" which
  also use RNDIS. (Hm, would have been helpful to use virtio
  instead I guess but whatever.)

This disparate implementation isn't particularly smart, I just recently
discovered this and made this initial attempt att consolidation which
shows how we can cut down code by some 250 lines in constant definitions
alone.

This is just a starter - if we apply this we can also move over a lot
of data types to <linux/rndis.h> and cut down even more. Then we can
potentially move code and consolidate code in a central implementation
of the protocol.

However this requires some involvement of the authors of the disparate
implementations, who need to test and help out ... I have no way to
really test this consolidation - I've dug up a USB dongle but I have
no easily patched embedded controller with a slave interface right now
and I have no Windows server with hyperv to test it on.

So if you like this, let's proceed, but if you're all in "I wanna keep
this one implementation in my corner" I'll just give up right now.

So: what do you think?

Yours,
Linus Walleij


Linus Walleij (14):
  usb/net: rndis: inline the cpu_to_le32() macro
  usb/net: rndis: break out <linux/rndis.h> defines
  usb/net: rndis: remove duplicate definitions
  usb/net: rndis: remove ambigous status codes
  usb/net: rndis: eliminate first set of duplicate OIDs
  usb/net: rndis: merge duplicate 802_* OIDs
  usb/net: rndis: delete surplus defines
  usb/net: rndis: group all status codes together
  usb/net: rndis: merge media type definitions
  usb/net: rndis: delete duplicate packet types
  usb/net: rndis: move and namespace PnP defines
  usb/net: rndis: merge command codes
  usb/net: rndis: fixup a few name prefixes
  usb/net: rndis: move bus message definition

 drivers/net/hyperv/hyperv_net.h   |  290 +----------------------------
 drivers/net/hyperv/rndis_filter.c |   46 +++---
 drivers/net/usb/rndis_host.c      |   52 +++---
 drivers/net/wireless/rndis_wlan.c |  295 ++++++++++++-----------------
 drivers/usb/gadget/f_rndis.c      |    6 +-
 drivers/usb/gadget/ndis.h         |  164 ----------------
 drivers/usb/gadget/rndis.c        |  271 +++++++++++++-------------
 drivers/usb/gadget/rndis.h        |   48 +-----
 include/linux/rndis.h             |  378 +++++++++++++++++++++++++++++++++++++
 include/linux/usb/rndis_host.h    |   66 +-------
 10 files changed, 694 insertions(+), 922 deletions(-)
 create mode 100644 include/linux/rndis.h

-- 
1.7.7.6

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ