Re: [PATCH] usb: gadget: f_rndis: fix usb_interface_descriptor for rndis

2014-09-29 Thread Heiko Schocher

Hello Lars,

sorry for my late answer ...

Am 24.09.2014 16:22, schrieb Lars Melin:

On 2014-09-24 20:12, Heiko Schocher wrote:

Hello Lars,

Am 24.09.2014 14:25, schrieb Lars Melin:

On 2014-09-24 13:48, Heiko Schocher wrote:

use the values for RNDIS over Ethernet as defined in
http://www.usb.org/developers/defined_class
(search for RDNIS):

- baseclass: 0xef (miscellaneous)
- subclass: 0x04
- protocol: 0x01


That is usb class, it is not the same thing as communication device class.

--- a/include/uapi/linux/usb/cdc.h
+++ b/include/uapi/linux/usb/cdc.h
@@ -12,6 +12,7 @@
#include linux/types.h
#define USB_CDC_SUBCLASS_ACM 0x02
+#define USB_CDC_SUBCLASS_RNDIS 0x04

No, no, no.
There is no CDC_SUBCLASS_RNDIS and you can not define one over an already used 
cdc subclass number, 0x04 is Multi-Channel Control Model


Ah, ok, so I have to define this values in a new header file, as there
is no current file for the USB_CLASS_MISC defines? Or is there a proper
place for them?

BTW: where do I find the cdc subclass number, 0x04 is Multi-Channel
Control Model define?

bye,
Heiko


You can still find the original specification usbcdc11.pdf on the net if you 
google for it, it has been pulled from usb.org where you could download it 
until a few years ago.
It is old but covers a lot of what you need to know.


Hmm.. maybe I am to dummy for finding this docment...

http://www.usb.org/results?q=usbcdc11.pdfsubmit=Search

does not find this document ... could you send me a direct link?

I found with the above search:

http://www.usb.org/developers/defined_class

and this site, exactly describes the values for RNDIS over ethernet,
as my patch changes [1]


Linux has afaik only the cdc.h definition file, everything else is coded by 
class/subclass in respectively drivers when needed.


why not in header files? I thought, magical values are not welcome
in source code ...

As for the is_rndis() function case, this function is defined in
2 places:

- drivers/net/usb/cdc_ether.c
- drivers/usb/core/generic.c

Has this a special reason? This seems suboptimal to me ...


02/02/ff or e0/01/03 are the most common interface attribute for rndis, both of 
them together with a data interface with attributes 0a/00/00.


I must admit, I am not a USB nor a RNDIS expert ...


Please check the whitelisting in drivers/net/usb/rndis_host.c and also 
blacklistings in other net drivers under the same path, it should give you an 
idea how to bind an interface to a specific driver by interface attributes 
and/or usb vid:pid.
You should be able to do the same for your particular device.


Hmm.. I did not understand you here ... so, one step back:

I got from a customer this patch (in a similiar version) and
he did tests with [3] and saw, that a board which runs linux,
is seen in [3] with the values [2] ... so he changed the
values in drivers/usb/gadget/function/f_rndis.c to the
values [1], which are documented in [4] and with them
the test [3] is happy ... and the file
Documentation/usb/linux.inf is not longer needed on the
windows pc!

So he (and at the end I too) thought, that this is the proper
way to make [3] happy ... (maybe [3] is incorrect ? )

Is current ML code correct? And if yes, why?

If the values [2] in current ML linux are correct,
could you say me, where they are documented?

(and sorry for my stupid questions ...)

Thanks!

bye,
Heiko

[1] values which my patch sets for RNDIS over ethernet
- baseclass: 0xef (miscellaneous)
- subclass: 0x04
- protocol: 0x01

[2] currently used values for RNDIS over ethernet
- baseclass: 0x02 (USB_CLASS_COMM)
- subclass: 0x02
- protocol: 0xff

[3] USB Compliance test suite which runs Windows, see:
http://www.usb.org/developers/tools/usb20_tools/#usb20cv

[4] http://www.usb.org/developers/defined_class
--
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] usb: gadget: f_rndis: fix usb_interface_descriptor for rndis

2014-09-29 Thread Lars Melin

On 2014-09-29 19:11, Heiko Schocher wrote:

Hello Lars,

sorry for my late answer ...

Am 24.09.2014 16:22, schrieb Lars Melin:

On 2014-09-24 20:12, Heiko Schocher wrote:

Hello Lars,

Am 24.09.2014 14:25, schrieb Lars Melin:

