Commit 20dd6f59 authored by Marcel Holtmann's avatar Marcel Holtmann

[Bluetooth] Remove TXCRC compile option for BCSP driver

The TXCRC compile option is not really useful and thus change it
into a module parameter.
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent 408c1ce2
...@@ -55,14 +55,6 @@ config BT_HCIUART_BCSP ...@@ -55,14 +55,6 @@ config BT_HCIUART_BCSP
Say Y here to compile support for HCI BCSP protocol. Say Y here to compile support for HCI BCSP protocol.
config BT_HCIUART_BCSP_TXCRC
bool "Transmit CRC with every BCSP packet"
depends on BT_HCIUART_BCSP
help
If you say Y here, a 16-bit CRC checksum will be transmitted along with
every BCSP (BlueCore Serial Protocol) packet sent to the Bluetooth chip.
This increases reliability, but slightly reduces efficiency.
config BT_HCIBCM203X config BT_HCIBCM203X
tristate "HCI BCM203x USB driver" tristate "HCI BCM203x USB driver"
depends on USB depends on USB
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
* $Id: hci_bcsp.c,v 1.2 2002/09/26 05:05:14 maxk Exp $ * $Id: hci_bcsp.c,v 1.2 2002/09/26 05:05:14 maxk Exp $
*/ */
#define VERSION "0.2" #define VERSION "0.3"
#include <linux/config.h> #include <linux/config.h>
#include <linux/module.h> #include <linux/module.h>
...@@ -60,6 +60,7 @@ ...@@ -60,6 +60,7 @@
#define BT_DBG( A... ) #define BT_DBG( A... )
#endif #endif
static int txcrc = 1;
static int hciextn = 1; static int hciextn = 1;
/* ---- BCSP CRC calculation ---- */ /* ---- BCSP CRC calculation ---- */
...@@ -173,11 +174,8 @@ static struct sk_buff *bcsp_prepare_pkt(struct bcsp_struct *bcsp, u8 *data, ...@@ -173,11 +174,8 @@ static struct sk_buff *bcsp_prepare_pkt(struct bcsp_struct *bcsp, u8 *data,
{ {
struct sk_buff *nskb; struct sk_buff *nskb;
u8 hdr[4], chan; u8 hdr[4], chan;
int rel, i;
#ifdef CONFIG_BT_HCIUART_BCSP_TXCRC
u16 BCSP_CRC_INIT(bcsp_txmsg_crc); u16 BCSP_CRC_INIT(bcsp_txmsg_crc);
#endif int rel, i;
switch (pkt_type) { switch (pkt_type) {
case HCI_ACLDATA_PKT: case HCI_ACLDATA_PKT:
...@@ -240,9 +238,9 @@ static struct sk_buff *bcsp_prepare_pkt(struct bcsp_struct *bcsp, u8 *data, ...@@ -240,9 +238,9 @@ static struct sk_buff *bcsp_prepare_pkt(struct bcsp_struct *bcsp, u8 *data,
BT_DBG("Sending packet with seqno %u", bcsp->msgq_txseq); BT_DBG("Sending packet with seqno %u", bcsp->msgq_txseq);
bcsp->msgq_txseq = ++(bcsp->msgq_txseq) & 0x07; bcsp->msgq_txseq = ++(bcsp->msgq_txseq) & 0x07;
} }
#ifdef CONFIG_BT_HCIUART_BCSP_TXCRC
hdr[0] |= 0x40; if (bcsp->use_crc)
#endif hdr[0] |= 0x40;
hdr[1] = ((len << 4) & 0xff) | chan; hdr[1] = ((len << 4) & 0xff) | chan;
hdr[2] = len >> 4; hdr[2] = len >> 4;
...@@ -251,25 +249,25 @@ static struct sk_buff *bcsp_prepare_pkt(struct bcsp_struct *bcsp, u8 *data, ...@@ -251,25 +249,25 @@ static struct sk_buff *bcsp_prepare_pkt(struct bcsp_struct *bcsp, u8 *data,
/* Put BCSP header */ /* Put BCSP header */
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
bcsp_slip_one_byte(nskb, hdr[i]); bcsp_slip_one_byte(nskb, hdr[i]);
#ifdef CONFIG_BT_HCIUART_BCSP_TXCRC
bcsp_crc_update(&bcsp_txmsg_crc, hdr[i]); if (bcsp->use_crc)
#endif bcsp_crc_update(&bcsp_txmsg_crc, hdr[i]);
} }
/* Put payload */ /* Put payload */
for (i = 0; i < len; i++) { for (i = 0; i < len; i++) {
bcsp_slip_one_byte(nskb, data[i]); bcsp_slip_one_byte(nskb, data[i]);
#ifdef CONFIG_BT_HCIUART_BCSP_TXCRC
bcsp_crc_update(&bcsp_txmsg_crc, data[i]); if (bcsp->use_crc)
#endif bcsp_crc_update(&bcsp_txmsg_crc, data[i]);
} }
#ifdef CONFIG_BT_HCIUART_BCSP_TXCRC
/* Put CRC */ /* Put CRC */
bcsp_txmsg_crc = bcsp_crc_reverse(bcsp_txmsg_crc); if (bcsp->use_crc) {
bcsp_slip_one_byte(nskb, (u8) ((bcsp_txmsg_crc >> 8) & 0x00ff)); bcsp_txmsg_crc = bcsp_crc_reverse(bcsp_txmsg_crc);
bcsp_slip_one_byte(nskb, (u8) (bcsp_txmsg_crc & 0x00ff)); bcsp_slip_one_byte(nskb, (u8) ((bcsp_txmsg_crc >> 8) & 0x00ff));
#endif bcsp_slip_one_byte(nskb, (u8) (bcsp_txmsg_crc & 0x00ff));
}
bcsp_slip_msgdelim(nskb); bcsp_slip_msgdelim(nskb);
return nskb; return nskb;
...@@ -698,6 +696,9 @@ static int bcsp_open(struct hci_uart *hu) ...@@ -698,6 +696,9 @@ static int bcsp_open(struct hci_uart *hu)
bcsp->rx_state = BCSP_W4_PKT_DELIMITER; bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
if (txcrc)
bcsp->use_crc = 1;
return 0; return 0;
} }
...@@ -743,5 +744,8 @@ int bcsp_deinit(void) ...@@ -743,5 +744,8 @@ int bcsp_deinit(void)
return hci_uart_unregister_proto(&bcsp); return hci_uart_unregister_proto(&bcsp);
} }
module_param(txcrc, bool, 0644);
MODULE_PARM_DESC(txcrc, "Transmit CRC with every BCSP packet");
module_param(hciextn, bool, 0644); module_param(hciextn, bool, 0644);
MODULE_PARM_DESC(hciextn, "Convert HCI Extensions into BCSP packets"); MODULE_PARM_DESC(hciextn, "Convert HCI Extensions into BCSP packets");
...@@ -60,6 +60,7 @@ struct bcsp_struct { ...@@ -60,6 +60,7 @@ struct bcsp_struct {
BCSP_ESCSTATE_ESC BCSP_ESCSTATE_ESC
} rx_esc_state; } rx_esc_state;
u8 use_crc;
u16 message_crc; u16 message_crc;
u8 txack_req; /* Do we need to send ack's to the peer? */ u8 txack_req; /* Do we need to send ack's to the peer? */
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
* *
* $Id: hci_ldisc.c,v 1.5 2002/10/02 18:37:20 maxk Exp $ * $Id: hci_ldisc.c,v 1.5 2002/10/02 18:37:20 maxk Exp $
*/ */
#define VERSION "2.1" #define VERSION "2.2"
#include <linux/config.h> #include <linux/config.h>
#include <linux/module.h> #include <linux/module.h>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment