Lines Matching refs:priv
32 static int mwifiex_11n_dispatch_amsdu_pkt(struct mwifiex_private *priv, in mwifiex_11n_dispatch_amsdu_pkt() argument
47 ieee80211_amsdu_to_8023s(skb, &list, priv->curr_addr, in mwifiex_11n_dispatch_amsdu_pkt()
48 priv->wdev.iftype, 0, false); in mwifiex_11n_dispatch_amsdu_pkt()
52 ret = mwifiex_recv_packet(priv, rx_skb); in mwifiex_11n_dispatch_amsdu_pkt()
54 dev_err(priv->adapter->dev, in mwifiex_11n_dispatch_amsdu_pkt()
66 static int mwifiex_11n_dispatch_pkt(struct mwifiex_private *priv, void *payload) in mwifiex_11n_dispatch_pkt() argument
68 int ret = mwifiex_11n_dispatch_amsdu_pkt(priv, payload); in mwifiex_11n_dispatch_pkt()
73 if (priv->bss_role == MWIFIEX_BSS_ROLE_UAP) in mwifiex_11n_dispatch_pkt()
74 return mwifiex_handle_uap_rx_forward(priv, payload); in mwifiex_11n_dispatch_pkt()
76 return mwifiex_process_rx_packet(priv, payload); in mwifiex_11n_dispatch_pkt()
88 mwifiex_11n_dispatch_pkt_until_start_win(struct mwifiex_private *priv, in mwifiex_11n_dispatch_pkt_until_start_win() argument
101 spin_lock_irqsave(&priv->rx_pkt_lock, flags); in mwifiex_11n_dispatch_pkt_until_start_win()
107 spin_unlock_irqrestore(&priv->rx_pkt_lock, flags); in mwifiex_11n_dispatch_pkt_until_start_win()
109 mwifiex_11n_dispatch_pkt(priv, rx_tmp_ptr); in mwifiex_11n_dispatch_pkt_until_start_win()
112 spin_lock_irqsave(&priv->rx_pkt_lock, flags); in mwifiex_11n_dispatch_pkt_until_start_win()
123 spin_unlock_irqrestore(&priv->rx_pkt_lock, flags); in mwifiex_11n_dispatch_pkt_until_start_win()
135 mwifiex_11n_scan_and_dispatch(struct mwifiex_private *priv, in mwifiex_11n_scan_and_dispatch() argument
143 spin_lock_irqsave(&priv->rx_pkt_lock, flags); in mwifiex_11n_scan_and_dispatch()
145 spin_unlock_irqrestore(&priv->rx_pkt_lock, flags); in mwifiex_11n_scan_and_dispatch()
150 spin_unlock_irqrestore(&priv->rx_pkt_lock, flags); in mwifiex_11n_scan_and_dispatch()
151 mwifiex_11n_dispatch_pkt(priv, rx_tmp_ptr); in mwifiex_11n_scan_and_dispatch()
154 spin_lock_irqsave(&priv->rx_pkt_lock, flags); in mwifiex_11n_scan_and_dispatch()
167 spin_unlock_irqrestore(&priv->rx_pkt_lock, flags); in mwifiex_11n_scan_and_dispatch()
177 mwifiex_del_rx_reorder_entry(struct mwifiex_private *priv, in mwifiex_del_rx_reorder_entry() argument
186 spin_lock_irqsave(&priv->adapter->rx_proc_lock, flags); in mwifiex_del_rx_reorder_entry()
187 priv->adapter->rx_locked = true; in mwifiex_del_rx_reorder_entry()
188 if (priv->adapter->rx_processing) { in mwifiex_del_rx_reorder_entry()
189 spin_unlock_irqrestore(&priv->adapter->rx_proc_lock, flags); in mwifiex_del_rx_reorder_entry()
190 flush_workqueue(priv->adapter->rx_workqueue); in mwifiex_del_rx_reorder_entry()
192 spin_unlock_irqrestore(&priv->adapter->rx_proc_lock, flags); in mwifiex_del_rx_reorder_entry()
196 mwifiex_11n_dispatch_pkt_until_start_win(priv, tbl, start_win); in mwifiex_del_rx_reorder_entry()
201 spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags); in mwifiex_del_rx_reorder_entry()
203 spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags); in mwifiex_del_rx_reorder_entry()
208 spin_lock_irqsave(&priv->adapter->rx_proc_lock, flags); in mwifiex_del_rx_reorder_entry()
209 priv->adapter->rx_locked = false; in mwifiex_del_rx_reorder_entry()
210 spin_unlock_irqrestore(&priv->adapter->rx_proc_lock, flags); in mwifiex_del_rx_reorder_entry()
219 mwifiex_11n_get_rx_reorder_tbl(struct mwifiex_private *priv, int tid, u8 *ta) in mwifiex_11n_get_rx_reorder_tbl() argument
224 spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags); in mwifiex_11n_get_rx_reorder_tbl()
225 list_for_each_entry(tbl, &priv->rx_reorder_tbl_ptr, list) { in mwifiex_11n_get_rx_reorder_tbl()
227 spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, in mwifiex_11n_get_rx_reorder_tbl()
232 spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags); in mwifiex_11n_get_rx_reorder_tbl()
240 void mwifiex_11n_del_rx_reorder_tbl_by_ta(struct mwifiex_private *priv, u8 *ta) in mwifiex_11n_del_rx_reorder_tbl_by_ta() argument
248 spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags); in mwifiex_11n_del_rx_reorder_tbl_by_ta()
249 list_for_each_entry_safe(tbl, tmp, &priv->rx_reorder_tbl_ptr, list) { in mwifiex_11n_del_rx_reorder_tbl_by_ta()
251 spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, in mwifiex_11n_del_rx_reorder_tbl_by_ta()
253 mwifiex_del_rx_reorder_entry(priv, tbl); in mwifiex_11n_del_rx_reorder_tbl_by_ta()
254 spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags); in mwifiex_11n_del_rx_reorder_tbl_by_ta()
257 spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags); in mwifiex_11n_del_rx_reorder_tbl_by_ta()
270 struct mwifiex_private *priv = ctx->priv; in mwifiex_11n_find_last_seq_num() local
274 spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags); in mwifiex_11n_find_last_seq_num()
277 spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, in mwifiex_11n_find_last_seq_num()
282 spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags); in mwifiex_11n_find_last_seq_num()
307 dev_dbg(ctx->priv->adapter->dev, "info: flush data %d\n", seq_num); in mwifiex_flush_data()
309 mwifiex_11n_dispatch_pkt_until_start_win(ctx->priv, ctx->ptr, in mwifiex_flush_data()
324 mwifiex_11n_create_rx_reorder_tbl(struct mwifiex_private *priv, u8 *ta, in mwifiex_11n_create_rx_reorder_tbl() argument
337 tbl = mwifiex_11n_get_rx_reorder_tbl(priv, tid, ta); in mwifiex_11n_create_rx_reorder_tbl()
339 mwifiex_11n_dispatch_pkt_until_start_win(priv, tbl, seq_num); in mwifiex_11n_create_rx_reorder_tbl()
354 spin_lock_irqsave(&priv->sta_list_spinlock, flags); in mwifiex_11n_create_rx_reorder_tbl()
355 if (mwifiex_queuing_ra_based(priv)) { in mwifiex_11n_create_rx_reorder_tbl()
356 if (priv->bss_role == MWIFIEX_BSS_ROLE_UAP) { in mwifiex_11n_create_rx_reorder_tbl()
357 node = mwifiex_get_sta_entry(priv, ta); in mwifiex_11n_create_rx_reorder_tbl()
362 node = mwifiex_get_sta_entry(priv, ta); in mwifiex_11n_create_rx_reorder_tbl()
366 last_seq = priv->rx_seq[tid]; in mwifiex_11n_create_rx_reorder_tbl()
368 spin_unlock_irqrestore(&priv->sta_list_spinlock, flags); in mwifiex_11n_create_rx_reorder_tbl()
370 dev_dbg(priv->adapter->dev, "info: last_seq=%d start_win=%d\n", in mwifiex_11n_create_rx_reorder_tbl()
385 dev_err(priv->adapter->dev, in mwifiex_11n_create_rx_reorder_tbl()
391 new_node->timer_context.priv = priv; in mwifiex_11n_create_rx_reorder_tbl()
400 spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags); in mwifiex_11n_create_rx_reorder_tbl()
401 list_add_tail(&new_node->list, &priv->rx_reorder_tbl_ptr); in mwifiex_11n_create_rx_reorder_tbl()
402 spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags); in mwifiex_11n_create_rx_reorder_tbl()
448 int mwifiex_cmd_11n_addba_rsp_gen(struct mwifiex_private *priv, in mwifiex_cmd_11n_addba_rsp_gen() argument
455 u32 rx_win_size = priv->add_ba_param.rx_win_size; in mwifiex_cmd_11n_addba_rsp_gen()
461 if ((GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_STA) && in mwifiex_cmd_11n_addba_rsp_gen()
462 ISSUPP_TDLS_ENABLED(priv->adapter->fw_cap_info) && in mwifiex_cmd_11n_addba_rsp_gen()
463 priv->adapter->is_hw_11ac_capable && in mwifiex_cmd_11n_addba_rsp_gen()
464 memcmp(priv->cfg_bssid, cmd_addba_req->peer_mac_addr, ETH_ALEN)) { in mwifiex_cmd_11n_addba_rsp_gen()
465 spin_lock_irqsave(&priv->sta_list_spinlock, flags); in mwifiex_cmd_11n_addba_rsp_gen()
466 sta_ptr = mwifiex_get_sta_entry(priv, in mwifiex_cmd_11n_addba_rsp_gen()
469 spin_unlock_irqrestore(&priv->sta_list_spinlock, flags); in mwifiex_cmd_11n_addba_rsp_gen()
470 dev_warn(priv->adapter->dev, in mwifiex_cmd_11n_addba_rsp_gen()
477 spin_unlock_irqrestore(&priv->sta_list_spinlock, flags); in mwifiex_cmd_11n_addba_rsp_gen()
496 if (!priv->add_ba_param.rx_amsdu || in mwifiex_cmd_11n_addba_rsp_gen()
497 (priv->aggr_prio_tbl[tid].amsdu == BA_STREAM_NOT_ALLOWED)) in mwifiex_cmd_11n_addba_rsp_gen()
506 mwifiex_11n_create_rx_reorder_tbl(priv, cmd_addba_req->peer_mac_addr, in mwifiex_cmd_11n_addba_rsp_gen()
544 int mwifiex_11n_rx_reorder_pkt(struct mwifiex_private *priv, in mwifiex_11n_rx_reorder_pkt() argument
554 tbl = mwifiex_11n_get_rx_reorder_tbl(priv, tid, ta); in mwifiex_11n_rx_reorder_pkt()
557 mwifiex_11n_dispatch_pkt(priv, payload); in mwifiex_11n_rx_reorder_pkt()
562 mwifiex_11n_dispatch_pkt(priv, payload); in mwifiex_11n_rx_reorder_pkt()
576 dev_dbg(priv->adapter->dev, in mwifiex_11n_rx_reorder_pkt()
581 dev_dbg(priv->adapter->dev, in mwifiex_11n_rx_reorder_pkt()
621 mwifiex_11n_dispatch_pkt_until_start_win(priv, tbl, start_win); in mwifiex_11n_rx_reorder_pkt()
642 mwifiex_11n_scan_and_dispatch(priv, tbl); in mwifiex_11n_rx_reorder_pkt()
657 mwifiex_del_ba_tbl(struct mwifiex_private *priv, int tid, u8 *peer_mac, in mwifiex_del_ba_tbl() argument
671 dev_dbg(priv->adapter->dev, "event: DELBA: %pM tid=%d initiator=%d\n", in mwifiex_del_ba_tbl()
675 tbl = mwifiex_11n_get_rx_reorder_tbl(priv, tid, in mwifiex_del_ba_tbl()
678 dev_dbg(priv->adapter->dev, in mwifiex_del_ba_tbl()
682 mwifiex_del_rx_reorder_entry(priv, tbl); in mwifiex_del_ba_tbl()
684 ptx_tbl = mwifiex_get_ba_tbl(priv, tid, peer_mac); in mwifiex_del_ba_tbl()
686 dev_dbg(priv->adapter->dev, in mwifiex_del_ba_tbl()
690 ra_list = mwifiex_wmm_get_ralist_node(priv, tid, peer_mac); in mwifiex_del_ba_tbl()
695 spin_lock_irqsave(&priv->tx_ba_stream_tbl_lock, flags); in mwifiex_del_ba_tbl()
696 mwifiex_11n_delete_tx_ba_stream_tbl_entry(priv, ptx_tbl); in mwifiex_del_ba_tbl()
697 spin_unlock_irqrestore(&priv->tx_ba_stream_tbl_lock, flags); in mwifiex_del_ba_tbl()
707 int mwifiex_ret_11n_addba_resp(struct mwifiex_private *priv, in mwifiex_ret_11n_addba_resp() argument
724 dev_err(priv->adapter->dev, "ADDBA RSP: failed %pM tid=%d)\n", in mwifiex_ret_11n_addba_resp()
727 tbl = mwifiex_11n_get_rx_reorder_tbl(priv, tid, in mwifiex_ret_11n_addba_resp()
730 mwifiex_del_rx_reorder_entry(priv, tbl); in mwifiex_ret_11n_addba_resp()
738 tbl = mwifiex_11n_get_rx_reorder_tbl(priv, tid, in mwifiex_ret_11n_addba_resp()
742 priv->add_ba_param.rx_amsdu && in mwifiex_ret_11n_addba_resp()
743 (priv->aggr_prio_tbl[tid].amsdu != BA_STREAM_NOT_ALLOWED)) in mwifiex_ret_11n_addba_resp()
749 dev_dbg(priv->adapter->dev, in mwifiex_ret_11n_addba_resp()
760 void mwifiex_11n_ba_stream_timeout(struct mwifiex_private *priv, in mwifiex_11n_ba_stream_timeout() argument
773 mwifiex_send_cmd(priv, HostCmd_CMD_11N_DELBA, 0, 0, &delba, false); in mwifiex_11n_ba_stream_timeout()
780 void mwifiex_11n_cleanup_reorder_tbl(struct mwifiex_private *priv) in mwifiex_11n_cleanup_reorder_tbl() argument
785 spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags); in mwifiex_11n_cleanup_reorder_tbl()
787 &priv->rx_reorder_tbl_ptr, list) { in mwifiex_11n_cleanup_reorder_tbl()
788 spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags); in mwifiex_11n_cleanup_reorder_tbl()
789 mwifiex_del_rx_reorder_entry(priv, del_tbl_ptr); in mwifiex_11n_cleanup_reorder_tbl()
790 spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags); in mwifiex_11n_cleanup_reorder_tbl()
792 INIT_LIST_HEAD(&priv->rx_reorder_tbl_ptr); in mwifiex_11n_cleanup_reorder_tbl()
793 spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags); in mwifiex_11n_cleanup_reorder_tbl()
795 mwifiex_reset_11n_rx_seq_num(priv); in mwifiex_11n_cleanup_reorder_tbl()
803 struct mwifiex_private *priv; in mwifiex_update_rxreor_flags() local
809 priv = adapter->priv[i]; in mwifiex_update_rxreor_flags()
810 if (!priv) in mwifiex_update_rxreor_flags()
813 spin_lock_irqsave(&priv->rx_reorder_tbl_lock, lock_flags); in mwifiex_update_rxreor_flags()
814 if (list_empty(&priv->rx_reorder_tbl_ptr)) { in mwifiex_update_rxreor_flags()
815 spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, in mwifiex_update_rxreor_flags()
820 list_for_each_entry(tbl, &priv->rx_reorder_tbl_ptr, list) in mwifiex_update_rxreor_flags()
822 spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, lock_flags); in mwifiex_update_rxreor_flags()