kernel_samsung_a53x/drivers/usb/gadget/function
Hardik Gajjar 4737e60393 usb: gadget: f_ncm: Always set current gadget in ncm_bind()
[ Upstream commit a04224da1f3424b2c607b12a3bd1f0e302fb8231 ]

Previously, gadget assignment to the net device occurred exclusively
during the initial binding attempt.

Nevertheless, the gadget pointer could change during bind/unbind
cycles due to various conditions, including the unloading/loading
of the UDC device driver or the detachment/reconnection of an
OTG-capable USB hub device.

This patch relocates the gether_set_gadget() function out from
ncm_opts->bound condition check, ensuring that the correct gadget
is assigned during each bind request.

The provided logs demonstrate the consistency of ncm_opts throughout
the power cycle, while the gadget may change.

* OTG hub connected during boot up and assignment of gadget and
  ncm_opts pointer

[    2.366301] usb 2-1.5: New USB device found, idVendor=2996, idProduct=0105
[    2.366304] usb 2-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    2.366306] usb 2-1.5: Product: H2H Bridge
[    2.366308] usb 2-1.5: Manufacturer: Aptiv
[    2.366309] usb 2-1.5: SerialNumber: 13FEB2021
[    2.427989] usb 2-1.5: New USB device found, VID=2996, PID=0105
[    2.428959] dabridge 2-1.5:1.0: dabridge 2-4 total endpoints=5, 0000000093a8d681
[    2.429710] dabridge 2-1.5:1.0: P(0105) D(22.06.22) F(17.3.16) H(1.1) high-speed
[    2.429714] dabridge 2-1.5:1.0: Hub 2-2 P(0151) V(06.87)
[    2.429956] dabridge 2-1.5:1.0: All downstream ports in host mode

[    2.430093] gadget 000000003c414d59 ------> gadget pointer

* NCM opts and associated gadget pointer during First ncm_bind

[   34.763929] NCM opts 00000000aa304ac9
[   34.763930] NCM gadget 000000003c414d59

* OTG capable hub disconnecte or assume driver unload.

[   97.203114] usb 2-1: USB disconnect, device number 2
[   97.203118] usb 2-1.1: USB disconnect, device number 3
[   97.209217] usb 2-1.5: USB disconnect, device number 4
[   97.230990] dabr_udc deleted

* Reconnect the OTG hub or load driver assaign new gadget pointer.

[  111.534035] usb 2-1.1: New USB device found, idVendor=2996, idProduct=0120, bcdDevice= 6.87
[  111.534038] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  111.534040] usb 2-1.1: Product: Vendor
[  111.534041] usb 2-1.1: Manufacturer: Aptiv
[  111.534042] usb 2-1.1: SerialNumber: Superior
[  111.535175] usb 2-1.1: New USB device found, VID=2996, PID=0120
[  111.610995] usb 2-1.5: new high-speed USB device number 8 using xhci-hcd
[  111.630052] usb 2-1.5: New USB device found, idVendor=2996, idProduct=0105, bcdDevice=21.02
[  111.630055] usb 2-1.5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  111.630057] usb 2-1.5: Product: H2H Bridge
[  111.630058] usb 2-1.5: Manufacturer: Aptiv
[  111.630059] usb 2-1.5: SerialNumber: 13FEB2021
[  111.687464] usb 2-1.5: New USB device found, VID=2996, PID=0105
[  111.690375] dabridge 2-1.5:1.0: dabridge 2-8 total endpoints=5, 000000000d87c961
[  111.691172] dabridge 2-1.5:1.0: P(0105) D(22.06.22) F(17.3.16) H(1.1) high-speed
[  111.691176] dabridge 2-1.5:1.0: Hub 2-6 P(0151) V(06.87)
[  111.691646] dabridge 2-1.5:1.0: All downstream ports in host mode

[  111.692298] gadget 00000000dc72f7a9 --------> new gadget ptr on connect

* NCM opts and associated gadget pointer during second ncm_bind

[  113.271786] NCM opts 00000000aa304ac9 -----> same opts ptr used during first bind
[  113.271788] NCM gadget 00000000dc72f7a9 ----> however new gaget ptr, that will not set
                                                 in net_device due to ncm_opts->bound = true

Signed-off-by: Hardik Gajjar <hgajjar@de.adit-jv.com>
Link: https://lore.kernel.org/r/20231020153324.82794-1-hgajjar@de.adit-jv.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-18 11:43:14 +01:00
..
f_accessory.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_acm.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_audio_source.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_conn_gadget.c Fix clang 16 errors treewide 2024-06-15 16:28:48 -03:00
f_conn_gadget.ioctl.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_dm.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_dm1.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_ecm.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_eem.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_fs.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_hid.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_loopback.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_mass_storage.c usb: correct function name 2024-11-17 17:43:41 +01:00
f_mass_storage.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_midi.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_ncm.c usb: gadget: f_ncm: Always set current gadget in ncm_bind() 2024-11-18 11:43:14 +01:00
f_obex.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_phonet.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_printer.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_rndis.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_serial.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_sourcesink.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_ss_mon_gadget.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_subset.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_tcm.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_uac1.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_uac1_legacy.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_uac2.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_uts.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_uvc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
f_uvc.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
g_zero.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ndis.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
rndis.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
rndis.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
storage_common.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
storage_common.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
tcm.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_audio.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_audio.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_ecm.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_eem.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_ether.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_ether.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_ether_configfs.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_fs.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_gether.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_hid.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_midi.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_ncm.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_phonet.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_printer.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_rndis.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_serial.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_serial.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_tcm.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_uac1.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_uac1_legacy.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_uac1_legacy.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_uac2.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
u_uvc.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
uac_common.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
uvc.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
uvc_configfs.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
uvc_configfs.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
uvc_queue.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
uvc_queue.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
uvc_v4l2.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
uvc_v4l2.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
uvc_video.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
uvc_video.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00