Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 22 Dec 2018 17:35:59 -0800
From:      Adrian Chadd <adrian@freebsd.org>
To:        lr x <lrx337@gmail.com>
Cc:        "freebsd-wireless@freebsd.org" <freebsd-wireless@freebsd.org>, kevans@freebsd.org
Subject:   Re: Support for AR9271 (ath USB glue)
Message-ID:  <CAJ-Vmok_RgMa-86AhOzHiMcgcdCJn%2BUviRUpCFwgahY33MD9jw@mail.gmail.com>
In-Reply-To: <CAFgaRUXe-=9hjFeswe14_TpefxuxvjG2XNEMLLgpnpeEmvXfGQ@mail.gmail.com>
References:  <CAFgaRUXe-=9hjFeswe14_TpefxuxvjG2XNEMLLgpnpeEmvXfGQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi!

Sorry for not replying earlier.

The 30 second version - you should look at uath and ath9k's usb code. It's
not ENTIRELY just a register access method - there are a bunch of things
that are done by firmware via calls - like setting the mode,
adding/removing nodes, etc. ath(4) will need a bunch of stuff turned into
methods that the USB driver calls into.

Sorry I can't be more help right now, life's busy as heck atm.


-a


On Sat, 22 Dec 2018 at 15:50, lr x <lrx337@gmail.com> wrote:

> Hi,
>
> I have a TP-LINK device[1] and I'd like to get this running on FreeBSD. I
> have searched the interwebs[2][3] and, as I understand, the only thing
> that's blocking this is the missing usb glue in ath / ath_hal [4][5].
>
> I'm not entirely sure of how it all works together. What all should the
> USB glue be doing? uath seems to be handling stuff like radiotap headers
> that I'm not really sure belong in this USB glue. otus[6] seems a more
> likely candidate of what this glue code should look like. Or is this about
> adding USB support to the existing ath hal code (like checking if USB
> device is supported when ath_hal_probe() is called?)
>
> I started writing an if_ath_usb.c file under sys/dev/ath and have probe()
> working for my device. I'm looking at the ukbd, uath, otus and if_ath_pci
> modules to understand what if_ath_usb should do (along with man usbdi).
>
> Have I completely misunderstood what needs to be done?
>
> From the if_ath_usb.c I have right now:
>
> static int
> ath_usb_probe(device_t dev)
> {
>         struct usb_attach_arg *uaa = device_get_ivars(dev);
>         printf("[ath_usb_probe] vendorId = %x, productId %x\n",
> uaa->info.idVendor, uaa->info.idProduct);
>
>         /* Skipping ath_hal_probe here as we have not registered a chip
> (YET).. */
>         /* Check if product is AR9271 chip */
>
>         /* idVendor = 0x0cf3  */
>         /* idProduct = 0x9271  */
>         if(uaa->info.idVendor == 0x0cf3 && uaa->info.idProduct == 0x9271)
>             return BUS_PROBE_DEFAULT;
>
>         return ENXIO;
> }
>
>
> [1] https://wikidevi.com/wiki/TP-LINK_TL-WN721N
> [2]
> https://lists.freebsd.org/pipermail/freebsd-wireless/2015-June/005934.html
> [3] https://wiki.freebsd.org/dev/ath_hal%284%29/HardwareSupport (Chipsets
> I won't be working on)
> [4] https://wiki.freebsd.org/dev/ath_hal%284%29
> [5] https://wiki.freebsd.org/dev/ath_hal%284%29/ApiOverview
> [6]
> http://adrianchadd.blogspot.com/2015/09/porting-wifi-driver-from-openbsd-ar9170.html
>
> Regards.
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmok_RgMa-86AhOzHiMcgcdCJn%2BUviRUpCFwgahY33MD9jw>