On 2014-09-24 13:48, Heiko Schocher wrote:

use the values for RNDIS over Ethernet as defined in
http://www.usb.org/developers/defined_class
(search for RDNIS):

- baseclass: 0xef (miscellaneous)
- subclass: 0x04
- protocol: 0x01

That is usb class, it is not the same thing as communication device 
class.

--- a/include/uapi/linux/usb/cdc.h
+++ b/include/uapi/linux/usb/cdc.h
@@ -12,6 +12,7 @@
#include linux/types.h
#define USB_CDC_SUBCLASS_ACM 0x02
+#define USB_CDC_SUBCLASS_RNDIS 0x04

No, no, no.
There is no CDC_SUBCLASS_RNDIS and you can not define one over an 
already used cdc subclass number, 0x04 is Multi-Channel Control Model


Ah, ok, so I have to define this values in a new header file, as there
is no current file for the USB_CLASS_MISC defines? Or is there a proper
place for them?

BTW: where do I find the cdc subclass number, 0x04 is Multi-Channel
Control Model define?

bye,
Heiko


You can still find the original specification usbcdc11.pdf on the net 
if you google for it, it has been pulled from usb.org where you could 
download it until a few years ago.

It is old but covers a lot of what you need to know.


Hmm.. maybe I am to dummy for finding this docment...

http://www.usb.org/results?q=usbcdc11.pdfsubmit=Search

does not find this document ... could you send me a direct link?

I found with the above search:

http://www.usb.org/developers/defined_class


I don't know if it is a good idea to provide a link here to a document 
which usb.org has made unavailable, I told you to google for the file 
name , not to search for it on usb.org

and this site, exactly describes the values for RNDIS over ethernet,
as my patch changes [1]

Linux has afaik only the cdc.h definition file, everything else is 
coded by class/subclass in respectively drivers when needed.


why not in header files? I thought, magical values are not welcome
in source code ...



I was wrong, usb class definitions are included in 
../include/uapi/linux/usb/ch9.h

As for the is_rndis() function case, this function is defined in
2 places:

- drivers/net/usb/cdc_ether.c
- drivers/usb/core/generic.c

Has this a special reason? This seems suboptimal to me ...
Yes it has, but the core driver is not an interface driver so it is not 
of relevance in this case.
cdc_ether handles interfaces of device connected to the usb bus, not 
interfaces of gadget devices

created by linux.

I got from a customer this patch (in a similiar version) and
he did tests with [3] and saw, that a board which runs linux,
is seen in [3] with the values [2] ... so he changed the
values in drivers/usb/gadget/function/f_rndis.c to the
values [1], which are documented in [4] and with them
the test [3] is happy ... and the file
Documentation/usb/linux.inf is not longer needed on the
windows pc!

The patch from your customer removed  the most common rndis interface 
attributes and substituted them
with one of many other interface attributes which Microsoft uses, this 
is not the right way of doing it.
Why did he patch  ../core/generic.c  and ../net/usb/cdc_ether.c  if he 
wants to change the interface attributes of g_rndis?



Lars



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


[PATCH] usb: gadget: f_rndis: fix usb_interface_descriptor for rndis

2014-09-24 Thread Heiko Schocher
use the values for RNDIS over Ethernet as defined in
http://www.usb.org/developers/defined_class
(search for RDNIS):

- baseclass: 0xef (miscellaneous)
- subclass: 0x04
- protocol: 0x01

with this setings the file in Documentation/usb/linux.inf is
obsolete.

Signed-off-by: Heiko Schocher h...@denx.de

---

Cc: Felipe Balbi ba...@ti.com
Cc: Greg Kroah-Hartman gre...@suse.de
Cc: linux-usb@vger.kernel.org
Cc: linux-ker...@vger.kernel.org
Cc: Oliver Neukum oli...@neukum.name
Cc: net...@vger.kernel.org
Cc: linux-...@vger.kernel.org
Cc: Andrzej Pietrasiewicz andrze...@samsung.com
Cc: Michal Nazarewicz min...@mina86.com
Cc: Kyungmin Park kyungmin.p...@samsung.com
Cc: Dan Carpenter dan.carpen...@oracle.com
Cc: Macpaul Lin macp...@gmail.com

Tested with the USB Compliance test suite which runs Windows, see:
http://www.usb.org/developers/tools/usb20_tools/#usb20cv

 drivers/net/usb/cdc_ether.c   | 6 +++---
 drivers/usb/core/generic.c| 6 +++---
 drivers/usb/gadget/function/f_rndis.c | 6 +++---
 include/uapi/linux/usb/cdc.h  | 3 +++
 4 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
