|
@@ -690,6 +690,33 @@ struct qdf_tso_seg_t {
|
|
struct qdf_tso_frag_t tso_frags[FRAG_NUM_MAX];
|
|
struct qdf_tso_frag_t tso_frags[FRAG_NUM_MAX];
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+/**
|
|
|
|
+ * TSO seg elem action caller locations: goes into dbg.history below.
|
|
|
|
+ * Needed to be defined outside of the feature so that
|
|
|
|
+ * callers can be coded without ifdefs (even if they get
|
|
|
|
+ * resolved to nothing)
|
|
|
|
+ */
|
|
|
|
+enum tsoseg_dbg_caller_e {
|
|
|
|
+ TSOSEG_LOC_UNDEFINED,
|
|
|
|
+ TSOSEG_LOC_INIT1,
|
|
|
|
+ TSOSEG_LOC_INIT2,
|
|
|
|
+ TSOSEG_LOC_DEINIT,
|
|
|
|
+ TSOSEG_LOC_PREPARETSO,
|
|
|
|
+ TSOSEG_LOC_TXPREPLLFAST,
|
|
|
|
+ TSOSEG_LOC_UNMAPTSO,
|
|
|
|
+ TSOSEG_LOC_ALLOC,
|
|
|
|
+ TSOSEG_LOC_FREE,
|
|
|
|
+};
|
|
|
|
+#ifdef TSOSEG_DEBUG
|
|
|
|
+
|
|
|
|
+#define MAX_TSO_SEG_ACT_HISTORY 16
|
|
|
|
+struct qdf_tso_seg_dbg_t {
|
|
|
|
+ void *txdesc; /* owner - (ol_txrx_tx_desc_t *) */
|
|
|
|
+ int cur; /* index of last valid entry */
|
|
|
|
+ uint16_t history[MAX_TSO_SEG_ACT_HISTORY];
|
|
|
|
+};
|
|
|
|
+#endif /* TSOSEG_DEBUG */
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* qdf_tso_seg_elem_t - tso segment element
|
|
* qdf_tso_seg_elem_t - tso segment element
|
|
* @seg: instance of segment
|
|
* @seg: instance of segment
|
|
@@ -700,6 +727,9 @@ struct qdf_tso_seg_elem_t {
|
|
uint16_t cookie:15,
|
|
uint16_t cookie:15,
|
|
on_freelist:1;
|
|
on_freelist:1;
|
|
struct qdf_tso_seg_elem_t *next;
|
|
struct qdf_tso_seg_elem_t *next;
|
|
|
|
+#ifdef TSOSEG_DEBUG
|
|
|
|
+ struct qdf_tso_seg_dbg_t dbg;
|
|
|
|
+#endif /* TSOSEG_DEBUG */
|
|
};
|
|
};
|
|
|
|
|
|
/**
|
|
/**
|