From: joelw on
Okay I'm totally stumped.

I'm working on RNDIS USB device firmware. I've followed everything in the
RNDIS specification. Currently I can get device to show up as network
adapter. I can set it's IP address, etc, but no network traffic shows up at
my bulk end point.

What is the magic sequence that starts network traffic flowing to my bulk
endpoint?

I figured it was REMOTE_NDIS_INDICATE_STATUS_MSG indicating
RNDIS_STATUS_MEDIA_CONNECT. This has had no effect.

USB Host is XP SP2.

Help!!

From: Pankaj Garg on
There is no magic sequence, once you successfully initialize your device, it
should work. This might be due to you replying incorrectly to one of the OID
requests. What are your supported OID list?

Also, What happens if you do ping etc? Also initialize message has certain
parameters like packet size etc, what do you set in there?

--
Pankaj Garg
This posting is provided "AS IS" with no warranties and confers no rights.

"joelw" <joelw(a)discussions.microsoft.com> wrote in message
news:9D5037DD-6B5E-457B-9B66-5F546CAA428E(a)microsoft.com...
> Okay I'm totally stumped.
>
> I'm working on RNDIS USB device firmware. I've followed everything in the
> RNDIS specification. Currently I can get device to show up as network
> adapter. I can set it's IP address, etc, but no network traffic shows up
at
> my bulk end point.
>
> What is the magic sequence that starts network traffic flowing to my bulk
> endpoint?
>
> I figured it was REMOTE_NDIS_INDICATE_STATUS_MSG indicating
> RNDIS_STATUS_MEDIA_CONNECT. This has had no effect.
>
> USB Host is XP SP2.
>
> Help!!
>


From: joelw on

> There is no magic sequence, once you successfully initialize your device, it
> should work. This might be due to you replying incorrectly to one of the OID
> requests. What are your supported OID list?

UINT RNdisMddSupportedOids[] =
{
OID_GEN_SUPPORTED_LIST,
OID_GEN_HARDWARE_STATUS,
OID_GEN_MEDIA_SUPPORTED,
OID_GEN_MEDIA_IN_USE,
OID_GEN_MAXIMUM_LOOKAHEAD,
OID_GEN_MAXIMUM_FRAME_SIZE,
OID_GEN_MAXIMUM_TOTAL_SIZE,
OID_GEN_MAC_OPTIONS,
OID_GEN_PROTOCOL_OPTIONS,
OID_GEN_LINK_SPEED,
OID_GEN_TRANSMIT_BUFFER_SPACE,
OID_GEN_RECEIVE_BUFFER_SPACE,
OID_GEN_TRANSMIT_BLOCK_SIZE,
OID_GEN_RECEIVE_BLOCK_SIZE,
OID_GEN_VENDOR_DESCRIPTION,
OID_GEN_VENDOR_ID,
OID_GEN_DRIVER_VERSION,
OID_GEN_CURRENT_PACKET_FILTER,
OID_GEN_CURRENT_LOOKAHEAD,
OID_GEN_XMIT_OK,
OID_GEN_RCV_OK,
OID_GEN_XMIT_ERROR,
OID_GEN_RCV_CRC_ERROR,
OID_GEN_RCV_ERROR,
OID_GEN_RCV_NO_BUFFER,
OID_802_3_PERMANENT_ADDRESS,
OID_802_3_CURRENT_ADDRESS,
OID_802_3_MULTICAST_LIST,
OID_802_3_MAXIMUM_LIST_SIZE,
OID_802_3_RCV_ERROR_ALIGNMENT,
OID_802_3_XMIT_ONE_COLLISION,
OID_802_3_XMIT_MORE_COLLISIONS,
OID_GEN_MAXIMUM_SEND_PACKETS,
OID_GEN_VENDOR_DRIVER_VERSION,
OID_GEN_MEDIA_CONNECT_STATUS,
};

> Also, What happens if you do ping etc? Also initialize message has certain
> parameters like packet size etc, what do you set in there?

Ping does not trigger a packet, just more OID queries. I'm using WinCE 5.0
RNDIS code as working example.

I can email Ellisys traces if interested.

What does work (Linux Ethernet Gadget):
I've traced the Linux Ethernet Gadget with Ellysis. It takes USB
configuration 2. This driver starts recieving packets withing 2 seconds.
Currently the only visible difference appears to be the USB config 2.


Joel
From: Pankaj Garg on
Your OID list seems to have all the required OIDs (though i will double
check that later on). But since you are getting OIDs correctly but not any
data messages this makes me suspect that the problem is either in your OID
handling or INITIALIZE_CMPLT message handling. I wish i could be more
specific but without source code, its hard to take a guess where the problem
might be.

Which OID do you get when you do a ping? This might provide some hint as to
whats wrong.

--
Pankaj Garg
This posting is provided "AS IS" with no warranties and confers no rights.

"joelw" <joelw(a)discussions.microsoft.com> wrote in message
news:D14C851A-9F04-4EF6-A71C-A58C5C0482F8(a)microsoft.com...
>
> > There is no magic sequence, once you successfully initialize your
device, it
> > should work. This might be due to you replying incorrectly to one of the
OID
> > requests. What are your supported OID list?
>
> UINT RNdisMddSupportedOids[] =
> {
> OID_GEN_SUPPORTED_LIST,
> OID_GEN_HARDWARE_STATUS,
> OID_GEN_MEDIA_SUPPORTED,
> OID_GEN_MEDIA_IN_USE,
> OID_GEN_MAXIMUM_LOOKAHEAD,
> OID_GEN_MAXIMUM_FRAME_SIZE,
> OID_GEN_MAXIMUM_TOTAL_SIZE,
> OID_GEN_MAC_OPTIONS,
> OID_GEN_PROTOCOL_OPTIONS,
> OID_GEN_LINK_SPEED,
> OID_GEN_TRANSMIT_BUFFER_SPACE,
> OID_GEN_RECEIVE_BUFFER_SPACE,
> OID_GEN_TRANSMIT_BLOCK_SIZE,
> OID_GEN_RECEIVE_BLOCK_SIZE,
> OID_GEN_VENDOR_DESCRIPTION,
> OID_GEN_VENDOR_ID,
> OID_GEN_DRIVER_VERSION,
> OID_GEN_CURRENT_PACKET_FILTER,
> OID_GEN_CURRENT_LOOKAHEAD,
> OID_GEN_XMIT_OK,
> OID_GEN_RCV_OK,
> OID_GEN_XMIT_ERROR,
> OID_GEN_RCV_CRC_ERROR,
> OID_GEN_RCV_ERROR,
> OID_GEN_RCV_NO_BUFFER,
> OID_802_3_PERMANENT_ADDRESS,
> OID_802_3_CURRENT_ADDRESS,
> OID_802_3_MULTICAST_LIST,
> OID_802_3_MAXIMUM_LIST_SIZE,
> OID_802_3_RCV_ERROR_ALIGNMENT,
> OID_802_3_XMIT_ONE_COLLISION,
> OID_802_3_XMIT_MORE_COLLISIONS,
> OID_GEN_MAXIMUM_SEND_PACKETS,
> OID_GEN_VENDOR_DRIVER_VERSION,
> OID_GEN_MEDIA_CONNECT_STATUS,
> };
>
> > Also, What happens if you do ping etc? Also initialize message has
certain
> > parameters like packet size etc, what do you set in there?
>
> Ping does not trigger a packet, just more OID queries. I'm using WinCE
5.0
> RNDIS code as working example.
>
> I can email Ellisys traces if interested.
>
> What does work (Linux Ethernet Gadget):
> I've traced the Linux Ethernet Gadget with Ellysis. It takes USB
> configuration 2. This driver starts recieving packets withing 2 seconds.
> Currently the only visible difference appears to be the USB config 2.
>
>
> Joel


From: joelw on
In the specification it states traffic should start after device recieves
non-zero
OID_GEN_CURRENT_PACKET_FILTER. This doesn't happen.

Here's an example dialog. This shows up as Ethernet Adapter, but no network
traffic:


Host:
02 00 00 00 REMOTE_NDIS_INITIALIZE_MSG
18 00 00 00 MessageLength
02 00 00 00 RequestId
01 00 00 00 MajorVersion
00 00 00 00 MinorVersion
00 40 00 00 MaxTransferSize

Device:
02 00 00 80 REMOTE_NDIS_INITIALIZE_CMPLT
34 00 00 00 MessageLength
02 00 00 00 RequestId
00 00 00 00 Status
01 00 00 00 MajorVersion
00 00 00 00 MinorVersion
01 00 00 00 DeviceFlags
00 00 00 00 Medium
20 00 00 00 MaxPacketsPerTransfer
40 00 00 00 MaxTransferSize
00 00 00 00 PacketAlignmentFactor
00 00 00 00 AFListOffset
00 00 00 00 AFListSize

Host:
04 00 00 00 REMOTE_NDIS_QUERY_MSG
1C 00 00 00 MessageLength
03 00 00 00 RequestId
01 01 01 00 Oid
00 00 00 00 InformationBufferLength
14 00 00 00 InformationBufferOffset
00 00 00 00 DeviceVcHandle

Device:
04 00 00 80 REMOTE_NDIS_QUERY_CMPLT
7C 00 00 00 MessageLength
03 00 00 00 RequestId
00 00 00 00 Status
64 00 00 00 InformationBufferLength
10 00 00 00 InformationBufferOffset
01 01 01 00 OID_GEN_SUPPORTED_LIST
02 01 01 00 OID_GEN_HARDWARE_STATUS
03 01 01 00 OID_GEN_MEDIA_SUPPORTED
04 01 01 00 OID_GEN_MEDIA_IN_USE
06 01 01 00 OID_GEN_MAXIMUM_FRAME_SIZE
07 01 01 00 OID_GEN_LINK_SPEED
0A 01 01 00 OID_GEN_TRANSMIT_BLOCK_SIZE
0B 01 01 00 OID_GEN_RECEIVE_BLOCK_SIZE
0C 01 01 00 OID_GEN_VENDOR_ID
0D 01 01 00 OID_GEN_VENDOR_DESCRIPTION
0E 01 01 00 OID_GEN_CURRENT_PACKET_FILTER
11 01 01 00 OID_GEN_MAXIMUM_TOTAL_SIZE
14 01 01 00 OID_GEN_MEDIA_CONNECT_STATUS
01 01 02 00 OID_GEN_XMIT_OK
02 01 02 00 OID_GEN_RCV_OK
03 01 02 00 OID_GEN_XMIT_ERROR
04 01 02 00 OID_GEN_RCV_ERROR
05 01 02 00 OID_GEN_RCV_NO_BUFFER
01 01 01 01 OID_802_3_PERMANENT_ADDRESS
02 01 01 01 OID_802_3_CURRENT_ADDRESS
03 01 01 01 OID_802_3_MULTICAST_LIST
04 01 01 01 OID_802_3_MAXIMUM_LIST_SIZE
01 01 02 01 OID_802_3_RCV_ERROR_ALIGNMENT
02 01 02 01 OID_802_3_XMIT_ONE_COLLISION
03 01 02 01 OID_802_3_XMIT_MORE_COLLISIONS

Host:
04 00 00 00 REMOTE_NDIS_QUERY_MSG
20 00 00 00 MessageLength
04 00 00 00 RequestId
06 01 01 00 OID_GEN_MAXIMUM_FRAME_SIZE
04 00 00 00 InformationBufferLength
14 00 00 00 InformationBufferOffset
00 00 00 00 DeviceVcHandle
00 00 00 00

Device:
04 00 00 80 REMOTE_NDIS_QUERY_CMPLT
1C 00 00 00 MessageLength
04 00 00 00 RequestId
00 00 00 00 Status
04 00 00 00 InformationBufferLength
10 00 00 00 InformationBufferOffset
DC 05 00 00

Host:
04 00 00 00 REMOTE_NDIS_QUERY_MSG
20 00 00 00 MessageLength
05 00 00 00 RequestId
04 01 01 01 OID_802_3_MAXIMUM_LIST_SIZE
04 00 00 00 InformationBufferLength
14 00 00 00 InformationBufferOffset
00 00 00 00 DeviceVcHandle
00 00 00 00

Device:
04 00 00 80 REMOTE_NDIS_QUERY_CMPLT
1C 00 00 00 MessageLength
05 00 00 00 RequestId
00 00 00 00 Status
04 00 00 00 InformationBufferLength
10 00 00 00 InformationBufferOffset
08 00 00 00

Host:
04 00 00 00 REMOTE_NDIS_QUERY_MSG
22 00 00 00 MessageLength
06 00 00 00 RequestId
02 01 01 01 OID_802_3_CURRENT_ADDRESS
06 00 00 00 InformationBufferLength
14 00 00 00 InformationBufferOffset
00 00 00 00 DeviceVcHandle
00 00 00 00 28 A1

Device:
04 00 00 80 REMOTE_NDIS_QUERY_CMPLT
1E 00 00 00 MessageLength
06 00 00 00 RequestId
00 00 00 00 Status
06 00 00 00 InformationBufferLength
10 00 00 00 InformationBufferOffset
80 EC E2 34 80 EC

Host:
04 00 00 00 REMOTE_NDIS_QUERY_MSG
20 00 00 00 MessageLength
07 00 00 00 RequestId
06 01 01 00 OID_GEN_MAXIMUM_FRAME_SIZE
04 00 00 00 InformationBufferLength
14 00 00 00 InformationBufferOffset
00 00 00 00 DeviceVcHandle
01 00 00 00

Device:
04 00 00 80 REMOTE_NDIS_QUERY_CMPLT
1C 00 00 00 MessageLength
07 00 00 00 RequestId
00 00 00 00 Status
04 00 00 00 InformationBufferLength
10 00 00 00 InformationBufferOffset
DC 05 00 00 1,500

Host:
04 00 00 00 REMOTE_NDIS_QUERY_MSG
20 00 00 00 MessageLength
08 00 00 00 RequestId
11 01 01 00 OID_GEN_MAXIMUM_TOTAL_SIZE
04 00 00 00 InformationBufferLength
14 00 00 00 InformationBufferOffset
00 00 00 00 DeviceVcHandle
00 00 00 00

Device:
04 00 00 80 REMOTE_NDIS_QUERY_CMPLT
1C 00 00 00 MessageLength
08 00 00 00 RequestId
00 00 00 00 Status
04 00 00 00 InformationBufferLength
10 00 00 00 InformationBufferOffset
EA 05 00 00 1,514

Host:
04 00 00 00 REMOTE_NDIS_QUERY_MSG
22 00 00 00 MessageLength
09 00 00 00 RequestId
02 01 01 01 OID_802_3_CURRENT_ADDRESS
06 00 00 00 InformationBufferLength
14 00 00 00 InformationBufferOffset
00 00 00 00 DeviceVcHandle
00 00 00 00 28 A1

Device:
04 00 00 80 REMOTE_NDIS_QUERY_CMPLT
1E 00 00 00 MessageLength
09 00 00 00 RequestId
00 00 00 00 Status
06 00 00 00 InformationBufferLength
10 00 00 00 InformationBufferOffset
80 EC E2 34 80 EC

Host:
04 00 00 00 REMOTE_NDIS_QUERY_MSG
22 00 00 00 MessageLength
0A 00 00 00 RequestId
02 01 01 01 OID_802_3_CURRENT_ADDRESS
06 00 00 00 InformationBufferLength
14 00 00 00 InformationBufferOffset
00 00 00 00 DeviceVcHandle
00 00 00 00 00 00

Device:
04 00 00 80 REMOTE_NDIS_QUERY_CMPLT
1E 00 00 00 MessageLength
0A 00 00 00 RequestId
00 00 00 00 Status
06 00 00 00 InformationBufferLength
10 00 00 00 InformationBufferOffset
80 EC E2 34 80 EC

