Skip site navigation (1)Skip section navigation (2)
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>