29 #define _RTL871X_STA_MGT_C_
37 static void _init_stainfo(
struct sta_info *psta)
41 _init_listhead(&psta->
list);
68 _init_listhead(&(pstapriv->
sta_hash[i]));
69 list_insert_tail(&psta->
list,
79 static void mfree_all_stainfo(
struct sta_priv *pstapriv)
88 while ((end_of_queue_search(phead, plist)) ==
false) {
97 static void mfree_sta_priv_lock(
struct sta_priv *pstapriv)
99 mfree_all_stainfo(pstapriv);
105 mfree_sta_priv_lock(pstapriv);
117 struct __queue *pfree_sta_queue;
120 u16 wRxSeqInitialValue = 0xffff;
125 if (_queue_empty(pfree_sta_queue) ==
true)
130 list_delete(&(psta->
list));
134 index = wifi_mac_hash(hwaddr);
140 list_insert_tail(&psta->
hash_list, phash_list);
148 for (i = 0; i < 16; i++)
150 &wRxSeqInitialValue, 2);
152 for (i = 0; i < 16 ; i++) {
156 preorder_ctrl->
wend_b = 0xffff;
163 spin_unlock_irqrestore(&(pfree_sta_queue->
lock), flags);
172 struct __queue *pfree_sta_queue;
184 list_delete(&(pstaxmitpriv->
vo_q.tx_pending));
185 spin_unlock_irqrestore(&(pxmitpriv->
vo_pending.lock), irqL0);
188 list_delete(&(pstaxmitpriv->
vi_q.tx_pending));
189 spin_unlock_irqrestore(&(pxmitpriv->
vi_pending.lock), irqL0);
192 list_delete(&(pstaxmitpriv->
bk_q.tx_pending));
193 spin_unlock_irqrestore(&(pxmitpriv->
bk_pending.lock), irqL0);
196 list_delete(&(pstaxmitpriv->
be_q.tx_pending));
197 spin_unlock_irqrestore(&(pxmitpriv->
be_pending.lock), irqL0);
205 for (i = 0; i < 16; i++) {
209 spin_lock(&(pfree_sta_queue->
lock));
211 list_insert_tail(&psta->
list, get_list_head(pfree_sta_queue));
212 spin_unlock(&(pfree_sta_queue->
lock));
228 for (index = 0; index <
NUM_STA; index++) {
231 while ((end_of_queue_search(phead, plist)) ==
false) {
235 if (pbcmc_stainfo != psta)
252 index = wifi_mac_hash(hwaddr);
256 while ((end_of_queue_search(phead, plist)) ==
false) {
273 unsigned char bcast_addr[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
286 u8 bc_addr[
ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};