/* issue Rx irp to receive data */
        precvbuf = (struct recv_buf *)precvpriv->precv_buf;
        for (i = 0; i < NR_RECVBUFF; i++) {
-               if (usb_read_port(Adapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf) == false) {
+               if (usb_read_port(Adapter, precvpriv->ff_hwaddr, 0, precvbuf) == false) {
                        RT_TRACE(_module_hci_hal_init_c_, _drv_err_, ("usb_rx_init: usb_read_port error\n"));
                        status = _FAIL;
                        goto exit;
 
 u16 usb_read16(struct adapter *adapter, u32 addr);
 u32 usb_read32(struct adapter *adapter, u32 addr);
 
-u32 usb_read_port(struct adapter *adapter, u32 addr, u32 cnt, u8 *pmem);
+u32 usb_read_port(struct adapter *adapter, u32 addr, u32 cnt, struct recv_buf *precvbuf);
 void usb_read_port_cancel(struct adapter *adapter);
 
 int usb_write8(struct adapter *adapter, u32 addr, u8 val);
 
                        RT_TRACE(_module_hci_ops_os_c_, _drv_err_,
                                 ("usb_read_port_complete: (purb->actual_length > MAX_RECVBUF_SZ) || (purb->actual_length < RXDESC_SIZE)\n"));
                        precvbuf->reuse = true;
-                       usb_read_port(adapt, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf);
+                       usb_read_port(adapt, precvpriv->ff_hwaddr, 0, precvbuf);
                        DBG_88E("%s()-%d: RX Warning!\n", __func__, __LINE__);
                } else {
                        skb_put(precvbuf->pskb, purb->actual_length);
 
                        precvbuf->pskb = NULL;
                        precvbuf->reuse = false;
-                       usb_read_port(adapt, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf);
+                       usb_read_port(adapt, precvpriv->ff_hwaddr, 0, precvbuf);
                }
        } else {
                RT_TRACE(_module_hci_ops_os_c_, _drv_err_, ("usb_read_port_complete : purb->status(%d) != 0\n", purb->status));
                case -EOVERFLOW:
                        adapt->HalData->srestpriv.Wifi_Error_Status = USB_READ_PORT_FAIL;
                        precvbuf->reuse = true;
-                       usb_read_port(adapt, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf);
+                       usb_read_port(adapt, precvpriv->ff_hwaddr, 0, precvbuf);
                        break;
                case -EINPROGRESS:
                        DBG_88E("ERROR: URB IS IN PROGRESS!\n");
        }
 }
 
-u32 usb_read_port(struct adapter *adapter, u32 addr, u32 cnt, u8 *rmem)
+u32 usb_read_port(struct adapter *adapter, u32 addr, u32 cnt, struct recv_buf *precvbuf)
 {
        struct urb *purb = NULL;
-       struct recv_buf *precvbuf = (struct recv_buf *)rmem;
        struct dvobj_priv       *pdvobj = adapter_to_dvobj(adapter);
        struct recv_priv        *precvpriv = &adapter->recvpriv;
        struct usb_device       *pusbd = pdvobj->pusbdev;