index 2a32d91..9c216c2 100644
--- a/drivers/net/usb/cdc_ether.c
+++ b/drivers/net/usb/cdc_ether.c
@@ -35,9 +35,9 @@
 
 static int is_rndis(struct usb_interface_descriptor *desc)
 {
-   return (desc-bInterfaceClass == USB_CLASS_COMM 
-   desc-bInterfaceSubClass == 2 
-   desc-bInterfaceProtocol == 0xff);
+   return (desc-bInterfaceClass == USB_CLASS_MISC 
+   desc-bInterfaceSubClass == USB_CDC_SUBCLASS_RNDIS 
+   desc-bInterfaceProtocol == USB_CDC_RNDIS_PROTO_ETH);
 }
 
 static int is_activesync(struct usb_interface_descriptor *desc)
diff --git a/drivers/usb/core/generic.c b/drivers/usb/core/generic.c
index 358ca8d..a2a4e05 100644
--- a/drivers/usb/core/generic.c
+++ b/drivers/usb/core/generic.c
@@ -28,9 +28,9 @@ static inline const char *plural(int n)
 
 static int is_rndis(struct usb_interface_descriptor *desc)
 {
-   return desc-bInterfaceClass == USB_CLASS_COMM
-desc-bInterfaceSubClass == 2
-desc-bInterfaceProtocol == 0xff;
+   return desc-bInterfaceClass == USB_CLASS_MISC
+desc-bInterfaceSubClass == USB_CDC_SUBCLASS_RNDIS
+desc-bInterfaceProtocol == USB_CDC_RNDIS_PROTO_ETH;
 }
 
 static int is_activesync(struct usb_interface_descriptor *desc)
diff --git a/drivers/usb/gadget/function/f_rndis.c 
b/drivers/usb/gadget/function/f_rndis.c
index ddb09dc..cc06046 100644
--- a/drivers/usb/gadget/function/f_rndis.c
+++ b/drivers/usb/gadget/function/f_rndis.c
@@ -117,9 +117,9 @@ static struct usb_interface_descriptor rndis_control_intf = 
{
/* .bInterfaceNumber = DYNAMIC */
/* status endpoint is optional; this could be patched later */
.bNumEndpoints =1,
-   .bInterfaceClass =  USB_CLASS_COMM,
-   .bInterfaceSubClass =   USB_CDC_SUBCLASS_ACM,
-   .bInterfaceProtocol =   USB_CDC_ACM_PROTO_VENDOR,
+   .bInterfaceClass =  USB_CLASS_MISC,
+   .bInterfaceSubClass =   USB_CDC_SUBCLASS_RNDIS,
+   .bInterfaceProtocol =   USB_CDC_RNDIS_PROTO_ETH,
/* .iInterface = DYNAMIC */
 };
 
diff --git a/include/uapi/linux/usb/cdc.h b/include/uapi/linux/usb/cdc.h
index b6a9cdd..8e8fc85 100644
--- a/include/uapi/linux/usb/cdc.h
+++ b/include/uapi/linux/usb/cdc.h
@@ -12,6 +12,7 @@
 #include linux/types.h
 
 #define USB_CDC_SUBCLASS_ACM   0x02
+#define USB_CDC_SUBCLASS_RNDIS 0x04
 #define USB_CDC_SUBCLASS_ETHERNET  0x06
 #define USB_CDC_SUBCLASS_WHCM  0x08
 #define USB_CDC_SUBCLASS_DMM   0x09
@@ -31,6 +32,8 @@
 #define USB_CDC_ACM_PROTO_AT_CDMA  6
 #define USB_CDC_ACM_PROTO_VENDOR   0xff
 
+#define USB_CDC_RNDIS_PROTO_ETH1
+
 #define USB_CDC_PROTO_EEM  7
 
 #define USB_CDC_NCM_PROTO_NTB  1
-- 
1.8.3.1

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


Re: [PATCH] usb: gadget: f_rndis: fix usb_interface_descriptor for rndis

