mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 06:03:36 -04:00
Merge c8e095d931 on remote branch
Change-Id: I70e959ea1374851eabda52e4313dfccca29dc0b8
This commit is contained in:
commit
0284b04846
8 changed files with 52 additions and 16 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue