git: 23e124c78bcb - main - pccard: Remove bt3c(4) driver
Warner Losh
imp at FreeBSD.org
Fri Jan 8 03:44:17 UTC 2021
The branch main has been updated by imp:
URL: https://cgit.FreeBSD.org/src/commit/?id=23e124c78bcb46ac78d9f06449c4454f43732805
commit 23e124c78bcb46ac78d9f06449c4454f43732805
Author: Warner Losh <imp at FreeBSD.org>
AuthorDate: 2021-01-07 22:52:49 +0000
Commit: Warner Losh <imp at FreeBSD.org>
CommitDate: 2021-01-08 03:40:41 +0000
pccard: Remove bt3c(4) driver
pccard is being removed, so remove bt3c driver since it only has PC
Card attachment. Also remove bt3cfw(8) since it's the firmware for this
driver.
Relnotes: Yes
---
ObsoleteFiles.inc | 5 +-
share/man/man4/Makefile | 1 -
share/man/man4/ng_bt3c.4 | 132 ---
sys/conf/NOTES | 1 -
sys/conf/files | 1 -
sys/modules/netgraph/bluetooth/Makefile | 1 -
sys/modules/netgraph/bluetooth/bt3c/Makefile | 12 -
.../bluetooth/drivers/bt3c/ng_bt3c_pccard.c | 1227 --------------------
sys/netgraph/bluetooth/drivers/bt3c/ng_bt3c_var.h | 108 --
sys/netgraph/bluetooth/include/ng_bt3c.h | 112 --
usr.sbin/bluetooth/Makefile | 1 -
usr.sbin/bluetooth/bt3cfw/Makefile | 11 -
usr.sbin/bluetooth/bt3cfw/Makefile.depend | 18 -
usr.sbin/bluetooth/bt3cfw/bt3cfw.8 | 73 --
usr.sbin/bluetooth/bt3cfw/bt3cfw.c | 230 ----
15 files changed, 4 insertions(+), 1929 deletions(-)
diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc
index d5b7e22ab9e2..85d6e3eecd43 100644
--- a/ObsoleteFiles.inc
+++ b/ObsoleteFiles.inc
@@ -36,8 +36,11 @@
# xargs -n1 | sort | uniq -d;
# done
-# 20210108: retire cmx driver
+# 20210108: retire cmx, ng_bt3c drivers
+OLD_FILES+=usr/sbin/bt3cfw
OLD_FILES+=usr/share/man/man4/cmw.4.gz
+OLD_FILES+=usr/share/man/man4/ng_bt3c.4.gz
+OLD_FILES+=usr/share/man/man8/bt3cfw.8.gz
# 20210107: retire a.out support
OLD_DIRS+=usr/lib/aout
diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile
index beb5d47c46b2..95f11ed3ca1b 100644
--- a/share/man/man4/Makefile
+++ b/share/man/man4/Makefile
@@ -337,7 +337,6 @@ MAN= aac.4 \
ng_atmllc.4 \
ng_bpf.4 \
ng_bridge.4 \
- ng_bt3c.4 \
ng_btsocket.4 \
ng_car.4 \
ng_ccatm.4 \
diff --git a/share/man/man4/ng_bt3c.4 b/share/man/man4/ng_bt3c.4
deleted file mode 100644
index d3942ea1d7fc..000000000000
--- a/share/man/man4/ng_bt3c.4
+++ /dev/null
@@ -1,132 +0,0 @@
-.\" Copyright (c) 2001-2002 Maksim Yevmenkin <m_evmenkin at yahoo.com>
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $Id: ng_bt3c.4,v 1.3 2003/09/14 23:28:51 max Exp $
-.\" $FreeBSD$
-.\"
-.Dd December 17, 2004
-.Dt NG_BT3C 4
-.Os
-.Sh NAME
-.Nm ng_bt3c
-.Nd Netgraph node type that is also a 3Com Bluetooth PC card driver
-.Sh SYNOPSIS
-.In sys/types.h
-.In netgraph/bluetooth/include/ng_bt3c.h
-.Sh DEPRECATION NOTICE
-This driver is scheduled for removal prior to the release of
-.Fx 13.0
-.Sh DESCRIPTION
-The
-.Nm btccc
-node type is both a persistent Netgraph node type and a driver for the
-3Com Bluetooth PC card (3CRWB6096-HP).
-It implements a Bluetooth HCI
-UART transport layer as per chapter H4 of the Bluetooth Specification
-Book v1.1.
-A new node is created when the card is plugged.
-.Pp
-In order to use the card one
-.Em MUST
-download the firmware first.
-Due to copyright issues the firmware cannot be provided with this driver.
-The firmware can be obtained
-from the Windows driver package that can be downloaded from the 3Com web
-site at no charge.
-The firmware name is
-.Pa BT3CPCC.BIN .
-To load the firmware into the card, use
-.Xr bt3cfw 8 .
-I am using the original firmware that came with the card on CD-ROM.
-.Pp
-.Dl "MD5 (BT3CPCC.BIN) = 36170fda56ea9fdbf1702c966f8a97f1"
-.Pp
-The node has a single hook called
-.Dv hook .
-Incoming bytes received on the device are re-assembled into HCI frames
-(according to the length).
-Full HCI frames are sent out on the hook.
-HCI frames received on
-.Dv hook
-are transmitted out.
-No modification to the data is performed in either direction.
-.Sh HARDWARE
-The
-.Nm
-driver provides support for the 3Com/HP 3CRWB6096-A PCCARD bluetooth adapter.
-.Sh HOOKS
-This node type supports the following hooks:
-.Bl -tag -width ".Va hook"
-.It Va hook
-single HCI frame contained in single
-.Vt mbuf
-structure.
-.El
-.Sh CONTROL MESSAGES
-This node type supports the generic control messages, plus the following:
-.Bl -tag -width foo
-.It Dv NGM_BT3C_NODE_GET_STATE Pq Ic get_state
-Returns the current receiving state for the node.
-.It Dv NGM_BT3C_NODE_SET_DEBUG Pq Ic set_debug
-This command takes an integer argument and sets the current debug level
-for the node.
-.It Dv NGM_BT3C_NODE_GET_DEBUG Pq Ic get_debug
-Returns an integer containing the current debug level for the node.
-.It Dv NGM_BT3C_NODE_GET_QLEN Pq Ic get_qlen
-This command takes a parameter that specifies queue number and returns
-the current length of the queue for the node.
-.It Dv NGM_BT3C_NODE_SET_QLEN Pq Ic set_qlen
-This command takes two parameters that specify the queue number and
-the maximum length of the queue and sets the maximum length of the queue for
-the node.
-.It Dv NGM_BT3C_NODE_GET_STAT Pq Ic get_stat
-Returns various statistic information for the node, such as: number of
-bytes (frames) sent, number of bytes (frames) received and number of
-input (output) errors.
-.It Dv NGM_BT3C_NODE_RESET_STAT Pq Ic reset_stat
-Reset all statistic counters to zero.
-.It Dv NGM_BT3C_NODE_DOWNLOAD_FIRMWARE
-Download card firmware.
-.El
-.Sh SHUTDOWN
-This node shuts down when the corresponding card is un-plugged.
-.Sh SEE ALSO
-.Xr cardbus 4 ,
-.Xr netgraph 4 ,
-.Xr pccbb 4 ,
-.Xr pcic 4 ,
-.Xr pccard.conf 5 ,
-.Xr bt3cfw 8 ,
-.Xr ngctl 8
-.Sh HISTORY
-The
-.Nm btccc
-node type was implemented in
-.Fx 5.0 .
-.Sh AUTHORS
-.An Maksim Yevmenkin Aq Mt m_evmenkin at yahoo.com
-.Sh BUGS
-The driver is based on information obtained from
-.An Jose Orlando Pereira Aq Mt jop at di.uminho.pt
-and disassembled the W2K driver.
diff --git a/sys/conf/NOTES b/sys/conf/NOTES
index 103b0929a56c..c3a9c097dedb 100644
--- a/sys/conf/NOTES
+++ b/sys/conf/NOTES
@@ -769,7 +769,6 @@ options NETGRAPH_ASYNC
options NETGRAPH_ATMLLC
options NETGRAPH_ATM_ATMPIF
options NETGRAPH_BLUETOOTH # ng_bluetooth(4)
-options NETGRAPH_BLUETOOTH_BT3C # ng_bt3c(4)
options NETGRAPH_BLUETOOTH_HCI # ng_hci(4)
options NETGRAPH_BLUETOOTH_L2CAP # ng_l2cap(4)
options NETGRAPH_BLUETOOTH_SOCKET # ng_btsocket(4)
diff --git a/sys/conf/files b/sys/conf/files
index d58d2e6c2e0d..370b67709ad6 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -4259,7 +4259,6 @@ netgraph/atm/sscop/ng_sscop.c optional ngatm_sscop \
netgraph/atm/uni/ng_uni.c optional ngatm_uni \
compile-with "${NORMAL_C} -I$S/contrib/ngatm"
netgraph/bluetooth/common/ng_bluetooth.c optional netgraph_bluetooth
-netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c optional netgraph_bluetooth_bt3c
netgraph/bluetooth/drivers/h4/ng_h4.c optional netgraph_bluetooth_h4
netgraph/bluetooth/drivers/ubt/ng_ubt.c optional netgraph_bluetooth_ubt usb
netgraph/bluetooth/drivers/ubt/ng_ubt_intel.c optional netgraph_bluetooth_ubt usb
diff --git a/sys/modules/netgraph/bluetooth/Makefile b/sys/modules/netgraph/bluetooth/Makefile
index 9169cf113491..4d353fd94f4b 100644
--- a/sys/modules/netgraph/bluetooth/Makefile
+++ b/sys/modules/netgraph/bluetooth/Makefile
@@ -6,7 +6,6 @@ SUBDIR= \
hci \
l2cap \
socket \
- bt3c \
ubt \
ubtbcmfw
diff --git a/sys/modules/netgraph/bluetooth/bt3c/Makefile b/sys/modules/netgraph/bluetooth/bt3c/Makefile
deleted file mode 100644
index 47c4f7a0f140..000000000000
--- a/sys/modules/netgraph/bluetooth/bt3c/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# $Id: Makefile,v 1.2 2002/11/24 20:50:56 max Exp $
-# $FreeBSD$
-
-.PATH: ${SRCTOP}/sys/netgraph/bluetooth/drivers/bt3c
-
-CFLAGS+= -I${SRCTOP}/sys/netgraph/bluetooth/include \
- -I${SRCTOP}/sys/netgraph/bluetooth/drivers/bt3c
-
-KMOD= ng_bt3c
-SRCS= ng_bt3c_pccard.c bus_if.h card_if.h device_if.h pccarddevs.h
-
-.include <bsd.kmod.mk>
diff --git a/sys/netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c b/sys/netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c
deleted file mode 100644
index c9045e84f256..000000000000
--- a/sys/netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c
+++ /dev/null
@@ -1,1227 +0,0 @@
-/*
- * ng_bt3c_pccard.c
- */
-
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (c) 2001-2002 Maksim Yevmenkin <m_evmenkin at yahoo.com>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: ng_bt3c_pccard.c,v 1.5 2003/04/01 18:15:21 max Exp $
- * $FreeBSD$
- *
- * XXX XXX XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
- *
- * Based on information obrained from: Jose Orlando Pereira <jop at di.uminho.pt>
- * and disassembled w2k driver.
- *
- * XXX XXX XX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
- *
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-
-#include <sys/bus.h>
-#include <machine/bus.h>
-
-#include <sys/conf.h>
-#include <sys/endian.h>
-#include <sys/interrupt.h>
-#include <sys/kernel.h>
-#include <sys/mbuf.h>
-#include <sys/module.h>
-
-#include <machine/resource.h>
-#include <sys/rman.h>
-
-#include <sys/socket.h>
-#include <net/if.h>
-#include <net/if_var.h>
-
-#include <dev/pccard/pccardreg.h>
-#include <dev/pccard/pccardvar.h>
-#include "pccarddevs.h"
-
-#include <netgraph/ng_message.h>
-#include <netgraph/netgraph.h>
-#include <netgraph/ng_parse.h>
-#include <netgraph/bluetooth/include/ng_bluetooth.h>
-#include <netgraph/bluetooth/include/ng_hci.h>
-#include <netgraph/bluetooth/include/ng_bt3c.h>
-#include <netgraph/bluetooth/drivers/bt3c/ng_bt3c_var.h>
-
-/* Netgraph methods */
-static ng_constructor_t ng_bt3c_constructor;
-static ng_shutdown_t ng_bt3c_shutdown;
-static ng_newhook_t ng_bt3c_newhook;
-static ng_connect_t ng_bt3c_connect;
-static ng_disconnect_t ng_bt3c_disconnect;
-static ng_rcvmsg_t ng_bt3c_rcvmsg;
-static ng_rcvdata_t ng_bt3c_rcvdata;
-
-/* PCMCIA driver methods */
-static int bt3c_pccard_probe (device_t);
-static int bt3c_pccard_attach (device_t);
-static int bt3c_pccard_detach (device_t);
-
-static void bt3c_intr (void *);
-static void bt3c_receive (bt3c_softc_p);
-
-static void bt3c_swi_intr (void *);
-static void bt3c_forward (node_p, hook_p, void *, int);
-static void bt3c_send (node_p, hook_p, void *, int);
-
-static void bt3c_download_firmware (bt3c_softc_p, char const *, int);
-
-#define bt3c_set_address(sc, address) \
-do { \
- bus_space_write_1((sc)->iot, (sc)->ioh, BT3C_ADDR_L, ((address) & 0xff)); \
- bus_space_write_1((sc)->iot, (sc)->ioh, BT3C_ADDR_H, (((address) >> 8) & 0xff)); \
-} while (0)
-
-#define bt3c_read_data(sc, data) \
-do { \
- (data) = bus_space_read_1((sc)->iot, (sc)->ioh, BT3C_DATA_L); \
- (data) |= ((bus_space_read_1((sc)->iot, (sc)->ioh, BT3C_DATA_H) & 0xff) << 8); \
-} while (0)
-
-#define bt3c_write_data(sc, data) \
-do { \
- bus_space_write_1((sc)->iot, (sc)->ioh, BT3C_DATA_L, ((data) & 0xff)); \
- bus_space_write_1((sc)->iot, (sc)->ioh, BT3C_DATA_H, (((data) >> 8) & 0xff)); \
-} while (0)
-
-#define bt3c_read_control(sc, data) \
-do { \
- (data) = bus_space_read_1((sc)->iot, (sc)->ioh, BT3C_CONTROL); \
-} while (0)
-
-#define bt3c_write_control(sc, data) \
-do { \
- bus_space_write_1((sc)->iot, (sc)->ioh, BT3C_CONTROL, (data)); \
-} while (0)
-
-#define bt3c_read(sc, address, data) \
-do { \
- bt3c_set_address((sc), (address)); \
- bt3c_read_data((sc), (data)); \
-} while(0)
-
-#define bt3c_write(sc, address, data) \
-do { \
- bt3c_set_address((sc), (address)); \
- bt3c_write_data((sc), (data)); \
-} while(0)
-
-static MALLOC_DEFINE(M_BT3C, "bt3c", "bt3c data structures");
-
-/****************************************************************************
- ****************************************************************************
- ** Netgraph specific
- ****************************************************************************
- ****************************************************************************/
-
-/*
- * Netgraph node type
- */
-
-/* Queue length */
-static const struct ng_parse_struct_field ng_bt3c_node_qlen_type_fields[] =
-{
- { "queue", &ng_parse_int32_type, },
- { "qlen", &ng_parse_int32_type, },
- { NULL, }
-};
-static const struct ng_parse_type ng_bt3c_node_qlen_type = {
- &ng_parse_struct_type,
- &ng_bt3c_node_qlen_type_fields
-};
-
-/* Stat info */
-static const struct ng_parse_struct_field ng_bt3c_node_stat_type_fields[] =
-{
- { "pckts_recv", &ng_parse_uint32_type, },
- { "bytes_recv", &ng_parse_uint32_type, },
- { "pckts_sent", &ng_parse_uint32_type, },
- { "bytes_sent", &ng_parse_uint32_type, },
- { "oerrors", &ng_parse_uint32_type, },
- { "ierrors", &ng_parse_uint32_type, },
- { NULL, }
-};
-static const struct ng_parse_type ng_bt3c_node_stat_type = {
- &ng_parse_struct_type,
- &ng_bt3c_node_stat_type_fields
-};
-
-static const struct ng_cmdlist ng_bt3c_cmdlist[] = {
-{
- NGM_BT3C_COOKIE,
- NGM_BT3C_NODE_GET_STATE,
- "get_state",
- NULL,
- &ng_parse_uint16_type
-},
-{
- NGM_BT3C_COOKIE,
- NGM_BT3C_NODE_SET_DEBUG,
- "set_debug",
- &ng_parse_uint16_type,
- NULL
-},
-{
- NGM_BT3C_COOKIE,
- NGM_BT3C_NODE_GET_DEBUG,
- "get_debug",
- NULL,
- &ng_parse_uint16_type
-},
-{
- NGM_BT3C_COOKIE,
- NGM_BT3C_NODE_GET_QLEN,
- "get_qlen",
- NULL,
- &ng_bt3c_node_qlen_type
-},
-{
- NGM_BT3C_COOKIE,
- NGM_BT3C_NODE_SET_QLEN,
- "set_qlen",
- &ng_bt3c_node_qlen_type,
- NULL
-},
-{
- NGM_BT3C_COOKIE,
- NGM_BT3C_NODE_GET_STAT,
- "get_stat",
- NULL,
- &ng_bt3c_node_stat_type
-},
-{
- NGM_BT3C_COOKIE,
- NGM_BT3C_NODE_RESET_STAT,
- "reset_stat",
- NULL,
- NULL
-},
-{ 0, }
-};
-
-static struct ng_type typestruct = {
- .version = NG_ABI_VERSION,
- .name = NG_BT3C_NODE_TYPE,
- .constructor = ng_bt3c_constructor,
- .rcvmsg = ng_bt3c_rcvmsg,
- .shutdown = ng_bt3c_shutdown,
- .newhook = ng_bt3c_newhook,
- .connect = ng_bt3c_connect,
- .rcvdata = ng_bt3c_rcvdata,
- .disconnect = ng_bt3c_disconnect,
- .cmdlist = ng_bt3c_cmdlist
-};
-
-/*
- * Netgraph node constructor. Do not allow to create node of this type.
- */
-
-static int
-ng_bt3c_constructor(node_p node)
-{
- return (EINVAL);
-} /* ng_bt3c_constructor */
-
-/*
- * Netgraph node destructor. Destroy node only when device has been detached
- */
-
-static int
-ng_bt3c_shutdown(node_p node)
-{
- bt3c_softc_p sc = (bt3c_softc_p) NG_NODE_PRIVATE(node);
-
- /* Let old node go */
- NG_NODE_SET_PRIVATE(node, NULL);
- NG_NODE_UNREF(node);
-
- /* Create new fresh one if we are not going down */
- if (sc == NULL)
- goto out;
-
- /* Create new Netgraph node */
- if (ng_make_node_common(&typestruct, &sc->node) != 0) {
- device_printf(sc->dev, "Could not create Netgraph node\n");
- sc->node = NULL;
- goto out;
- }
-
- /* Name new Netgraph node */
- if (ng_name_node(sc->node, device_get_nameunit(sc->dev)) != 0) {
- device_printf(sc->dev, "Could not name Netgraph node\n");
- NG_NODE_UNREF(sc->node);
- sc->node = NULL;
- goto out;
- }
-
- NG_NODE_SET_PRIVATE(sc->node, sc);
-out:
- return (0);
-} /* ng_bt3c_shutdown */
-
-/*
- * Create new hook. There can only be one.
- */
-
-static int
-ng_bt3c_newhook(node_p node, hook_p hook, char const *name)
-{
- bt3c_softc_p sc = (bt3c_softc_p) NG_NODE_PRIVATE(node);
-
- if (strcmp(name, NG_BT3C_HOOK) != 0)
- return (EINVAL);
-
- if (sc->hook != NULL)
- return (EISCONN);
-
- sc->hook = hook;
-
- return (0);
-} /* ng_bt3c_newhook */
-
-/*
- * Connect hook. Say YEP, that's OK with me.
- */
-
-static int
-ng_bt3c_connect(hook_p hook)
-{
- bt3c_softc_p sc = (bt3c_softc_p) NG_NODE_PRIVATE(NG_HOOK_NODE(hook));
-
- if (hook != sc->hook) {
- sc->hook = NULL;
- return (EINVAL);
- }
-
- /* set the hook into queueing mode (for incoming (from wire) packets) */
- NG_HOOK_FORCE_QUEUE(NG_HOOK_PEER(hook));
-
- return (0);
-} /* ng_bt3c_connect */
-
-/*
- * Disconnect hook
- */
-
-static int
-ng_bt3c_disconnect(hook_p hook)
-{
- bt3c_softc_p sc = (bt3c_softc_p) NG_NODE_PRIVATE(NG_HOOK_NODE(hook));
-
- /*
- * We need to check for sc != NULL because we can be called from
- * bt3c_pccard_detach() via ng_rmnode_self()
- */
-
- if (sc != NULL) {
- if (hook != sc->hook)
- return (EINVAL);
-
- IF_DRAIN(&sc->inq);
- IF_DRAIN(&sc->outq);
-
- sc->hook = NULL;
- }
-
- return (0);
-} /* ng_bt3c_disconnect */
-
-/*
- * Process control message
- */
-
-static int
-ng_bt3c_rcvmsg(node_p node, item_p item, hook_p lasthook)
-{
- bt3c_softc_p sc = (bt3c_softc_p) NG_NODE_PRIVATE(node);
- struct ng_mesg *msg = NULL, *rsp = NULL;
- int error = 0;
-
- if (sc == NULL) {
- NG_FREE_ITEM(item);
- return (EHOSTDOWN);
- }
-
- NGI_GET_MSG(item, msg);
-
- switch (msg->header.typecookie) {
- case NGM_GENERIC_COOKIE:
- switch (msg->header.cmd) {
- case NGM_TEXT_STATUS:
- NG_MKRESPONSE(rsp, msg, NG_TEXTRESPONSE, M_NOWAIT);
- if (rsp == NULL)
- error = ENOMEM;
- else
- snprintf(rsp->data, NG_TEXTRESPONSE,
- "Hook: %s\n" \
- "Flags: %#x\n" \
- "Debug: %d\n" \
- "State: %d\n" \
- "IncmQ: [len:%d,max:%d]\n" \
- "OutgQ: [len:%d,max:%d]\n",
- (sc->hook != NULL)? NG_BT3C_HOOK : "",
- sc->flags,
- sc->debug,
- sc->state,
- _IF_QLEN(&sc->inq), /* XXX */
- sc->inq.ifq_maxlen, /* XXX */
- _IF_QLEN(&sc->outq), /* XXX */
- sc->outq.ifq_maxlen /* XXX */
- );
- break;
-
- default:
- error = EINVAL;
- break;
- }
- break;
-
- case NGM_BT3C_COOKIE:
- switch (msg->header.cmd) {
- case NGM_BT3C_NODE_GET_STATE:
- NG_MKRESPONSE(rsp, msg, sizeof(ng_bt3c_node_state_ep),
- M_NOWAIT);
- if (rsp == NULL)
- error = ENOMEM;
- else
- *((ng_bt3c_node_state_ep *)(rsp->data)) =
- sc->state;
- break;
-
- case NGM_BT3C_NODE_SET_DEBUG:
- if (msg->header.arglen != sizeof(ng_bt3c_node_debug_ep))
- error = EMSGSIZE;
- else
- sc->debug =
- *((ng_bt3c_node_debug_ep *)(msg->data));
- break;
-
- case NGM_BT3C_NODE_GET_DEBUG:
- NG_MKRESPONSE(rsp, msg, sizeof(ng_bt3c_node_debug_ep),
- M_NOWAIT);
- if (rsp == NULL)
- error = ENOMEM;
- else
- *((ng_bt3c_node_debug_ep *)(rsp->data)) =
- sc->debug;
- break;
-
- case NGM_BT3C_NODE_GET_QLEN:
- NG_MKRESPONSE(rsp, msg, sizeof(ng_bt3c_node_qlen_ep),
- M_NOWAIT);
- if (rsp == NULL) {
- error = ENOMEM;
- break;
- }
-
- switch (((ng_bt3c_node_qlen_ep *)(msg->data))->queue) {
- case NGM_BT3C_NODE_IN_QUEUE:
- ((ng_bt3c_node_qlen_ep *)(rsp->data))->queue =
- NGM_BT3C_NODE_IN_QUEUE;
- ((ng_bt3c_node_qlen_ep *)(rsp->data))->qlen =
- sc->inq.ifq_maxlen;
- break;
-
- case NGM_BT3C_NODE_OUT_QUEUE:
- ((ng_bt3c_node_qlen_ep *)(rsp->data))->queue =
- NGM_BT3C_NODE_OUT_QUEUE;
- ((ng_bt3c_node_qlen_ep *)(rsp->data))->qlen =
- sc->outq.ifq_maxlen;
- break;
-
- default:
- NG_FREE_MSG(rsp);
- error = EINVAL;
- break;
- }
- break;
-
- case NGM_BT3C_NODE_SET_QLEN:
- if (msg->header.arglen != sizeof(ng_bt3c_node_qlen_ep)){
- error = EMSGSIZE;
- break;
- }
-
- if (((ng_bt3c_node_qlen_ep *)(msg->data))->qlen <= 0) {
- error = EINVAL;
- break;
- }
-
- switch (((ng_bt3c_node_qlen_ep *)(msg->data))->queue) {
- case NGM_BT3C_NODE_IN_QUEUE:
- sc->inq.ifq_maxlen = ((ng_bt3c_node_qlen_ep *)
- (msg->data))->qlen; /* XXX */
- break;
-
- case NGM_BT3C_NODE_OUT_QUEUE:
- sc->outq.ifq_maxlen = ((ng_bt3c_node_qlen_ep *)
- (msg->data))->qlen; /* XXX */
- break;
-
- default:
- error = EINVAL;
- break;
- }
- break;
-
- case NGM_BT3C_NODE_GET_STAT:
- NG_MKRESPONSE(rsp, msg, sizeof(ng_bt3c_node_stat_ep),
- M_NOWAIT);
- if (rsp == NULL)
- error = ENOMEM;
- else
- bcopy(&sc->stat, rsp->data,
- sizeof(ng_bt3c_node_stat_ep));
- break;
-
- case NGM_BT3C_NODE_RESET_STAT:
- NG_BT3C_STAT_RESET(sc->stat);
- break;
-
- case NGM_BT3C_NODE_DOWNLOAD_FIRMWARE:
- if (msg->header.arglen <
- sizeof(ng_bt3c_firmware_block_ep))
- error = EMSGSIZE;
- else
- bt3c_download_firmware(sc, msg->data,
- msg->header.arglen);
- break;
-
- default:
- error = EINVAL;
- break;
- }
- break;
-
- default:
- error = EINVAL;
- break;
- }
-
- NG_RESPOND_MSG(error, node, item, rsp);
- NG_FREE_MSG(msg);
-
- return (error);
-} /* ng_bt3c_rcvmsg */
-
-/*
- * Process data
- */
-
-static int
-ng_bt3c_rcvdata(hook_p hook, item_p item)
-{
- bt3c_softc_p sc = (bt3c_softc_p)NG_NODE_PRIVATE(NG_HOOK_NODE(hook));
- struct mbuf *m = NULL;
- int error = 0;
-
- if (sc == NULL) {
- error = EHOSTDOWN;
- goto out;
- }
-
- if (hook != sc->hook) {
- error = EINVAL;
- goto out;
- }
-
- NGI_GET_M(item, m);
-
- IF_LOCK(&sc->outq);
- if (_IF_QFULL(&sc->outq)) {
- NG_BT3C_ERR(sc->dev,
-"Outgoing queue is full. Dropping mbuf, len=%d\n", m->m_pkthdr.len);
-
- NG_BT3C_STAT_OERROR(sc->stat);
-
- NG_FREE_M(m);
- } else
- _IF_ENQUEUE(&sc->outq, m);
- IF_UNLOCK(&sc->outq);
-
- error = ng_send_fn(sc->node, NULL, bt3c_send, NULL, 0 /* new send */);
-out:
- NG_FREE_ITEM(item);
-
- return (error);
-} /* ng_bt3c_rcvdata */
-
-/****************************************************************************
- ****************************************************************************
- ** PCMCIA driver specific
- ****************************************************************************
- ****************************************************************************/
-
-/*
- * PC Card (PCMCIA) probe routine
- */
-
-static struct pccard_product const bt3c_pccard_products[] = {
- PCMCIA_CARD(3COM, 3CRWB609),
- { NULL, }
-};
-
-static int
-bt3c_pccard_probe(device_t dev)
-{
- struct pccard_product const *pp = NULL;
-
- pp = pccard_product_lookup(dev, bt3c_pccard_products,
- sizeof(bt3c_pccard_products[0]), NULL);
- if (pp == NULL)
- return (ENXIO);
-
- device_set_desc(dev, pp->pp_name);
-
- return (0);
-} /* bt3c_pccard_probe */
-
-/*
- * PC Card (PCMCIA) attach routine
- */
-
-static int
-bt3c_pccard_attach(device_t dev)
-{
- bt3c_softc_p sc = (bt3c_softc_p) device_get_softc(dev);
-
- /* Allocate I/O ports */
- sc->iobase_rid = 0;
- sc->iobase = bus_alloc_resource_anywhere(dev, SYS_RES_IOPORT,
- &sc->iobase_rid, 8, RF_ACTIVE);
- if (sc->iobase == NULL) {
- device_printf(dev, "Could not allocate I/O ports\n");
- goto bad;
- }
- sc->iot = rman_get_bustag(sc->iobase);
- sc->ioh = rman_get_bushandle(sc->iobase);
-
- /* Allocate IRQ */
- sc->irq_rid = 0;
- sc->irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &sc->irq_rid,
- RF_ACTIVE);
- if (sc->irq == NULL) {
- device_printf(dev, "Could not allocate IRQ\n");
- goto bad;
- }
-
- sc->irq_cookie = NULL;
- if (bus_setup_intr(dev, sc->irq, INTR_TYPE_TTY, NULL, bt3c_intr, sc,
- &sc->irq_cookie) != 0) {
- device_printf(dev, "Could not setup ISR\n");
- goto bad;
- }
-
- /* Attach handler to TTY SWI thread */
- sc->ith = NULL;
- if (swi_add(&tty_intr_event, device_get_nameunit(dev),
- bt3c_swi_intr, sc, SWI_TTY, 0, &sc->ith) < 0) {
- device_printf(dev, "Could not setup SWI ISR\n");
- goto bad;
- }
-
- /* Create Netgraph node */
- if (ng_make_node_common(&typestruct, &sc->node) != 0) {
- device_printf(dev, "Could not create Netgraph node\n");
- sc->node = NULL;
- goto bad;
- }
-
- /* Name Netgraph node */
- if (ng_name_node(sc->node, device_get_nameunit(dev)) != 0) {
- device_printf(dev, "Could not name Netgraph node\n");
- NG_NODE_UNREF(sc->node);
- sc->node = NULL;
- goto bad;
- }
-
- sc->dev = dev;
- sc->debug = NG_BT3C_WARN_LEVEL;
-
- sc->inq.ifq_maxlen = sc->outq.ifq_maxlen = BT3C_DEFAULTQLEN;
- mtx_init(&sc->inq.ifq_mtx, "BT3C inq", NULL, MTX_DEF);
- mtx_init(&sc->outq.ifq_mtx, "BT3C outq", NULL, MTX_DEF);
-
- sc->state = NG_BT3C_W4_PKT_IND;
- sc->want = 1;
-
- NG_NODE_SET_PRIVATE(sc->node, sc);
-
- gone_in_dev(dev, 13, "pccard removed");
-
- return (0);
-bad:
- if (sc->ith != NULL) {
- swi_remove(sc->ith);
- sc->ith = NULL;
- }
-
- if (sc->irq != NULL) {
- if (sc->irq_cookie != NULL)
- bus_teardown_intr(dev, sc->irq, sc->irq_cookie);
-
- bus_release_resource(dev, SYS_RES_IRQ,
- sc->irq_rid, sc->irq);
-
- sc->irq = NULL;
- sc->irq_rid = 0;
- }
-
- if (sc->iobase != NULL) {
- bus_release_resource(dev, SYS_RES_IOPORT,
- sc->iobase_rid, sc->iobase);
-
- sc->iobase = NULL;
- sc->iobase_rid = 0;
- }
-
- return (ENXIO);
-} /* bt3c_pccacd_attach */
-
-/*
- * PC Card (PCMCIA) detach routine
- */
-
-static int
-bt3c_pccard_detach(device_t dev)
-{
- bt3c_softc_p sc = (bt3c_softc_p) device_get_softc(dev);
-
- if (sc == NULL)
- return (0);
-
- swi_remove(sc->ith);
- sc->ith = NULL;
-
*** 1102 LINES SKIPPED ***
More information about the dev-commits-src-main
mailing list