diff options
Diffstat (limited to 'drivers/staging/rtl8723au/core')
-rw-r--r-- | drivers/staging/rtl8723au/core/rtw_ap.c | 193 | ||||
-rw-r--r-- | drivers/staging/rtl8723au/core/rtw_cmd.c | 3 | ||||
-rw-r--r-- | drivers/staging/rtl8723au/core/rtw_efuse.c | 4 | ||||
-rw-r--r-- | drivers/staging/rtl8723au/core/rtw_mlme.c | 49 | ||||
-rw-r--r-- | drivers/staging/rtl8723au/core/rtw_mlme_ext.c | 36 | ||||
-rw-r--r-- | drivers/staging/rtl8723au/core/rtw_recv.c | 169 | ||||
-rw-r--r-- | drivers/staging/rtl8723au/core/rtw_security.c | 8 | ||||
-rw-r--r-- | drivers/staging/rtl8723au/core/rtw_sta_mgt.c | 44 | ||||
-rw-r--r-- | drivers/staging/rtl8723au/core/rtw_xmit.c | 116 |
9 files changed, 130 insertions, 492 deletions
diff --git a/drivers/staging/rtl8723au/core/rtw_ap.c b/drivers/staging/rtl8723au/core/rtw_ap.c index 1aa9b267c..f68e27702 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) { @@ -1057,103 +1046,6 @@ void rtw_set_macaddr_acl23a(struct rtw_adapter *padapter, int mode) pacl_list->mode = mode; } -int rtw_acl_add_sta23a(struct rtw_adapter *padapter, u8 *addr) -{ - struct list_head *plist, *phead; - u8 added = false; - int i, ret = 0; - struct rtw_wlan_acl_node *paclnode; - 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; - - DBG_8723A("%s(acl_num =%d) =%pM\n", __func__, pacl_list->num, addr); - - if ((NUM_ACL-1) < pacl_list->num) - 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); - - if (!memcmp(paclnode->addr, addr, ETH_ALEN)) { - if (paclnode->valid == true) { - added = true; - DBG_8723A("%s, sta has been added\n", __func__); - break; - } - } - } - - spin_unlock_bh(&pacl_node_q->lock); - - if (added) - return ret; - - spin_lock_bh(&pacl_node_q->lock); - - for (i = 0; i < NUM_ACL; i++) { - paclnode = &pacl_list->aclnode[i]; - - if (!paclnode->valid) { - INIT_LIST_HEAD(&paclnode->list); - - memcpy(paclnode->addr, addr, ETH_ALEN); - - paclnode->valid = true; - - list_add_tail(&paclnode->list, get_list_head(pacl_node_q)); - - pacl_list->num++; - - break; - } - } - - DBG_8723A("%s, acl_num =%d\n", __func__, pacl_list->num); - - spin_unlock_bh(&pacl_node_q->lock); - return ret; -} - -int rtw_acl_remove_sta23a(struct rtw_adapter *padapter, u8 *addr) -{ - struct list_head *plist, *phead, *ptmp; - struct rtw_wlan_acl_node *paclnode; - 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; - - 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); - - if (!memcmp(paclnode->addr, addr, ETH_ALEN)) { - if (paclnode->valid) { - paclnode->valid = false; - - list_del_init(&paclnode->list); - - pacl_list->num--; - } - } - } - - spin_unlock_bh(&pacl_node_q->lock); - - DBG_8723A("%s, acl_num =%d\n", __func__, pacl_list->num); - - return 0; -} - static void update_bcn_erpinfo_ie(struct rtw_adapter *padapter) { struct mlme_priv *pmlmepriv = &padapter->mlmepriv; @@ -1354,20 +1246,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); } } @@ -1625,41 +1511,10 @@ u8 ap_free_sta23a(struct rtw_adapter *padapter, struct sta_info *psta, bool acti return beacon_updated; } -int rtw_ap_inform_ch_switch23a(struct rtw_adapter *padapter, u8 new_ch, u8 ch_offset) -{ - struct list_head *phead, *plist; - struct sta_info *psta = NULL; - struct sta_priv *pstapriv = &padapter->stapriv; - struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; - struct mlme_ext_info *pmlmeinfo = &pmlmeext->mlmext_info; - u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; - - if ((pmlmeinfo->state&0x03) != MSR_AP) - return 0; - - DBG_8723A("%s(%s): with ch:%u, offset:%u\n", __func__, - padapter->pnetdev->name, new_ch, ch_offset); - - 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); - - 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); - } - spin_unlock_bh(&pstapriv->asoc_list_lock); - - issue_action_spct_ch_switch23a(padapter, bc_addr, new_ch, ch_offset); - - return 0; -} - 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 +1530,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 +1596,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 +1627,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 +1687,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 +1710,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_cmd.c b/drivers/staging/rtl8723au/core/rtw_cmd.c index 3035bb864..cd4e0f05d 100644 --- a/drivers/staging/rtl8723au/core/rtw_cmd.c +++ b/drivers/staging/rtl8723au/core/rtw_cmd.c @@ -295,8 +295,7 @@ static void rtw_cmd_work(struct work_struct *work) post_process: /* call callback function for post-processed */ - if (pcmd->cmdcode < (sizeof(rtw_cmd_callback) / - sizeof(struct _cmd_callback))) { + if (pcmd->cmdcode < ARRAY_SIZE(rtw_cmd_callback)) { pcmd_callback = rtw_cmd_callback[pcmd->cmdcode].callback; if (!pcmd_callback) { RT_TRACE(_module_rtl871x_cmd_c_, _drv_info_, diff --git a/drivers/staging/rtl8723au/core/rtw_efuse.c b/drivers/staging/rtl8723au/core/rtw_efuse.c index f174b4d1a..359ef4197 100644 --- a/drivers/staging/rtl8723au/core/rtw_efuse.c +++ b/drivers/staging/rtl8723au/core/rtw_efuse.c @@ -269,8 +269,8 @@ u8 EFUSE_Read1Byte23a(struct rtw_adapter *Adapter, u16 Address) } data = rtl8723au_read8(Adapter, EFUSE_CTRL); return data; - } else - return 0xFF; + } + return 0xFF; } /* Read one byte from real Efuse. */ diff --git a/drivers/staging/rtl8723au/core/rtw_mlme.c b/drivers/staging/rtl8723au/core/rtw_mlme.c index 3c09ea9b7..a786fc4bd 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,27 +1611,16 @@ 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); - if (!pnetwork) { - RT_TRACE(_module_rtl871x_mlme_c_, _drv_err_, - "%s: return _FAIL:(pnetwork == NULL)\n", - __func__); - goto exit; - } - + list_for_each_entry_safe(pnetwork, ptmp, phead, list) rtw_check_join_candidate(pmlmepriv, &candidate, pnetwork); - } - -exit: spin_unlock_bh(&pmlmepriv->scanned_queue.lock); + return candidate; } diff --git a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c index d28f29a93..f4fff385a 100644 --- a/drivers/staging/rtl8723au/core/rtw_mlme_ext.c +++ b/drivers/staging/rtl8723au/core/rtw_mlme_ext.c @@ -2154,8 +2154,7 @@ OnAction23a(struct rtw_adapter *padapter, struct recv_frame *precv_frame) category = mgmt->u.action.category; - for (i = 0; - i < sizeof(OnAction23a_tbl) / sizeof(struct action_handler); i++) { + for (i = 0; i < ARRAY_SIZE(OnAction23a_tbl); i++) { ptable = &OnAction23a_tbl[i]; if (category == ptable->num) @@ -2656,8 +2655,6 @@ static void issue_probersp(struct rtw_adapter *padapter, unsigned char *da) pattrib->last_txcmdsz = pattrib->pktlen; dump_mgntframe23a(padapter, pmgntframe); - - return; } static int _issue_probereq(struct rtw_adapter *padapter, @@ -2957,8 +2954,6 @@ static void issue_auth(struct rtw_adapter *padapter, struct sta_info *psta, rtw_wep_encrypt23a(padapter, pmgntframe); DBG_8723A("%s\n", __func__); dump_mgntframe23a(padapter, pmgntframe); - - return; } #ifdef CONFIG_8723AU_AP_MODE @@ -3338,8 +3333,6 @@ exit: } } else kfree(pmlmepriv->assoc_req); - - return; } /* when wait_ack is true, this function should be called at process context */ @@ -4102,8 +4095,6 @@ static void rtw_site_survey(struct rtw_adapter *padapter) pmlmeext->chan_scan_time = SURVEY_TO; pmlmeext->sitesurvey_res.state = SCAN_DISABLE; } - - return; } /* collect bss info from Beacon and Probe request/response frames. */ @@ -4759,8 +4750,6 @@ void report_survey_event23a(struct rtw_adapter *padapter, rtw_enqueue_cmd23a(pcmdpriv, pcmd_obj); pmlmeext->sitesurvey_res.bss_cnt++; - - return; } void report_surveydone_event23a(struct rtw_adapter *padapter) @@ -4802,8 +4791,6 @@ void report_surveydone_event23a(struct rtw_adapter *padapter) DBG_8723A("survey done event(%x)\n", psurveydone_evt->bss_cnt); rtw_enqueue_cmd23a(pcmdpriv, pcmd_obj); - - return; } void report_join_res23a(struct rtw_adapter *padapter, int res) @@ -4850,8 +4837,6 @@ void report_join_res23a(struct rtw_adapter *padapter, int res) rtw_joinbss_event_prehandle23a(padapter, (u8 *)&pjoinbss_evt->network); rtw_enqueue_cmd23a(pcmdpriv, pcmd_obj); - - return; } void report_del_sta_event23a(struct rtw_adapter *padapter, @@ -4906,8 +4891,6 @@ void report_del_sta_event23a(struct rtw_adapter *padapter, DBG_8723A("report_del_sta_event23a: delete STA, mac_id =%d\n", mac_id); rtw_enqueue_cmd23a(pcmdpriv, pcmd_obj); - - return; } void report_add_sta_event23a(struct rtw_adapter *padapter, @@ -4951,8 +4934,6 @@ void report_add_sta_event23a(struct rtw_adapter *padapter, DBG_8723A("report_add_sta_event23a: add STA\n"); rtw_enqueue_cmd23a(pcmdpriv, pcmd_obj); - - return; } /**************************************************************************** @@ -5394,8 +5375,6 @@ static void link_timer_hdl(unsigned long data) issue_assocreq(padapter); set_link_timer(pmlmeext, REASSOC_TO); } - - return; } static void addba_timer_hdl(unsigned long data) @@ -6082,10 +6061,10 @@ 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, *ptmp; struct xmit_priv *pxmitpriv = &padapter->xmitpriv; - struct sta_priv *pstapriv = &padapter->stapriv; + struct sta_priv *pstapriv = &padapter->stapriv; /* for BC/MC Frames */ psta_bmc = rtw_get_bcmc_stainfo23a(padapter); @@ -6099,10 +6078,8 @@ int tx_beacon_hdl23a(struct rtw_adapter *padapter, const u8 *pbuf) 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); @@ -6119,7 +6096,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 404b61898..989ed0726 100644 --- a/drivers/staging/rtl8723au/core/rtw_recv.c +++ b/drivers/staging/rtl8723au/core/rtw_recv.c @@ -85,16 +85,15 @@ 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); } @@ -105,21 +104,14 @@ void _rtw_free_recv_priv23a (struct recv_priv *precvpriv) struct recv_frame *rtw_alloc_recvframe23a(struct rtw_queue *pfree_recv_queue) { struct recv_frame *pframe; - struct list_head *plist, *phead; struct rtw_adapter *padapter; struct recv_priv *precvpriv; spin_lock_bh(&pfree_recv_queue->lock); - if (list_empty(&pfree_recv_queue->queue)) - pframe = NULL; - else { - phead = get_list_head(pfree_recv_queue); - - plist = phead->next; - - pframe = container_of(plist, struct recv_frame, list); - + pframe = list_first_entry_or_null(&pfree_recv_queue->queue, + struct recv_frame, list); + if (pframe) { list_del_init(&pframe->list); padapter = pframe->adapter; if (padapter) { @@ -195,19 +187,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); } @@ -254,21 +240,13 @@ struct recv_buf *rtw_dequeue_recvbuf23a (struct rtw_queue *queue) { unsigned long irqL; struct recv_buf *precvbuf; - struct list_head *plist, *phead; spin_lock_irqsave(&queue->lock, irqL); - if (list_empty(&queue->queue)) { - precvbuf = NULL; - } else { - phead = get_list_head(queue); - - plist = phead->next; - - precvbuf = container_of(plist, struct recv_buf, list); - + precvbuf = list_first_entry_or_null(&queue->queue, + struct recv_buf, list); + if (precvbuf) list_del_init(&precvbuf->list); - } spin_unlock_irqrestore(&queue->lock, irqL); @@ -286,7 +264,6 @@ int recvframe_chkmic(struct rtw_adapter *adapter, u8 bmic_err = false, brpt_micerror = true; u8 *pframe, *payload, *pframemic; u8 *mickey; - /* u8 *iv, rxdata_key_idx = 0; */ struct sta_info *stainfo; struct rx_pkt_attrib *prxattrib = &precvframe->attrib; struct security_priv *psecuritypriv = &adapter->securitypriv; @@ -361,33 +338,19 @@ int recvframe_chkmic(struct rtw_adapter *adapter, int i; RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, - "*(pframemic-8)-*(pframemic-1) =0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x\n", - *(pframemic - 8), *(pframemic - 7), - *(pframemic - 6), *(pframemic - 5), - *(pframemic - 4), *(pframemic - 3), - *(pframemic - 2), *(pframemic - 1)); + "*(pframemic-8)-*(pframemic-1) =%*phC\n", + 8, pframemic - 8); RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, - "*(pframemic-16)-*(pframemic-9) =0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x\n", - *(pframemic - 16), *(pframemic - 15), - *(pframemic - 14), *(pframemic - 13), - *(pframemic - 12), *(pframemic - 11), - *(pframemic - 10), *(pframemic - 9)); + "*(pframemic-16)-*(pframemic-9) =%*phC\n", + 8, pframemic - 16); RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, "====== demp packet (len =%d) ======\n", precvframe->pkt->len); for (i = 0; i < precvframe->pkt->len; i = i + 8) { RT_TRACE(_module_rtl871x_recv_c_, - _drv_err_, - "0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x\n", - *(precvframe->pkt->data+i), - *(precvframe->pkt->data+i+1), - *(precvframe->pkt->data+i+2), - *(precvframe->pkt->data+i+3), - *(precvframe->pkt->data+i+4), - *(precvframe->pkt->data+i+5), - *(precvframe->pkt->data+i+6), - *(precvframe->pkt->data+i+7)); + _drv_err_, "%*phC\n", + 8, precvframe->pkt->data + i); } RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, "====== demp packet end [len =%d]======\n", @@ -1100,22 +1063,17 @@ static int validate_recv_ctrl_frame(struct rtw_adapter *padapter, if ((psta->state & WIFI_SLEEP_STATE) && (pstapriv->sta_dz_bitmap & CHKBIT(psta->aid))) { - struct list_head *xmitframe_plist, *xmitframe_phead; + struct list_head *xmitframe_phead; struct xmit_frame *pxmitframe; struct xmit_priv *pxmitpriv = &padapter->xmitpriv; spin_lock_bh(&pxmitpriv->lock); xmitframe_phead = get_list_head(&psta->sleep_q); - xmitframe_plist = xmitframe_phead->next; - - if (!list_empty(xmitframe_phead)) { - pxmitframe = container_of(xmitframe_plist, - struct xmit_frame, - list); - - xmitframe_plist = xmitframe_plist->next; - + pxmitframe = list_first_entry_or_null(xmitframe_phead, + struct xmit_frame, + list); + if (pxmitframe) { list_del_init(&pxmitframe->list); psta->sleepq_len--; @@ -1127,30 +1085,20 @@ static int validate_recv_ctrl_frame(struct rtw_adapter *padapter, pxmitframe->attrib.triggered = 1; - /* DBG_8723A("handling ps-poll, q_len =%d, tim =%x\n", psta->sleepq_len, pstapriv->tim_bitmap); */ - rtl8723au_hal_xmitframe_enqueue(padapter, pxmitframe); if (psta->sleepq_len == 0) { pstapriv->tim_bitmap &= ~CHKBIT(psta->aid); - - /* DBG_8723A("after handling ps-poll, tim =%x\n", pstapriv->tim_bitmap); */ - - /* update BCN for TIM IE */ - /* update_BCNTIM(padapter); */ update_beacon23a(padapter, WLAN_EID_TIM, NULL, false); } - /* spin_unlock_bh(&psta->sleep_q.lock); */ spin_unlock_bh(&pxmitpriv->lock); } else { - /* spin_unlock_bh(&psta->sleep_q.lock); */ spin_unlock_bh(&pxmitpriv->lock); - /* DBG_8723A("no buffered packets to xmit\n"); */ if (pstapriv->tim_bitmap & CHKBIT(psta->aid)) { if (psta->sleepq_len == 0) { DBG_8723A("no buffered packets " @@ -1169,8 +1117,6 @@ static int validate_recv_ctrl_frame(struct rtw_adapter *padapter, pstapriv->tim_bitmap &= ~CHKBIT(psta->aid); - /* update BCN for TIM IE */ - /* update_BCNTIM(padapter); */ update_beacon23a(padapter, WLAN_EID_TIM, NULL, false); } @@ -1190,7 +1136,6 @@ static int validate_recv_mgnt_frame(struct rtw_adapter *padapter, struct sta_info *psta; struct sk_buff *skb; struct ieee80211_hdr *hdr; - /* struct mlme_priv *pmlmepriv = &adapter->mlmepriv; */ RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, "+validate_recv_mgnt_frame\n"); @@ -1298,8 +1243,6 @@ static int validate_recv_data_frame(struct rtw_adapter *adapter, goto exit; } - /* psta->rssi = prxcmd->rssi; */ - /* psta->signal_quality = prxcmd->sq; */ precv_frame->psta = psta; pattrib->hdrlen = sizeof(struct ieee80211_hdr_3addr); @@ -1402,11 +1345,7 @@ static void dump_rx_pkt(struct sk_buff *skb, u16 type, int level) DBG_8723A("#############################\n"); for (i = 0; i < 64; i = i + 8) - DBG_8723A("%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X:\n", - *(ptr + i), *(ptr + i + 1), *(ptr + i + 2), - *(ptr + i + 3), *(ptr + i + 4), - *(ptr + i + 5), *(ptr + i + 6), - *(ptr + i + 7)); + DBG_8723A("%*phC:\n", 8, ptr + i); DBG_8723A("#############################\n"); } } @@ -1513,7 +1452,6 @@ static int wlanhdr_to_ethhdr (struct recv_frame *precvframe) psnap = ptr + hdrlen; eth_type = (psnap[6] << 8) | psnap[7]; /* convert hdr + possible LLC headers into Ethernet header */ - /* eth_type = (psnap_type[0] << 8) | psnap_type[1]; */ if ((ether_addr_equal(psnap, rfc1042_header) && eth_type != ETH_P_AARP && eth_type != ETH_P_IPX) || ether_addr_equal(psnap, bridge_tunnel_header)) { @@ -1567,22 +1505,19 @@ 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 *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; phead = get_list_head(defrag_q); - plist = phead->next; - prframe = container_of(plist, struct recv_frame, list); + prframe = list_first_entry(phead, struct recv_frame, list); list_del_init(&prframe->list); skb = prframe->pkt; @@ -1597,12 +1532,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 +1574,6 @@ struct recv_frame *recvframe_defrag(struct rtw_adapter *adapter, RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, "Performance defrag!!!!!\n"); - - return prframe; } @@ -1844,11 +1772,6 @@ static int enqueue_reorder_recvframe23a(struct recv_reorder_ctrl *preorder_ctrl, struct rx_pkt_attrib *pnextattrib; ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue; - /* DbgPrint("+enqueue_reorder_recvframe23a()\n"); */ - - /* spin_lock_irqsave(&ppending_recvframe_queue->lock); */ - /* spin_lock_ex(&ppending_recvframe_queue->lock); */ - phead = get_list_head(ppending_recvframe_queue); list_for_each_safe(plist, ptmp, phead) { @@ -1859,26 +1782,17 @@ static int enqueue_reorder_recvframe23a(struct recv_reorder_ctrl *preorder_ctrl, continue; } else if (SN_EQUAL(pnextattrib->seq_num, pattrib->seq_num)) { /* Duplicate entry is found!! Do not insert current entry. */ - - /* spin_unlock_irqrestore(&ppending_recvframe_queue->lock); */ return false; } else { break; } - /* DbgPrint("enqueue_reorder_recvframe23a():while\n"); */ } - /* spin_lock_irqsave(&ppending_recvframe_queue->lock); */ - /* spin_lock_ex(&ppending_recvframe_queue->lock); */ - list_del_init(&prframe->list); list_add_tail(&prframe->list, plist); - /* spin_unlock_ex(&ppending_recvframe_queue->lock); */ - /* spin_unlock_irqrestore(&ppending_recvframe_queue->lock); */ - return true; } @@ -1889,30 +1803,21 @@ int recv_indicatepkts_in_order(struct rtw_adapter *padapter, struct recv_reorder_ctrl *preorder_ctrl, int bforced) { - /* u8 bcancelled; */ struct list_head *phead, *plist; struct recv_frame *prframe; struct rx_pkt_attrib *pattrib; - /* u8 index = 0; */ int bPktInBuf = false; struct recv_priv *precvpriv; struct rtw_queue *ppending_recvframe_queue; precvpriv = &padapter->recvpriv; ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue; - /* DbgPrint("+recv_indicatepkts_in_order\n"); */ - - /* spin_lock_irqsave(&ppending_recvframe_queue->lock); */ - /* spin_lock_ex(&ppending_recvframe_queue->lock); */ - phead = get_list_head(ppending_recvframe_queue); plist = phead->next; /* Handling some condition for forced indicate case. */ if (bforced) { if (list_empty(phead)) { - /* spin_unlock_irqrestore(&ppending_recvframe_queue->lock); */ - /* spin_unlock_ex(&ppending_recvframe_queue->lock); */ return true; } @@ -1962,12 +1867,8 @@ int recv_indicatepkts_in_order(struct rtw_adapter *padapter, break; } - /* DbgPrint("recv_indicatepkts_in_order():while\n"); */ } - /* spin_unlock_ex(&ppending_recvframe_queue->lock); */ - /* spin_unlock_irqrestore(&ppending_recvframe_queue->lock); */ - return bPktInBuf; } @@ -2083,8 +1984,6 @@ void rtw_reordering_ctrl_timeout_handler23a(unsigned long pcontext) return; } - /* DBG_8723A("+rtw_reordering_ctrl_timeout_handler23a() =>\n"); */ - spin_lock_bh(&ppending_recvframe_queue->lock); if (recv_indicatepkts_in_order(padapter, preorder_ctrl, true) == true) { @@ -2101,14 +2000,10 @@ int process_recv_indicatepkts(struct rtw_adapter *padapter, struct recv_frame *prframe) { int retval = _SUCCESS; - /* struct recv_priv *precvpriv = &padapter->recvpriv; */ - /* struct rx_pkt_attrib *pattrib = &prframe->attrib; */ struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct ht_priv *phtpriv = &pmlmepriv->htpriv; if (phtpriv->ht_option == true) { /* B/G/N Mode */ - /* prframe->preorder_ctrl = &precvpriv->recvreorder_ctrl[pattrib->priority]; */ - /* including perform A-MPDU Rx Ordering Buffer Control */ if (recv_indicatepkt_reorder(padapter, prframe) != _SUCCESS) { if ((padapter->bDriverStopped == false) && diff --git a/drivers/staging/rtl8723au/core/rtw_security.c b/drivers/staging/rtl8723au/core/rtw_security.c index 038b57b3a..5a4cfdf1e 100644 --- a/drivers/staging/rtl8723au/core/rtw_security.c +++ b/drivers/staging/rtl8723au/core/rtw_security.c @@ -634,7 +634,7 @@ int rtw_tkip_encrypt23a(struct rtw_adapter *padapter, &pattrib->ra[0]); } - if (stainfo == NULL) { + if (!stainfo) { RT_TRACE(_module_rtl871x_security_c_, _drv_err_, "%s: stainfo == NULL!!!\n", __func__); DBG_8723A("%s, psta == NUL\n", __func__); @@ -731,7 +731,7 @@ int rtw_tkip_decrypt23a(struct rtw_adapter *padapter, stainfo = rtw_get_stainfo23a(&padapter->stapriv, &prxattrib->ta[0]); - if (stainfo == NULL) { + if (!stainfo) { RT_TRACE(_module_rtl871x_security_c_, _drv_err_, "%s: stainfo == NULL!!!\n", __func__); return _FAIL; @@ -1617,9 +1617,9 @@ exit: return res; } -void rtw_use_tkipkey_handler23a(void *FunctionContext) +void rtw_use_tkipkey_handler23a(void *function_context) { - struct rtw_adapter *padapter = (struct rtw_adapter *)FunctionContext; + struct rtw_adapter *padapter = function_context; RT_TRACE(_module_rtl871x_security_c_, _drv_err_, "^^^%s ^^^\n", __func__); diff --git a/drivers/staging/rtl8723au/core/rtw_sta_mgt.c b/drivers/staging/rtl8723au/core/rtw_sta_mgt.c index b06bff745..a9b778c45 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); @@ -203,7 +200,7 @@ int rtw_free_stainfo23a(struct rtw_adapter *padapter, struct sta_info *psta) struct hw_xmit *phwxmit; int i; - if (psta == NULL) + if (!psta) goto exit; spin_lock_bh(&psta->lock); @@ -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,12 +345,12 @@ 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 sta_info *psta = NULL; - u32 index; + struct list_head *phead; + struct sta_info *pos, *psta = NULL; + u32 index; const u8 *addr; - if (hwaddr == NULL) + if (!hwaddr) return NULL; if (is_multicast_ether_addr(hwaddr)) @@ -368,11 +361,9 @@ 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(pos, phead, hash_list) { + psta = pos; /* if found the matched address */ if (ether_addr_equal(psta->hwaddr, addr)) @@ -392,7 +383,7 @@ int rtw_init_bcmc_stainfo23a(struct rtw_adapter *padapter) int res = _SUCCESS; psta = rtw_alloc_stainfo23a(pstapriv, bc_addr, GFP_KERNEL); - if (psta == NULL) { + if (!psta) { res = _FAIL; RT_TRACE(_module_rtl871x_sta_mgt_c_, _drv_err_, "rtw_alloc_stainfo23a fail\n"); @@ -418,7 +409,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 +418,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 a4b6bb6c7..3de40cfa5 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); @@ -1444,24 +1443,18 @@ Must be very very cautious... */ static struct xmit_frame *rtw_alloc_xmitframe(struct xmit_priv *pxmitpriv) { - struct xmit_frame *pxframe = NULL; - struct list_head *plist, *phead; + struct xmit_frame *pxframe; struct rtw_queue *pfree_xmit_queue = &pxmitpriv->free_xmit_queue; spin_lock_bh(&pfree_xmit_queue->lock); - if (list_empty(&pfree_xmit_queue->queue)) { + pxframe = list_first_entry_or_null(&pfree_xmit_queue->queue, + struct xmit_frame, list); + if (!pxframe) { RT_TRACE(_module_rtl871x_xmit_c_, _drv_info_, "rtw_alloc_xmitframe:%d\n", pxmitpriv->free_xmitframe_cnt); - pxframe = NULL; } else { - phead = get_list_head(pfree_xmit_queue); - - plist = phead->next; - - pxframe = container_of(plist, struct xmit_frame, list); - list_del_init(&pxframe->list); pxmitpriv->free_xmitframe_cnt--; RT_TRACE(_module_rtl871x_xmit_c_, _drv_info_, @@ -1478,22 +1471,18 @@ static struct xmit_frame *rtw_alloc_xmitframe(struct xmit_priv *pxmitpriv) struct xmit_frame *rtw_alloc_xmitframe23a_ext(struct xmit_priv *pxmitpriv) { - struct xmit_frame *pxframe = NULL; - struct list_head *plist, *phead; + struct xmit_frame *pxframe; struct rtw_queue *queue = &pxmitpriv->free_xframe_ext_queue; spin_lock_bh(&queue->lock); - if (list_empty(&queue->queue)) { + pxframe = list_first_entry_or_null(&queue->queue, + struct xmit_frame, list); + if (!pxframe) { RT_TRACE(_module_rtl871x_xmit_c_, _drv_info_, "rtw_alloc_xmitframe23a_ext:%d\n", pxmitpriv->free_xframe_ext_cnt); - pxframe = NULL; } else { - phead = get_list_head(queue); - plist = phead->next; - pxframe = container_of(plist, struct xmit_frame, list); - list_del_init(&pxframe->list); pxmitpriv->free_xframe_ext_cnt--; RT_TRACE(_module_rtl871x_xmit_c_, _drv_info_, @@ -1563,18 +1552,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 +1596,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 +1622,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 +2033,15 @@ dequeue_xmitframes_to_sleeping_queue(struct rtw_adapter *padapter, struct rtw_queue *pframequeue) { int ret; - struct list_head *plist, *phead, *ptmp; - u8 ac_index; + struct list_head *phead; + u8 ac_index; struct tx_servq *ptxservq; - struct pkt_attrib *pattrib; - struct xmit_frame *pxmitframe; - struct hw_xmit *phwxmits = padapter->xmitpriv.hwxmits; + struct pkt_attrib *pattrib; + 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 +2102,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 +2169,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 +2180,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 +2201,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 +2213,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: |