Date: Thu, 17 Sep 2015 03:19:10 +0000 (UTC) From: Adrian Chadd <adrian@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r287896 - head/sys/dev/usb/wlan Message-ID: <201509170319.t8H3JAwV049073@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: adrian Date: Thu Sep 17 03:19:09 2015 New Revision: 287896 URL: https://svnweb.freebsd.org/changeset/base/287896 Log: Use the H2C endpoint for sending firmware commands, rather than the voice data queues. This is similar to the openbsd and rtlwifi/r92su drivers. Note: this driver still assumes it's a 4-endpoint device; I'll enforce that in a follow-up commit. Modified: head/sys/dev/usb/wlan/if_rsu.c head/sys/dev/usb/wlan/if_rsureg.h Modified: head/sys/dev/usb/wlan/if_rsu.c ============================================================================== --- head/sys/dev/usb/wlan/if_rsu.c Thu Sep 17 03:13:01 2015 (r287895) +++ head/sys/dev/usb/wlan/if_rsu.c Thu Sep 17 03:19:09 2015 (r287896) @@ -151,6 +151,7 @@ static device_attach_t rsu_attach; static device_detach_t rsu_detach; static usb_callback_t rsu_bulk_tx_callback_be_bk; static usb_callback_t rsu_bulk_tx_callback_vi_vo; +static usb_callback_t rsu_bulk_tx_callback_h2c; static usb_callback_t rsu_bulk_rx_callback; static usb_error_t rsu_do_request(struct rsu_softc *, struct usb_device_request *, void *); @@ -245,6 +246,9 @@ static uint8_t rsu_wme_ac_xfer_map[4] = [WME_AC_VO] = RSU_BULK_TX_VI_VO, }; +/* XXX hard-coded */ +#define RSU_H2C_ENDPOINT 3 + static const struct usb_config rsu_config[RSU_N_TRANSFER] = { [RSU_BULK_RX] = { .type = UE_BULK, @@ -283,6 +287,19 @@ static const struct usb_config rsu_confi .callback = rsu_bulk_tx_callback_vi_vo, .timeout = RSU_TX_TIMEOUT }, + [RSU_BULK_TX_H2C] = { + .type = UE_BULK, + .endpoint = 0x0d, + .direction = UE_DIR_OUT, + .bufsize = RSU_TXBUFSZ, + .flags = { + .ext_buffer = 1, + .pipe_bof = 1, + .short_xfer_ok = 1 + }, + .callback = rsu_bulk_tx_callback_h2c, + .timeout = RSU_TX_TIMEOUT + }, }; static int @@ -891,7 +908,7 @@ rsu_read_rom(struct rsu_softc *sc) static int rsu_fw_cmd(struct rsu_softc *sc, uint8_t code, void *buf, int len) { - const uint8_t which = rsu_wme_ac_xfer_map[WME_AC_VO]; + const uint8_t which = RSU_H2C_ENDPOINT; struct rsu_data *data; struct r92s_tx_desc *txd; struct r92s_fw_cmd_hdr *cmd; @@ -1712,6 +1729,12 @@ rsu_bulk_tx_callback_vi_vo(struct usb_xf rsu_bulk_tx_callback_sub(xfer, error, RSU_BULK_TX_VI_VO); } +static void +rsu_bulk_tx_callback_h2c(struct usb_xfer *xfer, usb_error_t error) +{ + rsu_bulk_tx_callback_sub(xfer, error, RSU_BULK_TX_H2C); +} + static int rsu_tx_start(struct rsu_softc *sc, struct ieee80211_node *ni, struct mbuf *m0, struct rsu_data *data) Modified: head/sys/dev/usb/wlan/if_rsureg.h ============================================================================== --- head/sys/dev/usb/wlan/if_rsureg.h Thu Sep 17 03:13:01 2015 (r287895) +++ head/sys/dev/usb/wlan/if_rsureg.h Thu Sep 17 03:19:09 2015 (r287896) @@ -700,6 +700,7 @@ enum { RSU_BULK_RX, RSU_BULK_TX_BE_BK, /* = WME_AC_BE/BK */ RSU_BULK_TX_VI_VO, /* = WME_AC_VI/VO */ + RSU_BULK_TX_H2C, /* H2C */ RSU_N_TRANSFER, };
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201509170319.t8H3JAwV049073>