Date: Mon, 02 Mar 2020 14:45:40 -0700 From: Ian Lepore <ian@freebsd.org> To: Farhan Khan <farhan@farhan.codes>, freebsd-usb@freebsd.org Subject: Re: Understanding how USB transmission works Message-ID: <afa2a8b22b6fa3e4988ff3baecba04829894c87c.camel@freebsd.org> In-Reply-To: <8d84a572-f70f-4080-bfe2-263b7f97993c@www.fastmail.com> References: <8d84a572-f70f-4080-bfe2-263b7f97993c@www.fastmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 2020-03-02 at 16:19 -0500, Farhan Khan wrote: > 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 > I think you're probably looking for: https://github.com/freebsd/freebsd/blob/499b2b565264824f2139ebcb5d1c97404a17e7e6/sys/dev/usb/wlan/if_rum.c#L1623 Note that I don't know anything about the if_rum driver in general, I just know to look for occurrances of usbd_transfer_start(). -- Ian
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?afa2a8b22b6fa3e4988ff3baecba04829894c87c.camel>