Hi,
Op 17-04-2024 om 17:13 schreef Hardik Gajjar:
On Tue, Apr 16, 2024 at 04:48:32PM +0300, Andy Shevchenko wrote:
On Thu, Apr 11, 2024 at 10:52:36PM +0200, Ferry Toth wrote:
Op 11-04-2024 om 18:39 schreef Andy Shevchenko:
On Thu, Apr 11, 2024 at 04:26:37PM +0200, Hardik Gajjar wrote:
On Wed, Apr 10, 2024 at 08:37:42PM +0300, Andy Shevchenko wrote:
On Sun, Apr 07, 2024 at 10:51:51PM +0200, Ferry Toth wrote:
Op 05-04-2024 om 13:38 schreef Hardik Gajjar:
...
Exactly. And this didn't happen before the 2 patches.
To be precise: /sys/class/net/usb0 is not
removed and it is a link, the link
target
/sys/devices/pci0000:00/0000:00:11.0/dwc3.0.auto/gadget.0/net/usb0
no
longer exists
So, it means that the /sys/class/net/usb0 is
present, but the symlink is
broken. In that case, the dwc3 driver should
recreate the device, and the
symlink should become active again
Yes, on first enabling gadget (when device mode is activated):
root@yuna:~# ls
/sys/devices/pci0000:00/0000:00:11.0/dwc3.0.auto/gadget.0/
driver net power sound subsystem suspended uevent
Then switching to host mode:
root@yuna:~# ls
/sys/devices/pci0000:00/0000:00:11.0/dwc3.0.auto/gadget.0/
ls: cannot access
'/sys/devices/pci0000:00/0000:00:11.0/dwc3.0.auto/gadget.0/':
No such file
or directory
Then back to device mode:
root@yuna:~# ls
/sys/devices/pci0000:00/0000:00:11.0/dwc3.0.auto/gadget.0/
driver power sound subsystem suspended uevent
net is missing. But, network functions:
root@yuna:~# ping 10.42.0.1
PING 10.42.0.1 (10.42.0.1): 56 data bytes
Mass storage device is created and removed each time as expected.
So, what's the conclusion? Shall we move towards revert of those
two changes?
As promised, I have the tested the this patch with the dwc3 gadget.
I could not reproduce
the issue.
I can see the usb0 exist all the time and accessible regardless of
the role switching of the USB mode (peripheral <-> host)
Following are the logs:
//Host to device
console:/sys/bus/platform/devices/a800000.ssusb # echo "peripheral"
mode
console:/sys/bus/platform/devices/a800000.ssusb # ls
a800000.dwc3/gadget/net/
usb0
//device to host
console:/sys/bus/platform/devices/a800000.ssusb # echo "host" > mode
console:/sys/bus/platform/devices/a800000.ssusb # ls
a800000.dwc3/gadget/net/
usb0
That is weird. When I switch to host mode (using the physical switch),
the whole gadget directory is removed (now testing 6.9.0-rc5)
Switching back to device mode, that gadget directory is recreated. And
gadget/sound as well, but not gadget/net.
s a800000.dwc3/gadget/net/usb0
<
addr_assign_type duplex phys_port_name
addr_len flags phys_switch_id
address gro_flush_timeout power
broadcast ifalias proto_down
carrier ifindex queues
carrier_changes iflink speed
carrier_down_count link_mode statistics
carrier_up_count mtu subsystem
dev_id name_assign_type tx_queue_len
dev_port netdev_group type
device operstate uevent
dormant phys_port_id waiting_for_supplier
console:/sys/bus/platform/devices/a800000.ssusb # ifconfig -a usb0
usb0 Link encap:Ethernet HWaddr 3a:8b:63:97:1a:9a
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 TX bytes:0
console:/sys/bus/platform/devices/a800000.ssusb #
I strongly advise against reverting the patch solely based on the
observed issue of removing the /sys/class/net/usb0 directory while
the usb0 interface remains available.
There's more to it. I also mentioned that switching the role or
unplugging the cable leaves the usb0 connection.
I have while in host mode:
root@yuna:~# ifconfig -a usb0
usb0: flags=-28605<UP,BROADCAST,RUNNING,MULTICAST,DYNAMIC> mtu 1500
inet 10.42.0.221 netmask 255.255.255.0 broadcast
10.42.0.255
inet6 fe80::a8bb:ccff:fedd:eef1 prefixlen 64 scopeid
0x20<link>
You don't see that because you didn't create a connection at all.
Instead, I recommend enabling FTRACE to trace the functions involved
and identify which faulty call is responsible for removing usb0.
Switching from device -> host -> device:
root@yuna:~# trace-cmd record -p function_graph -l *gether_*
plugin 'function_graph'
Hit Ctrl^C to stop recording
^CCPU0 data recorded at offset=0x1c8000
188 bytes in size (4096 uncompressed)
CPU1 data recorded at offset=0x1c9000
0 bytes in size (0 uncompressed)
root@yuna:~# trace-cmd report
cpus=2
irq/68-dwc3-725 [000] 514.575337: funcgraph_entry: #
2079.480 us | gether_disconnect();
irq/68-dwc3-946 [000] 524.263731: funcgraph_entry: +
11.640 us | gether_disconnect();
irq/68-dwc3-946 [000] 524.263743: funcgraph_entry: !
116.520 us | gether_connect();
irq/68-dwc3-946 [000] 524.268029: funcgraph_entry: #
2057.260 us | gether_disconnect();
irq/68-dwc3-946 [000] 524.270089: funcgraph_entry: !
109.000 us | gether_connect();