diff --git a/btmtk_sdio.c b/btmtk_sdio.c
index f0f5d48..d8a5b2e 100644
--- a/btmtk_sdio.c
+++ b/btmtk_sdio.c
@@ -1721,7 +1721,10 @@
         int i = 0;
         u8 MultiBluckCount = 0;
         u8 redundant = 0;
-
+        if (payload != txbuf){
+            memset(txbuf,0,MTK_TXDATA_SIZE);
+            memcpy(txbuf,payload,nb);
+        }
 
         if (!card || !card->func) {
                 BTMTK_ERR("card or function is NULL!");
@@ -1961,31 +1964,31 @@
  {
         u8 ret = 0;
         u32 sdio_header_len = 0;
-
         u8 *send_data = NULL;
-
+        u32 send_data_len = cmd_len + BTM_HEADER_LEN;
         if(cmd_len==0){
                 BTMTK_ERR("%s cmd_len (%d) error return\n", __func__,cmd_len);
                 return -EINVAL;
         }
 
-        send_data = kmalloc(cmd_len+BTM_HEADER_LEN, GFP_KERNEL);
-        sdio_header_len = cmd_len + BTM_HEADER_LEN;
-        memset(send_data, 0, cmd_len+BTM_HEADER_LEN);
+        send_data = kmalloc(send_data_len, GFP_KERNEL);
+        sdio_header_len = send_data_len;
+        memset(send_data, 0, send_data_len);
         send_data[0] = (sdio_header_len & 0x0000ff);
         send_data[1] = (sdio_header_len & 0x00ff00) >> 8;
         send_data[2] = 0;
         send_data[3] = 0;
         send_data[4] = cmd_type ;
         memcpy(&send_data[BTM_HEADER_LEN], &cmd[0], cmd_len);
-        ret = btmtk_sdio_host_to_card(g_priv, send_data, sdio_header_len);
+
+        ret = btmtk_sdio_host_to_card(g_priv, send_data, send_data_len);
         kfree(send_data);
         return ret;
  }
  static int btmtk_sdio_send_woble_cmd(void)
  {
         u8 ret = 0;
-        u8 cmd[] = { 0xC9, 0xFC, 0x0D, 0x01, 0x0E, 0x01, 0x05, 0x43,
+        u8 cmd[] = { 0xC9, 0xFC, 0x0D, 0x01, 0x0E, 0x00, 0x05, 0x43,
                      0x52, 0x4B, 0x54, 0x4D, 0x20, 0x04, 0x32, 0x00 };
 
         ret = btmtk_sdio_send_cmd(HCI_COMMAND_PKT,cmd,sizeof(cmd));
diff --git a/btmtk_sdio.h b/btmtk_sdio.h
index ba7874d..0ba8959 100644
--- a/btmtk_sdio.h
+++ b/btmtk_sdio.h
@@ -19,7 +19,7 @@
  *
  **/
 
-#define VERSION "v0.0.0.25"
+#define VERSION "v0.0.0.26"
 
 #define SDIO_HEADER_LEN                 4
 
