Re: dwc3 gadget and USB3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2023-03-09 at 21:09 +0000, Thinh Nguyen wrote:
> On Thu, Mar 09, 2023, Joakim Tjernlund wrote:
> > On Thu, 2023-03-09 at 19:56 +0000, Thinh Nguyen wrote:
> > > On Thu, Mar 09, 2023, Joakim Tjernlund wrote:
> > > > On Thu, 2023-03-09 at 17:32 +0100, Joakim Tjernlund wrote:
> > > > > On Wed, 2023-03-08 at 22:26 +0100, Joakim Tjernlund wrote:
> > > > > > On Wed, 2023-03-08 at 19:58 +0100, gregkh@xxxxxxxxxxxxxxxxxxx wrote:
> > > > > > > On Wed, Mar 08, 2023 at 06:12:51PM +0000, Joakim Tjernlund wrote:
> > > > > > > > On Wed, 2023-03-08 at 18:25 +0100, Greg KH wrote:
> > > > > > > > > On Wed, Mar 08, 2023 at 05:10:17PM +0000, Joakim Tjernlund wrote:
> > > > > > > > > > we are using fsl-ls1043a-rdb based design but with a ls1023a SOC and
> > > > > > > > > > use USB0 in gadget mode running either NCM or RNDIS ethernet on top.
> > > > > > > > > > 
> > > > > > > > > > When we connect the gadget to a PC(Linux of Windows) over an USB2 hub,
> > > > > > > > > > networking(NCM or RNDIS) works well.
> > > > > > > > > > 
> > > > > > > > > > However, when we connect the gadget directly to the PC/laptop which uses USB3
> > > > > > > > > > we see something odd:
> > > > > > > > > >   Ping from PC to gadget works.
> > > > > > > > > >   Ping from gadget to laptop does not. However if we also ping from PC at the same time we
> > > > > > > > > >   see gadget to PC start working.
> > > > > > > > > > Seems like ping from the PC tiggers the gadget to see incoming pkgs somehow.
> > > > > > > > > > 
> > > > > > > > > > Any idea what might be wrong or how to debug this?
> > > > > > > > > > Kernel 5.15.87
> > > > > > > > > 
> > > > > > > > > 5.15.y is very old, does this also happen on 6.2?
> > > > > > > > > 
> > > > > > > > 
> > > > > > > > I just tried 6.1.15 and the problem remains, I hope that is close enough ?
> > > > > > > 
> > > > > > > It's good enough :)
> > > > > > > 
> > > > > > > Have any logs at all that show any problems?
> > > > > > > 
> > > > > > No, don't know where to start. There are no errors logged.
> > > > > > 
> > > > > > >   Also, you might want to
> > > > > > >  cc:  the dwc3 maintainer...
> > > > > > 
> > > > > > I thought I did but that look like old info, added Thinh Nguyen now, thanks
> > > > > > 
> > > > > >  Jocke
> > > > > > 
> > > > > > > 
> > > > > > >  thanks,
> > > > > > > 
> > > > > > >  greg k-hj
> > > > > > 
> > > > > 
> > > > > Found and USBC Dock and connected that between gadget an PC and this also works well.
> > > > > Seems like a hub, regardless of USB2/USB3, make the usb network function in both directions.
> > > > > 
> > > > > Found out something interesting, on PC:
> > > > > cd /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1/power  # Where my gadget is connected
> > > > > echo 0 > usb2_hardware_lpm
> > > > > 
> > > > > Now ping works normally.
> > > > > 
> > > > > So LPM does not seem to work properly on gadget. Can I disable LPM somehow
> > > > > on gadget side? 
> > > > > 
> > > 
> > > There's no option in gadget configfs to allow you to do that at the
> > > moment. You can disable LPM in dwc3 controller in the devicetree with
> > > "snps,dis_enblslpm_quirk" instead.
> > 
> > Yes, I found that. Thanks.
> 
> Also note that LPM is for device operating in usb2 speed. If it's usb3
> speeds, then you need to disable U3 suspend.

ATM I have:
	snps,dis_enblslpm_quirk;
	snps,dis_u2_susphy_quirk;
	snps,dis_u3_susphy_quirk;
	snps,usb2-gadget-lpm-disable;

That fixes it, I have no need for any LPM/suspend

> 
> > 
> > > 
> > > If the host puts the gadget in suspend, the gadget won't be able to
> > > communicate with the host until the host wakes the gadget up and starts
> > > talking to the gadget again. The gadget may be able to signal the host
> > > to wakeup via remote wakeup. Did you check if the device is in suspend?
> > > If it's in suspend, is the gadget enabled with remote wakeup? Did the
> > > NCM driver sent a remote wakeup signal to the host? I didn't verify, but
> > > I suspect the NCM gadget driver isn't configured/implemented with remote
> > > wakeup.
> > 
> > Then maybe NCM/RNDIS should inform/disable LPM in the device driver?
> > One cannot have half an impl. of this feature.
> 
> Most drivers don't fully support every feature. They are implemented as
> needed. I'm not familiar with NCM/RNDIS driver. Perhaps you can ping its
> maintainer to see its current status to see if it needs to be updated.
> Unless there's a quirk from the host/device, we shouldn't have to
> disable LPM.
> 
Right but isn't LPM something else? One can read in Documentation/ABI/testing/sysfs-bus-usb:
What:		/sys/bus/usb/devices/.../power/usb2_hardware_lpm
Date:		September 2011
Contact:	Andiry Xu <andiry.xu@xxxxxxx>
Description:
		If CONFIG_PM is set and a USB 2.0 lpm-capable device is plugged
		in to a xHCI host which support link PM, it will perform a LPM
		test; if the test is passed and host supports USB2 hardware LPM
		(xHCI 1.0 feature), USB2 hardware LPM will be enabled for the
		device and the USB device directory will contain a file named
		power/usb2_hardware_lpm.  The file holds a string value (enable
		or disable) indicating whether or not USB2 hardware LPM is
		enabled for the device. Developer can write y/Y/1 or n/N/0 to
		the file to enable/disable the feature.

What:		/sys/bus/usb/devices/.../power/usb3_hardware_lpm_u1
		/sys/bus/usb/devices/.../power/usb3_hardware_lpm_u2
Date:		November 2015
Contact:	Kevin Strasser <kevin.strasser@xxxxxxxxxxxxxxx>
		Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx>
Description:
		If CONFIG_PM is set and a USB 3.0 lpm-capable device is plugged
		in to a xHCI host which supports link PM, it will check if U1
		and U2 exit latencies have been set in the BOS descriptor; if
		the check is passed and the host supports USB3 hardware LPM,
		USB3 hardware LPM will be enabled for the device and the USB
		device directory will contain two files named
		power/usb3_hardware_lpm_u1 and power/usb3_hardware_lpm_u2. These
		files hold a string value (enable or disable) indicating whether
		or not USB3 hardware LPM U1 or U2 is enabled for the device.

This seems to indicate that LPM is on device driver/controller level rather than
on higher levels like RNDIS/NCM ?


While I remember, I tried to create both a NCM and a ttyACM on top of my dwc3 gadget
but then I got som bind error when activating the UDC. Is that expected ?
I figured both could live on the same device and would just mux the two protocols.

 Jocke





[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux