qcacld-3.0: Save netdev TX queue state in flow control cb
Currently we are using NUM_TX_QUEUES=5. These queues correspond to different access categories. For flow control, we end up pausing/unpausing some of the pausing depending up the thresholds. Save netdev TX queue states during flow control callback so that the same information can be retrieved when the flow control stats are dumped. CRs-Fixed: 2431624 Change-Id: Icad3ff7a60e6e367cf650a2f249de3c2b70aded8
Dieser Commit ist enthalten in:

committet von
nshrivas

Ursprung
d7357e8853
Commit
f7e7b340b6
@@ -1009,7 +1009,7 @@ struct hdd_multicast_addr_list {
|
||||
uint8_t addr[WLAN_HDD_MAX_MC_ADDR_LIST][ETH_ALEN];
|
||||
};
|
||||
|
||||
#define WLAN_HDD_MAX_HISTORY_ENTRY 10
|
||||
#define WLAN_HDD_MAX_HISTORY_ENTRY 25
|
||||
|
||||
/**
|
||||
* struct hdd_netif_queue_stats - netif queue operation statistics
|
||||
@@ -1028,12 +1028,14 @@ struct hdd_netif_queue_stats {
|
||||
* @netif_action: action type
|
||||
* @netif_reason: reason type
|
||||
* @pause_map: pause map
|
||||
* @tx_q_state: state of the netdev TX queues
|
||||
*/
|
||||
struct hdd_netif_queue_history {
|
||||
qdf_time_t time;
|
||||
uint16_t netif_action;
|
||||
uint16_t netif_reason;
|
||||
uint32_t pause_map;
|
||||
unsigned long tx_q_state[NUM_TX_QUEUES];
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -31,6 +31,7 @@
|
||||
#include <linux/skbuff.h>
|
||||
#include "cdp_txrx_flow_ctrl_legacy.h"
|
||||
|
||||
struct hdd_netif_queue_history;
|
||||
struct hdd_context;
|
||||
|
||||
#define hdd_dp_alert(params...) QDF_TRACE_FATAL(QDF_MODULE_ID_HDD_DATA, params)
|
||||
@@ -268,6 +269,7 @@ int hdd_get_peer_idx(struct hdd_station_ctx *sta_ctx,
|
||||
|
||||
const char *hdd_reason_type_to_string(enum netif_reason_type reason);
|
||||
const char *hdd_action_type_to_string(enum netif_action_type action);
|
||||
|
||||
void wlan_hdd_netif_queue_control(struct hdd_adapter *adapter,
|
||||
enum netif_action_type action, enum netif_reason_type reason);
|
||||
|
||||
@@ -375,4 +377,27 @@ hdd_skb_nontso_linearize(struct sk_buff *skb)
|
||||
void hdd_dp_cfg_update(struct wlan_objmgr_psoc *psoc,
|
||||
struct hdd_context *hdd_ctx);
|
||||
|
||||
/**
|
||||
* hdd_print_netdev_txq_status() - print netdev tx queue status
|
||||
* @dev: Pointer to network device
|
||||
*
|
||||
* This function is used to print netdev tx queue status
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void hdd_print_netdev_txq_status(struct net_device *dev);
|
||||
|
||||
/**
|
||||
* wlan_hdd_dump_queue_history_state() - Dump hdd queue history states
|
||||
* @q_hist: pointer to hdd queue history structure
|
||||
* @buf: buffer where the queue history string is dumped
|
||||
* @size: size of the buffer
|
||||
*
|
||||
* Dump hdd queue history states into a buffer
|
||||
*
|
||||
* Return: number of bytes written to the buffer
|
||||
*/
|
||||
uint32_t
|
||||
wlan_hdd_dump_queue_history_state(struct hdd_netif_queue_history *q_hist,
|
||||
char *buf, uint32_t size);
|
||||
#endif /* end #if !defined(WLAN_HDD_TX_RX_H) */
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren