aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorGlen Barber <gjb@FreeBSD.org>2016-04-06 01:44:21 +0000
committerGlen Barber <gjb@FreeBSD.org>2016-04-06 01:44:21 +0000
commit2263fb580e50256fbdbb081ca0756389d72b6bfc (patch)
tree4e392cf9bc6cfa93ebca841a52b3b1a40702f7ee /sys/dev
parent31f3abb19ca679965200c9ad67463e7a0031bceb (diff)
parent0e6cbef2d40dd10e67d88555a29c044978d68d0b (diff)
MFH
Sponsored by: The FreeBSD Foundation
Notes
svn path=/projects/release-pkg/; revision=297605
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/fdc/fdc.c2
-rw-r--r--sys/dev/iicbus/ds1307.c41
-rw-r--r--sys/dev/iicbus/ds1307reg.h1
-rw-r--r--sys/dev/urtwn/if_urtwn.c79
-rw-r--r--sys/dev/urtwn/if_urtwnvar.h9
-rw-r--r--sys/dev/usb/controller/ehci_fsl.c2
-rw-r--r--sys/dev/usb/controller/ehci_imx.c4
-rw-r--r--sys/dev/usb/controller/musb_otg.c1
-rw-r--r--sys/dev/usb/serial/uftdi.c43
-rw-r--r--sys/dev/usb/wlan/if_rsu.c2
-rw-r--r--sys/dev/xen/control/control.c2
11 files changed, 159 insertions, 27 deletions
diff --git a/sys/dev/fdc/fdc.c b/sys/dev/fdc/fdc.c
index a8a607fd83f0..a4abd196a579 100644
--- a/sys/dev/fdc/fdc.c
+++ b/sys/dev/fdc/fdc.c
@@ -968,7 +968,7 @@ fdc_worker(struct fdc_data *fdc)
fdc->bp = bioq_takefirst(&fdc->head);
if (fdc->bp == NULL)
msleep(&fdc->head, &fdc->fdc_mtx,
- PRIBIO, "-", hz);
+ PRIBIO, "-", 0);
} while (fdc->bp == NULL &&
(fdc->flags & FDC_KTHREAD_EXIT) == 0);
mtx_unlock(&fdc->fdc_mtx);
diff --git a/sys/dev/iicbus/ds1307.c b/sys/dev/iicbus/ds1307.c
index 9c7cd65171ce..987db0d0e75b 100644
--- a/sys/dev/iicbus/ds1307.c
+++ b/sys/dev/iicbus/ds1307.c
@@ -60,10 +60,20 @@ struct ds1307_softc {
struct intr_config_hook enum_hook;
uint16_t sc_addr; /* DS1307 slave address. */
uint8_t sc_ctrl;
+ int sc_mcp7941x;
};
static void ds1307_start(void *);
+#ifdef FDT
+static const struct ofw_compat_data ds1307_compat_data[] = {
+ {"dallas,ds1307", (uintptr_t)"Maxim DS1307 RTC"},
+ {"maxim,ds1307", (uintptr_t)"Maxim DS1307 RTC"},
+ {"microchip,mcp7941x", (uintptr_t)"Microchip MCP7941x RTC"},
+ { NULL, 0 }
+};
+#endif
+
static int
ds1307_read(device_t dev, uint16_t addr, uint8_t reg, uint8_t *data, size_t len)
{
@@ -167,21 +177,25 @@ ds1307_set_24hrs_mode(struct ds1307_softc *sc)
static int
ds1307_sqwe_sysctl(SYSCTL_HANDLER_ARGS)
{
- int sqwe, error, newv;
+ int sqwe, error, newv, sqwe_bit;
struct ds1307_softc *sc;
sc = (struct ds1307_softc *)arg1;
error = ds1307_ctrl_read(sc);
if (error != 0)
return (error);
- sqwe = newv = (sc->sc_ctrl & DS1307_CTRL_SQWE) ? 1 : 0;
+ if (sc->sc_mcp7941x)
+ sqwe_bit = MCP7941X_CTRL_SQWE;
+ else
+ sqwe_bit = DS1307_CTRL_SQWE;
+ sqwe = newv = (sc->sc_ctrl & sqwe_bit) ? 1 : 0;
error = sysctl_handle_int(oidp, &newv, 0, req);
if (error != 0 || req->newptr == NULL)
return (error);
if (sqwe != newv) {
- sc->sc_ctrl &= ~DS1307_CTRL_SQWE;
+ sc->sc_ctrl &= ~sqwe_bit;
if (newv)
- sc->sc_ctrl |= DS1307_CTRL_SQWE;
+ sc->sc_ctrl |= sqwe_bit;
error = ds1307_ctrl_write(sc);
if (error != 0)
return (error);
@@ -252,17 +266,25 @@ ds1307_sqw_out_sysctl(SYSCTL_HANDLER_ARGS)
static int
ds1307_probe(device_t dev)
{
-
#ifdef FDT
+ const struct ofw_compat_data *compat;
+
if (!ofw_bus_status_okay(dev))
return (ENXIO);
- if (!ofw_bus_is_compatible(dev, "dallas,ds1307") &&
- !ofw_bus_is_compatible(dev, "maxim,ds1307"))
+
+ compat = ofw_bus_search_compatible(dev, ds1307_compat_data);
+
+ if (compat == NULL)
return (ENXIO);
-#endif
+
+ device_set_desc(dev, (const char *)compat->ocd_data);
+
+ return (BUS_PROBE_DEFAULT);
+#else
device_set_desc(dev, "Maxim DS1307 RTC");
return (BUS_PROBE_DEFAULT);
+#endif
}
static int
@@ -277,6 +299,9 @@ ds1307_attach(device_t dev)
sc->enum_hook.ich_func = ds1307_start;
sc->enum_hook.ich_arg = dev;
+ if (ofw_bus_is_compatible(dev, "microchip,mcp7941x"))
+ sc->sc_mcp7941x = 1;
+
/*
* We have to wait until interrupts are enabled. Usually I2C read
* and write only works when the interrupts are available.
diff --git a/sys/dev/iicbus/ds1307reg.h b/sys/dev/iicbus/ds1307reg.h
index 0c7c356c7492..ddad40b2417c 100644
--- a/sys/dev/iicbus/ds1307reg.h
+++ b/sys/dev/iicbus/ds1307reg.h
@@ -50,6 +50,7 @@
#define DS1307_YEAR_MASK 0xff
#define DS1307_CONTROL 0x07
#define DS1307_CTRL_OUT (1 << 7)
+#define MCP7941X_CTRL_SQWE (1 << 6)
#define DS1307_CTRL_SQWE (1 << 4)
#define DS1307_CTRL_RS1 (1 << 1)
#define DS1307_CTRL_RS0 (1 << 0)
diff --git a/sys/dev/urtwn/if_urtwn.c b/sys/dev/urtwn/if_urtwn.c
index 95de7ce096c0..53ff96579922 100644
--- a/sys/dev/urtwn/if_urtwn.c
+++ b/sys/dev/urtwn/if_urtwn.c
@@ -70,6 +70,9 @@ __FBSDID("$FreeBSD$");
#include <net80211/ieee80211_regdomain.h>
#include <net80211/ieee80211_radiotap.h>
#include <net80211/ieee80211_ratectl.h>
+#ifdef IEEE80211_SUPPORT_SUPERG
+#include <net80211/ieee80211_superg.h>
+#endif
#include <dev/usb/usb.h>
#include <dev/usb/usbdi.h>
@@ -577,6 +580,8 @@ urtwn_attach(device_t self)
#endif
| IEEE80211_C_WPA /* 802.11i */
| IEEE80211_C_WME /* 802.11e */
+ | IEEE80211_C_SWAMSDUTX /* Do software A-MSDU TX */
+ | IEEE80211_C_FF /* Atheros fast-frames */
;
ic->ic_cryptocaps =
@@ -588,7 +593,9 @@ urtwn_attach(device_t self)
if (urtwn_enable_11n) {
device_printf(self, "enabling 11n\n");
ic->ic_htcaps = IEEE80211_HTC_HT |
+#if 0
IEEE80211_HTC_AMPDU |
+#endif
IEEE80211_HTC_AMSDU |
IEEE80211_HTCAP_MAXAMSDU_3839 |
IEEE80211_HTCAP_SMPS_OFF;
@@ -894,6 +901,15 @@ urtwn_report_intr(struct usb_xfer *xfer, struct urtwn_data *data)
buf = data->buf;
stat = (struct r92c_rx_stat *)buf;
+ /*
+ * For 88E chips we can tie the FF flushing here;
+ * this is where we do know exactly how deep the
+ * transmit queue is.
+ *
+ * But it won't work for R92 chips, so we can't
+ * take the easy way out.
+ */
+
if (sc->chip & URTWN_CHIP_88E) {
int report_sel = MS(le32toh(stat->rxdw3), R88E_RXDW3_RPT);
@@ -1101,7 +1117,7 @@ tr_setup:
data = STAILQ_FIRST(&sc->sc_rx_inactive);
if (data == NULL) {
KASSERT(m == NULL, ("mbuf isn't NULL"));
- return;
+ goto finish;
}
STAILQ_REMOVE_HEAD(&sc->sc_rx_inactive, next);
STAILQ_INSERT_TAIL(&sc->sc_rx_active, data, next);
@@ -1131,7 +1147,6 @@ tr_setup:
(void)ieee80211_input_all(ic, m, rssi - nf,
nf);
}
-
URTWN_LOCK(sc);
m = next;
}
@@ -1150,6 +1165,20 @@ tr_setup:
}
break;
}
+finish:
+ /* Finished receive; age anything left on the FF queue by a little bump */
+ /*
+ * XXX TODO: just make this a callout timer schedule so we can
+ * flush the FF staging queue if we're approaching idle.
+ */
+#ifdef IEEE80211_SUPPORT_SUPERG
+ URTWN_UNLOCK(sc);
+ ieee80211_ff_age_all(ic, 1);
+ URTWN_LOCK(sc);
+#endif
+
+ /* Kick-start more transmit in case we stalled */
+ urtwn_start(sc);
}
static void
@@ -1161,6 +1190,9 @@ urtwn_txeof(struct urtwn_softc *sc, struct urtwn_data *data, int status)
if (data->ni != NULL) /* not a beacon frame */
ieee80211_tx_complete(data->ni, data->m, status);
+ if (sc->sc_tx_n_active > 0)
+ sc->sc_tx_n_active--;
+
data->ni = NULL;
data->m = NULL;
@@ -1269,6 +1301,9 @@ static void
urtwn_bulk_tx_callback(struct usb_xfer *xfer, usb_error_t error)
{
struct urtwn_softc *sc = usbd_xfer_softc(xfer);
+#ifdef IEEE80211_SUPPORT_SUPERG
+ struct ieee80211com *ic = &sc->sc_ic;
+#endif
struct urtwn_data *data;
URTWN_ASSERT_LOCKED(sc);
@@ -1287,12 +1322,14 @@ tr_setup:
if (data == NULL) {
URTWN_DPRINTF(sc, URTWN_DEBUG_XMIT,
"%s: empty pending queue\n", __func__);
+ sc->sc_tx_n_active = 0;
goto finish;
}
STAILQ_REMOVE_HEAD(&sc->sc_tx_pending, next);
STAILQ_INSERT_TAIL(&sc->sc_tx_active, data, next);
usbd_xfer_set_frame_data(xfer, 0, data->buf, data->buflen);
usbd_transfer_submit(xfer);
+ sc->sc_tx_n_active++;
break;
default:
data = STAILQ_FIRST(&sc->sc_tx_active);
@@ -1307,6 +1344,35 @@ tr_setup:
break;
}
finish:
+#ifdef IEEE80211_SUPPORT_SUPERG
+ /*
+ * If the TX active queue drops below a certain
+ * threshold, ensure we age fast-frames out so they're
+ * transmitted.
+ */
+ if (sc->sc_tx_n_active <= 1) {
+ /* XXX ew - net80211 should defer this for us! */
+
+ /*
+ * Note: this sc_tx_n_active currently tracks
+ * the number of pending transmit submissions
+ * and not the actual depth of the TX frames
+ * pending to the hardware. That means that
+ * we're going to end up with some sub-optimal
+ * aggregation behaviour.
+ */
+ /*
+ * XXX TODO: just make this a callout timer schedule so we can
+ * flush the FF staging queue if we're approaching idle.
+ */
+ URTWN_UNLOCK(sc);
+ ieee80211_ff_flush(ic, WME_AC_VO);
+ ieee80211_ff_flush(ic, WME_AC_VI);
+ ieee80211_ff_flush(ic, WME_AC_BE);
+ ieee80211_ff_flush(ic, WME_AC_BK);
+ URTWN_LOCK(sc);
+ }
+#endif
/* Kick-start more transmit */
urtwn_start(sc);
}
@@ -3153,6 +3219,11 @@ urtwn_start(struct urtwn_softc *sc)
}
ni = (struct ieee80211_node *)m->m_pkthdr.rcvif;
m->m_pkthdr.rcvif = NULL;
+
+ URTWN_DPRINTF(sc, URTWN_DEBUG_XMIT, "%s: called; m=%p\n",
+ __func__,
+ m);
+
if (urtwn_tx_data(sc, ni, m, bf) != 0) {
if_inc_counter(ni->ni_vap->iv_ifp,
IFCOUNTER_OERRORS, 1);
@@ -5326,6 +5397,10 @@ urtwn_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
struct urtwn_data *bf;
int error;
+ URTWN_DPRINTF(sc, URTWN_DEBUG_XMIT, "%s: called; m=%p\n",
+ __func__,
+ m);
+
/* prevent management frames from being sent if we're not ready */
URTWN_LOCK(sc);
if (!(sc->sc_flags & URTWN_RUNNING)) {
diff --git a/sys/dev/urtwn/if_urtwnvar.h b/sys/dev/urtwn/if_urtwnvar.h
index ba8ca8130344..dd6d78b91a9c 100644
--- a/sys/dev/urtwn/if_urtwnvar.h
+++ b/sys/dev/urtwn/if_urtwnvar.h
@@ -17,12 +17,14 @@
* $FreeBSD$
*/
-#define URTWN_RX_LIST_COUNT 1
+#define URTWN_RX_LIST_COUNT 64
#define URTWN_TX_LIST_COUNT 8
#define URTWN_HOST_CMD_RING_COUNT 32
-#define URTWN_RXBUFSZ (16 * 1024)
-#define URTWN_TXBUFSZ (sizeof(struct r92c_tx_desc) + IEEE80211_MAX_LEN)
+#define URTWN_RXBUFSZ (8 * 1024)
+//#define URTWN_TXBUFSZ (sizeof(struct r92c_tx_desc) + IEEE80211_MAX_LEN)
+/* Leave enough space for an A-MSDU frame */
+#define URTWN_TXBUFSZ (16 * 1024)
#define URTWN_RX_DESC_SIZE (sizeof(struct r92c_rx_stat))
#define URTWN_TX_DESC_SIZE (sizeof(struct r92c_tx_desc))
@@ -195,6 +197,7 @@ struct urtwn_softc {
urtwn_datahead sc_rx_inactive;
struct urtwn_data sc_tx[URTWN_TX_LIST_COUNT];
urtwn_datahead sc_tx_active;
+ int sc_tx_n_active;
urtwn_datahead sc_tx_inactive;
urtwn_datahead sc_tx_pending;
diff --git a/sys/dev/usb/controller/ehci_fsl.c b/sys/dev/usb/controller/ehci_fsl.c
index ed6c25937d9f..7db642e780f8 100644
--- a/sys/dev/usb/controller/ehci_fsl.c
+++ b/sys/dev/usb/controller/ehci_fsl.c
@@ -294,7 +294,7 @@ fsl_ehci_attach(device_t self)
}
/* Setup interrupt handler */
- err = bus_setup_intr(self, sc->sc_irq_res, INTR_TYPE_BIO,
+ err = bus_setup_intr(self, sc->sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE,
NULL, (driver_intr_t *)ehci_interrupt, sc, &sc->sc_intr_hdl);
if (err) {
device_printf(self, "Could not setup irq, %d\n", err);
diff --git a/sys/dev/usb/controller/ehci_imx.c b/sys/dev/usb/controller/ehci_imx.c
index 4473ebc4fd3d..07f73105f9ab 100644
--- a/sys/dev/usb/controller/ehci_imx.c
+++ b/sys/dev/usb/controller/ehci_imx.c
@@ -261,8 +261,8 @@ imx_ehci_attach(device_t dev)
}
/* Setup interrupt handler. */
- err = bus_setup_intr(dev, sc->ehci_irq_res, INTR_TYPE_BIO, NULL,
- (driver_intr_t *)ehci_interrupt, esc, &esc->sc_intr_hdl);
+ err = bus_setup_intr(dev, sc->ehci_irq_res, INTR_TYPE_BIO | INTR_MPSAFE,
+ NULL, (driver_intr_t *)ehci_interrupt, esc, &esc->sc_intr_hdl);
if (err != 0) {
device_printf(dev, "Could not setup IRQ\n");
goto out;
diff --git a/sys/dev/usb/controller/musb_otg.c b/sys/dev/usb/controller/musb_otg.c
index eba8c657129b..c7bc8b3fdfd6 100644
--- a/sys/dev/usb/controller/musb_otg.c
+++ b/sys/dev/usb/controller/musb_otg.c
@@ -33,7 +33,6 @@
* This file contains the driver for the Mentor Graphics Inventra USB
* 2.0 High Speed Dual-Role controller.
*
- * NOTE: The current implementation only supports Device Side Mode!
*/
#ifdef USB_GLOBAL_INCLUDE_FILE
diff --git a/sys/dev/usb/serial/uftdi.c b/sys/dev/usb/serial/uftdi.c
index 136cd5511b7e..8b7e620aaa0e 100644
--- a/sys/dev/usb/serial/uftdi.c
+++ b/sys/dev/usb/serial/uftdi.c
@@ -1178,7 +1178,7 @@ uftdi_cfg_open(struct ucom_softc *ucom)
* DPRINTF() so that you can see the point at which open gets called
* when debugging is enabled.
*/
- DPRINTF("");
+ DPRINTF("\n");
}
static void
@@ -1190,7 +1190,7 @@ uftdi_cfg_close(struct ucom_softc *ucom)
* DPRINTF() so that you can see the point at which close gets called
* when debugging is enabled.
*/
- DPRINTF("");
+ DPRINTF("\n");
}
static void
@@ -1202,6 +1202,8 @@ uftdi_write_callback(struct usb_xfer *xfer, usb_error_t error)
uint32_t buflen;
uint8_t buf[1];
+ DPRINTFN(3, "\n");
+
switch (USB_GET_STATE(xfer)) {
default: /* Error */
if (error != USB_ERR_CANCELLED) {
@@ -1262,6 +1264,8 @@ uftdi_read_callback(struct usb_xfer *xfer, usb_error_t error)
int pktmax;
int offset;
+ DPRINTFN(3, "\n");
+
usbd_xfer_status(xfer, &buflen, NULL, NULL, NULL);
switch (USB_GET_STATE(xfer)) {
@@ -1343,6 +1347,8 @@ uftdi_cfg_set_dtr(struct ucom_softc *ucom, uint8_t onoff)
uint16_t wValue;
struct usb_device_request req;
+ DPRINTFN(2, "DTR=%u\n", onoff);
+
wValue = onoff ? FTDI_SIO_SET_DTR_HIGH : FTDI_SIO_SET_DTR_LOW;
req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
@@ -1362,6 +1368,8 @@ uftdi_cfg_set_rts(struct ucom_softc *ucom, uint8_t onoff)
uint16_t wValue;
struct usb_device_request req;
+ DPRINTFN(2, "RTS=%u\n", onoff);
+
wValue = onoff ? FTDI_SIO_SET_RTS_HIGH : FTDI_SIO_SET_RTS_LOW;
req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
@@ -1381,6 +1389,8 @@ uftdi_cfg_set_break(struct ucom_softc *ucom, uint8_t onoff)
uint16_t wValue;
struct usb_device_request req;
+ DPRINTFN(2, "BREAK=%u\n", onoff);
+
if (onoff) {
sc->sc_last_lcr |= FTDI_SIO_SET_BREAK;
} else {
@@ -1618,14 +1628,14 @@ uftdi_cfg_param(struct ucom_softc *ucom, struct termios *t)
struct uftdi_param_config cfg;
struct usb_device_request req;
+ DPRINTF("\n");
+
if (uftdi_set_parm_soft(ucom, t, &cfg)) {
/* should not happen */
return;
}
sc->sc_last_lcr = cfg.lcr;
- DPRINTF("\n");
-
req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
req.bRequest = FTDI_SIO_SET_BAUD_RATE;
USETW(req.wValue, cfg.baud_lobits);
@@ -1656,8 +1666,7 @@ uftdi_cfg_get_status(struct ucom_softc *ucom, uint8_t *lsr, uint8_t *msr)
{
struct uftdi_softc *sc = ucom->sc_parent;
- DPRINTF("msr=0x%02x lsr=0x%02x\n",
- sc->sc_msr, sc->sc_lsr);
+ DPRINTFN(3, "msr=0x%02x lsr=0x%02x\n", sc->sc_msr, sc->sc_lsr);
*msr = sc->sc_msr;
*lsr = sc->sc_lsr;
@@ -1669,6 +1678,8 @@ uftdi_reset(struct ucom_softc *ucom, int reset_type)
struct uftdi_softc *sc = ucom->sc_parent;
usb_device_request_t req;
+ DPRINTFN(2, "\n");
+
req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
req.bRequest = FTDI_SIO_RESET;
@@ -1686,6 +1697,8 @@ uftdi_set_bitmode(struct ucom_softc *ucom, uint8_t bitmode, uint8_t iomask)
usb_device_request_t req;
int rv;
+ DPRINTFN(2, "\n");
+
req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
req.bRequest = FTDI_SIO_SET_BITMODE;
@@ -1710,6 +1723,8 @@ uftdi_get_bitmode(struct ucom_softc *ucom, uint8_t *bitmode, uint8_t *iomask)
struct uftdi_softc *sc = ucom->sc_parent;
usb_device_request_t req;
+ DPRINTFN(2, "\n");
+
req.bmRequestType = UT_READ_VENDOR_DEVICE;
req.bRequest = FTDI_SIO_GET_BITMODE;
@@ -1727,6 +1742,8 @@ uftdi_set_latency(struct ucom_softc *ucom, int latency)
struct uftdi_softc *sc = ucom->sc_parent;
usb_device_request_t req;
+ DPRINTFN(2, "\n");
+
if (latency < 0 || latency > 255)
return (USB_ERR_INVAL);
@@ -1748,6 +1765,8 @@ uftdi_get_latency(struct ucom_softc *ucom, int *latency)
usb_error_t err;
uint8_t buf;
+ DPRINTFN(2, "\n");
+
req.bmRequestType = UT_READ_VENDOR_DEVICE;
req.bRequest = FTDI_SIO_GET_LATENCY;
@@ -1768,6 +1787,8 @@ uftdi_set_event_char(struct ucom_softc *ucom, int echar)
usb_device_request_t req;
uint8_t enable;
+ DPRINTFN(2, "\n");
+
enable = (echar == -1) ? 0 : 1;
req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
@@ -1787,6 +1808,8 @@ uftdi_set_error_char(struct ucom_softc *ucom, int echar)
usb_device_request_t req;
uint8_t enable;
+ DPRINTFN(2, "\n");
+
enable = (echar == -1) ? 0 : 1;
req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
@@ -1807,6 +1830,8 @@ uftdi_read_eeprom(struct ucom_softc *ucom, struct uftdi_eeio *eeio)
usb_error_t err;
uint16_t widx, wlength, woffset;
+ DPRINTFN(3, "\n");
+
/* Offset and length must both be evenly divisible by two. */
if ((eeio->offset | eeio->length) & 0x01)
return (EINVAL);
@@ -1835,6 +1860,8 @@ uftdi_write_eeprom(struct ucom_softc *ucom, struct uftdi_eeio *eeio)
usb_error_t err;
uint16_t widx, wlength, woffset;
+ DPRINTFN(3, "\n");
+
/* Offset and length must both be evenly divisible by two. */
if ((eeio->offset | eeio->length) & 0x01)
return (EINVAL);
@@ -1861,6 +1888,8 @@ uftdi_erase_eeprom(struct ucom_softc *ucom, int confirmation)
usb_device_request_t req;
usb_error_t err;
+ DPRINTFN(2, "\n");
+
/* Small effort to prevent accidental erasure. */
if (confirmation != UFTDI_CONFIRM_ERASE)
return (EINVAL);
@@ -1883,8 +1912,6 @@ uftdi_ioctl(struct ucom_softc *ucom, uint32_t cmd, caddr_t data,
int err;
struct uftdi_bitmode * mode;
- DPRINTF("portno: %d cmd: %#x\n", ucom->sc_portno, cmd);
-
switch (cmd) {
case UFTDIIOC_RESET_IO:
case UFTDIIOC_RESET_RX:
diff --git a/sys/dev/usb/wlan/if_rsu.c b/sys/dev/usb/wlan/if_rsu.c
index 5aa460ba82c1..6ee1c24de82e 100644
--- a/sys/dev/usb/wlan/if_rsu.c
+++ b/sys/dev/usb/wlan/if_rsu.c
@@ -521,7 +521,9 @@ rsu_attach(device_t self)
/* Enable basic HT */
ic->ic_htcaps = IEEE80211_HTC_HT |
+#if 0
IEEE80211_HTC_AMPDU |
+#endif
IEEE80211_HTC_AMSDU |
IEEE80211_HTCAP_MAXAMSDU_3839 |
IEEE80211_HTCAP_SMPS_OFF;
diff --git a/sys/dev/xen/control/control.c b/sys/dev/xen/control/control.c
index 6a351d831ec8..c7bd8c27b295 100644
--- a/sys/dev/xen/control/control.c
+++ b/sys/dev/xen/control/control.c
@@ -260,7 +260,7 @@ xctrl_suspend()
#ifdef SMP
/* Send an IPI_BITMAP in case there are pending bitmap IPIs. */
lapic_ipi_vectored(IPI_BITMAP_VECTOR, APIC_IPI_DEST_ALL);
- if (smp_started && !CPU_EMPTY(&cpu_suspend_map)) {
+ if (!CPU_EMPTY(&cpu_suspend_map)) {
/*
* Now that event channels have been initialized,
* resume CPUs.