2014-09-24 Thread Michal Nazarewicz
On Wed, Sep 24 2014, Heiko Schocher h...@denx.de wrote:
 use the values for RNDIS over Ethernet as defined in
 http://www.usb.org/developers/defined_class
 (search for RDNIS):

 - baseclass: 0xef (miscellaneous)
 - subclass: 0x04
 - protocol: 0x01

 with this setings the file in Documentation/usb/linux.inf is
 obsolete.

 Signed-off-by: Heiko Schocher h...@denx.de

 ---

 Cc: Felipe Balbi ba...@ti.com
 Cc: Greg Kroah-Hartman gre...@suse.de
 Cc: linux-usb@vger.kernel.org
 Cc: linux-ker...@vger.kernel.org
 Cc: Oliver Neukum oli...@neukum.name
 Cc: net...@vger.kernel.org
 Cc: linux-...@vger.kernel.org
 Cc: Andrzej Pietrasiewicz andrze...@samsung.com
 Cc: Michal Nazarewicz min...@mina86.com
 Cc: Kyungmin Park kyungmin.p...@samsung.com
 Cc: Dan Carpenter dan.carpen...@oracle.com
 Cc: Macpaul Lin macp...@gmail.com

 Tested with the USB Compliance test suite which runs Windows, see:
 http://www.usb.org/developers/tools/usb20_tools/#usb20cv

  drivers/net/usb/cdc_ether.c   | 6 +++---
  drivers/usb/core/generic.c| 6 +++---
  drivers/usb/gadget/function/f_rndis.c | 6 +++---
  include/uapi/linux/usb/cdc.h  | 3 +++
  4 files changed, 12 insertions(+), 9 deletions(-)

 diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
 index 2a32d91..9c216c2 100644
 --- a/drivers/net/usb/cdc_ether.c
 +++ b/drivers/net/usb/cdc_ether.c
 @@ -35,9 +35,9 @@
  
  static int is_rndis(struct usb_interface_descriptor *desc)
  {
 - return (desc-bInterfaceClass == USB_CLASS_COMM 
 - desc-bInterfaceSubClass == 2 
 - desc-bInterfaceProtocol == 0xff);
 + return (desc-bInterfaceClass == USB_CLASS_MISC 
 + desc-bInterfaceSubClass == USB_CDC_SUBCLASS_RNDIS 
 + desc-bInterfaceProtocol == USB_CDC_RNDIS_PROTO_ETH);
  }

Does that mean that new kernels will stop working with old RNDIs
gadgets because they stop recognising them as RNDIS?  I feel like this
function should accept both, i.e.:

return (desc-bInterfaceClass == USB_CLASS_COMM 
desc-bInterfaceSubClass == 2 
desc-bInterfaceProtocol == 0xff) ||
   (desc-bInterfaceClass == USB_CLASS_MISC 
desc-bInterfaceSubClass == USB_CDC_SUBCLASS_RNDIS 
desc-bInterfaceProtocol == USB_CDC_RNDIS_PROTO_ETH);

  
  static int is_activesync(struct usb_interface_descriptor *desc)
 diff --git a/drivers/usb/core/generic.c b/drivers/usb/core/generic.c
 index 358ca8d..a2a4e05 100644
 --- a/drivers/usb/core/generic.c
 +++ b/drivers/usb/core/generic.c
 @@ -28,9 +28,9 @@ static inline const char *plural(int n)
  
  static int is_rndis(struct usb_interface_descriptor *desc)
  {
 - return desc-bInterfaceClass == USB_CLASS_COMM
 -  desc-bInterfaceSubClass == 2
 -  desc-bInterfaceProtocol == 0xff;
 + return desc-bInterfaceClass == USB_CLASS_MISC
 +  desc-bInterfaceSubClass == USB_CDC_SUBCLASS_RNDIS
 +  desc-bInterfaceProtocol == USB_CDC_RNDIS_PROTO_ETH;
  }

