Date: Mon, 02 Mar 2020 16:19:06 -0500 From: "Farhan Khan" <farhan@farhan.codes> To: freebsd-usb@freebsd.org Subject: Understanding how USB transmission works Message-ID: <8d84a572-f70f-4080-bfe2-263b7f97993c@www.fastmail.com>
next in thread | raw e-mail | index | archive | help
Hi all, I am trying to understand how FreeBSD's usb transfers work compared to OpenBSD by using the rum(4) driver. I am a little confused how the FreeBSD side works. On the OpenBSD side, it seems that after allocating the pipes, you use usbd_setup_xfer and usbd_transfer(). As an example, look at OpenBSD's /usr/src/sys/dev/usb/if_rum.c, starting on line 2027-2029, I believe that corresponds to FreeBSD's /usr/src/sys/dev/usb/wlan/if_rum.c, line 2607 (rum_setup_tx_list) which goes to 807. In this function, I see that it adds rum_tx_data (tx_data[i] to the end of tx_free. However, how does it actually send the data? I believe this occurs in the callback functions, specifically with the usbd_transfer_submit function, but I am not certain how that is triggered, especially when it is triggered by the driver, such as in a send function. Please assist. Thank you! Links below to make it easy to follow: OpenBSD: https://github.com/openbsd/src/blob/2e342c845e9966c26657b08851237fc18e7b5ff5/sys/dev/usb/if_rum.c#L2024 FreeBSD: 1. https://github.com/freebsd/freebsd/blob/499b2b565264824f2139ebcb5d1c97404a17e7e6/sys/dev/usb/wlan/if_rum.c#L2607 2. https://github.com/freebsd/freebsd/blob/499b2b565264824f2139ebcb5d1c97404a17e7e6/sys/dev/usb/wlan/if_rum.c#L807 -- Farhan Khan PGP Fingerprint: 1312 89CE 663E 1EB2 179C 1C83 C41D 2281 F8DA C0DE
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8d84a572-f70f-4080-bfe2-263b7f97993c>