qcacld-3.0: Shrink ol_txrx_stats_tso_info

The structure is taking too much of a space and pre-alloc was
failing for a single allocation for ol_txrx_pdev. Shrunk the
structure from 112 KB to 12 KB.
This update has a corresponding update in qcacmn.

Change-Id: I358e74b47165fa08cb5d37f095b44bff3f83fdfc
Acked-by: Orhan K AKYILDIZ <oka@qca.qualcomm.com>
CRs-fixed: 1012346
This commit is contained in:
Prakash Manjunathappa 2016-05-06 19:06:22 -07:00 • committed by Akash Patel
commit 0c45f699e9

View file

@ -43,16 +43,16 @@ struct ol_txrx_stats_elem {
uint64_t bytes;
};
#define NUM_MAX_TSO_SEGS 8
#define NUM_MAX_TSO_SEGS 4
#define NUM_MAX_TSO_SEGS_MASK (NUM_MAX_TSO_SEGS - 1)
#define NUM_MAX_TSO_MSDUS 128
#define NUM_MAX_TSO_MSDUS 32
#define NUM_MAX_TSO_MSDUS_MASK (NUM_MAX_TSO_MSDUS - 1)
struct ol_txrx_stats_tso_msdu {
struct qdf_tso_seg_t tso_segs[NUM_MAX_TSO_SEGS];
uint32_t num_seg;
uint32_t tso_seg_idx;
uint8_t num_seg;
uint8_t tso_seg_idx;
};
struct ol_txrx_stats_tso_info {
@ -62,56 +62,72 @@ struct ol_txrx_stats_tso_info {
/**
* @brief data stats published by the host txrx layer
*
* -------------------------
*
* TX
*
*/
struct ol_txrx_stats {
struct {
/* MSDUs given to the txrx layer by the management stack */
struct ol_txrx_stats_elem mgmt;
/* MSDUs successfully sent across the WLAN */
struct ol_txrx_stats_elem delivered;
struct {
/* MSDUs that the host did not accept */
struct ol_txrx_stats_elem host_reject;
/* MSDUs which could not be downloaded to the target */
struct ol_txrx_stats_elem download_fail;
/* MSDUs which the target discarded
(lack of memory or old age) */
struct ol_txrx_stats_elem target_discard;
/* MSDUs which the target sent but
couldn't get an ack for */
struct ol_txrx_stats_elem no_ack;
} dropped;
/* contains information of packets recevied per tx completion*/
struct {
uint32_t pkts_1;
uint32_t pkts_2_10;
uint32_t pkts_11_20;
uint32_t pkts_21_30;
uint32_t pkts_31_40;
uint32_t pkts_41_50;
uint32_t pkts_51_60;
uint32_t pkts_61_plus;
} comp_histogram;
/* TSO (TCP segmentation offload) information */
struct {
struct ol_txrx_stats_elem tso_pkts;
struct ol_txrx_stats_tx_dropped {
/* MSDUs that the host did not accept */
struct ol_txrx_stats_elem host_reject;
/* MSDUs which could not be downloaded to the target */
struct ol_txrx_stats_elem download_fail;
/* MSDUs which the target discarded
(lack of memory or old age) */
struct ol_txrx_stats_elem target_discard;
/* MSDUs which the target sent but
couldn't get an ack for */
struct ol_txrx_stats_elem no_ack;
};
struct ol_txrx_stats_tx_histogram {
uint32_t pkts_1;
uint32_t pkts_2_10;
uint32_t pkts_11_20;
uint32_t pkts_21_30;
uint32_t pkts_31_40;
uint32_t pkts_41_50;
uint32_t pkts_51_60;
uint32_t pkts_61_plus;
};
struct ol_txrx_stats_tx_tso {
struct ol_txrx_stats_elem tso_pkts;
#if defined(FEATURE_TSO)
struct ol_txrx_stats_tso_info tso_info;
struct ol_txrx_stats_tso_info tso_info;
#endif
} tso;
} tx;
struct {
/* MSDUs given to the OS shim */
struct ol_txrx_stats_elem delivered;
struct {
/* MSDUs forwarded to network stack */
u_int32_t packets_stack;
/* MSDUs forwarded from the rx path to the tx path */
u_int32_t packets_fwd;
/* MSDUs forwarded to stack and tx path */
u_int32_t packets_stack_n_fwd;
} intra_bss_fwd;
} rx;
};
struct ol_txrx_stats_tx {
/* MSDUs given to the txrx layer by the management stack */
struct ol_txrx_stats_elem mgmt;
/* MSDUs successfully sent across the WLAN */
struct ol_txrx_stats_elem delivered;
struct ol_txrx_stats_tx_dropped dropped;
/* contains information of packets recevied per tx completion*/
struct ol_txrx_stats_tx_histogram comp_histogram;
/* TSO (TCP segmentation offload) information */
struct ol_txrx_stats_tx_tso tso;
};
/*
* RX
*/
struct ol_txrx_stats_rx_ibss_fwd {
/* MSDUs forwarded to network stack */
u_int32_t packets_stack;
/* MSDUs forwarded from the rx path to the tx path */
u_int32_t packets_fwd;
/* MSDUs forwarded to stack and tx path */
u_int32_t packets_stack_n_fwd;
};
struct ol_txrx_stats_rx {
/* MSDUs given to the OS shim */
struct ol_txrx_stats_elem delivered;
struct ol_txrx_stats_rx_ibss_fwd intra_bss_fwd;
};
struct ol_txrx_stats {
struct ol_txrx_stats_tx tx;
struct ol_txrx_stats_rx rx;
};
/*