Hi,
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.
Best Regard
Pengcheng Li
On Sat, Oct 15, 2016 at 09:19:33AM +0000, Lipengcheng wrote:
> Hi,
> 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.
>
The Felipe's email has changed, please check MAINTAINERS.
Besides, would you wrap up line to 75 characters please?
--
Best Regards,
Peter Chen
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
and USB_CDC_PACKET_TYPE_PROMISCUOUS is same, then the linux ping the win7 is
normal speed.
Best Regards
Pengcheng Li
> -----Original Message-----
> From: Peter Chen [mailto:[email protected]]
> Sent: Monday, October 17, 2016 9:56 AM
> To: Lipengcheng
> Cc: [email protected]; [email protected]; [email protected]; [email protected]
> Subject: Re: USB GADGET: have a question about usb2eth
>
> On Sat, Oct 15, 2016 at 09:19:33AM +0000, Lipengcheng wrote:
> > Hi,
> > 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.
> >
>
> The Felipe's email has changed, please check MAINTAINERS.
> Besides, would you wrap up line to 75 characters please?
>
> --
>
> Best Regards,
> Peter Chen
Hi,
(please, avoid top-posting: http://daringfireball.net/2007/07/on_top)
Lipengcheng <[email protected]> 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.
> 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?
--
balbi
> -----Original Message-----
> From: Felipe Balbi [mailto:[email protected]]
> Sent: Monday, October 17, 2016 5:29 PM
> To: Lipengcheng; Peter Chen
> Cc: [email protected]; [email protected]; [email protected]
> Subject: RE: USB GADGET: have a question about usb2eth
>
>
> Hi,
>
> (please, avoid top-posting: http://daringfireball.net/2007/07/on_top)
>
> Lipengcheng <[email protected]> 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
Hi,
Lipengcheng <[email protected]> writes:
>> -----Original Message-----
>> From: Felipe Balbi [mailto:[email protected]]
>> Sent: Monday, October 17, 2016 5:29 PM
>> To: Lipengcheng; Peter Chen
>> Cc: [email protected]; [email protected]; [email protected]
>> Subject: RE: USB GADGET: have a question about usb2eth
>>
>>
>> Hi,
>>
>> (please, avoid top-posting: http://daringfireball.net/2007/07/on_top)
>>
>> Lipengcheng <[email protected]> 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
why not v4.9-rc1? We can't help you with your kernel in this forum, I
reckon you realise that :-)
> 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.
so you're not using drivers/usb/dwc2?
> 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.
many have tried and succeeded before you :-)
> 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.
Well, if you can reproduce the same problem with v4.8 or v4.9-rc1, then
we'll be happy to review your patch.
Thank you
--
balbi