Host:
04 00 00 00 REMOTE_NDIS_QUERY_MSG
20 00 00 00 MessageLength
0B 00 00 00 RequestId
06 01 01 00 OID_GEN_MAXIMUM_FRAME_SIZE
04 00 00 00 InformationBufferLength
14 00 00 00 InformationBufferOffset
00 00 00 00 DeviceVcHandle
00 00 00 00

Device:
04 00 00 80 REMOTE_NDIS_QUERY_CMPLT
1C 00 00 00 MessageLength
0B 00 00 00 RequestId
00 00 00 00 Status
04 00 00 00 InformationBufferLength
10 00 00 00 InformationBufferOffset
DC 05 00 00 1,500

Host:
04 00 00 00 REMOTE_NDIS_QUERY_MSG
20 00 00 00 MessageLength
0C 00 00 00 RequestId
11 01 01 00 OID_GEN_MAXIMUM_TOTAL_SIZE
04 00 00 00 InformationBufferLength
14 00 00 00 InformationBufferOffset
00 00 00 00 DeviceVcHandle
00 00 00 00

Device:
04 00 00 80 REMOTE_NDIS_QUERY_CMPLT
1C 00 00 00 MessageLength
0C 00 00 00 RequestId
00 00 00 00 Status
04 00 00 00 InformationBufferLength
10 00 00 00 InformationBufferOffset
EA 05 00 00 1,514

Host:
04 00 00 00 REMOTE_NDIS_QUERY_MSG
20 00 00 00 MessageLength
0D 00 00 00 RequestId
07 01 01 00 OID_GEN_LINK_SPEED
04 00 00 00 InformationBufferLength
14 00 00 00 InformationBufferOffset
00 00 00 00 DeviceVcHandle
00 00 00 00

Device:
04 00 00 80 REMOTE_NDIS_QUERY_CMPLT
1C 00 00 00 MessageLength
0D 00 00 00 RequestId
00 00 00 00 Status
04 00 00 00 InformationBufferLength
10 00 00 00 InformationBufferOffset
A0 86 01 00 100M

Host:
05 00 00 00 REMOTE_NDIS_SET_MSG
20 00 00 00 MessageLength
0E 00 00 00 RequestId
0E 01 01 00 OID_GEN_CURRENT_PACKET_FILTER
04 00 00 00 InformationBufferLength
14 00 00 00 InformationBufferOffset
00 00 00 00 DeviceVcHandle
09 00 00 00

Host:
08 00 00 00 REMOTE_NDIS_KEEPALIVE_MSG
0C 00 00 00 MessageLength
0F 00 00 00 RequestId

Device:
08 00 00 80 REMOTE_NDIS_KEEPALIVE_CMPLT
10 00 00 00 MessageLength
0F 00 00 00 RequestId
00 00 00 00 Status

Host:
06 00 00 00 REMOTE_NDIS_RESET_MSG
0C 00 00 00 MessageLength
00 00 00 00 Reserved

Host:
08 00 00 00 REMOTE_NDIS_KEEPALIVE_MSG
0C 00 00 00 MessageLength
11 00 00 00 RequestId

Device:
08 00 00 80 REMOTE_NDIS_KEEPALIVE_CMPLT
10 00 00 00 MessageLength
11 00 00 00 RequestId
00 00 00 00 Status

Host:
08 00 00 00 REMOTE_NDIS_KEEPALIVE_MSG
0C 00 00 00 MessageLength
12 00 00 00 RequestId

Device:
08 00 00 80 REMOTE_NDIS_KEEPALIVE_CMPLT
10 00 00 00 MessageLength
12 00 00 00 RequestId
00 00 00 00 Status

Host:
08 00 00 00 REMOTE_NDIS_KEEPALIVE_MSG
0C 00 00 00 MessageLength
13 00 00 00 RequestId

Device:
08 00 00 80 REMOTE_NDIS_KEEPALIVE_CMPLT
10 00 00 00 MessageLength
13 00 00 00 RequestId
00 00 00 00 Status