summaryrefslogtreecommitdiff
path: root/drivers/staging/rtl8712/rtl871x_recv.c
diff options
context:
space:
mode:
authorGeliang Tang <geliangtang@163.com>2016-02-01 22:47:03 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-02-07 19:53:04 -0800
commit818ff7b28b7777ac71d13215bc7a332e126da268 (patch)
treecd16f34705947eb6775369996e83d15fcc66944a /drivers/staging/rtl8712/rtl871x_recv.c
parent97e2ba90fc89f375e88ad5d825c149fb82d8207b (diff)
staging: rtl8712: use list_first_entry_or_null()
Use list_first_entry_or_null() instead of list_empty() + LIST_CONTAINOR() to simplify the code. Signed-off-by: Geliang Tang <geliangtang@163.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/rtl8712/rtl871x_recv.c')
-rw-r--r--drivers/staging/rtl8712/rtl871x_recv.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/staging/rtl8712/rtl871x_recv.c b/drivers/staging/rtl8712/rtl871x_recv.c
index 2a8c49272580..616ca3965919 100644
--- a/drivers/staging/rtl8712/rtl871x_recv.c
+++ b/drivers/staging/rtl8712/rtl871x_recv.c
@@ -101,21 +101,17 @@ void _r8712_free_recv_priv(struct recv_priv *precvpriv)
r8712_free_recv_priv(precvpriv);
}
-union recv_frame *r8712_alloc_recvframe(struct __queue *pfree_recv_queue)
+union recv_frame *r8712_alloc_recvframe(struct __queue *pfree_recv_queue)
{
unsigned long irqL;
union recv_frame *precvframe;
- struct list_head *plist, *phead;
struct _adapter *padapter;
struct recv_priv *precvpriv;
spin_lock_irqsave(&pfree_recv_queue->lock, irqL);
- if (list_empty(&pfree_recv_queue->queue)) {
- precvframe = NULL;
- } else {
- phead = &pfree_recv_queue->queue;
- plist = phead->next;
- precvframe = LIST_CONTAINOR(plist, union recv_frame, u);
+ precvframe = list_first_entry_or_null(&pfree_recv_queue->queue,
+ union recv_frame, u.hdr.list);
+ if (precvframe) {
list_del_init(&precvframe->u.hdr.list);
padapter = precvframe->u.hdr.adapter;
if (padapter != NULL) {