struct list_head list;
        bdaddr_t bdaddr;
 };
-
+#define NUM_REASSEMBLY 4
 struct hci_dev {
        struct list_head list;
        spinlock_t      lock;
        struct sk_buff_head     cmd_q;
 
        struct sk_buff          *sent_cmd;
-       struct sk_buff          *reassembly[3];
+       struct sk_buff          *reassembly[NUM_REASSEMBLY];
 
        struct mutex            req_lock;
        wait_queue_head_t       req_wait_q;
 
        skb_queue_head_init(&hdev->cmd_q);
        skb_queue_head_init(&hdev->raw_q);
 
-       for (i = 0; i < 3; i++)
+       for (i = 0; i < NUM_REASSEMBLY; i++)
                hdev->reassembly[i] = NULL;
 
        init_waitqueue_head(&hdev->req_wait_q);
 
        hci_dev_do_close(hdev);
 
-       for (i = 0; i < 3; i++)
+       for (i = 0; i < NUM_REASSEMBLY; i++)
                kfree_skb(hdev->reassembly[i]);
 
        hci_notify(hdev, HCI_DEV_UNREG);
 EXPORT_SYMBOL(hci_recv_frame);
 
 /* Receive packet type fragment */
-#define __reassembly(hdev, type)  ((hdev)->reassembly[(type) - 2])
+#define __reassembly(hdev, type)  ((hdev)->reassembly[(type) - 1])
 
 int hci_recv_fragment(struct hci_dev *hdev, int type, void *data, int count)
 {