1
0

qcacld-3.0: Fix bandwidth vote level for device in monitor mode

Bandwidth level was set correctly to PLD_BUS_WIDTH_VERY_HIGH
but current vote level was not updated for monitor mode.
Due to this during PCI link down the reg writes for SW2WBM
release ring were enqueued in delayed register write work
queue instead of being written directly.

Delay in scheduling the workqueue results in SW2WBM release
ring getting full which results in invoking panic.
Hence update the current vote level along with the bus
bandwidth in HDD open function for monitor mode.

Change-Id: Ib9861a038afa6ca7758ea35afcae2bcfe9e69b60
CRs-Fixed: 2690247
Este cometimento está contido em:
Nisha Menon
2020-05-22 15:12:59 -07:00
cometido por nshrivas
ascendente 42326695a7
cometimento 761251b822
2 ficheiros modificados com 28 adições e 1 eliminações

Ver ficheiro

@@ -2617,6 +2617,24 @@ hdd_get_current_throughput_level(struct hdd_context *hdd_ctx)
return hdd_ctx->cur_vote_level;
}
/**
* hdd_set_current_throughput_level() - update the current vote
* level
* @hdd_ctx: the global hdd context
* @next_vote_level: pld_bus_width_type voting level
*
* This function updates the current vote level to the new level
* provided
*
* Return: None
*/
static inline void
hdd_set_current_throughput_level(struct hdd_context *hdd_ctx,
enum pld_bus_width_type next_vote_level)
{
hdd_ctx->cur_vote_level = next_vote_level;
}
static inline bool
hdd_is_low_tput_gro_enable(struct hdd_context *hdd_ctx)
{
@@ -2674,6 +2692,12 @@ hdd_get_current_throughput_level(struct hdd_context *hdd_ctx)
return PLD_BUS_WIDTH_NONE;
}
static inline void
hdd_set_current_throughput_level(struct hdd_context *hdd_ctx,
enum pld_bus_width_type next_vote_level)
{
}
static inline bool
hdd_is_low_tput_gro_enable(struct hdd_context *hdd_ctx)
{