diff mbox

staging: rtl8723au: use list_for_each_entry*()

Message ID 46523f152fc791d01deacf5ccba27ec725cf7454.1454255062.git.geliangtang@163.com (mailing list archive)
State Not Applicable
Delegated to: Kalle Valo
Headers show

Commit Message

Geliang Tang Jan. 31, 2016, 3:47 p.m. UTC
Use list_for_each_entry*() instead of list_for_each*() to simplify
the code. Fix coding style by the way.

Signed-off-by: Geliang Tang <geliangtang@163.com>
---
 drivers/staging/rtl8723au/core/rtw_ap.c           | 166 ++++++++--------------
 drivers/staging/rtl8723au/core/rtw_mlme.c         |  38 ++---
 drivers/staging/rtl8723au/core/rtw_mlme_ext.c     |  13 +-
 drivers/staging/rtl8723au/core/rtw_recv.c         |  43 ++----
 drivers/staging/rtl8723au/core/rtw_sta_mgt.c      |  34 ++---
 drivers/staging/rtl8723au/core/rtw_xmit.c         |  84 ++++-------
 drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c |  22 +--
 drivers/staging/rtl8723au/os_dep/usb_ops_linux.c  |   9 +-
 8 files changed, 140 insertions(+), 269 deletions(-)

Comments

Jes Sorensen Jan. 31, 2016, 5:49 p.m. UTC | #1
Geliang Tang <geliangtang@163.com> writes:
> Use list_for_each_entry*() instead of list_for_each*() to simplify
> the code. Fix coding style by the way.
>
> Signed-off-by: Geliang Tang <geliangtang@163.com>
> ---
>  drivers/staging/rtl8723au/core/rtw_ap.c           | 166 ++++++++--------------
>  drivers/staging/rtl8723au/core/rtw_mlme.c         |  38 ++---
>  drivers/staging/rtl8723au/core/rtw_mlme_ext.c     |  13 +-
>  drivers/staging/rtl8723au/core/rtw_recv.c         |  43 ++----
>  drivers/staging/rtl8723au/core/rtw_sta_mgt.c      |  34 ++---
>  drivers/staging/rtl8723au/core/rtw_xmit.c         |  84 ++++-------
>  drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c |  22 +--
>  drivers/staging/rtl8723au/os_dep/usb_ops_linux.c  |   9 +-
>  8 files changed, 140 insertions(+), 269 deletions(-)

In principle this is fine, but you need to stick to doing one thing per
patch. Do the list_for_each_entry() in one patch, and the formatting
issues in another.

Jes

> diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
> index 1aa9b26..66315f9 100644
> --- a/drivers/staging/rtl8723au/core/rtw_ap.c
> +++ b/drivers/staging/rtl8723au/core/rtw_ap.c
> @@ -171,24 +171,20 @@ static u8 chk_sta_is_alive(struct sta_info *psta)
>  	return ret;
>  }
>  
> -void	expire_timeout_chk23a(struct rtw_adapter *padapter)
> +void expire_timeout_chk23a(struct rtw_adapter *padapter)
>  {
> -	struct list_head *phead, *plist, *ptmp;
> +	struct list_head *phead;
>  	u8 updated = 0;
> -	struct sta_info *psta;
> +	struct sta_info *psta, *ptmp;
>  	struct sta_priv *pstapriv = &padapter->stapriv;
>  	u8 chk_alive_num = 0;
>  	struct sta_info *chk_alive_list[NUM_STA];
>  	int i;
>  
>  	spin_lock_bh(&pstapriv->auth_list_lock);
> -
>  	phead = &pstapriv->auth_list;
> -
>  	/* check auth_queue */
> -	list_for_each_safe(plist, ptmp, phead) {
> -		psta = container_of(plist, struct sta_info, auth_list);
> -
> +	list_for_each_entry_safe(psta, ptmp, phead, auth_list) {
>  		if (psta->expire_to > 0) {
>  			psta->expire_to--;
>  			if (psta->expire_to == 0) {
> @@ -206,19 +202,13 @@ void	expire_timeout_chk23a(struct rtw_adapter *padapter)
>  				spin_lock_bh(&pstapriv->auth_list_lock);
>  			}
>  		}
> -
>  	}
> -
>  	spin_unlock_bh(&pstapriv->auth_list_lock);
>  
>  	spin_lock_bh(&pstapriv->asoc_list_lock);
> -
>  	phead = &pstapriv->asoc_list;
> -
>  	/* check asoc_queue */
> -	list_for_each_safe(plist, ptmp, phead) {
> -		psta = container_of(plist, struct sta_info, asoc_list);
> -
> +	list_for_each_entry_safe(psta, ptmp, phead, asoc_list) {
>  		if (chk_sta_is_alive(psta) || !psta->expire_to) {
>  			psta->expire_to = pstapriv->expire_to;
>  			psta->keep_alive_trycnt = 0;
> @@ -283,7 +273,6 @@ void	expire_timeout_chk23a(struct rtw_adapter *padapter)
>  			}
>  		}
>  	}
> -
>  	spin_unlock_bh(&pstapriv->asoc_list_lock);
>  
>  	if (chk_alive_num) {
> @@ -299,51 +288,55 @@ void	expire_timeout_chk23a(struct rtw_adapter *padapter)
>  			SelectChannel23a(padapter, pmlmeext->cur_channel);
>  		}
>  
> -	/* issue null data to check sta alive */
> -	for (i = 0; i < chk_alive_num; i++) {
> +		/* issue null data to check sta alive */
> +		for (i = 0; i < chk_alive_num; i++) {
>  
> -		int ret = _FAIL;
> +			int ret = _FAIL;
>  
> -		psta = chk_alive_list[i];
> -		if (!(psta->state & _FW_LINKED))
> -			continue;
> +			psta = chk_alive_list[i];
> +			if (!(psta->state & _FW_LINKED))
> +				continue;
>  
> -		if (psta->state & WIFI_SLEEP_STATE)
> -			ret = issue_nulldata23a(padapter, psta->hwaddr, 0, 1, 50);
> -		else
> -			ret = issue_nulldata23a(padapter, psta->hwaddr, 0, 3, 50);
> +			if (psta->state & WIFI_SLEEP_STATE)
> +				ret = issue_nulldata23a(padapter, psta->hwaddr,
> +							0, 1, 50);
> +			else
> +				ret = issue_nulldata23a(padapter, psta->hwaddr,
> +							0, 3, 50);
> +
> +			psta->keep_alive_trycnt++;
> +			if (ret == _SUCCESS) {
> +				DBG_8723A("asoc check, sta(%pM) is alive\n",
> +					  psta->hwaddr);
> +				psta->expire_to = pstapriv->expire_to;
> +				psta->keep_alive_trycnt = 0;
> +				continue;
> +			} else if (psta->keep_alive_trycnt <= 3) {
> +				DBG_8723A("ack check for asoc expire, keep_alive_trycnt = %d\n",
> +					  psta->keep_alive_trycnt);
> +				psta->expire_to = 1;
> +				continue;
> +			}
>  
> -		psta->keep_alive_trycnt++;
> -		if (ret == _SUCCESS) {
> -			DBG_8723A("asoc check, sta(%pM) is alive\n",
> -				  psta->hwaddr);
> -			psta->expire_to = pstapriv->expire_to;
>  			psta->keep_alive_trycnt = 0;
> -			continue;
> -		} else if (psta->keep_alive_trycnt <= 3) {
> -			DBG_8723A("ack check for asoc expire, keep_alive_trycnt =%d\n", psta->keep_alive_trycnt);
> -			psta->expire_to = 1;
> -			continue;
> -		}
>  
> -		psta->keep_alive_trycnt = 0;
> -
> -		DBG_8723A("asoc expire %pM, state = 0x%x\n",
> -			  psta->hwaddr, psta->state);
> -		spin_lock_bh(&pstapriv->asoc_list_lock);
> -		if (!list_empty(&psta->asoc_list)) {
> -			list_del_init(&psta->asoc_list);
> -			pstapriv->asoc_list_cnt--;
> -			updated = ap_free_sta23a(padapter, psta, false, WLAN_REASON_DEAUTH_LEAVING);
> +			DBG_8723A("asoc expire %pM, state = 0x%x\n",
> +				  psta->hwaddr, psta->state);
> +			spin_lock_bh(&pstapriv->asoc_list_lock);
> +			if (!list_empty(&psta->asoc_list)) {
> +				list_del_init(&psta->asoc_list);
> +				pstapriv->asoc_list_cnt--;
> +				updated = ap_free_sta23a(padapter, psta, false,
> +							 WLAN_REASON_DEAUTH_LEAVING);
> +			}
> +			spin_unlock_bh(&pstapriv->asoc_list_lock);
>  		}
> -		spin_unlock_bh(&pstapriv->asoc_list_lock);
>  
> +		/* back to original operation channel */
> +		if (backup_oper_channel > 0)
> +			SelectChannel23a(padapter, backup_oper_channel);
>  	}
>  
> -	if (backup_oper_channel > 0) /* back to original operation channel */
> -		SelectChannel23a(padapter, backup_oper_channel);
> -}
> -
>  	associated_clients_update23a(padapter, updated);
>  }
>  
> @@ -1059,7 +1052,7 @@ void rtw_set_macaddr_acl23a(struct rtw_adapter *padapter, int mode)
>  
>  int rtw_acl_add_sta23a(struct rtw_adapter *padapter, u8 *addr)
>  {
> -	struct list_head *plist, *phead;
> +	struct list_head *phead;
>  	u8 added = false;
>  	int i, ret = 0;
>  	struct rtw_wlan_acl_node *paclnode;
> @@ -1073,12 +1066,8 @@ int rtw_acl_add_sta23a(struct rtw_adapter *padapter, u8 *addr)
>  		return -1;
>  
>  	spin_lock_bh(&pacl_node_q->lock);
> -
>  	phead = get_list_head(pacl_node_q);
> -
> -	list_for_each(plist, phead) {
> -		paclnode = container_of(plist, struct rtw_wlan_acl_node, list);
> -
> +	list_for_each_entry(paclnode, phead, list) {
>  		if (!memcmp(paclnode->addr, addr, ETH_ALEN)) {
>  			if (paclnode->valid == true) {
>  				added = true;
> @@ -1087,7 +1076,6 @@ int rtw_acl_add_sta23a(struct rtw_adapter *padapter, u8 *addr)
>  			}
>  		}
>  	}
> -
>  	spin_unlock_bh(&pacl_node_q->lock);
>  
>  	if (added)
> @@ -1121,8 +1109,8 @@ int rtw_acl_add_sta23a(struct rtw_adapter *padapter, u8 *addr)
>  
>  int rtw_acl_remove_sta23a(struct rtw_adapter *padapter, u8 *addr)
>  {
> -	struct list_head *plist, *phead, *ptmp;
> -	struct rtw_wlan_acl_node *paclnode;
> +	struct list_head *phead;
> +	struct rtw_wlan_acl_node *paclnode, *ptmp;
>  	struct sta_priv *pstapriv = &padapter->stapriv;
>  	struct wlan_acl_pool *pacl_list = &pstapriv->acl_list;
>  	struct rtw_queue *pacl_node_q = &pacl_list->acl_node_q;
> @@ -1130,12 +1118,8 @@ int rtw_acl_remove_sta23a(struct rtw_adapter *padapter, u8 *addr)
>  	DBG_8723A("%s(acl_num =%d) = %pM\n", __func__, pacl_list->num, addr);
>  
>  	spin_lock_bh(&pacl_node_q->lock);
> -
>  	phead = get_list_head(pacl_node_q);
> -
> -	list_for_each_safe(plist, ptmp, phead) {
> -		paclnode = container_of(plist, struct rtw_wlan_acl_node, list);
> -
> +	list_for_each_entry_safe(paclnode, ptmp, phead, list) {
>  		if (!memcmp(paclnode->addr, addr, ETH_ALEN)) {
>  			if (paclnode->valid) {
>  				paclnode->valid = false;
> @@ -1146,7 +1130,6 @@ int rtw_acl_remove_sta23a(struct rtw_adapter *padapter, u8 *addr)
>  			}
>  		}
>  	}
> -
>  	spin_unlock_bh(&pacl_node_q->lock);
>  
>  	DBG_8723A("%s, acl_num =%d\n", __func__, pacl_list->num);
> @@ -1354,20 +1337,14 @@ void associated_clients_update23a(struct rtw_adapter *padapter, u8 updated)
>  {
>  	/* update associated stations cap. */
>  	if (updated == true) {
> -		struct list_head *phead, *plist, *ptmp;
> -		struct sta_info *psta;
> +		struct list_head *phead;
> +		struct sta_info *psta, *ptmp;
>  		struct sta_priv *pstapriv = &padapter->stapriv;
>  
>  		spin_lock_bh(&pstapriv->asoc_list_lock);
> -
>  		phead = &pstapriv->asoc_list;
> -
> -		list_for_each_safe(plist, ptmp, phead) {
> -			psta = container_of(plist, struct sta_info, asoc_list);
> -
> +		list_for_each_entry_safe(psta, ptmp, phead, asoc_list)
>  			VCS_update23a(padapter, psta);
> -		}
> -
>  		spin_unlock_bh(&pstapriv->asoc_list_lock);
>  	}
>  }
> @@ -1627,7 +1604,7 @@ u8 ap_free_sta23a(struct rtw_adapter *padapter, struct sta_info *psta, bool acti
>  
>  int rtw_ap_inform_ch_switch23a(struct rtw_adapter *padapter, u8 new_ch, u8 ch_offset)
>  {
> -	struct list_head *phead, *plist;
> +	struct list_head *phead;
>  	struct sta_info *psta = NULL;
>  	struct sta_priv *pstapriv = &padapter->stapriv;
>  	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
> @@ -1642,10 +1619,7 @@ int rtw_ap_inform_ch_switch23a(struct rtw_adapter *padapter, u8 new_ch, u8 ch_of
>  
>  	spin_lock_bh(&pstapriv->asoc_list_lock);
>  	phead = &pstapriv->asoc_list;
> -
> -	list_for_each(plist, phead) {
> -		psta = container_of(plist, struct sta_info, asoc_list);
> -
> +	list_for_each_entry(psta, phead, asoc_list) {
>  		issue_action_spct_ch_switch23a(padapter, psta->hwaddr, new_ch, ch_offset);
>  		psta->expire_to = ((pstapriv->expire_to * 2) > 5) ? 5 : (pstapriv->expire_to * 2);
>  	}
> @@ -1658,8 +1632,8 @@ int rtw_ap_inform_ch_switch23a(struct rtw_adapter *padapter, u8 new_ch, u8 ch_of
>  
>  int rtw_sta_flush23a(struct rtw_adapter *padapter)
>  {
> -	struct list_head *phead, *plist, *ptmp;
> -	struct sta_info *psta;
> +	struct list_head *phead;
> +	struct sta_info *psta, *ptmp;
>  	struct sta_priv *pstapriv = &padapter->stapriv;
>  	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
>  	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
> @@ -1675,10 +1649,7 @@ int rtw_sta_flush23a(struct rtw_adapter *padapter)
>  
>  	spin_lock_bh(&pstapriv->asoc_list_lock);
>  	phead = &pstapriv->asoc_list;
> -
> -	list_for_each_safe(plist, ptmp, phead) {
> -		psta = container_of(plist, struct sta_info, asoc_list);
> -
> +	list_for_each_entry_safe(psta, ptmp, phead, asoc_list) {
>  		/* Remove sta from asoc_list */
>  		list_del_init(&psta->asoc_list);
>  		pstapriv->asoc_list_cnt--;
> @@ -1744,9 +1715,9 @@ void rtw_ap_restore_network(struct rtw_adapter *padapter)
>  	struct mlme_priv *mlmepriv = &padapter->mlmepriv;
>  	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
>  	struct sta_priv *pstapriv = &padapter->stapriv;
> -	struct sta_info *psta;
> +	struct sta_info *psta, *ptmp;
>  	struct security_priv *psecuritypriv = &padapter->securitypriv;
> -	struct list_head *phead, *plist, *ptmp;
> +	struct list_head *phead;
>  	u8 chk_alive_num = 0;
>  	struct sta_info *chk_alive_list[NUM_STA];
>  	int i;
> @@ -1775,15 +1746,9 @@ void rtw_ap_restore_network(struct rtw_adapter *padapter)
>  	}
>  
>  	spin_lock_bh(&pstapriv->asoc_list_lock);
> -
>  	phead = &pstapriv->asoc_list;
> -
> -	list_for_each_safe(plist, ptmp, phead) {
> -		psta = container_of(plist, struct sta_info, asoc_list);
> -
> +	list_for_each_entry_safe(psta, ptmp, phead, asoc_list)
>  		chk_alive_list[chk_alive_num++] = psta;
> -	}
> -
>  	spin_unlock_bh(&pstapriv->asoc_list_lock);
>  
>  	for (i = 0; i < chk_alive_num; i++) {
> @@ -1841,8 +1806,8 @@ void start_ap_mode23a(struct rtw_adapter *padapter)
>  
>  void stop_ap_mode23a(struct rtw_adapter *padapter)
>  {
> -	struct list_head *phead, *plist, *ptmp;
> -	struct rtw_wlan_acl_node *paclnode;
> +	struct list_head *phead;
> +	struct rtw_wlan_acl_node *paclnode, *ptmp;
>  	struct sta_info *psta = NULL;
>  	struct sta_priv *pstapriv = &padapter->stapriv;
>  	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
> @@ -1864,15 +1829,10 @@ void stop_ap_mode23a(struct rtw_adapter *padapter)
>  	/* for ACL */
>  	spin_lock_bh(&pacl_node_q->lock);
>  	phead = get_list_head(pacl_node_q);
> -
> -	list_for_each_safe(plist, ptmp, phead) {
> -		paclnode = container_of(plist, struct rtw_wlan_acl_node, list);
> -
> +	list_for_each_entry_safe(paclnode, ptmp, phead, list) {
>  		if (paclnode->valid == true) {
>  			paclnode->valid = false;
> -
>  			list_del_init(&paclnode->list);
> -
>  			pacl_list->num--;
>  		}
>  	}
> diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
> index 3c09ea9..3adda55 100644
> --- a/drivers/staging/rtl8723au/core/rtw_mlme.c
> +++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
> @@ -171,21 +171,15 @@ exit:
>  
>  void rtw_free_network_queue23a(struct rtw_adapter *padapter)
>  {
> -	struct list_head *phead, *plist, *ptmp;
> -	struct wlan_network *pnetwork;
> +	struct list_head *phead;
> +	struct wlan_network *pnetwork, *ptmp;
>  	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
>  	struct rtw_queue *scanned_queue = &pmlmepriv->scanned_queue;
>  
>  	spin_lock_bh(&scanned_queue->lock);
> -
>  	phead = get_list_head(scanned_queue);
> -
> -	list_for_each_safe(plist, ptmp, phead) {
> -		pnetwork = container_of(plist, struct wlan_network, list);
> -
> +	list_for_each_entry_safe(pnetwork, ptmp, phead, list)
>  		_rtw_free_network23a(pmlmepriv, pnetwork);
> -	}
> -
>  	spin_unlock_bh(&scanned_queue->lock);
>  }
>  
> @@ -329,15 +323,12 @@ int is_same_network23a(struct wlan_bssid_ex *src, struct wlan_bssid_ex *dst)
>  struct wlan_network *
>  rtw_get_oldest_wlan_network23a(struct rtw_queue *scanned_queue)
>  {
> -	struct list_head *plist, *phead;
> +	struct list_head *phead;
>  	struct wlan_network *pwlan;
>  	struct wlan_network *oldest = NULL;
>  
>  	phead = get_list_head(scanned_queue);
> -
> -	list_for_each(plist, phead) {
> -		pwlan = container_of(plist, struct wlan_network, list);
> -
> +	list_for_each_entry(pwlan, phead, list) {
>  		if (pwlan->fixed != true) {
>  			if (!oldest || time_after(oldest->last_scanned,
>  						  pwlan->last_scanned))
> @@ -445,7 +436,6 @@ static void rtw_update_scanned_network(struct rtw_adapter *adapter,
>  
>  	spin_lock_bh(&queue->lock);
>  	phead = get_list_head(queue);
> -
>  	list_for_each(plist, phead) {
>  		pnetwork = container_of(plist, struct wlan_network, list);
>  
> @@ -710,21 +700,17 @@ rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf)
>  
>  static void free_scanqueue(struct mlme_priv *pmlmepriv)
>  {
> -	struct wlan_network *pnetwork;
> +	struct wlan_network *pnetwork, *ptemp;
>  	struct rtw_queue *scan_queue = &pmlmepriv->scanned_queue;
> -	struct list_head *plist, *phead, *ptemp;
> +	struct list_head *phead;
>  
>  	RT_TRACE(_module_rtl871x_mlme_c_, _drv_notice_, "+free_scanqueue\n");
>  	spin_lock_bh(&scan_queue->lock);
> -
>  	phead = get_list_head(scan_queue);
> -
> -	list_for_each_safe(plist, ptemp, phead) {
> -		pnetwork = container_of(plist, struct wlan_network, list);
> +	list_for_each_entry_safe(pnetwork, ptemp, phead, list) {
>  		pnetwork->fixed = false;
>  		_rtw_free_network23a(pmlmepriv, pnetwork);
>  	}
> -
>  	spin_unlock_bh(&scan_queue->lock);
>  }
>  
> @@ -1625,15 +1611,13 @@ exit:
>  static struct wlan_network *
>  rtw_select_candidate_from_queue(struct mlme_priv *pmlmepriv)
>  {
> -	struct wlan_network *pnetwork, *candidate = NULL;
> +	struct wlan_network *pnetwork, *ptmp, *candidate = NULL;
>  	struct rtw_queue *queue = &pmlmepriv->scanned_queue;
> -	struct list_head *phead, *plist, *ptmp;
> +	struct list_head *phead;
>  
>  	spin_lock_bh(&pmlmepriv->scanned_queue.lock);
>  	phead = get_list_head(queue);
> -
> -	list_for_each_safe(plist, ptmp, phead) {
> -		pnetwork = container_of(plist, struct wlan_network, list);
> +	list_for_each_entry_safe(pnetwork, ptmp, phead, list) {
>  		if (!pnetwork) {
>  			RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_,
>  				 "%s: return _FAIL:(pnetwork == NULL)\n",
> diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
> index d28f29a..cc99a96 100644
> --- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
> +++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
> @@ -6082,8 +6082,8 @@ int tx_beacon_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
>  #ifdef CONFIG_8723AU_AP_MODE
>  	else { /* tx bc/mc frames after update TIM */
>  		struct sta_info *psta_bmc;
> -		struct list_head *plist, *phead, *ptmp;
> -		struct xmit_frame *pxmitframe;
> +		struct list_head *phead;
> +		struct xmit_frame *pxmitframe, *tmp;
>  		struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
>  		struct sta_priv  *pstapriv = &padapter->stapriv;
>  
> @@ -6096,14 +6096,8 @@ int tx_beacon_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
>  			msleep(10);/*  10ms, ATIM(HIQ) Windows */
>  			/* spin_lock_bh(&psta_bmc->sleep_q.lock); */
>  			spin_lock_bh(&pxmitpriv->lock);
> -
>  			phead = get_list_head(&psta_bmc->sleep_q);
> -
> -			list_for_each_safe(plist, ptmp, phead) {
> -				pxmitframe = container_of(plist,
> -							  struct xmit_frame,
> -							  list);
> -
> +			list_for_each_entry_safe(pxmitframe, tmp, phead, list) {
>  				list_del_init(&pxmitframe->list);
>  
>  				psta_bmc->sleepq_len--;
> @@ -6119,7 +6113,6 @@ int tx_beacon_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
>  				rtl8723au_hal_xmitframe_enqueue(padapter,
>  								pxmitframe);
>  			}
> -
>  			/* spin_unlock_bh(&psta_bmc->sleep_q.lock); */
>  			spin_unlock_bh(&pxmitpriv->lock);
>  		}
> diff --git a/drivers/staging/rtl8723au/core/rtw_recv.c b/drivers/staging/rtl8723au/core/rtw_recv.c
> index 404b618..de1226e 100644
> --- a/drivers/staging/rtl8723au/core/rtw_recv.c
> +++ b/drivers/staging/rtl8723au/core/rtw_recv.c
> @@ -85,16 +85,16 @@ int _rtw_init_recv_priv23a(struct recv_priv *precvpriv,
>  	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 recv_frame *precvframe;
> -	struct list_head *plist, *ptmp;
> +	struct recv_frame *precvframe, *ptmp;
>  
>  	rtw_free_uc_swdec_pending_queue23a(padapter);
>  
> -	list_for_each_safe(plist, ptmp, &precvpriv->free_recv_queue.queue) {
> -		precvframe = container_of(plist, struct recv_frame, list);
> +	list_for_each_entry_safe(precvframe, ptmp,
> +				 &precvpriv->free_recv_queue.queue,
> +				 list) {
>  		list_del_init(&precvframe->list);
>  		kfree(precvframe);
>  	}
> @@ -195,19 +195,13 @@ using spinlock to protect
>  
>  static void rtw_free_recvframe23a_queue(struct rtw_queue *pframequeue)
>  {
> -	struct recv_frame *hdr;
> -	struct list_head *plist, *phead, *ptmp;
> +	struct recv_frame *hdr, *ptmp;
> +	struct list_head *phead;
>  
>  	spin_lock(&pframequeue->lock);
> -
>  	phead = get_list_head(pframequeue);
> -	plist = phead->next;
> -
> -	list_for_each_safe(plist, ptmp, phead) {
> -		hdr = container_of(plist, struct recv_frame, list);
> +	list_for_each_entry_safe(hdr, ptmp, phead, list)
>  		rtw_free_recvframe23a(hdr);
> -	}
> -
>  	spin_unlock(&pframequeue->lock);
>  }
>  
> @@ -1567,16 +1561,14 @@ struct recv_frame *recvframe_defrag(struct rtw_adapter *adapter,
>  struct recv_frame *recvframe_defrag(struct rtw_adapter *adapter,
>  				    struct rtw_queue *defrag_q)
>  {
> -	struct list_head *plist, *phead, *ptmp;
> -	u8	*data, wlanhdr_offset;
> -	u8	curfragnum;
> -	struct recv_frame *pnfhdr;
> +	struct list_head *plist, *phead;
> +	u8 wlanhdr_offset;
> +	u8 curfragnum;
> +	struct recv_frame *pnfhdr, *ptmp;
>  	struct recv_frame *prframe, *pnextrframe;
> -	struct rtw_queue	*pfree_recv_queue;
> +	struct rtw_queue *pfree_recv_queue;
>  	struct sk_buff *skb;
>  
> -
> -
>  	curfragnum = 0;
>  	pfree_recv_queue = &adapter->recvpriv.free_recv_queue;
>  
> @@ -1597,12 +1589,7 @@ struct recv_frame *recvframe_defrag(struct rtw_adapter *adapter,
>  
>  	curfragnum++;
>  
> -	phead = get_list_head(defrag_q);
> -
> -	data = prframe->pkt->data;
> -
> -	list_for_each_safe(plist, ptmp, phead) {
> -		pnfhdr = container_of(plist, struct recv_frame, list);
> +	list_for_each_entry_safe(pnfhdr, ptmp, phead, list) {
>  		pnextrframe = (struct recv_frame *)pnfhdr;
>  		/* check the fragment sequence  (2nd ~n fragment frame) */
>  
> @@ -1644,8 +1631,6 @@ struct recv_frame *recvframe_defrag(struct rtw_adapter *adapter,
>  	RT_TRACE(_module_rtl871x_recv_c_, _drv_info_,
>  		 "Performance defrag!!!!!\n");
>  
> -
> -
>  	return prframe;
>  }
>  
> diff --git a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
> index b06bff7..f1200e3 100644
> --- a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
> +++ b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
> @@ -83,8 +83,8 @@ int _rtw_init_sta_priv23a(struct sta_priv *pstapriv)
>  
>  int _rtw_free_sta_priv23a(struct sta_priv *pstapriv)
>  {
> -	struct list_head *phead, *plist, *ptmp;
> -	struct sta_info *psta;
> +	struct list_head *phead;
> +	struct sta_info *psta, *ptmp;
>  	struct recv_reorder_ctrl *preorder_ctrl;
>  	int index;
>  
> @@ -93,12 +93,9 @@ int _rtw_free_sta_priv23a(struct sta_priv *pstapriv)
>  		spin_lock_bh(&pstapriv->sta_hash_lock);
>  		for (index = 0; index < NUM_STA; index++) {
>  			phead = &pstapriv->sta_hash[index];
> -
> -			list_for_each_safe(plist, ptmp, phead) {
> +			list_for_each_entry_safe(psta, ptmp, phead, hash_list) {
>  				int i;
>  
> -				psta = container_of(plist, struct sta_info,
> -						    hash_list);
>  				for (i = 0; i < 16 ; i++) {
>  					preorder_ctrl = &psta->recvreorder_ctrl[i];
>  					del_timer_sync(&preorder_ctrl->reordering_ctrl_timer);
> @@ -325,8 +322,8 @@ exit:
>  /*  free all stainfo which in sta_hash[all] */
>  void rtw_free_all_stainfo23a(struct rtw_adapter *padapter)
>  {
> -	struct list_head *plist, *phead, *ptmp;
> -	struct sta_info *psta;
> +	struct list_head *phead;
> +	struct sta_info *psta, *ptmp;
>  	struct sta_priv *pstapriv = &padapter->stapriv;
>  	struct sta_info *pbcmc_stainfo = rtw_get_bcmc_stainfo23a(padapter);
>  	s32 index;
> @@ -335,13 +332,9 @@ void rtw_free_all_stainfo23a(struct rtw_adapter *padapter)
>  		return;
>  
>  	spin_lock_bh(&pstapriv->sta_hash_lock);
> -
>  	for (index = 0; index < NUM_STA; index++) {
>  		phead = &pstapriv->sta_hash[index];
> -
> -		list_for_each_safe(plist, ptmp, phead) {
> -			psta = container_of(plist, struct sta_info, hash_list);
> -
> +		list_for_each_entry_safe(psta, ptmp, phead, hash_list) {
>  			if (pbcmc_stainfo != psta)
>  				rtw_free_stainfo23a(padapter, psta);
>  		}
> @@ -352,7 +345,7 @@ void rtw_free_all_stainfo23a(struct rtw_adapter *padapter)
>  /* any station allocated can be searched by hash list */
>  struct sta_info *rtw_get_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr)
>  {
> -	struct list_head *plist, *phead;
> +	struct list_head *phead;
>  	struct sta_info *psta = NULL;
>  	u32	index;
>  	const u8 *addr;
> @@ -368,12 +361,8 @@ struct sta_info *rtw_get_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr)
>  	index = wifi_mac_hash(addr);
>  
>  	spin_lock_bh(&pstapriv->sta_hash_lock);
> -
>  	phead = &pstapriv->sta_hash[index];
> -
> -	list_for_each(plist, phead) {
> -		psta = container_of(plist, struct sta_info, hash_list);
> -
> +	list_for_each_entry(psta, phead, hash_list) {
>  		/*  if found the matched address */
>  		if (ether_addr_equal(psta->hwaddr, addr))
>  			break;
> @@ -418,7 +407,7 @@ bool rtw_access_ctrl23a(struct rtw_adapter *padapter, u8 *mac_addr)
>  {
>  	bool res = true;
>  #ifdef CONFIG_8723AU_AP_MODE
> -	struct list_head *plist, *phead;
> +	struct list_head *phead;
>  	struct rtw_wlan_acl_node *paclnode;
>  	bool match = false;
>  	struct sta_priv *pstapriv = &padapter->stapriv;
> @@ -427,10 +416,7 @@ bool rtw_access_ctrl23a(struct rtw_adapter *padapter, u8 *mac_addr)
>  
>  	spin_lock_bh(&pacl_node_q->lock);
>  	phead = get_list_head(pacl_node_q);
> -
> -	list_for_each(plist, phead) {
> -		paclnode = container_of(plist, struct rtw_wlan_acl_node, list);
> -
> +	list_for_each_entry(paclnode, phead, list) {
>  		if (ether_addr_equal(paclnode->addr, mac_addr)) {
>  			if (paclnode->valid) {
>  				match = true;
> diff --git a/drivers/staging/rtl8723au/core/rtw_xmit.c b/drivers/staging/rtl8723au/core/rtw_xmit.c
> index a4b6bb6..fc55120 100644
> --- a/drivers/staging/rtl8723au/core/rtw_xmit.c
> +++ b/drivers/staging/rtl8723au/core/rtw_xmit.c
> @@ -193,39 +193,38 @@ fail:
>  	goto exit;
>  }
>  
> -void _rtw_free_xmit_priv23a (struct xmit_priv *pxmitpriv)
> +void _rtw_free_xmit_priv23a(struct xmit_priv *pxmitpriv)
>  {
>  	struct rtw_adapter *padapter = pxmitpriv->adapter;
> -	struct xmit_frame *pxframe;
> -	struct xmit_buf *pxmitbuf;
> -	struct list_head *plist, *ptmp;
> +	struct xmit_frame *pxframe, *ptmp;
> +	struct xmit_buf *pxmitbuf, *ptmp2;
>  
> -	list_for_each_safe(plist, ptmp, &pxmitpriv->free_xmit_queue.queue) {
> -		pxframe = container_of(plist, struct xmit_frame, list);
> +	list_for_each_entry_safe(pxframe, ptmp,
> +				 &pxmitpriv->free_xmit_queue.queue, list) {
>  		list_del_init(&pxframe->list);
>  		rtw_os_xmit_complete23a(padapter, pxframe);
>  		kfree(pxframe);
>  	}
>  
> -	list_for_each_safe(plist, ptmp, &pxmitpriv->xmitbuf_list) {
> -		pxmitbuf = container_of(plist, struct xmit_buf, list2);
> +	list_for_each_entry_safe(pxmitbuf, ptmp2,
> +				 &pxmitpriv->xmitbuf_list, list2) {
>  		list_del_init(&pxmitbuf->list2);
>  		rtw_os_xmit_resource_free23a(padapter, pxmitbuf);
>  		kfree(pxmitbuf);
>  	}
>  
>  	/* free xframe_ext queue,  the same count as extbuf  */
> -	list_for_each_safe(plist, ptmp,
> -			   &pxmitpriv->free_xframe_ext_queue.queue) {
> -		pxframe = container_of(plist, struct xmit_frame, list);
> +	list_for_each_entry_safe(pxframe, ptmp,
> +				 &pxmitpriv->free_xframe_ext_queue.queue,
> +				 list) {
>  		list_del_init(&pxframe->list);
>  		rtw_os_xmit_complete23a(padapter, pxframe);
>  		kfree(pxframe);
>  	}
>  
>  	/*  free xmit extension buff */
> -	list_for_each_safe(plist, ptmp, &pxmitpriv->xmitextbuf_list) {
> -		pxmitbuf = container_of(plist, struct xmit_buf, list2);
> +	list_for_each_entry_safe(pxmitbuf, ptmp2,
> +				 &pxmitpriv->xmitextbuf_list, list2) {
>  		list_del_init(&pxmitbuf->list2);
>  		rtw_os_xmit_resource_free23a(padapter, pxmitbuf);
>  		kfree(pxmitbuf);
> @@ -1563,18 +1562,13 @@ exit:
>  void rtw_free_xmitframe_queue23a(struct xmit_priv *pxmitpriv,
>  				 struct rtw_queue *pframequeue)
>  {
> -	struct list_head *plist, *phead, *ptmp;
> -	struct	xmit_frame *pxmitframe;
> +	struct list_head *phead;
> +	struct	xmit_frame *pxmitframe, *ptmp;
>  
>  	spin_lock_bh(&pframequeue->lock);
> -
>  	phead = get_list_head(pframequeue);
> -
> -	list_for_each_safe(plist, ptmp, phead) {
> -		pxmitframe = container_of(plist, struct xmit_frame, list);
> -
> +	list_for_each_entry_safe(pxmitframe, ptmp, phead, list)
>  		rtw_free_xmitframe23a(pxmitpriv, pxmitframe);
> -	}
>  	spin_unlock_bh(&pframequeue->lock);
>  
>  }
> @@ -1612,9 +1606,9 @@ struct xmit_frame *
>  rtw_dequeue_xframe23a(struct xmit_priv *pxmitpriv, struct hw_xmit *phwxmit_i,
>  		   int entry)
>  {
> -	struct list_head *sta_plist, *sta_phead, *ptmp;
> +	struct list_head *sta_phead;
>  	struct hw_xmit *phwxmit;
> -	struct tx_servq *ptxservq = NULL;
> +	struct tx_servq *ptxservq = NULL, *ptmp;
>  	struct rtw_queue *pframe_queue = NULL;
>  	struct xmit_frame *pxmitframe = NULL;
>  	struct rtw_adapter *padapter = pxmitpriv->adapter;
> @@ -1638,11 +1632,8 @@ rtw_dequeue_xframe23a(struct xmit_priv *pxmitpriv, struct hw_xmit *phwxmit_i,
>  		phwxmit = phwxmit_i + inx[i];
>  
>  		sta_phead = get_list_head(phwxmit->sta_queue);
> -
> -		list_for_each_safe(sta_plist, ptmp, sta_phead) {
> -			ptxservq = container_of(sta_plist, struct tx_servq,
> -						tx_pending);
> -
> +		list_for_each_entry_safe(ptxservq, ptmp, sta_phead,
> +					 tx_pending) {
>  			pframe_queue = &ptxservq->sta_pending;
>  
>  			pxmitframe = dequeue_one_xmitframe(pxmitpriv, phwxmit, ptxservq, pframe_queue);
> @@ -2052,18 +2043,15 @@ dequeue_xmitframes_to_sleeping_queue(struct rtw_adapter *padapter,
>  				     struct rtw_queue *pframequeue)
>  {
>  	int ret;
> -	struct list_head *plist, *phead, *ptmp;
> +	struct list_head *phead;
>  	u8	ac_index;
>  	struct tx_servq	*ptxservq;
>  	struct pkt_attrib	*pattrib;
> -	struct xmit_frame	*pxmitframe;
> +	struct xmit_frame	*pxmitframe, *ptmp;
>  	struct hw_xmit *phwxmits =  padapter->xmitpriv.hwxmits;
>  
>  	phead = get_list_head(pframequeue);
> -
> -	list_for_each_safe(plist, ptmp, phead) {
> -		pxmitframe = container_of(plist, struct xmit_frame, list);
> -
> +	list_for_each_entry_safe(pxmitframe, ptmp, phead, list) {
>  		ret = xmitframe_enqueue_for_sleeping_sta23a(padapter, pxmitframe);
>  
>  		if (ret == true) {
> @@ -2124,17 +2112,14 @@ void wakeup_sta_to_xmit23a(struct rtw_adapter *padapter, struct sta_info *psta)
>  {
>  	u8 update_mask = 0, wmmps_ac = 0;
>  	struct sta_info *psta_bmc;
> -	struct list_head *plist, *phead, *ptmp;
> -	struct xmit_frame *pxmitframe = NULL;
> +	struct list_head *phead;
> +	struct xmit_frame *pxmitframe = NULL, *ptmp;
>  	struct sta_priv *pstapriv = &padapter->stapriv;
>  	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
>  
>  	spin_lock_bh(&pxmitpriv->lock);
> -
>  	phead = get_list_head(&psta->sleep_q);
> -
> -	list_for_each_safe(plist, ptmp, phead) {
> -		pxmitframe = container_of(plist, struct xmit_frame, list);
> +	list_for_each_entry_safe(pxmitframe, ptmp, phead, list) {
>  		list_del_init(&pxmitframe->list);
>  
>  		switch (pxmitframe->attrib.priority) {
> @@ -2194,7 +2179,6 @@ void wakeup_sta_to_xmit23a(struct rtw_adapter *padapter, struct sta_info *psta)
>  
>  		pstapriv->sta_dz_bitmap &= ~CHKBIT(psta->aid);
>  	}
> -
>  	/* spin_unlock_bh(&psta->sleep_q.lock); */
>  	spin_unlock_bh(&pxmitpriv->lock);
>  
> @@ -2206,13 +2190,8 @@ void wakeup_sta_to_xmit23a(struct rtw_adapter *padapter, struct sta_info *psta)
>  	if ((pstapriv->sta_dz_bitmap&0xfffe) == 0x0) {
>  		/* no any sta in ps mode */
>  		spin_lock_bh(&pxmitpriv->lock);
> -
>  		phead = get_list_head(&psta_bmc->sleep_q);
> -
> -		list_for_each_safe(plist, ptmp, phead) {
> -			pxmitframe = container_of(plist, struct xmit_frame,
> -						  list);
> -
> +		list_for_each_entry_safe(pxmitframe, ptmp, phead, list) {
>  			list_del_init(&pxmitframe->list);
>  
>  			psta_bmc->sleepq_len--;
> @@ -2232,7 +2211,6 @@ void wakeup_sta_to_xmit23a(struct rtw_adapter *padapter, struct sta_info *psta)
>  			/* update_BCNTIM(padapter); */
>  			update_mask |= BIT(1);
>  		}
> -
>  		/* spin_unlock_bh(&psta_bmc->sleep_q.lock); */
>  		spin_unlock_bh(&pxmitpriv->lock);
>  	}
> @@ -2245,19 +2223,15 @@ void xmit_delivery_enabled_frames23a(struct rtw_adapter *padapter,
>  				  struct sta_info *psta)
>  {
>  	u8 wmmps_ac = 0;
> -	struct list_head *plist, *phead, *ptmp;
> -	struct xmit_frame *pxmitframe;
> +	struct list_head *phead;
> +	struct xmit_frame *pxmitframe, *ptmp;
>  	struct sta_priv *pstapriv = &padapter->stapriv;
>  	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
>  
>  	/* spin_lock_bh(&psta->sleep_q.lock); */
>  	spin_lock_bh(&pxmitpriv->lock);
> -
>  	phead = get_list_head(&psta->sleep_q);
> -
> -	list_for_each_safe(plist, ptmp, phead) {
> -		pxmitframe = container_of(plist, struct xmit_frame, list);
> -
> +	list_for_each_entry_safe(pxmitframe, ptmp, phead, list) {
>  		switch (pxmitframe->attrib.priority) {
>  		case 1:
>  		case 2:
> diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
> index 0ae2180..908b84c 100644
> --- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
> +++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
> @@ -1270,18 +1270,14 @@ void rtw_cfg80211_indicate_scan_done(struct rtw_wdev_priv *pwdev_priv,
>  
>  void rtw_cfg80211_surveydone_event_callback(struct rtw_adapter *padapter)
>  {
> -	struct list_head *plist, *phead, *ptmp;
> +	struct list_head *phead;
>  	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
>  	struct rtw_queue *queue = &pmlmepriv->scanned_queue;
> -	struct wlan_network *pnetwork;
> +	struct wlan_network *pnetwork, *ptmp;
>  
>  	spin_lock_bh(&pmlmepriv->scanned_queue.lock);
> -
>  	phead = get_list_head(queue);
> -
> -	list_for_each_safe(plist, ptmp, phead) {
> -		pnetwork = container_of(plist, struct wlan_network, list);
> -
> +	list_for_each_entry_safe(pnetwork, ptmp, phead, list) {
>  		/* report network only if the current channel set
>  		   contains the channel to which this network belongs */
>  		if (rtw_ch_set_search_ch23a
> @@ -1289,7 +1285,6 @@ void rtw_cfg80211_surveydone_event_callback(struct rtw_adapter *padapter)
>  		     pnetwork->network.DSConfig) >= 0)
>  			rtw_cfg80211_inform_bss(padapter, pnetwork);
>  	}
> -
>  	spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
>  
>  	/* call this after other things have been done */
> @@ -2850,9 +2845,9 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy,
>  {
>  	const u8 *mac = params->mac;
>  	int ret = 0;
> -	struct list_head *phead, *plist, *ptmp;
> +	struct list_head *phead;
>  	u8 updated = 0;
> -	struct sta_info *psta;
> +	struct sta_info *psta, *ptmp;
>  	struct rtw_adapter *padapter = netdev_priv(ndev);
>  	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
>  	struct sta_priv *pstapriv = &padapter->stapriv;
> @@ -2881,13 +2876,9 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy,
>  		return -EINVAL;
>  
>  	spin_lock_bh(&pstapriv->asoc_list_lock);
> -
>  	phead = &pstapriv->asoc_list;
> -
>  	/* check asoc_queue */
> -	list_for_each_safe(plist, ptmp, phead) {
> -		psta = container_of(plist, struct sta_info, asoc_list);
> -
> +	list_for_each_entry_safe(psta, ptmp, phead, asoc_list) {
>  		if (ether_addr_equal(mac, psta->hwaddr)) {
>  			if (psta->dot8021xalg == 1 &&
>  			    psta->bpairwise_key_installed == false) {
> @@ -2912,7 +2903,6 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy,
>  			}
>  		}
>  	}
> -
>  	spin_unlock_bh(&pstapriv->asoc_list_lock);
>  
>  	associated_clients_update23a(padapter, updated);
> diff --git a/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c b/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c
> index 0cdaef0..cf4a506 100644
> --- a/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c
> +++ b/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c
> @@ -210,22 +210,21 @@ exit:
>  void rtl8723au_write_port_cancel(struct rtw_adapter *padapter)
>  {
>  	struct xmit_buf *pxmitbuf;
> -	struct list_head *plist;
>  	int j;
>  
>  	DBG_8723A("%s\n", __func__);
>  
>  	padapter->bWritePortCancel = true;
>  
> -	list_for_each(plist, &padapter->xmitpriv.xmitbuf_list) {
> -		pxmitbuf = container_of(plist, struct xmit_buf, list2);
> +	list_for_each_entry(pxmitbuf, &padapter->xmitpriv.xmitbuf_list,
> +			    list2) {
>  		for (j = 0; j < 8; j++) {
>  			if (pxmitbuf->pxmit_urb[j])
>  				usb_kill_urb(pxmitbuf->pxmit_urb[j]);
>  		}
>  	}
> -	list_for_each(plist, &padapter->xmitpriv.xmitextbuf_list) {
> -		pxmitbuf = container_of(plist, struct xmit_buf, list2);
> +	list_for_each_entry(pxmitbuf, &padapter->xmitpriv.xmitextbuf_list,
> +			    list2) {
>  		for (j = 0; j < 8; j++) {
>  			if (pxmitbuf->pxmit_urb[j])
>  				usb_kill_urb(pxmitbuf->pxmit_urb[j]);
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c
index 1aa9b26..66315f9 100644
--- a/drivers/staging/rtl8723au/core/rtw_ap.c
+++ b/drivers/staging/rtl8723au/core/rtw_ap.c
@@ -171,24 +171,20 @@  static u8 chk_sta_is_alive(struct sta_info *psta)
 	return ret;
 }
 
-void	expire_timeout_chk23a(struct rtw_adapter *padapter)
+void expire_timeout_chk23a(struct rtw_adapter *padapter)
 {
-	struct list_head *phead, *plist, *ptmp;
+	struct list_head *phead;
 	u8 updated = 0;
-	struct sta_info *psta;
+	struct sta_info *psta, *ptmp;
 	struct sta_priv *pstapriv = &padapter->stapriv;
 	u8 chk_alive_num = 0;
 	struct sta_info *chk_alive_list[NUM_STA];
 	int i;
 
 	spin_lock_bh(&pstapriv->auth_list_lock);
-
 	phead = &pstapriv->auth_list;
-
 	/* check auth_queue */
-	list_for_each_safe(plist, ptmp, phead) {
-		psta = container_of(plist, struct sta_info, auth_list);
-
+	list_for_each_entry_safe(psta, ptmp, phead, auth_list) {
 		if (psta->expire_to > 0) {
 			psta->expire_to--;
 			if (psta->expire_to == 0) {
@@ -206,19 +202,13 @@  void	expire_timeout_chk23a(struct rtw_adapter *padapter)
 				spin_lock_bh(&pstapriv->auth_list_lock);
 			}
 		}
-
 	}
-
 	spin_unlock_bh(&pstapriv->auth_list_lock);
 
 	spin_lock_bh(&pstapriv->asoc_list_lock);
-
 	phead = &pstapriv->asoc_list;
-
 	/* check asoc_queue */
-	list_for_each_safe(plist, ptmp, phead) {
-		psta = container_of(plist, struct sta_info, asoc_list);
-
+	list_for_each_entry_safe(psta, ptmp, phead, asoc_list) {
 		if (chk_sta_is_alive(psta) || !psta->expire_to) {
 			psta->expire_to = pstapriv->expire_to;
 			psta->keep_alive_trycnt = 0;
@@ -283,7 +273,6 @@  void	expire_timeout_chk23a(struct rtw_adapter *padapter)
 			}
 		}
 	}
-
 	spin_unlock_bh(&pstapriv->asoc_list_lock);
 
 	if (chk_alive_num) {
@@ -299,51 +288,55 @@  void	expire_timeout_chk23a(struct rtw_adapter *padapter)
 			SelectChannel23a(padapter, pmlmeext->cur_channel);
 		}
 
-	/* issue null data to check sta alive */
-	for (i = 0; i < chk_alive_num; i++) {
+		/* issue null data to check sta alive */
+		for (i = 0; i < chk_alive_num; i++) {
 
-		int ret = _FAIL;
+			int ret = _FAIL;
 
-		psta = chk_alive_list[i];
-		if (!(psta->state & _FW_LINKED))
-			continue;
+			psta = chk_alive_list[i];
+			if (!(psta->state & _FW_LINKED))
+				continue;
 
-		if (psta->state & WIFI_SLEEP_STATE)
-			ret = issue_nulldata23a(padapter, psta->hwaddr, 0, 1, 50);
-		else
-			ret = issue_nulldata23a(padapter, psta->hwaddr, 0, 3, 50);
+			if (psta->state & WIFI_SLEEP_STATE)
+				ret = issue_nulldata23a(padapter, psta->hwaddr,
+							0, 1, 50);
+			else
+				ret = issue_nulldata23a(padapter, psta->hwaddr,
+							0, 3, 50);
+
+			psta->keep_alive_trycnt++;
+			if (ret == _SUCCESS) {
+				DBG_8723A("asoc check, sta(%pM) is alive\n",
+					  psta->hwaddr);
+				psta->expire_to = pstapriv->expire_to;
+				psta->keep_alive_trycnt = 0;
+				continue;
+			} else if (psta->keep_alive_trycnt <= 3) {
+				DBG_8723A("ack check for asoc expire, keep_alive_trycnt = %d\n",
+					  psta->keep_alive_trycnt);
+				psta->expire_to = 1;
+				continue;
+			}
 
-		psta->keep_alive_trycnt++;
-		if (ret == _SUCCESS) {
-			DBG_8723A("asoc check, sta(%pM) is alive\n",
-				  psta->hwaddr);
-			psta->expire_to = pstapriv->expire_to;
 			psta->keep_alive_trycnt = 0;
-			continue;
-		} else if (psta->keep_alive_trycnt <= 3) {
-			DBG_8723A("ack check for asoc expire, keep_alive_trycnt =%d\n", psta->keep_alive_trycnt);
-			psta->expire_to = 1;
-			continue;
-		}
 
-		psta->keep_alive_trycnt = 0;
-
-		DBG_8723A("asoc expire %pM, state = 0x%x\n",
-			  psta->hwaddr, psta->state);
-		spin_lock_bh(&pstapriv->asoc_list_lock);
-		if (!list_empty(&psta->asoc_list)) {
-			list_del_init(&psta->asoc_list);
-			pstapriv->asoc_list_cnt--;
-			updated = ap_free_sta23a(padapter, psta, false, WLAN_REASON_DEAUTH_LEAVING);
+			DBG_8723A("asoc expire %pM, state = 0x%x\n",
+				  psta->hwaddr, psta->state);
+			spin_lock_bh(&pstapriv->asoc_list_lock);
+			if (!list_empty(&psta->asoc_list)) {
+				list_del_init(&psta->asoc_list);
+				pstapriv->asoc_list_cnt--;
+				updated = ap_free_sta23a(padapter, psta, false,
+							 WLAN_REASON_DEAUTH_LEAVING);
+			}
+			spin_unlock_bh(&pstapriv->asoc_list_lock);
 		}
-		spin_unlock_bh(&pstapriv->asoc_list_lock);
 
+		/* back to original operation channel */
+		if (backup_oper_channel > 0)
+			SelectChannel23a(padapter, backup_oper_channel);
 	}
 
-	if (backup_oper_channel > 0) /* back to original operation channel */
-		SelectChannel23a(padapter, backup_oper_channel);
-}
-
 	associated_clients_update23a(padapter, updated);
 }
 
@@ -1059,7 +1052,7 @@  void rtw_set_macaddr_acl23a(struct rtw_adapter *padapter, int mode)
 
 int rtw_acl_add_sta23a(struct rtw_adapter *padapter, u8 *addr)
 {
-	struct list_head *plist, *phead;
+	struct list_head *phead;
 	u8 added = false;
 	int i, ret = 0;
 	struct rtw_wlan_acl_node *paclnode;
@@ -1073,12 +1066,8 @@  int rtw_acl_add_sta23a(struct rtw_adapter *padapter, u8 *addr)
 		return -1;
 
 	spin_lock_bh(&pacl_node_q->lock);
-
 	phead = get_list_head(pacl_node_q);
-
-	list_for_each(plist, phead) {
-		paclnode = container_of(plist, struct rtw_wlan_acl_node, list);
-
+	list_for_each_entry(paclnode, phead, list) {
 		if (!memcmp(paclnode->addr, addr, ETH_ALEN)) {
 			if (paclnode->valid == true) {
 				added = true;
@@ -1087,7 +1076,6 @@  int rtw_acl_add_sta23a(struct rtw_adapter *padapter, u8 *addr)
 			}
 		}
 	}
-
 	spin_unlock_bh(&pacl_node_q->lock);
 
 	if (added)
@@ -1121,8 +1109,8 @@  int rtw_acl_add_sta23a(struct rtw_adapter *padapter, u8 *addr)
 
 int rtw_acl_remove_sta23a(struct rtw_adapter *padapter, u8 *addr)
 {
-	struct list_head *plist, *phead, *ptmp;
-	struct rtw_wlan_acl_node *paclnode;
+	struct list_head *phead;
+	struct rtw_wlan_acl_node *paclnode, *ptmp;
 	struct sta_priv *pstapriv = &padapter->stapriv;
 	struct wlan_acl_pool *pacl_list = &pstapriv->acl_list;
 	struct rtw_queue *pacl_node_q = &pacl_list->acl_node_q;
@@ -1130,12 +1118,8 @@  int rtw_acl_remove_sta23a(struct rtw_adapter *padapter, u8 *addr)
 	DBG_8723A("%s(acl_num =%d) = %pM\n", __func__, pacl_list->num, addr);
 
 	spin_lock_bh(&pacl_node_q->lock);
-
 	phead = get_list_head(pacl_node_q);
-
-	list_for_each_safe(plist, ptmp, phead) {
-		paclnode = container_of(plist, struct rtw_wlan_acl_node, list);
-
+	list_for_each_entry_safe(paclnode, ptmp, phead, list) {
 		if (!memcmp(paclnode->addr, addr, ETH_ALEN)) {
 			if (paclnode->valid) {
 				paclnode->valid = false;
@@ -1146,7 +1130,6 @@  int rtw_acl_remove_sta23a(struct rtw_adapter *padapter, u8 *addr)
 			}
 		}
 	}
-
 	spin_unlock_bh(&pacl_node_q->lock);
 
 	DBG_8723A("%s, acl_num =%d\n", __func__, pacl_list->num);
@@ -1354,20 +1337,14 @@  void associated_clients_update23a(struct rtw_adapter *padapter, u8 updated)
 {
 	/* update associated stations cap. */
 	if (updated == true) {
-		struct list_head *phead, *plist, *ptmp;
-		struct sta_info *psta;
+		struct list_head *phead;
+		struct sta_info *psta, *ptmp;
 		struct sta_priv *pstapriv = &padapter->stapriv;
 
 		spin_lock_bh(&pstapriv->asoc_list_lock);
-
 		phead = &pstapriv->asoc_list;
-
-		list_for_each_safe(plist, ptmp, phead) {
-			psta = container_of(plist, struct sta_info, asoc_list);
-
+		list_for_each_entry_safe(psta, ptmp, phead, asoc_list)
 			VCS_update23a(padapter, psta);
-		}
-
 		spin_unlock_bh(&pstapriv->asoc_list_lock);
 	}
 }
@@ -1627,7 +1604,7 @@  u8 ap_free_sta23a(struct rtw_adapter *padapter, struct sta_info *psta, bool acti
 
 int rtw_ap_inform_ch_switch23a(struct rtw_adapter *padapter, u8 new_ch, u8 ch_offset)
 {
-	struct list_head *phead, *plist;
+	struct list_head *phead;
 	struct sta_info *psta = NULL;
 	struct sta_priv *pstapriv = &padapter->stapriv;
 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
@@ -1642,10 +1619,7 @@  int rtw_ap_inform_ch_switch23a(struct rtw_adapter *padapter, u8 new_ch, u8 ch_of
 
 	spin_lock_bh(&pstapriv->asoc_list_lock);
 	phead = &pstapriv->asoc_list;
-
-	list_for_each(plist, phead) {
-		psta = container_of(plist, struct sta_info, asoc_list);
-
+	list_for_each_entry(psta, phead, asoc_list) {
 		issue_action_spct_ch_switch23a(padapter, psta->hwaddr, new_ch, ch_offset);
 		psta->expire_to = ((pstapriv->expire_to * 2) > 5) ? 5 : (pstapriv->expire_to * 2);
 	}
@@ -1658,8 +1632,8 @@  int rtw_ap_inform_ch_switch23a(struct rtw_adapter *padapter, u8 new_ch, u8 ch_of
 
 int rtw_sta_flush23a(struct rtw_adapter *padapter)
 {
-	struct list_head *phead, *plist, *ptmp;
-	struct sta_info *psta;
+	struct list_head *phead;
+	struct sta_info *psta, *ptmp;
 	struct sta_priv *pstapriv = &padapter->stapriv;
 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
 	struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info;
@@ -1675,10 +1649,7 @@  int rtw_sta_flush23a(struct rtw_adapter *padapter)
 
 	spin_lock_bh(&pstapriv->asoc_list_lock);
 	phead = &pstapriv->asoc_list;
-
-	list_for_each_safe(plist, ptmp, phead) {
-		psta = container_of(plist, struct sta_info, asoc_list);
-
+	list_for_each_entry_safe(psta, ptmp, phead, asoc_list) {
 		/* Remove sta from asoc_list */
 		list_del_init(&psta->asoc_list);
 		pstapriv->asoc_list_cnt--;
@@ -1744,9 +1715,9 @@  void rtw_ap_restore_network(struct rtw_adapter *padapter)
 	struct mlme_priv *mlmepriv = &padapter->mlmepriv;
 	struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
 	struct sta_priv *pstapriv = &padapter->stapriv;
-	struct sta_info *psta;
+	struct sta_info *psta, *ptmp;
 	struct security_priv *psecuritypriv = &padapter->securitypriv;
-	struct list_head *phead, *plist, *ptmp;
+	struct list_head *phead;
 	u8 chk_alive_num = 0;
 	struct sta_info *chk_alive_list[NUM_STA];
 	int i;
@@ -1775,15 +1746,9 @@  void rtw_ap_restore_network(struct rtw_adapter *padapter)
 	}
 
 	spin_lock_bh(&pstapriv->asoc_list_lock);
-
 	phead = &pstapriv->asoc_list;
-
-	list_for_each_safe(plist, ptmp, phead) {
-		psta = container_of(plist, struct sta_info, asoc_list);
-
+	list_for_each_entry_safe(psta, ptmp, phead, asoc_list)
 		chk_alive_list[chk_alive_num++] = psta;
-	}
-
 	spin_unlock_bh(&pstapriv->asoc_list_lock);
 
 	for (i = 0; i < chk_alive_num; i++) {
@@ -1841,8 +1806,8 @@  void start_ap_mode23a(struct rtw_adapter *padapter)
 
 void stop_ap_mode23a(struct rtw_adapter *padapter)
 {
-	struct list_head *phead, *plist, *ptmp;
-	struct rtw_wlan_acl_node *paclnode;
+	struct list_head *phead;
+	struct rtw_wlan_acl_node *paclnode, *ptmp;
 	struct sta_info *psta = NULL;
 	struct sta_priv *pstapriv = &padapter->stapriv;
 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
@@ -1864,15 +1829,10 @@  void stop_ap_mode23a(struct rtw_adapter *padapter)
 	/* for ACL */
 	spin_lock_bh(&pacl_node_q->lock);
 	phead = get_list_head(pacl_node_q);
-
-	list_for_each_safe(plist, ptmp, phead) {
-		paclnode = container_of(plist, struct rtw_wlan_acl_node, list);
-
+	list_for_each_entry_safe(paclnode, ptmp, phead, list) {
 		if (paclnode->valid == true) {
 			paclnode->valid = false;
-
 			list_del_init(&paclnode->list);
-
 			pacl_list->num--;
 		}
 	}
diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c
index 3c09ea9..3adda55 100644
--- a/drivers/staging/rtl8723au/core/rtw_mlme.c
+++ b/drivers/staging/rtl8723au/core/rtw_mlme.c
@@ -171,21 +171,15 @@  exit:
 
 void rtw_free_network_queue23a(struct rtw_adapter *padapter)
 {
-	struct list_head *phead, *plist, *ptmp;
-	struct wlan_network *pnetwork;
+	struct list_head *phead;
+	struct wlan_network *pnetwork, *ptmp;
 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
 	struct rtw_queue *scanned_queue = &pmlmepriv->scanned_queue;
 
 	spin_lock_bh(&scanned_queue->lock);
-
 	phead = get_list_head(scanned_queue);
-
-	list_for_each_safe(plist, ptmp, phead) {
-		pnetwork = container_of(plist, struct wlan_network, list);
-
+	list_for_each_entry_safe(pnetwork, ptmp, phead, list)
 		_rtw_free_network23a(pmlmepriv, pnetwork);
-	}
-
 	spin_unlock_bh(&scanned_queue->lock);
 }
 
@@ -329,15 +323,12 @@  int is_same_network23a(struct wlan_bssid_ex *src, struct wlan_bssid_ex *dst)
 struct wlan_network *
 rtw_get_oldest_wlan_network23a(struct rtw_queue *scanned_queue)
 {
-	struct list_head *plist, *phead;
+	struct list_head *phead;
 	struct wlan_network *pwlan;
 	struct wlan_network *oldest = NULL;
 
 	phead = get_list_head(scanned_queue);
-
-	list_for_each(plist, phead) {
-		pwlan = container_of(plist, struct wlan_network, list);
-
+	list_for_each_entry(pwlan, phead, list) {
 		if (pwlan->fixed != true) {
 			if (!oldest || time_after(oldest->last_scanned,
 						  pwlan->last_scanned))
@@ -445,7 +436,6 @@  static void rtw_update_scanned_network(struct rtw_adapter *adapter,
 
 	spin_lock_bh(&queue->lock);
 	phead = get_list_head(queue);
-
 	list_for_each(plist, phead) {
 		pnetwork = container_of(plist, struct wlan_network, list);
 
@@ -710,21 +700,17 @@  rtw_surveydone_event_callback23a(struct rtw_adapter *adapter, const u8 *pbuf)
 
 static void free_scanqueue(struct mlme_priv *pmlmepriv)
 {
-	struct wlan_network *pnetwork;
+	struct wlan_network *pnetwork, *ptemp;
 	struct rtw_queue *scan_queue = &pmlmepriv->scanned_queue;
-	struct list_head *plist, *phead, *ptemp;
+	struct list_head *phead;
 
 	RT_TRACE(_module_rtl871x_mlme_c_, _drv_notice_, "+free_scanqueue\n");
 	spin_lock_bh(&scan_queue->lock);
-
 	phead = get_list_head(scan_queue);
-
-	list_for_each_safe(plist, ptemp, phead) {
-		pnetwork = container_of(plist, struct wlan_network, list);
+	list_for_each_entry_safe(pnetwork, ptemp, phead, list) {
 		pnetwork->fixed = false;
 		_rtw_free_network23a(pmlmepriv, pnetwork);
 	}
-
 	spin_unlock_bh(&scan_queue->lock);
 }
 
@@ -1625,15 +1611,13 @@  exit:
 static struct wlan_network *
 rtw_select_candidate_from_queue(struct mlme_priv *pmlmepriv)
 {
-	struct wlan_network *pnetwork, *candidate = NULL;
+	struct wlan_network *pnetwork, *ptmp, *candidate = NULL;
 	struct rtw_queue *queue = &pmlmepriv->scanned_queue;
-	struct list_head *phead, *plist, *ptmp;
+	struct list_head *phead;
 
 	spin_lock_bh(&pmlmepriv->scanned_queue.lock);
 	phead = get_list_head(queue);
-
-	list_for_each_safe(plist, ptmp, phead) {
-		pnetwork = container_of(plist, struct wlan_network, list);
+	list_for_each_entry_safe(pnetwork, ptmp, phead, list) {
 		if (!pnetwork) {
 			RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_,
 				 "%s: return _FAIL:(pnetwork == NULL)\n",
diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
index d28f29a..cc99a96 100644
--- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
+++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c
@@ -6082,8 +6082,8 @@  int tx_beacon_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 #ifdef CONFIG_8723AU_AP_MODE
 	else { /* tx bc/mc frames after update TIM */
 		struct sta_info *psta_bmc;
-		struct list_head *plist, *phead, *ptmp;
-		struct xmit_frame *pxmitframe;
+		struct list_head *phead;
+		struct xmit_frame *pxmitframe, *tmp;
 		struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
 		struct sta_priv  *pstapriv = &padapter->stapriv;
 
@@ -6096,14 +6096,8 @@  int tx_beacon_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 			msleep(10);/*  10ms, ATIM(HIQ) Windows */
 			/* spin_lock_bh(&psta_bmc->sleep_q.lock); */
 			spin_lock_bh(&pxmitpriv->lock);
-
 			phead = get_list_head(&psta_bmc->sleep_q);
-
-			list_for_each_safe(plist, ptmp, phead) {
-				pxmitframe = container_of(plist,
-							  struct xmit_frame,
-							  list);
-
+			list_for_each_entry_safe(pxmitframe, tmp, phead, list) {
 				list_del_init(&pxmitframe->list);
 
 				psta_bmc->sleepq_len--;
@@ -6119,7 +6113,6 @@  int tx_beacon_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf)
 				rtl8723au_hal_xmitframe_enqueue(padapter,
 								pxmitframe);
 			}
-
 			/* spin_unlock_bh(&psta_bmc->sleep_q.lock); */
 			spin_unlock_bh(&pxmitpriv->lock);
 		}
diff --git a/drivers/staging/rtl8723au/core/rtw_recv.c b/drivers/staging/rtl8723au/core/rtw_recv.c
index 404b618..de1226e 100644
--- a/drivers/staging/rtl8723au/core/rtw_recv.c
+++ b/drivers/staging/rtl8723au/core/rtw_recv.c
@@ -85,16 +85,16 @@  int _rtw_init_recv_priv23a(struct recv_priv *precvpriv,
 	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 recv_frame *precvframe;
-	struct list_head *plist, *ptmp;
+	struct recv_frame *precvframe, *ptmp;
 
 	rtw_free_uc_swdec_pending_queue23a(padapter);
 
-	list_for_each_safe(plist, ptmp, &precvpriv->free_recv_queue.queue) {
-		precvframe = container_of(plist, struct recv_frame, list);
+	list_for_each_entry_safe(precvframe, ptmp,
+				 &precvpriv->free_recv_queue.queue,
+				 list) {
 		list_del_init(&precvframe->list);
 		kfree(precvframe);
 	}
@@ -195,19 +195,13 @@  using spinlock to protect
 
 static void rtw_free_recvframe23a_queue(struct rtw_queue *pframequeue)
 {
-	struct recv_frame *hdr;
-	struct list_head *plist, *phead, *ptmp;
+	struct recv_frame *hdr, *ptmp;
+	struct list_head *phead;
 
 	spin_lock(&pframequeue->lock);
-
 	phead = get_list_head(pframequeue);
-	plist = phead->next;
-
-	list_for_each_safe(plist, ptmp, phead) {
-		hdr = container_of(plist, struct recv_frame, list);
+	list_for_each_entry_safe(hdr, ptmp, phead, list)
 		rtw_free_recvframe23a(hdr);
-	}
-
 	spin_unlock(&pframequeue->lock);
 }
 
@@ -1567,16 +1561,14 @@  struct recv_frame *recvframe_defrag(struct rtw_adapter *adapter,
 struct recv_frame *recvframe_defrag(struct rtw_adapter *adapter,
 				    struct rtw_queue *defrag_q)
 {
-	struct list_head *plist, *phead, *ptmp;
-	u8	*data, wlanhdr_offset;
-	u8	curfragnum;
-	struct recv_frame *pnfhdr;
+	struct list_head *plist, *phead;
+	u8 wlanhdr_offset;
+	u8 curfragnum;
+	struct recv_frame *pnfhdr, *ptmp;
 	struct recv_frame *prframe, *pnextrframe;
-	struct rtw_queue	*pfree_recv_queue;
+	struct rtw_queue *pfree_recv_queue;
 	struct sk_buff *skb;
 
-
-
 	curfragnum = 0;
 	pfree_recv_queue = &adapter->recvpriv.free_recv_queue;
 
@@ -1597,12 +1589,7 @@  struct recv_frame *recvframe_defrag(struct rtw_adapter *adapter,
 
 	curfragnum++;
 
-	phead = get_list_head(defrag_q);
-
-	data = prframe->pkt->data;
-
-	list_for_each_safe(plist, ptmp, phead) {
-		pnfhdr = container_of(plist, struct recv_frame, list);
+	list_for_each_entry_safe(pnfhdr, ptmp, phead, list) {
 		pnextrframe = (struct recv_frame *)pnfhdr;
 		/* check the fragment sequence  (2nd ~n fragment frame) */
 
@@ -1644,8 +1631,6 @@  struct recv_frame *recvframe_defrag(struct rtw_adapter *adapter,
 	RT_TRACE(_module_rtl871x_recv_c_, _drv_info_,
 		 "Performance defrag!!!!!\n");
 
-
-
 	return prframe;
 }
 
diff --git a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
index b06bff7..f1200e3 100644
--- a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
+++ b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c
@@ -83,8 +83,8 @@  int _rtw_init_sta_priv23a(struct sta_priv *pstapriv)
 
 int _rtw_free_sta_priv23a(struct sta_priv *pstapriv)
 {
-	struct list_head *phead, *plist, *ptmp;
-	struct sta_info *psta;
+	struct list_head *phead;
+	struct sta_info *psta, *ptmp;
 	struct recv_reorder_ctrl *preorder_ctrl;
 	int index;
 
@@ -93,12 +93,9 @@  int _rtw_free_sta_priv23a(struct sta_priv *pstapriv)
 		spin_lock_bh(&pstapriv->sta_hash_lock);
 		for (index = 0; index < NUM_STA; index++) {
 			phead = &pstapriv->sta_hash[index];
-
-			list_for_each_safe(plist, ptmp, phead) {
+			list_for_each_entry_safe(psta, ptmp, phead, hash_list) {
 				int i;
 
-				psta = container_of(plist, struct sta_info,
-						    hash_list);
 				for (i = 0; i < 16 ; i++) {
 					preorder_ctrl = &psta->recvreorder_ctrl[i];
 					del_timer_sync(&preorder_ctrl->reordering_ctrl_timer);
@@ -325,8 +322,8 @@  exit:
 /*  free all stainfo which in sta_hash[all] */
 void rtw_free_all_stainfo23a(struct rtw_adapter *padapter)
 {
-	struct list_head *plist, *phead, *ptmp;
-	struct sta_info *psta;
+	struct list_head *phead;
+	struct sta_info *psta, *ptmp;
 	struct sta_priv *pstapriv = &padapter->stapriv;
 	struct sta_info *pbcmc_stainfo = rtw_get_bcmc_stainfo23a(padapter);
 	s32 index;
@@ -335,13 +332,9 @@  void rtw_free_all_stainfo23a(struct rtw_adapter *padapter)
 		return;
 
 	spin_lock_bh(&pstapriv->sta_hash_lock);
-
 	for (index = 0; index < NUM_STA; index++) {
 		phead = &pstapriv->sta_hash[index];
-
-		list_for_each_safe(plist, ptmp, phead) {
-			psta = container_of(plist, struct sta_info, hash_list);
-
+		list_for_each_entry_safe(psta, ptmp, phead, hash_list) {
 			if (pbcmc_stainfo != psta)
 				rtw_free_stainfo23a(padapter, psta);
 		}
@@ -352,7 +345,7 @@  void rtw_free_all_stainfo23a(struct rtw_adapter *padapter)
 /* any station allocated can be searched by hash list */
 struct sta_info *rtw_get_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr)
 {
-	struct list_head *plist, *phead;
+	struct list_head *phead;
 	struct sta_info *psta = NULL;
 	u32	index;
 	const u8 *addr;
@@ -368,12 +361,8 @@  struct sta_info *rtw_get_stainfo23a(struct sta_priv *pstapriv, const u8 *hwaddr)
 	index = wifi_mac_hash(addr);
 
 	spin_lock_bh(&pstapriv->sta_hash_lock);
-
 	phead = &pstapriv->sta_hash[index];
-
-	list_for_each(plist, phead) {
-		psta = container_of(plist, struct sta_info, hash_list);
-
+	list_for_each_entry(psta, phead, hash_list) {
 		/*  if found the matched address */
 		if (ether_addr_equal(psta->hwaddr, addr))
 			break;
@@ -418,7 +407,7 @@  bool rtw_access_ctrl23a(struct rtw_adapter *padapter, u8 *mac_addr)
 {
 	bool res = true;
 #ifdef CONFIG_8723AU_AP_MODE
-	struct list_head *plist, *phead;
+	struct list_head *phead;
 	struct rtw_wlan_acl_node *paclnode;
 	bool match = false;
 	struct sta_priv *pstapriv = &padapter->stapriv;
@@ -427,10 +416,7 @@  bool rtw_access_ctrl23a(struct rtw_adapter *padapter, u8 *mac_addr)
 
 	spin_lock_bh(&pacl_node_q->lock);
 	phead = get_list_head(pacl_node_q);
-
-	list_for_each(plist, phead) {
-		paclnode = container_of(plist, struct rtw_wlan_acl_node, list);
-
+	list_for_each_entry(paclnode, phead, list) {
 		if (ether_addr_equal(paclnode->addr, mac_addr)) {
 			if (paclnode->valid) {
 				match = true;
diff --git a/drivers/staging/rtl8723au/core/rtw_xmit.c b/drivers/staging/rtl8723au/core/rtw_xmit.c
index a4b6bb6..fc55120 100644
--- a/drivers/staging/rtl8723au/core/rtw_xmit.c
+++ b/drivers/staging/rtl8723au/core/rtw_xmit.c
@@ -193,39 +193,38 @@  fail:
 	goto exit;
 }
 
-void _rtw_free_xmit_priv23a (struct xmit_priv *pxmitpriv)
+void _rtw_free_xmit_priv23a(struct xmit_priv *pxmitpriv)
 {
 	struct rtw_adapter *padapter = pxmitpriv->adapter;
-	struct xmit_frame *pxframe;
-	struct xmit_buf *pxmitbuf;
-	struct list_head *plist, *ptmp;
+	struct xmit_frame *pxframe, *ptmp;
+	struct xmit_buf *pxmitbuf, *ptmp2;
 
-	list_for_each_safe(plist, ptmp, &pxmitpriv->free_xmit_queue.queue) {
-		pxframe = container_of(plist, struct xmit_frame, list);
+	list_for_each_entry_safe(pxframe, ptmp,
+				 &pxmitpriv->free_xmit_queue.queue, list) {
 		list_del_init(&pxframe->list);
 		rtw_os_xmit_complete23a(padapter, pxframe);
 		kfree(pxframe);
 	}
 
-	list_for_each_safe(plist, ptmp, &pxmitpriv->xmitbuf_list) {
-		pxmitbuf = container_of(plist, struct xmit_buf, list2);
+	list_for_each_entry_safe(pxmitbuf, ptmp2,
+				 &pxmitpriv->xmitbuf_list, list2) {
 		list_del_init(&pxmitbuf->list2);
 		rtw_os_xmit_resource_free23a(padapter, pxmitbuf);
 		kfree(pxmitbuf);
 	}
 
 	/* free xframe_ext queue,  the same count as extbuf  */
-	list_for_each_safe(plist, ptmp,
-			   &pxmitpriv->free_xframe_ext_queue.queue) {
-		pxframe = container_of(plist, struct xmit_frame, list);
+	list_for_each_entry_safe(pxframe, ptmp,
+				 &pxmitpriv->free_xframe_ext_queue.queue,
+				 list) {
 		list_del_init(&pxframe->list);
 		rtw_os_xmit_complete23a(padapter, pxframe);
 		kfree(pxframe);
 	}
 
 	/*  free xmit extension buff */
-	list_for_each_safe(plist, ptmp, &pxmitpriv->xmitextbuf_list) {
-		pxmitbuf = container_of(plist, struct xmit_buf, list2);
+	list_for_each_entry_safe(pxmitbuf, ptmp2,
+				 &pxmitpriv->xmitextbuf_list, list2) {
 		list_del_init(&pxmitbuf->list2);
 		rtw_os_xmit_resource_free23a(padapter, pxmitbuf);
 		kfree(pxmitbuf);
@@ -1563,18 +1562,13 @@  exit:
 void rtw_free_xmitframe_queue23a(struct xmit_priv *pxmitpriv,
 				 struct rtw_queue *pframequeue)
 {
-	struct list_head *plist, *phead, *ptmp;
-	struct	xmit_frame *pxmitframe;
+	struct list_head *phead;
+	struct	xmit_frame *pxmitframe, *ptmp;
 
 	spin_lock_bh(&pframequeue->lock);
-
 	phead = get_list_head(pframequeue);
-
-	list_for_each_safe(plist, ptmp, phead) {
-		pxmitframe = container_of(plist, struct xmit_frame, list);
-
+	list_for_each_entry_safe(pxmitframe, ptmp, phead, list)
 		rtw_free_xmitframe23a(pxmitpriv, pxmitframe);
-	}
 	spin_unlock_bh(&pframequeue->lock);
 
 }
@@ -1612,9 +1606,9 @@  struct xmit_frame *
 rtw_dequeue_xframe23a(struct xmit_priv *pxmitpriv, struct hw_xmit *phwxmit_i,
 		   int entry)
 {
-	struct list_head *sta_plist, *sta_phead, *ptmp;
+	struct list_head *sta_phead;
 	struct hw_xmit *phwxmit;
-	struct tx_servq *ptxservq = NULL;
+	struct tx_servq *ptxservq = NULL, *ptmp;
 	struct rtw_queue *pframe_queue = NULL;
 	struct xmit_frame *pxmitframe = NULL;
 	struct rtw_adapter *padapter = pxmitpriv->adapter;
@@ -1638,11 +1632,8 @@  rtw_dequeue_xframe23a(struct xmit_priv *pxmitpriv, struct hw_xmit *phwxmit_i,
 		phwxmit = phwxmit_i + inx[i];
 
 		sta_phead = get_list_head(phwxmit->sta_queue);
-
-		list_for_each_safe(sta_plist, ptmp, sta_phead) {
-			ptxservq = container_of(sta_plist, struct tx_servq,
-						tx_pending);
-
+		list_for_each_entry_safe(ptxservq, ptmp, sta_phead,
+					 tx_pending) {
 			pframe_queue = &ptxservq->sta_pending;
 
 			pxmitframe = dequeue_one_xmitframe(pxmitpriv, phwxmit, ptxservq, pframe_queue);
@@ -2052,18 +2043,15 @@  dequeue_xmitframes_to_sleeping_queue(struct rtw_adapter *padapter,
 				     struct rtw_queue *pframequeue)
 {
 	int ret;
-	struct list_head *plist, *phead, *ptmp;
+	struct list_head *phead;
 	u8	ac_index;
 	struct tx_servq	*ptxservq;
 	struct pkt_attrib	*pattrib;
-	struct xmit_frame	*pxmitframe;
+	struct xmit_frame	*pxmitframe, *ptmp;
 	struct hw_xmit *phwxmits =  padapter->xmitpriv.hwxmits;
 
 	phead = get_list_head(pframequeue);
-
-	list_for_each_safe(plist, ptmp, phead) {
-		pxmitframe = container_of(plist, struct xmit_frame, list);
-
+	list_for_each_entry_safe(pxmitframe, ptmp, phead, list) {
 		ret = xmitframe_enqueue_for_sleeping_sta23a(padapter, pxmitframe);
 
 		if (ret == true) {
@@ -2124,17 +2112,14 @@  void wakeup_sta_to_xmit23a(struct rtw_adapter *padapter, struct sta_info *psta)
 {
 	u8 update_mask = 0, wmmps_ac = 0;
 	struct sta_info *psta_bmc;
-	struct list_head *plist, *phead, *ptmp;
-	struct xmit_frame *pxmitframe = NULL;
+	struct list_head *phead;
+	struct xmit_frame *pxmitframe = NULL, *ptmp;
 	struct sta_priv *pstapriv = &padapter->stapriv;
 	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
 
 	spin_lock_bh(&pxmitpriv->lock);
-
 	phead = get_list_head(&psta->sleep_q);
-
-	list_for_each_safe(plist, ptmp, phead) {
-		pxmitframe = container_of(plist, struct xmit_frame, list);
+	list_for_each_entry_safe(pxmitframe, ptmp, phead, list) {
 		list_del_init(&pxmitframe->list);
 
 		switch (pxmitframe->attrib.priority) {
@@ -2194,7 +2179,6 @@  void wakeup_sta_to_xmit23a(struct rtw_adapter *padapter, struct sta_info *psta)
 
 		pstapriv->sta_dz_bitmap &= ~CHKBIT(psta->aid);
 	}
-
 	/* spin_unlock_bh(&psta->sleep_q.lock); */
 	spin_unlock_bh(&pxmitpriv->lock);
 
@@ -2206,13 +2190,8 @@  void wakeup_sta_to_xmit23a(struct rtw_adapter *padapter, struct sta_info *psta)
 	if ((pstapriv->sta_dz_bitmap&0xfffe) == 0x0) {
 		/* no any sta in ps mode */
 		spin_lock_bh(&pxmitpriv->lock);
-
 		phead = get_list_head(&psta_bmc->sleep_q);
-
-		list_for_each_safe(plist, ptmp, phead) {
-			pxmitframe = container_of(plist, struct xmit_frame,
-						  list);
-
+		list_for_each_entry_safe(pxmitframe, ptmp, phead, list) {
 			list_del_init(&pxmitframe->list);
 
 			psta_bmc->sleepq_len--;
@@ -2232,7 +2211,6 @@  void wakeup_sta_to_xmit23a(struct rtw_adapter *padapter, struct sta_info *psta)
 			/* update_BCNTIM(padapter); */
 			update_mask |= BIT(1);
 		}
-
 		/* spin_unlock_bh(&psta_bmc->sleep_q.lock); */
 		spin_unlock_bh(&pxmitpriv->lock);
 	}
@@ -2245,19 +2223,15 @@  void xmit_delivery_enabled_frames23a(struct rtw_adapter *padapter,
 				  struct sta_info *psta)
 {
 	u8 wmmps_ac = 0;
-	struct list_head *plist, *phead, *ptmp;
-	struct xmit_frame *pxmitframe;
+	struct list_head *phead;
+	struct xmit_frame *pxmitframe, *ptmp;
 	struct sta_priv *pstapriv = &padapter->stapriv;
 	struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
 
 	/* spin_lock_bh(&psta->sleep_q.lock); */
 	spin_lock_bh(&pxmitpriv->lock);
-
 	phead = get_list_head(&psta->sleep_q);
-
-	list_for_each_safe(plist, ptmp, phead) {
-		pxmitframe = container_of(plist, struct xmit_frame, list);
-
+	list_for_each_entry_safe(pxmitframe, ptmp, phead, list) {
 		switch (pxmitframe->attrib.priority) {
 		case 1:
 		case 2:
diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
index 0ae2180..908b84c 100644
--- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
+++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
@@ -1270,18 +1270,14 @@  void rtw_cfg80211_indicate_scan_done(struct rtw_wdev_priv *pwdev_priv,
 
 void rtw_cfg80211_surveydone_event_callback(struct rtw_adapter *padapter)
 {
-	struct list_head *plist, *phead, *ptmp;
+	struct list_head *phead;
 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
 	struct rtw_queue *queue = &pmlmepriv->scanned_queue;
-	struct wlan_network *pnetwork;
+	struct wlan_network *pnetwork, *ptmp;
 
 	spin_lock_bh(&pmlmepriv->scanned_queue.lock);
-
 	phead = get_list_head(queue);
-
-	list_for_each_safe(plist, ptmp, phead) {
-		pnetwork = container_of(plist, struct wlan_network, list);
-
+	list_for_each_entry_safe(pnetwork, ptmp, phead, list) {
 		/* report network only if the current channel set
 		   contains the channel to which this network belongs */
 		if (rtw_ch_set_search_ch23a
@@ -1289,7 +1285,6 @@  void rtw_cfg80211_surveydone_event_callback(struct rtw_adapter *padapter)
 		     pnetwork->network.DSConfig) >= 0)
 			rtw_cfg80211_inform_bss(padapter, pnetwork);
 	}
-
 	spin_unlock_bh(&pmlmepriv->scanned_queue.lock);
 
 	/* call this after other things have been done */
@@ -2850,9 +2845,9 @@  static int cfg80211_rtw_del_station(struct wiphy *wiphy,
 {
 	const u8 *mac = params->mac;
 	int ret = 0;
-	struct list_head *phead, *plist, *ptmp;
+	struct list_head *phead;
 	u8 updated = 0;
-	struct sta_info *psta;
+	struct sta_info *psta, *ptmp;
 	struct rtw_adapter *padapter = netdev_priv(ndev);
 	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
 	struct sta_priv *pstapriv = &padapter->stapriv;
@@ -2881,13 +2876,9 @@  static int cfg80211_rtw_del_station(struct wiphy *wiphy,
 		return -EINVAL;
 
 	spin_lock_bh(&pstapriv->asoc_list_lock);
-
 	phead = &pstapriv->asoc_list;
-
 	/* check asoc_queue */
-	list_for_each_safe(plist, ptmp, phead) {
-		psta = container_of(plist, struct sta_info, asoc_list);
-
+	list_for_each_entry_safe(psta, ptmp, phead, asoc_list) {
 		if (ether_addr_equal(mac, psta->hwaddr)) {
 			if (psta->dot8021xalg == 1 &&
 			    psta->bpairwise_key_installed == false) {
@@ -2912,7 +2903,6 @@  static int cfg80211_rtw_del_station(struct wiphy *wiphy,
 			}
 		}
 	}
-
 	spin_unlock_bh(&pstapriv->asoc_list_lock);
 
 	associated_clients_update23a(padapter, updated);
diff --git a/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c b/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c
index 0cdaef0..cf4a506 100644
--- a/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c
+++ b/drivers/staging/rtl8723au/os_dep/usb_ops_linux.c
@@ -210,22 +210,21 @@  exit:
 void rtl8723au_write_port_cancel(struct rtw_adapter *padapter)
 {
 	struct xmit_buf *pxmitbuf;
-	struct list_head *plist;
 	int j;
 
 	DBG_8723A("%s\n", __func__);
 
 	padapter->bWritePortCancel = true;
 
-	list_for_each(plist, &padapter->xmitpriv.xmitbuf_list) {
-		pxmitbuf = container_of(plist, struct xmit_buf, list2);
+	list_for_each_entry(pxmitbuf, &padapter->xmitpriv.xmitbuf_list,
+			    list2) {
 		for (j = 0; j < 8; j++) {
 			if (pxmitbuf->pxmit_urb[j])
 				usb_kill_urb(pxmitbuf->pxmit_urb[j]);
 		}
 	}
-	list_for_each(plist, &padapter->xmitpriv.xmitextbuf_list) {
-		pxmitbuf = container_of(plist, struct xmit_buf, list2);
+	list_for_each_entry(pxmitbuf, &padapter->xmitpriv.xmitextbuf_list,
+			    list2) {
 		for (j = 0; j < 8; j++) {
 			if (pxmitbuf->pxmit_urb[j])
 				usb_kill_urb(pxmitbuf->pxmit_urb[j]);