From cdc307f70b02b0fb7251bc0546350c310cb0fb63 Mon Sep 17 00:00:00 2001 From: Chaithanya Garrepalli Date: Mon, 17 Jul 2017 15:30:49 +0530 Subject: [PATCH] qcacmn: Replace SKB CB vdev_ctx member with vdev_id Removed submit_ts and replaced vdev_ctx with vdev_id in qdf_nbuf_cb Change-Id: Ib478aa69ee8069d1c5ff5de29ee0431c238f4b7d CRs-Fixed: 2065367 --- qdf/inc/qdf_nbuf.h | 56 ++++++++++++++++- qdf/linux/src/i_qdf_nbuf.h | 120 +++++++++++++++++++++++++------------ 2 files changed, 135 insertions(+), 41 deletions(-) diff --git a/qdf/inc/qdf_nbuf.h b/qdf/inc/qdf_nbuf.h index 408a98ebbcb3..3db5e728203a 100644 --- a/qdf/inc/qdf_nbuf.h +++ b/qdf/inc/qdf_nbuf.h @@ -557,9 +557,9 @@ qdf_nbuf_set_frag_is_wordstream(qdf_nbuf_t buf, } static inline void -qdf_nbuf_set_vdev_ctx(qdf_nbuf_t buf, void *vdev_ctx) +qdf_nbuf_set_vdev_ctx(qdf_nbuf_t buf, uint8_t vdev_id) { - __qdf_nbuf_set_vdev_ctx(buf, vdev_ctx); + __qdf_nbuf_set_vdev_ctx(buf, vdev_id); } static inline void @@ -568,13 +568,19 @@ qdf_nbuf_set_ftype(qdf_nbuf_t buf, uint8_t type) __qdf_nbuf_set_ftype(buf, type); } +static inline void +qdf_nbuf_set_ext_cb(qdf_nbuf_t buf, void *ref) +{ + __qdf_nbuf_set_ext_cb(buf, ref); +} + static inline void qdf_nbuf_set_fctx_type(qdf_nbuf_t buf, void *ctx, uint8_t type) { __qdf_nbuf_set_fctx_type(buf, ctx, type); } -static inline void * +static inline uint8_t qdf_nbuf_get_vdev_ctx(qdf_nbuf_t buf) { return __qdf_nbuf_get_vdev_ctx(buf); @@ -590,6 +596,12 @@ static inline uint8_t qdf_nbuf_get_ftype(qdf_nbuf_t buf) return __qdf_nbuf_get_ftype(buf); } +static inline void * +qdf_nbuf_get_ext_cb(qdf_nbuf_t buf) +{ + return __qdf_nbuf_get_ext_cb(buf); +} + static inline qdf_dma_addr_t qdf_nbuf_mapped_paddr_get(qdf_nbuf_t buf) { @@ -2349,4 +2361,42 @@ qdf_nbuf_reg_free_cb(qdf_nbuf_free_t cb_func_ptr) __qdf_nbuf_reg_free_cb(cb_func_ptr); } +/** + * qdf_nbuf_set_timestamp() - set the timestamp for frame + * + * @buf: sk buff + * + * Return: void + */ +static inline void +qdf_nbuf_set_timestamp(struct sk_buff *skb) +{ + __qdf_nbuf_set_timestamp(skb); +} + +/** + * qdf_nbuf_get_timedelta_ms() - get time difference in ms + * + * @buf: sk buff + * + * Return: time difference ms + */ +static inline uint64_t +qdf_nbuf_get_timedelta_ms(struct sk_buff *skb) +{ + return __qdf_nbuf_get_timedelta_ms(skb); +} + +/** + * qdf_nbuf_get_timedelta_us() - get time difference in micro seconds + * + * @buf: sk buff + * + * Return: time difference in micro seconds + */ +static inline uint64_t +qdf_nbuf_get_timedelta_us(struct sk_buff *skb) +{ + return __qdf_nbuf_get_timedelta_us(skb); +} #endif /* _QDF_NBUF_H */ diff --git a/qdf/linux/src/i_qdf_nbuf.h b/qdf/linux/src/i_qdf_nbuf.h index 2bbd82de6ce4..8f8c9d715fb8 100644 --- a/qdf/linux/src/i_qdf_nbuf.h +++ b/qdf/linux/src/i_qdf_nbuf.h @@ -178,26 +178,22 @@ struct qdf_nbuf_cb { uint8_t u8; } flags; uint8_t ftype; - - union { - struct { - uint8_t packet_state:7, - is_packet_priv:1; - uint8_t packet_track:4, - proto_type:4; - uint8_t dp_trace:1, - is_bcast:1, - is_mcast:1, - packet_type:3, - /* used only for hl*/ - htt2_frm:1, - print:1; - uint8_t vdev_id; - } trace; - uint32_t submit_ts; - } u; + uint8_t vdev_id; + struct { + uint8_t packet_state:7, + is_packet_priv:1; + uint8_t packet_track:4, + proto_type:4; + uint8_t dp_trace:1, + is_bcast:1, + is_mcast:1, + packet_type:3, + /* used only for hl*/ + htt2_frm:1, + print:1; + } trace; void *fctx; - void *vdev_ctx; + void *ext_cb_ptr; } win; struct { uint16_t len; @@ -360,8 +356,10 @@ QDF_COMPILE_TIME_ASSERT(qdf_nbuf_cb_size, (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.fctx) #define QDF_NBUF_CB_TX_VDEV_CTX(skb) \ - (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.vdev_ctx) + (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.vdev_id) +#define QDF_NBUF_CB_TX_EXT_CB(skb) \ + (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.ext_cb_ptr) #ifndef CONFIG_WIN @@ -414,54 +412,51 @@ QDF_COMPILE_TIME_ASSERT(qdf_nbuf_cb_size, #define QDF_NBUF_CB_TX_PACKET_STATE(skb)\ (((struct qdf_nbuf_cb *) \ - ((skb)->cb))->u.tx.dev.win.u.trace.packet_state) + ((skb)->cb))->u.tx.dev.win.trace.packet_state) #define QDF_NBUF_CB_TX_IS_PACKET_PRIV(skb) \ (((struct qdf_nbuf_cb *) \ - ((skb)->cb))->u.tx.dev.win.u.trace.is_packet_priv) + ((skb)->cb))->u.tx.dev.win.trace.is_packet_priv) #define QDF_NBUF_CB_TX_PACKET_TRACK(skb)\ (((struct qdf_nbuf_cb *) \ - ((skb)->cb))->u.tx.dev.win.u.trace.packet_track) - -#define QDF_NBUF_CB_TX_SUBMIT_TS(skb) \ - (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.u.submit_ts) + ((skb)->cb))->u.tx.dev.win.trace.packet_track) #define QDF_NBUF_CB_TX_PROTO_TYPE(skb)\ (((struct qdf_nbuf_cb *) \ - ((skb)->cb))->u.tx.dev.win.u.trace.proto_type) + ((skb)->cb))->u.tx.dev.win.trace.proto_type) #define QDF_NBUF_GET_PACKET_TRACK(skb)\ (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.u.trace.packet_track) #define QDF_NBUF_CB_TX_DP_TRACE(skb)\ - (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.u.trace.dp_trace) + (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.trace.dp_trace) #define QDF_NBUF_CB_DP_TRACE_PRINT(skb) \ - (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.u.trace.print) + (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.trace.print) #define QDF_NBUF_CB_TX_HL_HTT2_FRM(skb) \ - (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.u.trace.htt2_frm) + (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.trace.htt2_frm) #define QDF_NBUF_CB_TX_VDEV_ID(skb)\ - (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.u.trace.vdev_id) + (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.trace.vdev_id) #define QDF_NBUF_CB_GET_IS_BCAST(skb)\ - (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.u.trace.is_bcast) + (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.trace.is_bcast) #define QDF_NBUF_CB_GET_IS_MCAST(skb)\ - (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.u.trace.is_mcast) + (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.trace.is_mcast) #define QDF_NBUF_CB_GET_PACKET_TYPE(skb)\ - (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.u.trace.packet_type) + (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.trace.packet_type) #define QDF_NBUF_CB_SET_BCAST(skb) \ (((struct qdf_nbuf_cb *) \ - ((skb)->cb))->u.tx.dev.win.u.trace.is_bcast = true) + ((skb)->cb))->u.tx.dev.win.trace.is_bcast = true) #define QDF_NBUF_CB_SET_MCAST(skb) \ (((struct qdf_nbuf_cb *) \ - ((skb)->cb))->u.tx.dev.win.u.trace.is_mcast = true) + ((skb)->cb))->u.tx.dev.win.trace.is_mcast = true) #define QDF_NBUF_CB_TX_FTYPE(skb) \ (((struct qdf_nbuf_cb *)((skb)->cb))->u.tx.dev.win.ftype) @@ -529,8 +524,10 @@ typedef void (*qdf_nbuf_free_t)(__qdf_nbuf_t); is_wstrm; \ } while (0) -#define __qdf_nbuf_set_vdev_ctx(skb, vdev_ctx) \ - (QDF_NBUF_CB_TX_VDEV_CTX((skb)) = (vdev_ctx)) +#define __qdf_nbuf_set_vdev_ctx(skb, vdev_id) \ + do { \ + QDF_NBUF_CB_TX_VDEV_CTX((skb)) = (vdev_id); \ + } while (0) #define __qdf_nbuf_get_vdev_ctx(skb) \ QDF_NBUF_CB_TX_VDEV_CTX((skb)) @@ -552,6 +549,14 @@ typedef void (*qdf_nbuf_free_t)(__qdf_nbuf_t); #define __qdf_nbuf_get_ftype(skb) \ QDF_NBUF_CB_TX_FTYPE((skb)) +#define __qdf_nbuf_set_ext_cb(skb, ref) \ + do { \ + QDF_NBUF_CB_TX_EXT_CB((skb)) = (ref); \ + } while (0) + +#define __qdf_nbuf_get_ext_cb(skb) \ + QDF_NBUF_CB_TX_EXT_CB((skb)) + #define __qdf_nbuf_set_chfrag_start(skb, val) \ ((QDF_NBUF_CB_TX_EXTRA_FRAG_FLAGS_CHFRAG_START((skb))) = val) @@ -1842,4 +1847,43 @@ __qdf_nbuf_get_queue_mapping(struct sk_buff *skb) { return skb->queue_mapping; } + +/** + * __qdf_nbuf_set_timestamp() - set the timestamp for frame + * + * @buf: sk buff + * + * Return: void + */ +static inline void +__qdf_nbuf_set_timestamp(struct sk_buff *skb) +{ + __net_timestamp(skb); +} + +/** + * __qdf_nbuf_get_timedelta_ms() - get time difference in ms + * + * @buf: sk buff + * + * Return: time difference in ms + */ +static inline uint64_t +__qdf_nbuf_get_timedelta_ms(struct sk_buff *skb) +{ + return ktime_to_ms(net_timedelta(skb->tstamp)); +} + +/** + * __qdf_nbuf_get_timedelta_us() - get time difference in micro seconds + * + * @buf: sk buff + * + * Return: time difference in micro seconds + */ +static inline uint64_t +__qdf_nbuf_get_timedelta_us(struct sk_buff *skb) +{ + return ktime_to_us(net_timedelta(skb->tstamp)); +} #endif /*_I_QDF_NET_BUF_H */