RE: USB GADGET: have a question about usb2eth

From: Lipengcheng
Date: Mon Oct 17 2016 - 23:22:20 EST




> -----Original Message-----
> From: Felipe Balbi [mailto:balbi@xxxxxxxxxx]
> Sent: Monday, October 17, 2016 5:29 PM
> To: Lipengcheng; Peter Chen
> Cc: gregkh@xxxxxxxxxxxxxxxxxxx; linux-usb@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
> Subject: RE: USB GADGET: have a question about usb2eth
>
>
> Hi,
>
> (please, avoid top-posting: http://daringfireball.net/2007/07/on_top)
>
> Lipengcheng <lpc.li@xxxxxxxxxxxxx> writes:
> > Hi,
> > thank you for your suggestion.
> >
> > I have a question about usb2eth. In the function gen_ndis_set_resp of
> > the rndis.c, the value of *params->filter may be 0x20 from the pc set
> > command; Howerver the value is used cdc_filter =
> > dev->port_usb->cdc_filter in the function eth_start_xmit of the u_ether.c.
> > If we do not judge the RNDIS_PACKET_TYPE_PROMISCUOUS and the value is
> > 0x20, the broadcast packet can not send the pc win7; At the result,
> > the linux ping the win7 is slow an the first. At the same time, Why
> > are different value between RNDIS_PACKET_TYPE_PROMISCUOUS and
> > USB_CDC_PACKET_TYPE_PROMISCUOUS? If the value of
> > RNDIS_PACKET_TYPE_PROMISCUOUS
>
> because they are defined by different specifications. You should read both CDC specification from USB.org and RNDIS spec from Microsoft to
> understand the details of that.
Ok. I will understand the different both CDC specification from USB.org and RNDIS spec from Microsoft. They should have transformational rule in the linux code
between CDC spe and RNDIS spe. Through debugging, I found there has been no conversion about the filter. I feel a little problem. I will find the rule.
>
> > and USB_CDC_PACKET_TYPE_PROMISCUOUS is same, then the linux ping the
> > win7 is normal speed.
>
> I don't understand what's going on here. Care to describe which kernel you're using, which USB peripheral controller, what is the actual
> problem you're trying to solve?
VERSION = 3.18.20
USB peripheral controller: Synopsys HS OTG Linux Software Driver. It's not the standard linux code. But I think the controller do not have problem.
The probem is that I am using one controller board with Linux running on it. I want to interface my device to the Host computer (Windows OS) through USB.
I have driver ready at device side (linux) and the bridge has been established. The device side ping the Host computer is very slow at the first time. It spends
a few minutes. The problem is the first ping takes too long time. Now I have a way to quickly ping at the first , but I do not know the risk about the change.I will
continue debug the problem. If it is valuable, I will submit the kernel community.
Thanks very much!
>
> --
> Balbi

Best Regards
Pengcheng Li