mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 21:54:34 -04:00
qcacmn: Configure RXDMA_MONITOR_STATUS on set mon rx filter
a) Configure RXDMA_MONITOR_STATUS to support mpdu_start. b) Need Monitor other filter in RXDMA_MONITOR_STATUS to support monitor vap. Change-Id: I7ac90203f085850906f8c55209a57bb6a5464098
This commit is contained in:
parent
70539512de
commit
1c31fee00e
3 changed files with 48 additions and 48 deletions
|
|
@ -4442,6 +4442,8 @@ static int dp_vdev_set_monitor_mode(struct cdp_vdev *vdev_handle,
|
|||
pdev->mo_mgmt_filter, pdev->mo_ctrl_filter,
|
||||
pdev->mo_data_filter);
|
||||
|
||||
qdf_mem_set(&(htt_tlv_filter), sizeof(htt_tlv_filter), 0x0);
|
||||
|
||||
htt_tlv_filter.mpdu_start = 1;
|
||||
htt_tlv_filter.msdu_start = 1;
|
||||
htt_tlv_filter.packet = 1;
|
||||
|
|
@ -4475,33 +4477,35 @@ static int dp_vdev_set_monitor_mode(struct cdp_vdev *vdev_handle,
|
|||
RXDMA_MONITOR_BUF, RX_BUFFER_SIZE, &htt_tlv_filter);
|
||||
}
|
||||
|
||||
qdf_mem_set(&(htt_tlv_filter), sizeof(htt_tlv_filter), 0x0);
|
||||
|
||||
htt_tlv_filter.mpdu_start = 1;
|
||||
htt_tlv_filter.msdu_start = 1;
|
||||
htt_tlv_filter.msdu_start = 0;
|
||||
htt_tlv_filter.packet = 0;
|
||||
htt_tlv_filter.msdu_end = 1;
|
||||
htt_tlv_filter.mpdu_end = 1;
|
||||
htt_tlv_filter.packet_header = 1;
|
||||
htt_tlv_filter.attention = 1;
|
||||
htt_tlv_filter.msdu_end = 0;
|
||||
htt_tlv_filter.mpdu_end = 0;
|
||||
htt_tlv_filter.attention = 0;
|
||||
htt_tlv_filter.ppdu_start = 1;
|
||||
htt_tlv_filter.ppdu_end = 1;
|
||||
htt_tlv_filter.ppdu_end_user_stats = 1;
|
||||
htt_tlv_filter.ppdu_end_user_stats_ext = 1;
|
||||
htt_tlv_filter.ppdu_end_status_done = 1;
|
||||
htt_tlv_filter.header_per_msdu = 0;
|
||||
htt_tlv_filter.enable_fp =
|
||||
(pdev->mon_filter_mode & MON_FILTER_PASS) ? 1 : 0;
|
||||
htt_tlv_filter.enable_fp = 1;
|
||||
htt_tlv_filter.enable_md = 0;
|
||||
htt_tlv_filter.enable_mo =
|
||||
(pdev->mon_filter_mode & MON_FILTER_OTHER) ? 1 : 0;
|
||||
htt_tlv_filter.fp_mgmt_filter = pdev->fp_mgmt_filter;
|
||||
htt_tlv_filter.fp_ctrl_filter = pdev->fp_ctrl_filter;
|
||||
htt_tlv_filter.fp_data_filter = pdev->fp_data_filter;
|
||||
htt_tlv_filter.mo_mgmt_filter = pdev->mo_mgmt_filter;
|
||||
htt_tlv_filter.mo_ctrl_filter = pdev->mo_ctrl_filter;
|
||||
htt_tlv_filter.mo_data_filter = pdev->mo_data_filter;
|
||||
htt_tlv_filter.enable_mo = 1;
|
||||
if (pdev->mcopy_mode) {
|
||||
htt_tlv_filter.packet_header = 1;
|
||||
}
|
||||
htt_tlv_filter.fp_mgmt_filter = FILTER_MGMT_ALL;
|
||||
htt_tlv_filter.fp_ctrl_filter = FILTER_CTRL_ALL;
|
||||
htt_tlv_filter.fp_data_filter = FILTER_DATA_ALL;
|
||||
htt_tlv_filter.mo_mgmt_filter = FILTER_MGMT_ALL;
|
||||
htt_tlv_filter.mo_ctrl_filter = FILTER_CTRL_ALL;
|
||||
htt_tlv_filter.mo_data_filter = FILTER_DATA_ALL;
|
||||
|
||||
for (mac_id = 0; mac_id < NUM_RXDMA_RINGS_PER_PDEV; mac_id++) {
|
||||
int mac_for_pdev = dp_get_mac_id_for_pdev(mac_id, pdev_id);
|
||||
int mac_for_pdev = dp_get_mac_id_for_pdev(mac_id,
|
||||
pdev->pdev_id);
|
||||
|
||||
htt_h2t_rx_ring_cfg(soc->htt_handle, mac_for_pdev,
|
||||
pdev->rxdma_mon_status_ring[mac_id].hal_srng,
|
||||
|
|
@ -4607,33 +4611,35 @@ static int dp_pdev_set_advance_monitor_filter(struct cdp_pdev *pdev_handle,
|
|||
RXDMA_MONITOR_BUF, RX_BUFFER_SIZE, &htt_tlv_filter);
|
||||
}
|
||||
|
||||
qdf_mem_set(&(htt_tlv_filter), sizeof(htt_tlv_filter), 0x0);
|
||||
|
||||
htt_tlv_filter.mpdu_start = 1;
|
||||
htt_tlv_filter.msdu_start = 1;
|
||||
htt_tlv_filter.msdu_start = 0;
|
||||
htt_tlv_filter.packet = 0;
|
||||
htt_tlv_filter.msdu_end = 1;
|
||||
htt_tlv_filter.mpdu_end = 1;
|
||||
htt_tlv_filter.packet_header = 1;
|
||||
htt_tlv_filter.attention = 1;
|
||||
htt_tlv_filter.msdu_end = 0;
|
||||
htt_tlv_filter.mpdu_end = 0;
|
||||
htt_tlv_filter.attention = 0;
|
||||
htt_tlv_filter.ppdu_start = 1;
|
||||
htt_tlv_filter.ppdu_end = 1;
|
||||
htt_tlv_filter.ppdu_end_user_stats = 1;
|
||||
htt_tlv_filter.ppdu_end_user_stats_ext = 1;
|
||||
htt_tlv_filter.ppdu_end_status_done = 1;
|
||||
htt_tlv_filter.header_per_msdu = 0;
|
||||
htt_tlv_filter.enable_fp =
|
||||
(pdev->mon_filter_mode & MON_FILTER_PASS) ? 1 : 0;
|
||||
htt_tlv_filter.enable_fp = 1;
|
||||
htt_tlv_filter.enable_md = 0;
|
||||
htt_tlv_filter.enable_mo =
|
||||
(pdev->mon_filter_mode & MON_FILTER_OTHER) ? 1 : 0;
|
||||
htt_tlv_filter.fp_mgmt_filter = pdev->fp_mgmt_filter;
|
||||
htt_tlv_filter.fp_ctrl_filter = pdev->fp_ctrl_filter;
|
||||
htt_tlv_filter.fp_data_filter = pdev->fp_data_filter;
|
||||
htt_tlv_filter.mo_mgmt_filter = pdev->mo_mgmt_filter;
|
||||
htt_tlv_filter.mo_ctrl_filter = pdev->mo_ctrl_filter;
|
||||
htt_tlv_filter.mo_data_filter = pdev->mo_data_filter;
|
||||
htt_tlv_filter.enable_mo = 1;
|
||||
if (pdev->mcopy_mode) {
|
||||
htt_tlv_filter.packet_header = 1;
|
||||
}
|
||||
htt_tlv_filter.fp_mgmt_filter = FILTER_MGMT_ALL;
|
||||
htt_tlv_filter.fp_ctrl_filter = FILTER_CTRL_ALL;
|
||||
htt_tlv_filter.fp_data_filter = FILTER_DATA_ALL;
|
||||
htt_tlv_filter.mo_mgmt_filter = FILTER_MGMT_ALL;
|
||||
htt_tlv_filter.mo_ctrl_filter = FILTER_CTRL_ALL;
|
||||
htt_tlv_filter.mo_data_filter = FILTER_DATA_ALL;
|
||||
|
||||
for (mac_id = 0; mac_id < NUM_RXDMA_RINGS_PER_PDEV; mac_id++) {
|
||||
int mac_for_pdev = dp_get_mac_id_for_pdev(mac_id, pdev_id);
|
||||
int mac_for_pdev = dp_get_mac_id_for_pdev(mac_id,
|
||||
pdev->pdev_id);
|
||||
|
||||
htt_h2t_rx_ring_cfg(soc->htt_handle, mac_for_pdev,
|
||||
pdev->rxdma_mon_status_ring[mac_id].hal_srng,
|
||||
|
|
@ -5819,8 +5825,7 @@ dp_ppdu_ring_cfg(struct dp_pdev *pdev)
|
|||
htt_tlv_filter.packet = 0;
|
||||
htt_tlv_filter.msdu_end = 0;
|
||||
htt_tlv_filter.mpdu_end = 0;
|
||||
htt_tlv_filter.packet_header = 1;
|
||||
htt_tlv_filter.attention = 1;
|
||||
htt_tlv_filter.attention = 0;
|
||||
htt_tlv_filter.ppdu_start = 1;
|
||||
htt_tlv_filter.ppdu_end = 1;
|
||||
htt_tlv_filter.ppdu_end_user_stats = 1;
|
||||
|
|
@ -5828,8 +5833,10 @@ dp_ppdu_ring_cfg(struct dp_pdev *pdev)
|
|||
htt_tlv_filter.ppdu_end_status_done = 1;
|
||||
htt_tlv_filter.enable_fp = 1;
|
||||
htt_tlv_filter.enable_md = 0;
|
||||
if (pdev->mcopy_mode)
|
||||
if (pdev->mcopy_mode) {
|
||||
htt_tlv_filter.packet_header = 1;
|
||||
htt_tlv_filter.enable_mo = 1;
|
||||
}
|
||||
htt_tlv_filter.fp_mgmt_filter = FILTER_MGMT_ALL;
|
||||
htt_tlv_filter.fp_ctrl_filter = FILTER_CTRL_ALL;
|
||||
htt_tlv_filter.fp_data_filter = FILTER_DATA_ALL;
|
||||
|
|
|
|||
|
|
@ -141,14 +141,12 @@ dp_rx_mon_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
|
|||
void *p_last_buf_addr_info;
|
||||
uint32_t rx_bufs_used = 0;
|
||||
uint32_t msdu_ppdu_id, msdu_cnt, last_ppdu_id;
|
||||
uint32_t msdu_len;
|
||||
uint8_t *data;
|
||||
uint32_t i;
|
||||
uint32_t total_frag_len = 0, frag_len = 0;
|
||||
bool is_frag, is_first_msdu;
|
||||
bool check_ppdu_id = true;
|
||||
|
||||
msdu_len = 0;
|
||||
msdu = 0;
|
||||
last_ppdu_id = dp_pdev->ppdu_info.com_info.last_ppdu_id;
|
||||
|
||||
|
|
@ -259,7 +257,6 @@ dp_rx_mon_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
|
|||
"%s total_len %u frag_len %u flags %u",
|
||||
__func__, total_frag_len, frag_len,
|
||||
msdu_list.msdu_info[i].msdu_flags);
|
||||
msdu_len += frag_len;
|
||||
|
||||
rx_pkt_offset = HAL_RX_MON_HW_RX_DESC_SIZE();
|
||||
/*
|
||||
|
|
@ -331,8 +328,6 @@ dp_rx_mon_mpdu_pop(struct dp_soc *soc, uint32_t mac_id,
|
|||
|
||||
*tail_msdu = msdu;
|
||||
|
||||
dp_pdev->ppdu_info.rx_status.ppdu_len += msdu_len;
|
||||
|
||||
return rx_bufs_used;
|
||||
|
||||
}
|
||||
|
|
@ -789,6 +784,8 @@ void dp_rx_mon_dest_process(struct dp_soc *soc, uint32_t mac_id, uint32_t quota)
|
|||
|
||||
if (ppdu_id != pdev->ppdu_info.com_info.ppdu_id) {
|
||||
pdev->mon_ppdu_status = DP_PPDU_STATUS_START;
|
||||
qdf_mem_zero(&(pdev->ppdu_info.rx_status),
|
||||
sizeof(pdev->ppdu_info.rx_status));
|
||||
pdev->ppdu_info.com_info.last_ppdu_id =
|
||||
pdev->ppdu_info.com_info.ppdu_id;
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
|
||||
|
|
@ -809,7 +806,6 @@ void dp_rx_mon_dest_process(struct dp_soc *soc, uint32_t mac_id, uint32_t quota)
|
|||
rxdma_dst_ring_desc = hal_srng_dst_get_next(hal_soc,
|
||||
mon_dst_srng);
|
||||
}
|
||||
|
||||
hal_srng_access_end(hal_soc, mon_dst_srng);
|
||||
|
||||
qdf_spin_unlock_bh(&pdev->mon_lock);
|
||||
|
|
|
|||
|
|
@ -374,18 +374,15 @@ dp_rx_mon_status_process_tlv(struct dp_soc *soc, uint32_t mac_id,
|
|||
}
|
||||
|
||||
if (tlv_status == HAL_TLV_STATUS_PPDU_DONE) {
|
||||
pdev->mon_ppdu_status = DP_PPDU_STATUS_DONE;
|
||||
dp_rx_mon_dest_process(soc, mac_id, quota);
|
||||
if (pdev->enhanced_stats_en ||
|
||||
pdev->mcopy_mode)
|
||||
dp_rx_handle_ppdu_stats(soc, pdev, ppdu_info);
|
||||
|
||||
pdev->mon_ppdu_status = DP_PPDU_STATUS_DONE;
|
||||
dp_rx_mon_dest_process(soc, mac_id, quota);
|
||||
pdev->mon_ppdu_status = DP_PPDU_STATUS_START;
|
||||
pdev->ppdu_info.com_info.last_ppdu_id =
|
||||
pdev->ppdu_info.com_info.ppdu_id;
|
||||
|
||||
qdf_mem_zero(&(pdev->ppdu_info.rx_status),
|
||||
sizeof(pdev->ppdu_info.rx_status));
|
||||
}
|
||||
}
|
||||
return;
|
||||
|
|
|
|||
Loading…
Reference in a new issue