diff --git a/core/hdd/src/wlan_hdd_tx_rx.c b/core/hdd/src/wlan_hdd_tx_rx.c index bcde7abbe9f5..b3466f08bbfb 100644 --- a/core/hdd/src/wlan_hdd_tx_rx.c +++ b/core/hdd/src/wlan_hdd_tx_rx.c @@ -2097,6 +2097,9 @@ static void wlan_hdd_update_queue_oper_stats(struct hdd_adapter *adapter, switch (action) { case WLAN_STOP_ALL_NETIF_QUEUE: case WLAN_STOP_ALL_NETIF_QUEUE_N_CARRIER: + case WLAN_NETIF_BE_BK_QUEUE_OFF: + case WLAN_NETIF_VI_QUEUE_OFF: + case WLAN_NETIF_VO_QUEUE_OFF: case WLAN_NETIF_PRIORITY_QUEUE_OFF: case WLAN_STOP_NON_PRIORITY_QUEUE: adapter->queue_oper_stats[reason].pause_count++; @@ -2104,6 +2107,8 @@ static void wlan_hdd_update_queue_oper_stats(struct hdd_adapter *adapter, case WLAN_START_ALL_NETIF_QUEUE: case WLAN_WAKE_ALL_NETIF_QUEUE: case WLAN_START_ALL_NETIF_QUEUE_N_CARRIER: + case WLAN_NETIF_VI_QUEUE_ON: + case WLAN_NETIF_VO_QUEUE_ON: case WLAN_NETIF_PRIORITY_QUEUE_ON: case WLAN_WAKE_NON_PRIORITY_QUEUE: adapter->queue_oper_stats[reason].unpause_count++; @@ -2306,6 +2311,52 @@ void wlan_hdd_netif_queue_control(struct hdd_adapter *adapter, spin_unlock_bh(&adapter->pause_map_lock); break; + case WLAN_NETIF_BE_BK_QUEUE_OFF: + spin_lock_bh(&adapter->pause_map_lock); + netif_stop_subqueue(adapter->dev, HDD_LINUX_AC_BK); + netif_stop_subqueue(adapter->dev, HDD_LINUX_AC_BE); + wlan_hdd_update_txq_timestamp(adapter->dev); + wlan_hdd_update_unpause_time(adapter); + adapter->pause_map |= (1 << reason); + spin_unlock_bh(&adapter->pause_map_lock); + break; + + case WLAN_NETIF_VI_QUEUE_OFF: + spin_lock_bh(&adapter->pause_map_lock); + netif_stop_subqueue(adapter->dev, HDD_LINUX_AC_VI); + wlan_hdd_update_txq_timestamp(adapter->dev); + wlan_hdd_update_unpause_time(adapter); + adapter->pause_map |= (1 << reason); + spin_unlock_bh(&adapter->pause_map_lock); + break; + + case WLAN_NETIF_VI_QUEUE_ON: + spin_lock_bh(&adapter->pause_map_lock); + temp_map = adapter->pause_map; + adapter->pause_map &= ~(1 << reason); + netif_wake_subqueue(adapter->dev, HDD_LINUX_AC_VI); + wlan_hdd_update_pause_time(adapter, temp_map); + spin_unlock_bh(&adapter->pause_map_lock); + break; + + case WLAN_NETIF_VO_QUEUE_OFF: + spin_lock_bh(&adapter->pause_map_lock); + netif_stop_subqueue(adapter->dev, HDD_LINUX_AC_VO); + wlan_hdd_update_txq_timestamp(adapter->dev); + wlan_hdd_update_unpause_time(adapter); + adapter->pause_map |= (1 << reason); + spin_unlock_bh(&adapter->pause_map_lock); + break; + + case WLAN_NETIF_VO_QUEUE_ON: + spin_lock_bh(&adapter->pause_map_lock); + temp_map = adapter->pause_map; + adapter->pause_map &= ~(1 << reason); + netif_wake_subqueue(adapter->dev, HDD_LINUX_AC_VO); + wlan_hdd_update_pause_time(adapter, temp_map); + spin_unlock_bh(&adapter->pause_map_lock); + break; + case WLAN_START_ALL_NETIF_QUEUE: spin_lock_bh(&adapter->pause_map_lock); temp_map = adapter->pause_map;