mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 08:07:32 -04:00
qcacld-3.0: Add hdd tx-rx apis for High Latency systems (Part 5 - HL Datapath)
Support per vdev tx desc pool in hdd and for sending 802.11z action frames. CRs-Fixed: 975526 Change-Id: Ic63e07abdabae9795bba6f76daa954235c894245
This commit is contained in:
parent
5a91f5bdec
commit
b61cf643e2
6 changed files with 365 additions and 38 deletions
|
|
@ -1565,6 +1565,39 @@ void ol_dump_target_memory(struct hif_opaque_softc *scn, void *memory_block)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HL_SUPPORT
|
||||
|
||||
/**
|
||||
* ol_dump_ce_register() - cannot read the section
|
||||
* @scn: ol_softc handler
|
||||
* @memory_block: non-NULL reserved memory location
|
||||
*
|
||||
* Return: -EACCES for LL and not apllicable for HL
|
||||
*/
|
||||
static inline int
|
||||
ol_dump_ce_register(struct hif_opaque_softc *scn, void *memory_block)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
|
||||
static int
|
||||
ol_dump_ce_register(struct hif_opaque_softc *scn, void *memory_block)
|
||||
{
|
||||
int ret;
|
||||
|
||||
BMI_ERR("Could not read dump section!");
|
||||
|
||||
if (hif_dump_registers(scn))
|
||||
BMI_ERR("Failed to dump bus registers");
|
||||
|
||||
ol_dump_target_memory(scn, memory_block);
|
||||
ret = -EACCES;
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* ol_target_coredump() - API to collect target ramdump
|
||||
* @inst - private context
|
||||
|
|
@ -1639,11 +1672,7 @@ static int ol_target_coredump(void *inst, void *memory_block,
|
|||
buffer_loc += result;
|
||||
section_count++;
|
||||
} else {
|
||||
BMI_ERR("Could not read dump section!");
|
||||
if (hif_dump_registers(scn))
|
||||
BMI_ERR("Failed to dump bus registers");
|
||||
ol_dump_target_memory(scn, memory_block);
|
||||
ret = -EACCES;
|
||||
ret = ol_dump_ce_register(scn, memory_block);
|
||||
break; /* Could not read the section */
|
||||
}
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -1481,6 +1481,138 @@ typedef enum {
|
|||
#define CFG_ALLOW_MCC_GO_DIFF_BI_MAX (4)
|
||||
#define CFG_ALLOW_MCC_GO_DIFF_BI_DEFAULT (4)
|
||||
|
||||
#if defined(CONFIG_HL_SUPPORT) && defined(QCA_BAD_PEER_TX_FLOW_CL)
|
||||
/*
|
||||
* Enable/Disable Bad Peer TX CTL feature
|
||||
* Default: Enable
|
||||
*/
|
||||
#define CFG_BAD_PEER_TX_CTL_ENABLE_NAME "gBadPeerTxCtlEnable"
|
||||
#define CFG_BAD_PEER_TX_CTL_ENABLE_MIN (0)
|
||||
#define CFG_BAD_PEER_TX_CTL_ENABLE_MAX (1)
|
||||
#define CFG_BAD_PEER_TX_CTL_ENABLE_DEFAULT (1)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_PERIOD_NAME "gBadPeerTxCtlPeriod"
|
||||
#define CFG_BAD_PEER_TX_CTL_PERIOD_MIN (10)
|
||||
#define CFG_BAD_PEER_TX_CTL_PERIOD_MAX (10000)
|
||||
#define CFG_BAD_PEER_TX_CTL_PERIOD_DEFAULT (50)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_TXQ_LIMIT_NAME "gBadPeerTxCtlTxqLimit"
|
||||
#define CFG_BAD_PEER_TX_CTL_TXQ_LIMIT_MIN (1)
|
||||
#define CFG_BAD_PEER_TX_CTL_TXQ_LIMIT_MAX (5000)
|
||||
#define CFG_BAD_PEER_TX_CTL_TXQ_LIMIT_DEFAULT (100)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_TGT_BACKOFF_T_NAME "gBadPeerTxCtlTgtBackoffTime"
|
||||
#define CFG_BAD_PEER_TX_CTL_TGT_BACKOFF_T_MIN (1)
|
||||
#define CFG_BAD_PEER_TX_CTL_TGT_BACKOFF_T_MAX (5000)
|
||||
#define CFG_BAD_PEER_TX_CTL_TGT_BACKOFF_T_DEFAULT (20)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_TGT_REPORT_PRD_NAME "gBadPeerTxCtlTgtReportPeriod"
|
||||
#define CFG_BAD_PEER_TX_CTL_TGT_REPORT_PRD_MIN (1)
|
||||
#define CFG_BAD_PEER_TX_CTL_TGT_REPORT_PRD_MAX (5000)
|
||||
#define CFG_BAD_PEER_TX_CTL_TGT_REPORT_PRD_DEFAULT (500)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEB_NAME "gBadPeerTxCtlCondLevelIeeeB"
|
||||
#define CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEB_MIN (1)
|
||||
#define CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEB_MAX (2)
|
||||
#define CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEB_DEFAULT (2)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEB_NAME "gBadPeerTxCtlDeltaLevelIeeeB"
|
||||
#define CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEB_MIN (1)
|
||||
#define CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEB_MAX (11)
|
||||
#define CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEB_DEFAULT (2)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEB_NAME "gBadPeerTxCtlPctLevelIeeeB"
|
||||
#define CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEB_MIN (1)
|
||||
#define CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEB_MAX (8)
|
||||
#define CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEB_DEFAULT (1)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEB_NAME "gBadPeerTxCtlTputLevelIeeeB"
|
||||
#define CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEB_MIN (1)
|
||||
#define CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEB_MAX (11)
|
||||
#define CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEB_DEFAULT (2)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEB_NAME "gBadPeerTxCtlTxLimitLevelIeeeB"
|
||||
#define CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEB_MIN (0)
|
||||
#define CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEB_MAX (50)
|
||||
#define CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEB_DEFAULT (3)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEAG_NAME "gBadPeerTxCtlCondLevelIeeeAG"
|
||||
#define CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEAG_MIN (1)
|
||||
#define CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEAG_MAX (2)
|
||||
#define CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEAG_DEFAULT (2)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEAG_NAME "gBadPeerTxCtlDeltaLevelIeeeAG"
|
||||
#define CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEAG_MIN (6)
|
||||
#define CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEAG_MAX (54)
|
||||
#define CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEAG_DEFAULT (6)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEAG_NAME "gBadPeerTxCtlPctLevelIeeeAG"
|
||||
#define CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEAG_MIN (1)
|
||||
#define CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEAG_MAX (8)
|
||||
#define CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEAG_DEFAULT (1)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEAG_NAME "gBadPeerTxCtlTputLevelIeeeAG"
|
||||
#define CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEAG_MIN (6)
|
||||
#define CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEAG_MAX (54)
|
||||
#define CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEAG_DEFAULT (6)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEAG_NAME "gBadPeerTxCtlTxLimitLevelIeeeAG"
|
||||
#define CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEAG_MIN (0)
|
||||
#define CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEAG_MAX (50)
|
||||
#define CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEAG_DEFAULT (3)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEN_NAME "gBadPeerTxCtlCondLevelIeeeN"
|
||||
#define CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEN_MIN (1)
|
||||
#define CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEN_MAX (2)
|
||||
#define CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEN_DEFAULT (2)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEN_NAME "gBadPeerTxCtlDeltaLevelIeeeN"
|
||||
#define CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEN_MIN (6)
|
||||
#define CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEN_MAX (72)
|
||||
#define CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEN_DEFAULT (6)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEN_NAME "gBadPeerTxCtlPctLevelIeeeN"
|
||||
#define CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEN_MIN (1)
|
||||
#define CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEN_MAX (8)
|
||||
#define CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEN_DEFAULT (1)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEN_NAME "gBadPeerTxCtlTputLevelIeeeN"
|
||||
#define CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEN_MIN (6)
|
||||
#define CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEN_MAX (72)
|
||||
#define CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEN_DEFAULT (15)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEN_NAME "gBadPeerTxCtlTxLimitLevelIeeeN"
|
||||
#define CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEN_MIN (0)
|
||||
#define CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEN_MAX (50)
|
||||
#define CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEN_DEFAULT (3)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEAC_NAME "gBadPeerTxCtlCondLevelIeeeAC"
|
||||
#define CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEAC_MIN (1)
|
||||
#define CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEAC_MAX (2)
|
||||
#define CFG_BAD_PEER_TX_CTL_COND_LEVEL_IEEEAC_DEFAULT (2)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEAC_NAME "gBadPeerTxCtlDeltaLevelIeeeAC"
|
||||
#define CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEAC_MIN (6)
|
||||
#define CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEAC_MAX (433)
|
||||
#define CFG_BAD_PEER_TX_CTL_DELTA_LEVEL_IEEEAC_DEFAULT (6)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEAC_NAME "gBadPeerTxCtlPctLevelIeeeAC"
|
||||
#define CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEAC_MIN (1)
|
||||
#define CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEAC_MAX (8)
|
||||
#define CFG_BAD_PEER_TX_CTL_PCT_LEVEL_IEEEAC_DEFAULT (1)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEAC_NAME "gBadPeerTxCtlTputLevelIeeeAC"
|
||||
#define CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEAC_MIN (6)
|
||||
#define CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEAC_MAX (433)
|
||||
#define CFG_BAD_PEER_TX_CTL_TPUT_LEVEL_IEEEAC_DEFAULT (15)
|
||||
|
||||
#define CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEAC_NAME "gBadPeerTxCtlTxLimitLevelIeeeAC"
|
||||
#define CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEAC_MIN (0)
|
||||
#define CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEAC_MAX (50)
|
||||
#define CFG_BAD_PEER_TX_CTL_TX_LIMIT_LEVEL_IEEEAC_DEFAULT (3)
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Enable/Disable Thermal Mitigation feature
|
||||
* Default: Enable
|
||||
|
|
@ -3512,6 +3644,33 @@ struct hdd_config {
|
|||
uint32_t throttle_dutycycle_level1;
|
||||
uint32_t throttle_dutycycle_level2;
|
||||
uint32_t throttle_dutycycle_level3;
|
||||
#if defined(CONFIG_HL_SUPPORT) && defined(QCA_BAD_PEER_TX_FLOW_CL)
|
||||
bool bad_peer_txctl_enable;
|
||||
uint32_t bad_peer_txctl_prd;
|
||||
uint32_t bad_peer_txctl_txq_lmt;
|
||||
uint32_t bad_peer_tgt_backoff;
|
||||
uint32_t bad_peer_tgt_report_prd;
|
||||
uint32_t bad_peer_cond_ieee80211b;
|
||||
uint32_t bad_peer_delta_ieee80211b;
|
||||
uint32_t bad_peer_pct_ieee80211b;
|
||||
uint32_t bad_peer_tput_ieee80211b;
|
||||
uint32_t bad_peer_limit_ieee80211b;
|
||||
uint32_t bad_peer_cond_ieee80211ag;
|
||||
uint32_t bad_peer_delta_ieee80211ag;
|
||||
uint32_t bad_peer_pct_ieee80211ag;
|
||||
uint32_t bad_peer_tput_ieee80211ag;
|
||||
uint32_t bad_peer_limit_ieee80211ag;
|
||||
uint32_t bad_peer_cond_ieee80211n;
|
||||
uint32_t bad_peer_delta_ieee80211n;
|
||||
uint32_t bad_peer_pct_ieee80211n;
|
||||
uint32_t bad_peer_tput_ieee80211n;
|
||||
uint32_t bad_peer_limit_ieee80211n;
|
||||
uint32_t bad_peer_cond_ieee80211ac;
|
||||
uint32_t bad_peer_delta_ieee80211ac;
|
||||
uint32_t bad_peer_pct_ieee80211ac;
|
||||
uint32_t bad_peer_tput_ieee80211ac;
|
||||
uint32_t bad_peer_limit_ieee80211ac;
|
||||
#endif
|
||||
uint8_t vhtChannelWidth;
|
||||
uint8_t vhtRxMCS;
|
||||
uint8_t vhtTxMCS;
|
||||
|
|
|
|||
|
|
@ -117,6 +117,49 @@ void hdd_softap_tx_resume_timer_expired_handler(void *adapter_context)
|
|||
return;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_PER_VDEV_TX_DESC_POOL)
|
||||
|
||||
/**
|
||||
* hdd_softap_tx_resume_false() - Resume OS TX Q false leads to queue disabling
|
||||
* @pAdapter: pointer to hdd adapter
|
||||
* @tx_resume: TX Q resume trigger
|
||||
*
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static void
|
||||
hdd_softap_tx_resume_false(hdd_adapter_t *pAdapter, bool tx_resume)
|
||||
{
|
||||
if (true == tx_resume)
|
||||
return;
|
||||
|
||||
hdd_notice("Disabling queues");
|
||||
wlan_hdd_netif_queue_control(pAdapter, WLAN_STOP_ALL_NETIF_QUEUE,
|
||||
WLAN_DATA_FLOW_CONTROL);
|
||||
|
||||
if (QDF_TIMER_STATE_STOPPED ==
|
||||
qdf_mc_timer_get_current_state(&pAdapter->
|
||||
tx_flow_control_timer)) {
|
||||
QDF_STATUS status;
|
||||
status = qdf_mc_timer_start(&pAdapter->tx_flow_control_timer,
|
||||
WLAN_SAP_HDD_TX_FLOW_CONTROL_OS_Q_BLOCK_TIME);
|
||||
|
||||
if (!QDF_IS_STATUS_SUCCESS(status))
|
||||
hdd_err("Failed to start tx_flow_control_timer");
|
||||
else
|
||||
pAdapter->hdd_stats.hddTxRxStats.txflow_timer_cnt++;
|
||||
}
|
||||
return;
|
||||
}
|
||||
#else
|
||||
|
||||
static inline void
|
||||
hdd_softap_tx_resume_false(hdd_adapter_t *pAdapter, bool tx_resume)
|
||||
{
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* hdd_softap_tx_resume_cb() - Resume OS TX Q.
|
||||
* @adapter_context: pointer to vdev apdapter
|
||||
|
|
@ -150,6 +193,8 @@ void hdd_softap_tx_resume_cb(void *adapter_context, bool tx_resume)
|
|||
WLAN_WAKE_ALL_NETIF_QUEUE,
|
||||
WLAN_DATA_FLOW_CONTROL);
|
||||
}
|
||||
hdd_softap_tx_resume_false(pAdapter, tx_resume);
|
||||
|
||||
return;
|
||||
}
|
||||
#endif /* QCA_LL_LEGACY_TX_FLOW_CONTROL */
|
||||
|
|
|
|||
|
|
@ -96,6 +96,53 @@ void hdd_tx_resume_timer_expired_handler(void *adapter_context)
|
|||
WLAN_CONTROL_PATH);
|
||||
return;
|
||||
}
|
||||
#if defined(CONFIG_PER_VDEV_TX_DESC_POOL)
|
||||
|
||||
/**
|
||||
* hdd_tx_resume_false() - Resume OS TX Q false leads to queue disabling
|
||||
* @pAdapter: pointer to hdd adapter
|
||||
* @tx_resume: TX Q resume trigger
|
||||
*
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static void
|
||||
hdd_tx_resume_false(hdd_adapter_t *pAdapter, bool tx_resume)
|
||||
{
|
||||
if (true == tx_resume)
|
||||
return;
|
||||
|
||||
/* Pause TX */
|
||||
hdd_notice("Disabling queues");
|
||||
wlan_hdd_netif_queue_control(pAdapter, WLAN_STOP_ALL_NETIF_QUEUE,
|
||||
WLAN_DATA_FLOW_CONTROL);
|
||||
|
||||
if (QDF_TIMER_STATE_STOPPED ==
|
||||
qdf_mc_timer_get_current_state(&pAdapter->
|
||||
tx_flow_control_timer)) {
|
||||
QDF_STATUS status;
|
||||
status = qdf_mc_timer_start(&pAdapter->tx_flow_control_timer,
|
||||
WLAN_HDD_TX_FLOW_CONTROL_OS_Q_BLOCK_TIME);
|
||||
|
||||
if (!QDF_IS_STATUS_SUCCESS(status))
|
||||
hdd_err("Failed to start tx_flow_control_timer");
|
||||
else
|
||||
pAdapter->hdd_stats.hddTxRxStats.txflow_timer_cnt++;
|
||||
}
|
||||
|
||||
pAdapter->hdd_stats.hddTxRxStats.txflow_pause_cnt++;
|
||||
pAdapter->hdd_stats.hddTxRxStats.is_txflow_paused = true;
|
||||
|
||||
return;
|
||||
}
|
||||
#else
|
||||
|
||||
static inline void
|
||||
hdd_tx_resume_false(hdd_adapter_t *pAdapter, bool tx_resume)
|
||||
{
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* hdd_tx_resume_cb() - Resume OS TX Q.
|
||||
|
|
@ -135,6 +182,8 @@ void hdd_tx_resume_cb(void *adapter_context, bool tx_resume)
|
|||
WLAN_WAKE_ALL_NETIF_QUEUE,
|
||||
WLAN_DATA_FLOW_CONTROL);
|
||||
}
|
||||
hdd_tx_resume_false(pAdapter, tx_resume);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -592,6 +592,7 @@ typedef struct sSirMbMsgP2p {
|
|||
#define SIR_HAL_PDEV_SET_HW_MODE_RESP (SIR_HAL_ITC_MSG_TYPES_BEGIN + 330)
|
||||
#define SIR_HAL_PDEV_HW_MODE_TRANS_IND (SIR_HAL_ITC_MSG_TYPES_BEGIN + 331)
|
||||
|
||||
#define SIR_HAL_BAD_PEER_TX_CTL_INI_CMD (SIR_HAL_ITC_MSG_TYPES_BEGIN + 332)
|
||||
#define SIR_HAL_SET_RSSI_MONITOR_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 333)
|
||||
#define SIR_HAL_SET_IE_INFO (SIR_HAL_ITC_MSG_TYPES_BEGIN + 334)
|
||||
|
||||
|
|
|
|||
|
|
@ -846,10 +846,64 @@ static void populate_dotf_tdls_vht_aid(tpAniSirGlobal pMac, uint32_t selfDot11Mo
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HL_SUPPORT
|
||||
|
||||
/**
|
||||
* wma_tx_frame_with_tx_complete_send() - Send tx frames on Direct link or AP link
|
||||
* depend on reason code
|
||||
* @pMac: pointer to MAC Sirius parameter structure
|
||||
* @pPacket: pointer to mgmt packet
|
||||
* @nBytes: number of bytes to send
|
||||
* @tid:tid value for AC
|
||||
* @pFrame: pointer to tdls frame
|
||||
* @smeSessionId:session id
|
||||
* @flag: tdls flag
|
||||
*
|
||||
* Send TDLS Teardown frame on Direct link or AP link, depends on reason code.
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static inline QDF_STATUS
|
||||
wma_tx_frame_with_tx_complete_send(tpAniSirGlobal pMac, void *pPacket,
|
||||
uint16_t nBytes,
|
||||
uint8_t tid,
|
||||
uint8_t *pFrame,
|
||||
uint8_t smeSessionId, bool flag)
|
||||
{
|
||||
return wma_tx_frameWithTxComplete(pMac, pPacket,
|
||||
(uint16_t) nBytes,
|
||||
TXRX_FRM_802_11_DATA,
|
||||
ANI_TXDIR_TODS,
|
||||
tid,
|
||||
lim_tx_complete, pFrame,
|
||||
lim_mgmt_tx_complete,
|
||||
HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME,
|
||||
smeSessionId, flag, 0);
|
||||
}
|
||||
#else
|
||||
|
||||
static inline QDF_STATUS
|
||||
wma_tx_frame_with_tx_complete_send(tpAniSirGlobal pMac, void *pPacket,
|
||||
uint16_t nBytes,
|
||||
uint8_t tid,
|
||||
uint8_t *pFrame,
|
||||
uint8_t smeSessionId, bool flag)
|
||||
{
|
||||
return wma_tx_frameWithTxComplete(pMac, pPacket,
|
||||
(uint16_t) nBytes,
|
||||
TXRX_FRM_802_11_DATA,
|
||||
ANI_TXDIR_TODS,
|
||||
tid,
|
||||
lim_tx_complete, pFrame,
|
||||
lim_mgmt_tx_complete,
|
||||
HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME,
|
||||
smeSessionId, false, 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* TDLS setup Request frame on AP link
|
||||
*/
|
||||
|
||||
tSirRetStatus lim_send_tdls_link_setup_req_frame(tpAniSirGlobal pMac,
|
||||
struct qdf_mac_addr peer_mac,
|
||||
uint8_t dialog,
|
||||
|
|
@ -1108,14 +1162,11 @@ tSirRetStatus lim_send_tdls_link_setup_req_frame(tpAniSirGlobal pMac,
|
|||
|
||||
pMac->lim.mgmtFrameSessionId = psessionEntry->peSessionId;
|
||||
|
||||
qdf_status = wma_tx_frameWithTxComplete(pMac, pPacket, (uint16_t) nBytes,
|
||||
TXRX_FRM_802_11_DATA,
|
||||
ANI_TXDIR_TODS,
|
||||
TID_AC_VI,
|
||||
lim_tx_complete, pFrame,
|
||||
lim_mgmt_tx_complete,
|
||||
HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME,
|
||||
smeSessionId, false, 0);
|
||||
qdf_status = wma_tx_frame_with_tx_complete_send(pMac, pPacket,
|
||||
(uint16_t) nBytes,
|
||||
TID_AC_VI,
|
||||
pFrame,
|
||||
smeSessionId, true);
|
||||
|
||||
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
|
||||
pMac->lim.mgmtFrameSessionId = 0xff;
|
||||
|
|
@ -1310,14 +1361,13 @@ tSirRetStatus lim_send_tdls_teardown_frame(tpAniSirGlobal pMac,
|
|||
|
||||
pMac->lim.mgmtFrameSessionId = psessionEntry->peSessionId;
|
||||
|
||||
qdf_status = wma_tx_frameWithTxComplete(pMac, pPacket, (uint16_t) nBytes,
|
||||
TXRX_FRM_802_11_DATA,
|
||||
ANI_TXDIR_TODS,
|
||||
TID_AC_VI,
|
||||
lim_tx_complete, pFrame,
|
||||
lim_mgmt_tx_complete,
|
||||
HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME,
|
||||
smeSessionId, false, 0);
|
||||
qdf_status = wma_tx_frame_with_tx_complete_send(pMac, pPacket,
|
||||
(uint16_t) nBytes,
|
||||
TID_AC_VI,
|
||||
pFrame,
|
||||
smeSessionId,
|
||||
(reason == eSIR_MAC_TDLS_TEARDOWN_PEER_UNREACHABLE)
|
||||
? true : false);
|
||||
|
||||
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
|
||||
pMac->lim.mgmtFrameSessionId = 0xff;
|
||||
|
|
@ -1588,14 +1638,11 @@ static tSirRetStatus lim_send_tdls_setup_rsp_frame(tpAniSirGlobal pMac,
|
|||
|
||||
pMac->lim.mgmtFrameSessionId = psessionEntry->peSessionId;
|
||||
|
||||
qdf_status = wma_tx_frameWithTxComplete(pMac, pPacket, (uint16_t) nBytes,
|
||||
TXRX_FRM_802_11_DATA,
|
||||
ANI_TXDIR_TODS,
|
||||
TID_AC_VI,
|
||||
lim_tx_complete, pFrame,
|
||||
lim_mgmt_tx_complete,
|
||||
HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME,
|
||||
smeSessionId, false, 0);
|
||||
qdf_status = wma_tx_frame_with_tx_complete_send(pMac, pPacket,
|
||||
(uint16_t) nBytes,
|
||||
TID_AC_VI,
|
||||
pFrame,
|
||||
smeSessionId, true);
|
||||
|
||||
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
|
||||
pMac->lim.mgmtFrameSessionId = 0xff;
|
||||
|
|
@ -1808,14 +1855,11 @@ tSirRetStatus lim_send_tdls_link_setup_cnf_frame(tpAniSirGlobal pMac,
|
|||
|
||||
pMac->lim.mgmtFrameSessionId = psessionEntry->peSessionId;
|
||||
|
||||
qdf_status = wma_tx_frameWithTxComplete(pMac, pPacket, (uint16_t) nBytes,
|
||||
TXRX_FRM_802_11_DATA,
|
||||
ANI_TXDIR_TODS,
|
||||
TID_AC_VI,
|
||||
lim_tx_complete, pFrame,
|
||||
lim_mgmt_tx_complete,
|
||||
HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME,
|
||||
smeSessionId, false, 0);
|
||||
qdf_status = wma_tx_frame_with_tx_complete_send(pMac, pPacket,
|
||||
(uint16_t) nBytes,
|
||||
TID_AC_VI,
|
||||
pFrame,
|
||||
smeSessionId, true);
|
||||
|
||||
if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
|
||||
pMac->lim.mgmtFrameSessionId = 0xff;
|
||||
|
|
|
|||
Loading…
Reference in a new issue