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
        tristate "HCI BCM203x USB driver"
        depends on USB
 
  * $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/module.h>
 #define BT_DBG( A... )
 #endif
 
+static int txcrc = 1;
 static int hciextn = 1;
 
 /* ---- BCSP CRC calculation ---- */
 {
        struct sk_buff *nskb;
        u8 hdr[4], chan;
-       int rel, i;
-
-#ifdef CONFIG_BT_HCIUART_BCSP_TXCRC
        u16 BCSP_CRC_INIT(bcsp_txmsg_crc);
-#endif
+       int rel, i;
 
        switch (pkt_type) {
        case HCI_ACLDATA_PKT:
                BT_DBG("Sending packet with seqno %u", bcsp->msgq_txseq);
                bcsp->msgq_txseq = ++(bcsp->msgq_txseq) & 0x07;
        }
-#ifdef CONFIG_BT_HCIUART_BCSP_TXCRC
-       hdr[0] |= 0x40;
-#endif
+
+       if (bcsp->use_crc)
+               hdr[0] |= 0x40;
 
        hdr[1] = ((len << 4) & 0xff) | chan;
        hdr[2] = len >> 4;
        /* Put BCSP header */
        for (i = 0; i < 4; i++) {
                bcsp_slip_one_byte(nskb, hdr[i]);
-#ifdef CONFIG_BT_HCIUART_BCSP_TXCRC
-               bcsp_crc_update(&bcsp_txmsg_crc, hdr[i]);
-#endif
+
+               if (bcsp->use_crc)
+                       bcsp_crc_update(&bcsp_txmsg_crc, hdr[i]);
        }
 
        /* Put payload */
        for (i = 0; i < len; i++) {
                bcsp_slip_one_byte(nskb, data[i]);
-#ifdef CONFIG_BT_HCIUART_BCSP_TXCRC
-               bcsp_crc_update(&bcsp_txmsg_crc, data[i]);
-#endif
+
+               if (bcsp->use_crc)
+                       bcsp_crc_update(&bcsp_txmsg_crc, data[i]);
        }
 
-#ifdef CONFIG_BT_HCIUART_BCSP_TXCRC
        /* Put CRC */
-       bcsp_txmsg_crc = bcsp_crc_reverse(bcsp_txmsg_crc);
-       bcsp_slip_one_byte(nskb, (u8) ((bcsp_txmsg_crc >> 8) & 0x00ff));
-       bcsp_slip_one_byte(nskb, (u8) (bcsp_txmsg_crc & 0x00ff));
-#endif
+       if (bcsp->use_crc) {
+               bcsp_txmsg_crc = bcsp_crc_reverse(bcsp_txmsg_crc);
+               bcsp_slip_one_byte(nskb, (u8) ((bcsp_txmsg_crc >> 8) & 0x00ff));
+               bcsp_slip_one_byte(nskb, (u8) (bcsp_txmsg_crc & 0x00ff));
+       }
 
        bcsp_slip_msgdelim(nskb);
        return nskb;
 
        bcsp->rx_state = BCSP_W4_PKT_DELIMITER;
 
+       if (txcrc)
+               bcsp->use_crc = 1;
+
        return 0;
 }
 
        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_PARM_DESC(hciextn, "Convert HCI Extensions into BCSP packets");