Lines Matching defs:ar

493 static void ath12k_dp_rx_pdev_srng_free(struct ath12k *ar)
495 struct ath12k_pdev_dp *dp = &ar->dp;
496 struct ath12k_base *ab = ar->ab;
538 static int ath12k_dp_rx_pdev_srng_alloc(struct ath12k *ar)
540 struct ath12k_pdev_dp *dp = &ar->dp;
541 struct ath12k_base *ab = ar->ab;
547 ret = ath12k_dp_srng_setup(ar->ab,
553 ath12k_warn(ar->ab,
558 ret = ath12k_dp_srng_setup(ar->ab,
564 ath12k_warn(ar->ab,
802 void ath12k_dp_rx_peer_tid_delete(struct ath12k *ar,
816 ret = ath12k_dp_reo_cmd_send(ar->ab, rx_tid,
820 ath12k_err(ar->ab, "failed to send HAL_REO_CMD_UPDATE_RX_QUEUE cmd, tid %d (%d)\n",
822 dma_unmap_single(ar->ab->dev, rx_tid->paddr, rx_tid->size,
828 ath12k_peer_rx_tid_qref_reset(ar->ab, peer->peer_id, tid);
890 void ath12k_dp_rx_peer_tid_cleanup(struct ath12k *ar, struct ath12k_peer *peer)
895 lockdep_assert_held(&ar->ab->base_lock);
900 ath12k_dp_rx_peer_tid_delete(ar, peer, i);
903 spin_unlock_bh(&ar->ab->base_lock);
905 spin_lock_bh(&ar->ab->base_lock);
909 static int ath12k_peer_rx_tid_reo_update(struct ath12k *ar,
929 ret = ath12k_dp_reo_cmd_send(ar->ab, rx_tid,
933 ath12k_warn(ar->ab, "failed to update rx tid queue, tid %d (%d)\n",
943 int ath12k_dp_rx_peer_tid_setup(struct ath12k *ar, const u8 *peer_mac, int vdev_id,
947 struct ath12k_base *ab = ar->ab;
983 ret = ath12k_peer_rx_tid_reo_update(ar, peer, rx_tid,
992 ret = ath12k_wmi_peer_rx_reorder_queue_setup(ar, vdev_id,
1051 ret = ath12k_wmi_peer_rx_reorder_queue_setup(ar, vdev_id, peer_mac,
1063 int ath12k_dp_rx_ampdu_start(struct ath12k *ar,
1066 struct ath12k_base *ab = ar->ab;
1071 ret = ath12k_dp_rx_peer_tid_setup(ar, params->sta->addr, vdev_id,
1080 int ath12k_dp_rx_ampdu_stop(struct ath12k *ar,
1083 struct ath12k_base *ab = ar->ab;
1106 ret = ath12k_peer_rx_tid_reo_update(ar, peer, peer->rx_tid, 1, 0, false);
1122 struct ath12k *ar = arvif->ar;
1123 struct ath12k_base *ab = ar->ab;
1296 int (*iter)(struct ath12k_base *ar, u16 tag, u16 len,
1333 ath12k_update_per_peer_tx_stats(struct ath12k *ar,
1336 struct ath12k_base *ab = ar->ab;
1341 struct ath12k_per_peer_tx_stats *peer_stats = &ar->peer_tx_stats;
1478 static void ath12k_htt_update_ppdu_stats(struct ath12k *ar,
1484 ath12k_update_per_peer_tx_stats(ar, ppdu_stats, user);
1488 struct htt_ppdu_stats_info *ath12k_dp_htt_get_ppdu_desc(struct ath12k *ar,
1493 lockdep_assert_held(&ar->data_lock);
1494 if (!list_empty(&ar->ppdu_stats_info)) {
1495 list_for_each_entry(ppdu_info, &ar->ppdu_stats_info, list) {
1500 if (ar->ppdu_stat_list_depth > HTT_PPDU_DESC_MAX_DEPTH) {
1501 ppdu_info = list_first_entry(&ar->ppdu_stats_info,
1504 ar->ppdu_stat_list_depth--;
1505 ath12k_htt_update_ppdu_stats(ar, &ppdu_info->ppdu_stats);
1514 list_add_tail(&ppdu_info->list, &ar->ppdu_stats_info);
1515 ar->ppdu_stat_list_depth++;
1558 struct ath12k *ar;
1576 ar = ath12k_mac_get_ar_by_pdev_id(ab, pdev_id);
1577 if (!ar) {
1582 spin_lock_bh(&ar->data_lock);
1583 ppdu_info = ath12k_dp_htt_get_ppdu_desc(ar, ppdu_id);
1585 spin_unlock_bh(&ar->data_lock);
1595 spin_unlock_bh(&ar->data_lock);
1601 spin_unlock_bh(&ar->data_lock);
1649 spin_unlock_bh(&ar->data_lock);
1662 struct ath12k *ar;
1670 ar = ath12k_mac_get_ar_by_pdev_id(ab, pdev_id);
1671 if (!ar) {
1676 spin_lock_bh(&ar->data_lock);
1677 pdev = ar->pdev;
1688 spin_unlock_bh(&ar->data_lock);
1781 static int ath12k_dp_rx_msdu_coalesce(struct ath12k *ar,
1786 struct ath12k_base *ab = ar->ab;
1792 u32 hal_rx_desc_sz = ar->ab->hal.hal_desc_sz;
1884 static void ath12k_dp_rx_h_csum_offload(struct ath12k *ar, struct sk_buff *msdu)
1887 struct ath12k_base *ab = ar->ab;
1897 static int ath12k_dp_rx_crypto_mic_len(struct ath12k *ar,
1920 ath12k_warn(ar->ab, "unsupported encryption type %d for mic len\n", enctype);
1924 static int ath12k_dp_rx_crypto_param_len(struct ath12k *ar,
1948 ath12k_warn(ar->ab, "unsupported encryption type %d\n", enctype);
1952 static int ath12k_dp_rx_crypto_icv_len(struct ath12k *ar,
1973 ath12k_warn(ar->ab, "unsupported encryption type %d\n", enctype);
1977 static void ath12k_dp_rx_h_undecap_nwifi(struct ath12k *ar,
1982 struct ath12k_base *ab = ar->ab;
2013 crypto_hdr = skb_push(msdu, ath12k_dp_rx_crypto_param_len(ar, enctype));
2014 ath12k_dp_rx_desc_get_crypto_header(ar->ab,
2025 static void ath12k_dp_rx_h_undecap_raw(struct ath12k *ar, struct sk_buff *msdu,
2051 ath12k_dp_rx_crypto_mic_len(ar, enctype));
2054 ath12k_dp_rx_crypto_icv_len(ar, enctype));
2059 ath12k_dp_rx_crypto_mic_len(ar, enctype));
2064 ath12k_dp_rx_crypto_icv_len(ar, enctype));
2076 crypto_len = ath12k_dp_rx_crypto_param_len(ar, enctype);
2083 static void ath12k_get_dot11_hdr_from_rx_desc(struct ath12k *ar,
2090 struct ath12k_base *ab = ar->ab;
2098 crypto_len = ath12k_dp_rx_crypto_param_len(ar, enctype);
2127 static void ath12k_dp_rx_h_undecap_eth(struct ath12k *ar,
2146 ath12k_get_dot11_hdr_from_rx_desc(ar, msdu, rxcb, status, enctype);
2156 static void ath12k_dp_rx_h_undecap(struct ath12k *ar, struct sk_buff *msdu,
2162 struct ath12k_base *ab = ar->ab;
2170 ath12k_dp_rx_h_undecap_nwifi(ar, msdu, enctype, status);
2173 ath12k_dp_rx_h_undecap_raw(ar, msdu, enctype, status,
2182 ath12k_dp_rx_h_undecap_eth(ar, msdu, enctype, status);
2190 ath12k_dp_rx_h_undecap_eth(ar, msdu, enctype, status);
2222 static void ath12k_dp_rx_h_mpdu(struct ath12k *ar,
2228 struct ath12k_base *ab = ar->ab;
2238 fill_crypto_hdr = ath12k_dp_rx_h_is_da_mcbc(ar->ab, rx_desc);
2242 rxcb->peer_id = ath12k_dp_rx_h_peer_id(ar->ab, rx_desc);
2244 spin_lock_bh(&ar->ab->base_lock);
2245 peer = ath12k_dp_rx_h_find_peer(ar->ab, msdu);
2254 spin_unlock_bh(&ar->ab->base_lock);
2283 ath12k_dp_rx_h_csum_offload(ar, msdu);
2284 ath12k_dp_rx_h_undecap(ar, msdu, rx_desc,
2290 if (ath12k_dp_rx_h_decap_type(ar->ab, rx_desc) !=
2297 static void ath12k_dp_rx_h_rate(struct ath12k *ar, struct hal_rx_desc *rx_desc,
2300 struct ath12k_base *ab = ar->ab;
2318 sband = &ar->mac.sbands[rx_status->band];
2325 ath12k_warn(ar->ab,
2339 ath12k_warn(ar->ab,
2352 ath12k_warn(ar->ab,
2365 void ath12k_dp_rx_h_ppdu(struct ath12k *ar, struct hal_rx_desc *rx_desc,
2368 struct ath12k_base *ab = ar->ab;
2393 spin_lock_bh(&ar->data_lock);
2394 channel = ar->rx_channel;
2400 spin_unlock_bh(&ar->data_lock);
2401 ath12k_dbg_dump(ar->ab, ATH12K_DBG_DATA, NULL, "rx_desc: ",
2408 ath12k_dp_rx_h_rate(ar, rx_desc, rx_status);
2411 static void ath12k_dp_rx_deliver_msdu(struct ath12k *ar, struct napi_struct *napi,
2415 struct ath12k_base *ab = ar->ab;
2489 ieee80211_rx_napi(ath12k_ar_to_hw(ar), pubsta, msdu, napi);
2492 static int ath12k_dp_rx_process_msdu(struct ath12k *ar,
2497 struct ath12k_base *ab = ar->ab;
2504 u32 hal_rx_desc_sz = ar->ab->hal.hal_desc_sz;
2540 ret = ath12k_dp_rx_msdu_coalesce(ar, msdu_list,
2550 ath12k_dp_rx_h_ppdu(ar, rx_desc, rx_status);
2551 ath12k_dp_rx_h_mpdu(ar, msdu, rx_desc, rx_status);
2569 struct ath12k *ar;
2582 ar = ab->pdevs[pdev_id].ar;
2588 if (test_bit(ATH12K_CAC_RUNNING, &ar->dev_flags)) {
2593 ret = ath12k_dp_rx_process_msdu(ar, msdu, msdu_list, &rx_status);
2601 ath12k_dp_rx_deliver_msdu(ar, napi, msdu, &rx_status);
2748 int ath12k_dp_rx_peer_frag_setup(struct ath12k *ar, const u8 *peer_mac, int vdev_id)
2750 struct ath12k_base *ab = ar->ab;
2824 static int ath12k_dp_rx_h_verify_tkip_mic(struct ath12k *ar, struct ath12k_peer *peer,
2827 struct ath12k_base *ab = ar->ab;
2835 u32 hdr_len, hal_rx_desc_sz = ar->ab->hal.hal_desc_sz;
2872 ath12k_dp_rx_h_ppdu(ar, rx_desc, rxs);
2873 ath12k_dp_rx_h_undecap(ar, msdu, rx_desc,
2875 ieee80211_rx(ath12k_ar_to_hw(ar), msdu);
2879 static void ath12k_dp_rx_h_undecap_frag(struct ath12k *ar, struct sk_buff *msdu,
2885 u32 hal_rx_desc_sz = ar->ab->hal.hal_desc_sz;
2894 ath12k_dp_rx_crypto_mic_len(ar, enctype));
2898 ath12k_dp_rx_crypto_icv_len(ar, enctype));
2902 crypto_len = ath12k_dp_rx_crypto_param_len(ar, enctype);
2910 static int ath12k_dp_rx_h_defrag(struct ath12k *ar,
2915 struct ath12k_base *ab = ar->ab;
2923 u32 flags, hal_rx_desc_sz = ar->ab->hal.hal_desc_sz;
2949 ath12k_dp_rx_h_undecap_frag(ar, skb, enctype, flags);
2972 if (ath12k_dp_rx_h_verify_tkip_mic(ar, peer, first_frag))
2979 static int ath12k_dp_rx_h_defrag_reo_reinject(struct ath12k *ar,
2983 struct ath12k_base *ab = ar->ab;
3148 static u64 ath12k_dp_rx_h_get_pn(struct ath12k *ar, struct sk_buff *skb)
3153 u32 hal_rx_desc_sz = ar->ab->hal.hal_desc_sz;
3169 ath12k_dp_rx_h_defrag_validate_incr_pn(struct ath12k *ar, struct ath12k_dp_rx_tid *rx_tid)
3171 struct ath12k_base *ab = ar->ab;
3188 last_pn = ath12k_dp_rx_h_get_pn(ar, first_frag);
3193 cur_pn = ath12k_dp_rx_h_get_pn(ar, skb);
3201 static int ath12k_dp_rx_frag_h_mpdu(struct ath12k *ar,
3205 struct ath12k_base *ab = ar->ab;
3304 if (!ath12k_dp_rx_h_defrag_validate_incr_pn(ar, rx_tid))
3307 if (ath12k_dp_rx_h_defrag(ar, peer, rx_tid, &defrag_skb))
3313 if (ath12k_dp_rx_h_defrag_reo_reinject(ar, rx_tid, defrag_skb))
3328 ath12k_dp_process_rx_err_buf(struct ath12k *ar, struct hal_reo_dest_ring *desc,
3332 struct ath12k_base *ab = ar->ab;
3363 dma_unmap_single(ar->ab->dev, rxcb->paddr,
3373 if (!rcu_dereference(ar->ab->pdevs_active[ar->pdev_idx])) {
3378 if (test_bit(ATH12K_CAC_RUNNING, &ar->dev_flags)) {
3384 msdu_len = ath12k_dp_rx_h_msdu_len(ar->ab, rx_desc);
3386 ath12k_warn(ar->ab, "invalid msdu leng %u", msdu_len);
3387 ath12k_dbg_dump(ar->ab, ATH12K_DBG_DATA, NULL, "", rx_desc,
3395 if (ath12k_dp_rx_frag_h_mpdu(ar, msdu, desc)) {
3397 ath12k_dp_rx_link_desc_return(ar->ab, desc,
3421 struct ath12k *ar;
3482 ar = ab->pdevs[pdev_id].ar;
3484 if (!ath12k_dp_process_rx_err_buf(ar, reo_desc,
3512 static void ath12k_dp_rx_null_q_desc_sg_drop(struct ath12k *ar,
3521 (DP_RX_BUFFER_SIZE - ar->ab->hal.hal_desc_sz));
3536 static int ath12k_dp_rx_h_null_q_desc(struct ath12k *ar, struct sk_buff *msdu,
3540 struct ath12k_base *ab = ar->ab;
3545 u32 hal_rx_desc_sz = ar->ab->hal.hal_desc_sz;
3552 ath12k_dp_rx_null_q_desc_sg_drop(ar, msdu_len, msdu_list);
3564 ath12k_warn(ar->ab,
3590 ath12k_dp_rx_h_ppdu(ar, desc, status);
3592 ath12k_dp_rx_h_mpdu(ar, msdu, desc, status);
3603 static bool ath12k_dp_rx_h_reo_err(struct ath12k *ar, struct sk_buff *msdu,
3610 ar->ab->soc_stats.reo_error[rxcb->err_code]++;
3614 if (ath12k_dp_rx_h_null_q_desc(ar, msdu, status, msdu_list))
3634 static void ath12k_dp_rx_h_tkip_mic_err(struct ath12k *ar, struct sk_buff *msdu,
3637 struct ath12k_base *ab = ar->ab;
3642 u32 hal_rx_desc_sz = ar->ab->hal.hal_desc_sz;
3652 ath12k_dp_rx_h_ppdu(ar, desc, status);
3657 ath12k_dp_rx_h_undecap(ar, msdu, desc,
3661 static bool ath12k_dp_rx_h_rxdma_err(struct ath12k *ar, struct sk_buff *msdu,
3664 struct ath12k_base *ab = ar->ab;
3670 ar->ab->soc_stats.rxdma_error[rxcb->err_code]++;
3677 ath12k_dp_rx_h_tkip_mic_err(ar, msdu, status);
3692 static void ath12k_dp_rx_wbm_err(struct ath12k *ar,
3703 drop = ath12k_dp_rx_h_reo_err(ar, msdu, &rxs, msdu_list);
3706 drop = ath12k_dp_rx_h_rxdma_err(ar, msdu, &rxs);
3718 ath12k_dp_rx_deliver_msdu(ar, napi, msdu, &rxs);
3725 struct ath12k *ar;
3860 ar = ab->pdevs[pdev_id].ar;
3862 if (!ar || !rcu_dereference(ar->ab->pdevs_active[mac_id])) {
3867 if (test_bit(ATH12K_CAC_RUNNING, &ar->dev_flags)) {
3871 ath12k_dp_rx_wbm_err(ar, napi, msdu, &msdu_list);
3980 struct ath12k *ar = ab->pdevs[mac_id].ar;
3982 ath12k_dp_rx_pdev_srng_free(ar);
4211 struct ath12k *ar = ab->pdevs[mac_id].ar;
4212 struct ath12k_pdev_dp *dp = &ar->dp;
4220 ret = ath12k_dp_rx_pdev_srng_alloc(ar);
4253 static int ath12k_dp_rx_pdev_mon_status_attach(struct ath12k *ar)
4255 struct ath12k_pdev_dp *dp = &ar->dp;
4267 int ath12k_dp_rx_pdev_mon_attach(struct ath12k *ar)
4269 struct ath12k_pdev_dp *dp = &ar->dp;
4273 ret = ath12k_dp_rx_pdev_mon_status_attach(ar);
4275 ath12k_warn(ar->ab, "pdev_mon_status_attach() failed");
4282 if (!ar->ab->hw_params->rxdma1_enable)