int rtl8723bu_init_recv_priv(_adapter *padapter)
{
- struct recv_priv *precvpriv = &padapter->recvpriv;
- int i, res = _SUCCESS;
- struct recv_buf *precvbuf;
-
-#ifdef CONFIG_RECV_THREAD_MODE
- _rtw_init_sema(&precvpriv->recv_sema, 0);//will be removed
- _rtw_init_sema(&precvpriv->terminate_recvthread_sema, 0);//will be removed
-#endif
-
-#ifdef PLATFORM_LINUX
- tasklet_init(&precvpriv->recv_tasklet,
- (void(*)(unsigned long))usb_recv_tasklet,
- (unsigned long)padapter);
-#endif
-
-#ifdef CONFIG_USB_INTERRUPT_IN_PIPE
-#ifdef PLATFORM_LINUX
- precvpriv->int_in_urb = usb_alloc_urb(0, GFP_KERNEL);
- if(precvpriv->int_in_urb == NULL){
- DBG_8192C("alloc_urb for interrupt in endpoint fail !!!!\n");
- }
-#endif
- precvpriv->int_in_buf = rtw_zmalloc(USB_INTR_CONTENT_LENGTH);
- if(precvpriv->int_in_buf == NULL){
- DBG_8192C("alloc_mem for interrupt in endpoint fail !!!!\n");
- }
-#endif
-
- //init recv_buf
- _rtw_init_queue(&precvpriv->free_recv_buf_queue);
-
- _rtw_init_queue(&precvpriv->recv_buf_pending_queue);
-
- precvpriv->pallocated_recv_buf = rtw_zmalloc(NR_RECVBUFF *sizeof(struct recv_buf) + 4);
- if(precvpriv->pallocated_recv_buf==NULL){
- res= _FAIL;
- RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("alloc recv_buf fail!\n"));
- goto exit;
- }
- _rtw_memset(precvpriv->pallocated_recv_buf, 0, NR_RECVBUFF *sizeof(struct recv_buf) + 4);
-
- precvpriv->precv_buf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(precvpriv->pallocated_recv_buf), 4);
- //precvpriv->precv_buf = precvpriv->pallocated_recv_buf + 4 -
- // ((uint) (precvpriv->pallocated_recv_buf) &(4-1));
-
-
- precvbuf = (struct recv_buf*)precvpriv->precv_buf;
-
- for(i=0; i < NR_RECVBUFF ; i++)
- {
- _rtw_init_listhead(&precvbuf->list);
-
- _rtw_spinlock_init(&precvbuf->recvbuf_lock);
-
- precvbuf->alloc_sz = MAX_RECVBUF_SZ;
-
- res = rtw_os_recvbuf_resource_alloc(padapter, precvbuf);
- if(res==_FAIL)
- break;
-
- precvbuf->ref_cnt = 0;
- precvbuf->adapter =padapter;
-
-
- //rtw_list_insert_tail(&precvbuf->list, &(precvpriv->free_recv_buf_queue.queue));
-
- precvbuf++;
-
- }
-
- precvpriv->free_recv_buf_queue_cnt = NR_RECVBUFF;
-
-#ifdef PLATFORM_LINUX
-
- skb_queue_head_init(&precvpriv->rx_skb_queue);
-
-#ifdef CONFIG_PREALLOC_RECV_SKB
- {
- int i;
- SIZE_PTR tmpaddr=0;
- SIZE_PTR alignment=0;
- struct sk_buff *pskb=NULL;
-
- skb_queue_head_init(&precvpriv->free_recv_skb_queue);
-
- for(i=0; i<NR_PREALLOC_RECV_SKB; i++)
- {
-
-#ifdef CONFIG_PREALLOC_RX_SKB_BUFFER
- pskb = rtw_alloc_skb_premem();
-#else
- pskb = rtw_skb_alloc(MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ);
-#endif
-
- if(pskb)
- {
- pskb->dev = padapter->pnetdev;
-
-#ifndef CONFIG_PREALLOC_RX_SKB_BUFFER
- tmpaddr = (SIZE_PTR)pskb->data;
- alignment = tmpaddr & (RECVBUFF_ALIGN_SZ-1);
- skb_reserve(pskb, (RECVBUFF_ALIGN_SZ - alignment));
-#endif //!
-
- skb_queue_tail(&precvpriv->free_recv_skb_queue, pskb);
- }
-
- pskb=NULL;
-
- }
- }
-#endif
-
-#endif
-
-exit:
-
- return res;
-
+ return usb_init_recv_priv(padapter, USB_INTR_CONTENT_LENGTH);
}
-void rtl8723bu_free_recv_priv (_adapter *padapter)
+void rtl8723bu_free_recv_priv(_adapter *padapter)
{
- int i;
- struct recv_buf *precvbuf;
- struct recv_priv *precvpriv = &padapter->recvpriv;
-
- precvbuf = (struct recv_buf *)precvpriv->precv_buf;
-
- for(i=0; i < NR_RECVBUFF ; i++)
- {
- rtw_os_recvbuf_resource_free(padapter, precvbuf);
- precvbuf++;
- }
-
- if(precvpriv->pallocated_recv_buf)
- rtw_mfree(precvpriv->pallocated_recv_buf, NR_RECVBUFF *sizeof(struct recv_buf) + 4);
-
-#ifdef CONFIG_USB_INTERRUPT_IN_PIPE
-#ifdef PLATFORM_LINUX
- if(precvpriv->int_in_urb)
- {
- usb_free_urb(precvpriv->int_in_urb);
- }
-#endif
- if(precvpriv->int_in_buf)
- rtw_mfree(precvpriv->int_in_buf, USB_INTR_CONTENT_LENGTH);
-#endif
-
-#ifdef PLATFORM_LINUX
-
- if (skb_queue_len(&precvpriv->rx_skb_queue)) {
- DBG_8192C(KERN_WARNING "rx_skb_queue not empty\n");
- }
-
- rtw_skb_queue_purge(&precvpriv->rx_skb_queue);
-
-#ifdef CONFIG_PREALLOC_RECV_SKB
-
- if (skb_queue_len(&precvpriv->free_recv_skb_queue)) {
- DBG_8192C(KERN_WARNING "free_recv_skb_queue not empty, %d\n", skb_queue_len(&precvpriv->free_recv_skb_queue));
- }
-
-#ifdef CONFIG_PREALLOC_RX_SKB_BUFFER
- {
- int i=0;
- struct sk_buff *skb;
-
- while ((skb = skb_dequeue(&precvpriv->free_recv_skb_queue)) != NULL)
- {
- if(i<NR_PREALLOC_RECV_SKB)
- rtw_free_skb_premem(skb);
- else
- _rtw_skb_free(skb);
-
- i++;
- }
- }
-#else
- rtw_skb_queue_purge(&precvpriv->free_recv_skb_queue);
-#endif //CONFIG_PREALLOC_RX_SKB_BUFFER
-
-#endif
-
-#endif
+ usb_free_recv_priv(padapter, USB_INTR_CONTENT_LENGTH);
}