Files
android_kernel_samsung_sm86…/dp/wifi3.0/li/dp_li.h
Neha Bisht 00b88532a4 qcacmn: Optimize dp_pkt_add_timestamp call to save CPU load
get_log_timestamp API is being called unconditionally when passed as
an argument to dp_pkt_add_timestamp (even for empty calls) from
dp_tx_hw_enqueue_li. This adds significant load on CPU, hence avoid
get_log_timestamp call by using preprocessor directive.

Change-Id: I1d988597e28b755a767a267d1b578b2bcedc324e
CRs-Fixed: 3150795
2022-03-15 23:21:29 -07:00

143 wiersze
3.4 KiB
C

/*
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef __DP_LI_H
#define __DP_LI_H
#include <dp_types.h>
#include <dp_mon.h>
#include <hal_li_tx.h>
#include <hal_li_rx.h>
#include <qdf_pkt_add_timestamp.h>
/* WBM2SW ring id for rx release */
#define WBM2SW_REL_ERR_RING_NUM 3
/**
* struct dp_soc_li - Extended DP soc for LI targets
* @soc: dp soc structure
*/
struct dp_soc_li {
struct dp_soc soc;
};
/**
* struct dp_pdev_li - Extended DP pdev for LI targets
* @pdev: dp_pdev structure
*/
struct dp_pdev_li {
struct dp_pdev pdev;
};
/**
* struct dp_vdev_li - Extended DP vdev for LI targets
* @vdev: dp_vdev structure
*/
struct dp_vdev_li {
struct dp_vdev vdev;
};
/**
* struct dp_peer_li - Extended DP peer for LI targets
* @peer: dp_peer structure
*/
struct dp_peer_li {
struct dp_peer peer;
};
/**
* struct dp_mon_soc_li - Extended DP mon soc for LI targets
* @mon_soc: dp_mon_soc structure
*/
struct dp_mon_soc_li {
struct dp_mon_soc mon_soc;
};
/**
* struct dp_mon_pdev_li - Extended DP mon pdev for LI targets
* @mon_pdev: dp_mon_pdev structure
*/
struct dp_mon_pdev_li {
struct dp_mon_pdev mon_pdev;
};
/**
* dp_get_soc_context_size_LI() - get context size for dp_soc_li
*
* Return: value in bytes for LI specific soc structure
*/
qdf_size_t dp_get_soc_context_size_li(void);
/**
* dp_initialize_arch_ops_li() - initialize LI specific arch ops
* @arch_ops: arch ops pointer
*
* Return: none
*/
void dp_initialize_arch_ops_li(struct dp_arch_ops *arch_ops);
/**
* dp_get_context_size_li() - get LI specific size for peer/vdev/pdev/soc
* @arch_ops: arch ops pointer
*
* Return: size in bytes for the context_type
*/
qdf_size_t dp_get_context_size_li(enum dp_context_type context_type);
/**
* dp_mon_get_context_size_li() - get LI specific size for mon pdev/soc
* @arch_ops: arch ops pointer
*
* Return: size in bytes for the context_type
*/
qdf_size_t dp_mon_get_context_size_li(enum dp_context_type context_type);
#ifdef CONFIG_DP_PKT_ADD_TIMESTAMP
/**
* dp_pkt_add_timestamp() - add timestamp in data payload
*
* @vdev: dp vdev
* @index: index to decide offset in payload
* @time: timestamp to add in data payload
* @nbuf: network buffer
*
* Return: none
*/
void dp_pkt_add_timestamp(struct dp_vdev *vdev,
enum qdf_pkt_timestamp_index index, uint64_t time,
qdf_nbuf_t nbuf);
/**
* dp_pkt_get_timestamp() - get current system time
*
* @time: return current system time
*
* Return: none
*/
void dp_pkt_get_timestamp(uint64_t *time);
#else
#define dp_pkt_add_timestamp(vdev, index, time, nbuf)
static inline
void dp_pkt_get_timestamp(uint64_t *time)
{
}
#endif
#endif