Browse Source

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 <[email protected]>
CRs-fixed: 1012346
Prakash Manjunathappa 9 years ago
parent
commit
0c45f699e9
1 changed files with 67 additions and 51 deletions
  1. 67 51
      core/dp/ol/inc/ol_txrx_stats.h

+ 67 - 51
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;
 };
 
 /*