From 0c45f699e9383d04dbb1e0879397fc1414609268 Mon Sep 17 00:00:00 2001 From: Prakash Manjunathappa Date: Fri, 6 May 2016 19:06:22 -0700 Subject: [PATCH] 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 CRs-fixed: 1012346 --- core/dp/ol/inc/ol_txrx_stats.h | 118 +++++++++++++++++++-------------- 1 file changed, 67 insertions(+), 51 deletions(-) diff --git a/core/dp/ol/inc/ol_txrx_stats.h b/core/dp/ol/inc/ol_txrx_stats.h index 4a98a832818f..febf71863ebc 100644 --- a/core/dp/ol/inc/ol_txrx_stats.h +++ b/core/dp/ol/inc/ol_txrx_stats.h @@ -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; }; /*