Ditto.

  
  static int is_activesync(struct usb_interface_descriptor *desc)
 diff --git a/drivers/usb/gadget/function/f_rndis.c 
 b/drivers/usb/gadget/function/f_rndis.c
 index ddb09dc..cc06046 100644
 --- a/drivers/usb/gadget/function/f_rndis.c
 +++ b/drivers/usb/gadget/function/f_rndis.c
 @@ -117,9 +117,9 @@ static struct usb_interface_descriptor rndis_control_intf 
 = {
   /* .bInterfaceNumber = DYNAMIC */
   /* status endpoint is optional; this could be patched later */
   .bNumEndpoints =1,
 - .bInterfaceClass =  USB_CLASS_COMM,
 - .bInterfaceSubClass =   USB_CDC_SUBCLASS_ACM,
 - .bInterfaceProtocol =   USB_CDC_ACM_PROTO_VENDOR,
 + .bInterfaceClass =  USB_CLASS_MISC,
 + .bInterfaceSubClass =   USB_CDC_SUBCLASS_RNDIS,
 + .bInterfaceProtocol =   USB_CDC_RNDIS_PROTO_ETH,
   /* .iInterface = DYNAMIC */
  };
  
 diff --git a/include/uapi/linux/usb/cdc.h b/include/uapi/linux/usb/cdc.h
 index b6a9cdd..8e8fc85 100644
 --- a/include/uapi/linux/usb/cdc.h
 +++ b/include/uapi/linux/usb/cdc.h
 @@ -12,6 +12,7 @@
  #include linux/types.h
  
  #define USB_CDC_SUBCLASS_ACM 0x02
 +#define USB_CDC_SUBCLASS_RNDIS   0x04
  #define USB_CDC_SUBCLASS_ETHERNET0x06
  #define USB_CDC_SUBCLASS_WHCM0x08
  #define USB_CDC_SUBCLASS_DMM 0x09
 @@ -31,6 +32,8 @@
  #define USB_CDC_ACM_PROTO_AT_CDMA6
  #define USB_CDC_ACM_PROTO_VENDOR 0xff
  
 +#define USB_CDC_RNDIS_PROTO_ETH  1
 +
  #define USB_CDC_PROTO_EEM7
  
  #define USB_CDC_NCM_PROTO_NTB1

-- 
Best regards, _ _
.o. | Liege of Serenely Enlightened Majesty of  o' \,=./ `o
..o | Computer Science,  Michał “mina86” Nazarewicz(o o)
ooo +--m...@google.com--xmpp:min...@jabber.org--ooO--(_)--Ooo--
--
To unsubscribe from this list: send the 

Re: [PATCH] usb: gadget: f_rndis: fix usb_interface_descriptor for rndis

2014-09-24 Thread Lars Melin

On 2014-09-24 13:48, Heiko Schocher wrote:

use the values for RNDIS over Ethernet as defined in
http://www.usb.org/developers/defined_class
(search for RDNIS):

- baseclass: 0xef (miscellaneous)
- subclass: 0x04
- protocol: 0x01


That is usb class, it is not the same thing as communication device class.

--- a/include/uapi/linux/usb/cdc.h
+++ b/include/uapi/linux/usb/cdc.h
@@ -12,6 +12,7 @@
  #include linux/types.h
  
  #define USB_CDC_SUBCLASS_ACM			0x02

+#define USB_CDC_SUBCLASS_RNDIS 0x04

No, no, no.
There is no CDC_SUBCLASS_RNDIS and you can not define one over an 
already used cdc subclass number,  0x04 is  Multi-Channel Control Model


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


Re: [PATCH] usb: gadget: f_rndis: fix usb_interface_descriptor for rndis

2014-09-24 Thread Heiko Schocher

Hello Michal,

Am 24.09.2014 11:38, schrieb Michal Nazarewicz:

On Wed, Sep 24 2014, Heiko Schocherh...@denx.de  wrote:

use the values for RNDIS over Ethernet as defined in
http://www.usb.org/developers/defined_class
(search for RDNIS):

- baseclass: 0xef (miscellaneous)
- subclass: 0x04
- protocol: 0x01

with this setings the file in Documentation/usb/linux.inf is
obsolete.

Signed-off-by: Heiko Schocherh...@denx.de

---

Cc: Felipe Balbiba...@ti.com
Cc: Greg Kroah-Hartmangre...@suse.de
Cc: linux-usb@vger.kernel.org
Cc: linux-ker...@vger.kernel.org
Cc: Oliver Neukumoli...@neukum.name
Cc: net...@vger.kernel.org
Cc: linux-...@vger.kernel.org
Cc: Andrzej Pietrasiewiczandrze...@samsung.com
Cc: Michal Nazarewiczmin...@mina86.com
Cc: Kyungmin Parkkyungmin.p...@samsung.com
Cc: Dan Carpenterdan.carpen...@oracle.com
Cc: Macpaul Linmacp...@gmail.com

Tested with the USB Compliance test suite which runs Windows, see:
http://www.usb.org/developers/tools/usb20_tools/#usb20cv

  drivers/net/usb/cdc_ether.c   | 6 +++---
  drivers/usb/core/generic.c| 6 +++---
  drivers/usb/gadget/function/f_rndis.c | 6 +++---
  include/uapi/linux/usb/cdc.h  | 3 +++
  4 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c
index 2a32d91..9c216c2 100644
--- a/drivers/net/usb/cdc_ether.c
+++ b/drivers/net/usb/cdc_ether.c
@@ -35,9 +35,9 @@

  static int is_rndis(struct usb_interface_descriptor *desc)
  {
-   return (desc-bInterfaceClass == USB_CLASS_COMM
-   desc-bInterfaceSubClass == 2
-   desc-bInterfaceProtocol == 0xff);
+   return (desc-bInterfaceClass == USB_CLASS_MISC
+   desc-bInterfaceSubClass == USB_CDC_SUBCLASS_RNDIS
+   desc-bInterfaceProtocol == USB_CDC_RNDIS_PROTO_ETH);
  }


Does that mean that new kernels will stop working with old RNDIs
gadgets because they stop recognising them as RNDIS?  I feel like this
function should accept both, i.e.:


Hmm.. I am not a usb guru ... but I think, yes, you are right.
I add this to a v2 (if this patch has a chance to go in mainline).

Thanks!

bye,
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] usb: gadget: f_rndis: fix usb_interface_descriptor for rndis

2014-09-24 Thread Heiko Schocher

Hello Lars,

Am 24.09.2014 14:25, schrieb Lars Melin:

On 2014-09-24 13:48, Heiko Schocher wrote:

use the values for RNDIS over Ethernet as defined in
http://www.usb.org/developers/defined_class
(search for RDNIS):

- baseclass: 0xef (miscellaneous)
- subclass: 0x04
- protocol: 0x01


That is usb class, it is not the same thing as communication device class.

--- a/include/uapi/linux/usb/cdc.h
+++ b/include/uapi/linux/usb/cdc.h
@@ -12,6 +12,7 @@
#include linux/types.h
#define USB_CDC_SUBCLASS_ACM 0x02
+#define USB_CDC_SUBCLASS_RNDIS 0x04

No, no, no.
There is no CDC_SUBCLASS_RNDIS and you can not define one over an already used 
cdc subclass number, 0x04 is Multi-Channel Control Model


Ah, ok, so I have to define this values in a new header file, as there
is no current file for the USB_CLASS_MISC defines? Or is there a proper
place for them?

BTW: where do I find the cdc subclass number, 0x04 is Multi-Channel
Control Model define?

bye,
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
--
To unsubscribe from this list: send the line unsubscribe linux-usb in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] usb: gadget: f_rndis: fix usb_interface_descriptor for rndis

2014-09-24 Thread Lars Melin

On 2014-09-24 20:12, Heiko Schocher wrote:

Hello Lars,

Am 24.09.2014 14:25, schrieb Lars Melin:

On 2014-09-24 13:48, Heiko Schocher wrote:

use the values for RNDIS over Ethernet as defined in
http://www.usb.org/developers/defined_class
(search for RDNIS):

- baseclass: 0xef (miscellaneous)
- subclass: 0x04
- protocol: 0x01

That is usb class, it is not the same thing as communication device 
class.

--- a/include/uapi/linux/usb/cdc.h
+++ b/include/uapi/linux/usb/cdc.h
@@ -12,6 +12,7 @@
#include linux/types.h
#define USB_CDC_SUBCLASS_ACM 0x02
+#define USB_CDC_SUBCLASS_RNDIS 0x04

No, no, no.
There is no CDC_SUBCLASS_RNDIS and you can not define one over an 
already used cdc subclass number, 0x04 is Multi-Channel Control Model


Ah, ok, so I have to define this values in a new header file, as there
is no current file for the USB_CLASS_MISC defines? Or is there a proper
place for them?

BTW: where do I find the cdc subclass number, 0x04 is Multi-Channel
Control Model define?

bye,
Heiko


You can still find the original specification usbcdc11.pdf on the net if 
you google for it, it has been pulled from usb.org where you could 
download it until a few years ago.

It is old but covers a lot of what you need to know.

Linux has afaik only the cdc.h definition file, everything else is coded 
by class/subclass in respectively drivers when needed.
02/02/ff  or  e0/01/03  are the most common interface attribute for 
rndis,  both of them together with a data interface with attributes 
0a/00/00.
Please check the whitelisting in drivers/net/usb/rndis_host.c  and also 
blacklistings in other net drivers under the same path, it should give 
you an idea how to bind an interface to a specific driver by interface 
attributes and/or usb vid:pid.

You should be able to do the same for your particular device.

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