qcacmn: Fix DSCP to TID map table
Add below fixes: 1. wifi3.0 only supports 2 HW DSCP to TID map tables. Check for supported number of tables before updating registers. 2. Do not overwrite previous DSCP TID config for different DSCP values while updating TID map for new DSCP value. Change-Id: Icd8af1053fa48d3f1e2db317290f806cd41cd797 CRs-Fixed: 2091195
这个提交包含在:

提交者
Gerrit - the friendly Code Review server

父节点
a3f4a29130
当前提交
5425c52aa0
@@ -75,6 +75,7 @@ do { \
|
||||
#define HAL_TX_COMPLETION_DESC_LEN_DWORDS (NUM_OF_DWORDS_WBM_RELEASE_RING)
|
||||
#define HAL_TX_COMPLETION_DESC_LEN_BYTES (NUM_OF_DWORDS_WBM_RELEASE_RING*4)
|
||||
#define HAL_TX_BITS_PER_TID 3
|
||||
#define HAL_TX_TID_BITS_MASK ((1 << HAL_TX_BITS_PER_TID) - 1)
|
||||
#define HAL_TX_NUM_DSCP_PER_REGISTER 10
|
||||
#define HAL_MAX_HW_DSCP_TID_MAPS 2
|
||||
|
||||
@@ -1033,6 +1034,7 @@ static inline void hal_tx_update_dscp_tid(void *hal_soc, uint8_t tid,
|
||||
int index;
|
||||
uint32_t addr;
|
||||
uint32_t value;
|
||||
uint32_t regval;
|
||||
|
||||
struct hal_soc *soc = (struct hal_soc *)hal_soc;
|
||||
|
||||
@@ -1049,8 +1051,15 @@ static inline void hal_tx_update_dscp_tid(void *hal_soc, uint8_t tid,
|
||||
addr += 4 * (dscp/HAL_TX_NUM_DSCP_PER_REGISTER);
|
||||
value = tid << (HAL_TX_BITS_PER_TID * index);
|
||||
|
||||
/* Read back previous DSCP TID config and update
|
||||
* with new config.
|
||||
*/
|
||||
regval = HAL_REG_READ(soc, addr);
|
||||
regval &= ~(HAL_TX_TID_BITS_MASK << (HAL_TX_BITS_PER_TID * index));
|
||||
regval |= value;
|
||||
|
||||
HAL_REG_WRITE(soc, addr,
|
||||
(value & HWIO_TCL_R0_DSCP_TID1_MAP_1_RMSK));
|
||||
(regval & HWIO_TCL_R0_DSCP_TID1_MAP_1_RMSK));
|
||||
}
|
||||
|
||||
/**
|
||||
|
在新工单中引用
屏蔽一个用户