staging: rtl8723au: Use kmalloc instead of vmalloc to allocate recv_frame pool

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Jes Sorensen 2014-05-09 15:03:55 +02:00 committed by Greg Kroah-Hartman
parent 269746a4f3
commit fd6d1c111b
2 changed files with 12 additions and 32 deletions

View File

@ -47,12 +47,6 @@ int _rtw_init_recv_priv23a(struct recv_priv *precvpriv,
int i; int i;
int res = _SUCCESS; int res = _SUCCESS;
/* We don't need to memset padapter->XXX to zero, because
adapter is allocated by rtw_zvmalloc(). */
/* memset((unsigned char *)precvpriv, 0, sizeof (struct recv_priv)); */
spin_lock_init(&precvpriv->lock); spin_lock_init(&precvpriv->lock);
_rtw_init_queue23a(&precvpriv->free_recv_queue); _rtw_init_queue23a(&precvpriv->free_recv_queue);
@ -61,19 +55,11 @@ int _rtw_init_recv_priv23a(struct recv_priv *precvpriv,
precvpriv->adapter = padapter; precvpriv->adapter = padapter;
precvpriv->free_recvframe_cnt = NR_RECVFRAME;
precvpriv->pallocated_frame_buf =
rtw_zvmalloc(NR_RECVFRAME * sizeof(struct recv_frame));
if (precvpriv->pallocated_frame_buf == NULL) {
res = _FAIL;
goto exit;
}
precvframe = precvpriv->pallocated_frame_buf;
for (i = 0; i < NR_RECVFRAME ; i++) { for (i = 0; i < NR_RECVFRAME ; i++) {
precvframe = (struct recv_frame *)
kzalloc(sizeof(struct recv_frame), GFP_KERNEL);
if (!precvframe)
break;
INIT_LIST_HEAD(&precvframe->list); INIT_LIST_HEAD(&precvframe->list);
list_add_tail(&precvframe->list, list_add_tail(&precvframe->list,
@ -83,6 +69,7 @@ int _rtw_init_recv_priv23a(struct recv_priv *precvpriv,
precvframe++; precvframe++;
} }
precvpriv->free_recvframe_cnt = i;
precvpriv->rx_pending_cnt = 1; precvpriv->rx_pending_cnt = 1;
sema_init(&precvpriv->allrxreturnevt, 0); sema_init(&precvpriv->allrxreturnevt, 0);
@ -96,29 +83,24 @@ int _rtw_init_recv_priv23a(struct recv_priv *precvpriv,
rtw_set_signal_stat_timer(precvpriv); rtw_set_signal_stat_timer(precvpriv);
exit:
return res; return res;
} }
void _rtw_free_recv_priv23a (struct recv_priv *precvpriv) void _rtw_free_recv_priv23a (struct recv_priv *precvpriv)
{ {
struct rtw_adapter *padapter = precvpriv->adapter; struct rtw_adapter *padapter = precvpriv->adapter;
struct recv_frame *precvframe;
struct list_head *plist, *ptmp;
rtw_free_uc_swdec_pending_queue23a(padapter); rtw_free_uc_swdec_pending_queue23a(padapter);
if (precvpriv->pallocated_frame_buf) { list_for_each_safe(plist, ptmp, &precvpriv->free_recv_queue.queue) {
rtw_vmfree(precvpriv->pallocated_frame_buf, precvframe = container_of(plist, struct recv_frame, list);
NR_RECVFRAME * sizeof(struct recv_frame)); list_del_init(&precvframe->list);
kfree(precvframe);
} }
rtw_hal_free_recv_priv23a(padapter); rtw_hal_free_recv_priv23a(padapter);
} }
struct recv_frame *rtw_alloc_recvframe23a(struct rtw_queue *pfree_recv_queue) struct recv_frame *rtw_alloc_recvframe23a(struct rtw_queue *pfree_recv_queue)

View File

@ -171,9 +171,7 @@ struct recv_priv {
struct rtw_queue recv_pending_queue; struct rtw_queue recv_pending_queue;
struct rtw_queue uc_swdec_pending_queue; struct rtw_queue uc_swdec_pending_queue;
void *pallocated_frame_buf; int free_recvframe_cnt;
uint free_recvframe_cnt;
struct rtw_adapter *adapter; struct rtw_adapter *adapter;