Merge c8e095d931 on remote branch

Change-Id: I70e959ea1374851eabda52e4313dfccca29dc0b8
This commit is contained in:
Linux Build Service Account 2021-12-12 23:40:29 -08:00
commit 0284b04846
8 changed files with 52 additions and 16 deletions

View file

@ -5787,7 +5787,8 @@ static QDF_STATUS dp_vdev_attach_wifi3(struct cdp_soc_t *cdp_soc,
dp_vdev_pdev_list_add(soc, pdev, vdev);
pdev->vdev_count++;
if (wlan_op_mode_sta != vdev->opmode)
if (wlan_op_mode_sta != vdev->opmode &&
wlan_op_mode_ndi != vdev->opmode)
vdev->ap_bridge_enabled = true;
else
vdev->ap_bridge_enabled = false;

View file

@ -1760,9 +1760,6 @@ dp_rx_defrag_store_fragment(struct dp_soc *soc,
goto discard_frag;
}
pdev = peer->vdev->pdev;
rx_tid = &peer->rx_tid[tid];
mpdu_sequence_control_valid =
hal_rx_get_mpdu_sequence_control_valid(soc->hal_soc,
rx_desc->rx_buf_start);
@ -1797,10 +1794,15 @@ dp_rx_defrag_store_fragment(struct dp_soc *soc,
*/
fragno = dp_rx_frag_get_mpdu_frag_number(rx_desc->rx_buf_start);
pdev = peer->vdev->pdev;
rx_tid = &peer->rx_tid[tid];
qdf_spin_lock_bh(&rx_tid->tid_lock);
rx_reorder_array_elem = peer->rx_tid[tid].array;
if (!rx_reorder_array_elem) {
dp_err_rl("Rcvd Fragmented pkt before tid setup for peer %pK",
peer);
qdf_spin_unlock_bh(&rx_tid->tid_lock);
goto discard_frag;
}
@ -1818,6 +1820,7 @@ dp_rx_defrag_store_fragment(struct dp_soc *soc,
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
"Rcvd unfragmented pkt on REO Err srng, dropping");
qdf_spin_unlock_bh(&rx_tid->tid_lock);
qdf_assert(0);
goto discard_frag;
}
@ -1845,6 +1848,13 @@ dp_rx_defrag_store_fragment(struct dp_soc *soc,
rx_tid->curr_seq_num = rxseq;
}
} else {
/* Check if we are processing first fragment if it is
* not first fragment discard fragment.
*/
if (fragno) {
qdf_spin_unlock_bh(&rx_tid->tid_lock);
goto discard_frag;
}
dp_debug("cur rxseq %d\n", rxseq);
/* Start of a new sequence */
dp_rx_defrag_cleanup(peer, tid);
@ -1856,11 +1866,9 @@ dp_rx_defrag_store_fragment(struct dp_soc *soc,
* If the earlier sequence was dropped, this will be the fresh start.
* Else, continue with next fragment in a given sequence
*/
qdf_spin_lock_bh(&rx_tid->tid_lock);
status = dp_rx_defrag_fraglist_insert(peer, tid, &rx_reorder_array_elem->head,
&rx_reorder_array_elem->tail, frag,
&all_frag_present);
qdf_spin_unlock_bh(&rx_tid->tid_lock);
/*
* Currently, we can have only 6 MSDUs per-MPDU, if the current
@ -1878,6 +1886,7 @@ dp_rx_defrag_store_fragment(struct dp_soc *soc,
if (status != QDF_STATUS_SUCCESS) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
"%s: Unable to store ring desc !", __func__);
qdf_spin_unlock_bh(&rx_tid->tid_lock);
goto discard_frag;
}
} else {
@ -1906,6 +1915,7 @@ dp_rx_defrag_store_fragment(struct dp_soc *soc,
dp_rx_defrag_waitlist_add(peer, tid);
dp_peer_unref_delete(peer, DP_MOD_ID_RX_ERR);
qdf_spin_unlock_bh(&rx_tid->tid_lock);
return QDF_STATUS_SUCCESS;
}
@ -1914,7 +1924,6 @@ dp_rx_defrag_store_fragment(struct dp_soc *soc,
"All fragments received for sequence: %d", rxseq);
/* Process the fragments */
qdf_spin_lock_bh(&rx_tid->tid_lock);
status = dp_rx_defrag(peer, tid, rx_reorder_array_elem->head,
rx_reorder_array_elem->tail);
if (QDF_IS_STATUS_ERROR(status)) {

View file

@ -2548,7 +2548,6 @@ qdf_nbuf_t dp_tx_send_msdu_multiple(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
tid_tx_stats[tx_q->ring_id][msdu_info->tid];
tid_stats->swdrop_cnt[TX_HW_ENQUEUE]++;
dp_tx_desc_release(tx_desc, tx_q->desc_pool_id);
if (msdu_info->frm_type == dp_tx_frm_me) {
hw_enq_fail++;
if (hw_enq_fail == msdu_info->num_seg) {
@ -2574,6 +2573,7 @@ qdf_nbuf_t dp_tx_send_msdu_multiple(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
msdu_info->u.sg_info
.curr_seg->next;
i++;
dp_tx_desc_release(tx_desc, tx_q->desc_pool_id);
continue;
}
@ -2590,9 +2590,11 @@ qdf_nbuf_t dp_tx_send_msdu_multiple(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
*/
dp_tx_comp_free_buf(soc, tx_desc);
i++;
dp_tx_desc_release(tx_desc, tx_q->desc_pool_id);
continue;
}
dp_tx_desc_release(tx_desc, tx_q->desc_pool_id);
goto done;
}

View file

@ -716,8 +716,18 @@ bool scm_filter_match(struct wlan_objmgr_psoc *psoc,
}
}
if (!match && filter->num_of_channels)
if (!match && filter->num_of_channels) {
/*
* Do not print if bssid/ssid is not present in filter to avoid
* excessive prints (e.g RRM case where only freq list is
* provided to get AP's in specific frequencies)
*/
if (filter->num_of_bssid || filter->num_of_ssid)
scm_debug(QDF_MAC_ADDR_FMT" : Ignore as AP's freq %d is not in freq list",
QDF_MAC_ADDR_REF(db_entry->bssid.bytes),
db_entry->channel.chan_freq);
return false;
}
if (filter->rrm_measurement_filter)
return true;

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@ -366,6 +367,7 @@ static inline int wmi_process_qmi_fw_event(void *wmi_cb_ctx, void *buf, int len)
* @buf: wmi command buffer
* @buflen: wmi command buffer length
* @cmd_id: WMI cmd id
* @is_qmi_send_support:send by qmi is supported
*
* Note, it is NOT safe to access buf after calling this function!
*
@ -373,7 +375,8 @@ static inline int wmi_process_qmi_fw_event(void *wmi_cb_ctx, void *buf, int len)
*/
QDF_STATUS wmi_unified_cmd_send_pm_chk(struct wmi_unified *wmi_handle,
wmi_buf_t buf, uint32_t buflen,
uint32_t cmd_id);
uint32_t cmd_id,
bool is_qmi_send_support);
/**
* wmi_unified_register_event() - WMI event handler

View file

@ -813,12 +813,14 @@ typedef struct {
* @vdev_id: vdev id
* @pdev_id: pdev_id
* @wmi_host_inst_rssi_args: Instantaneous rssi stats args
* @is_qmi_send_support: support to send by qmi or not
*/
struct stats_request_params {
uint32_t stats_id;
uint8_t vdev_id;
uint8_t pdev_id;
wmi_host_inst_rssi_args rssi_args;
bool is_qmi_send_support;
};
/**

View file

@ -392,6 +392,7 @@ send_stats_request_cmd_tlv(wmi_unified_t wmi_handle,
wmi_request_stats_cmd_fixed_param *cmd;
wmi_buf_t buf;
uint16_t len = sizeof(wmi_request_stats_cmd_fixed_param);
bool is_qmi_send_support;
buf = wmi_buf_alloc(wmi_handle, len);
if (!buf)
@ -407,15 +408,18 @@ send_stats_request_cmd_tlv(wmi_unified_t wmi_handle,
cmd->pdev_id = wmi_handle->ops->convert_pdev_id_host_to_target(
wmi_handle,
param->pdev_id);
is_qmi_send_support = param->is_qmi_send_support;
WMI_CHAR_ARRAY_TO_MAC_ADDR(macaddr, &cmd->peer_macaddr);
wmi_debug("STATS REQ STATS_ID:%d VDEV_ID:%d PDEV_ID:%d-->",
cmd->stats_id, cmd->vdev_id, cmd->pdev_id);
wmi_debug("STATS REQ STATS_ID:%d VDEV_ID:%d PDEV_ID:%d, is_qmi_send_support %d",
cmd->stats_id, cmd->vdev_id, cmd->pdev_id,
is_qmi_send_support);
wmi_mtrace(WMI_REQUEST_STATS_CMDID, cmd->vdev_id, 0);
ret = wmi_unified_cmd_send_pm_chk(wmi_handle, buf, len,
WMI_REQUEST_STATS_CMDID);
WMI_REQUEST_STATS_CMDID,
is_qmi_send_support);
if (ret) {
wmi_err("Failed to send stats request to fw =%d", ret);

View file

@ -718,8 +718,12 @@ qdf_export_symbol(wmi_mtrace);
QDF_STATUS wmi_unified_cmd_send_pm_chk(struct wmi_unified *wmi_handle,
wmi_buf_t buf,
uint32_t buflen, uint32_t cmd_id)
uint32_t buflen, uint32_t cmd_id,
bool is_qmi_send_support)
{
if (!is_qmi_send_support)
goto send_over_wmi;
if (!wmi_is_qmi_stats_enabled(wmi_handle))
goto send_over_wmi;
@ -5292,7 +5296,7 @@ static QDF_STATUS send_process_ll_stats_get_cmd_tlv(wmi_unified_t wmi_handle,
wmi_mtrace(WMI_REQUEST_LINK_STATS_CMDID, cmd->vdev_id, 0);
ret = wmi_unified_cmd_send_pm_chk(wmi_handle, buf, len,
WMI_REQUEST_LINK_STATS_CMDID);
WMI_REQUEST_LINK_STATS_CMDID, true);
if (ret) {
wmi_buf_free(buf);
return QDF_STATUS_E_FAILURE;
@ -5375,7 +5379,8 @@ static QDF_STATUS send_unified_ll_stats_get_sta_cmd_tlv(
} else {
ret = wmi_unified_cmd_send_pm_chk(
wmi_handle, buf, len,
WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID);
WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID,
true);
}
if (QDF_IS_STATUS_ERROR(ret)) {