summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordsainty <dsainty@NetBSD.org>2004-01-04 05:39:35 +0000
committerdsainty <dsainty@NetBSD.org>2004-01-04 05:39:35 +0000
commitea1feca1de15858d9483f026d99eefc577fe0a1e (patch)
tree7a44d0c06f693668407dc1a37fbc79176b2a480d
parent420b2ac8ffc6928dfc0b8a0093b8caab25805770 (diff)
Don't (ab)use the device driver flow control interface to prevent incoming
data. We should be prepared to buffer that data here (though we currently don't do that either).
-rw-r--r--sys/dev/bluetooth/bthci.c28
1 files changed, 2 insertions, 26 deletions
diff --git a/sys/dev/bluetooth/bthci.c b/sys/dev/bluetooth/bthci.c
index b16f641a252..0cbed61aaf7 100644
--- a/sys/dev/bluetooth/bthci.c
+++ b/sys/dev/bluetooth/bthci.c
@@ -1,4 +1,4 @@
-/* $NetBSD: bthci.c,v 1.14 2003/07/24 19:19:42 nathanw Exp $ */
+/* $NetBSD: bthci.c,v 1.15 2004/01/04 05:39:35 dsainty Exp $ */
/*
* Copyright (c) 2002, 2003 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bthci.c,v 1.14 2003/07/24 19:19:42 nathanw Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bthci.c,v 1.15 2004/01/04 05:39:35 dsainty Exp $");
#include "bthcidrv.h"
@@ -293,7 +293,6 @@ bthciread(dev_t dev, struct uio *uio, int flag)
struct bthci_softc *sc;
int error;
int s;
- unsigned int blocked;
sc = device_lookup(&bthci_cd, BTHCIUNIT(dev));
if (sc == NULL)
@@ -310,18 +309,6 @@ bthciread(dev_t dev, struct uio *uio, int flag)
s = sc->sc_methods->bt_splraise();
while (!sc->sc_outputready) {
-#define BTHCI_READ_EVTS (BT_CBBLOCK_ACL_DATA | BT_CBBLOCK_EVENT)
- blocked = sc->sc_methods->bt_unblockcb(sc->sc_handle,
- BTHCI_READ_EVTS);
- if ((blocked & BTHCI_READ_EVTS) != 0) {
- /* Problem unblocking events */
- splx(s);
- DPRINTFN(1,("%s: couldn't unblock events\n",
- __func__));
- error = EIO;
- goto ret;
- }
-
DPRINTFN(5,("%s: calling tsleep()\n", __func__));
error = tsleep(&sc->sc_outputready, PZERO | PCATCH,
"bthcrd", 0);
@@ -350,11 +337,6 @@ bthciread(dev_t dev, struct uio *uio, int flag)
if (!error) {
sc->sc_outputready = 0;
sc->sc_rd_len = 0;
-
- /* Unblock events (in case they were blocked) */
- sc->sc_methods->bt_unblockcb(sc->sc_handle,
- BT_CBBLOCK_ACL_DATA |
- BT_CBBLOCK_EVENT);
}
ret:
@@ -606,9 +588,6 @@ bthci_recveventdata(void *h, u_int8_t *data, size_t len)
sc->sc_rd_len = len + 1;
sc->sc_outputready = 1;
- sc->sc_methods->bt_blockcb(sc->sc_handle,
- BT_CBBLOCK_ACL_DATA | BT_CBBLOCK_EVENT);
-
wakeup(&sc->sc_outputready);
selnotify(&sc->sc_rd_sel, 0);
}
@@ -651,9 +630,6 @@ bthci_recvacldata(void *h, u_int8_t *data, size_t len)
sc->sc_rd_len = len + 1;
sc->sc_outputready = 1;
- sc->sc_methods->bt_blockcb(sc->sc_handle,
- BT_CBBLOCK_ACL_DATA | BT_CBBLOCK_EVENT);
-
wakeup(&sc->sc_outputready);
selnotify(&sc->sc_rd_sel, 0);
}