msm: ipa: align to latest kernel version
Make changes to align to the latest kernel version. Fixes to compilation errors and forbidden warnings. Change-Id: I5c7a7b8a8ce2ccd98af3d6458bd6a9bdddeb361b Signed-off-by: Chaitanya Pratapa <cpratapa@codeaurora.org>
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015-2020, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/of.h>
|
#include <linux/of.h>
|
||||||
@@ -4772,6 +4772,32 @@ void gsi_wdi3_dump_register(unsigned long chan_hdl)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(gsi_wdi3_dump_register);
|
EXPORT_SYMBOL(gsi_wdi3_dump_register);
|
||||||
|
|
||||||
|
int gsi_query_aqc_msi_addr(unsigned long chan_hdl, phys_addr_t *addr)
|
||||||
|
{
|
||||||
|
if (!gsi_ctx) {
|
||||||
|
pr_err("%s:%d gsi context not allocated\n", __func__, __LINE__);
|
||||||
|
return -GSI_STATUS_NODEV;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (chan_hdl >= gsi_ctx->max_ch) {
|
||||||
|
GSIERR("bad params chan_hdl=%lu\n", chan_hdl);
|
||||||
|
return -GSI_STATUS_INVALID_PARAMS;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gsi_ctx->chan[chan_hdl].state == GSI_CHAN_STATE_NOT_ALLOCATED) {
|
||||||
|
GSIERR("bad state %d\n",
|
||||||
|
gsi_ctx->chan[chan_hdl].state);
|
||||||
|
return -GSI_STATUS_UNSUPPORTED_OP;
|
||||||
|
}
|
||||||
|
|
||||||
|
*addr = (phys_addr_t)(gsi_ctx->per.phys_addr +
|
||||||
|
gsihal_get_reg_nk_ofst(GSI_EE_n_GSI_CH_k_CNTXT_8,
|
||||||
|
gsi_ctx->per.ee, chan_hdl));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(gsi_query_aqc_msi_addr);
|
||||||
|
|
||||||
static union __packed gsi_channel_scratch __gsi_update_mhi_channel_scratch(
|
static union __packed gsi_channel_scratch __gsi_update_mhi_channel_scratch(
|
||||||
unsigned long chan_hdl, struct __packed gsi_mhi_channel_scratch mscr)
|
unsigned long chan_hdl, struct __packed gsi_mhi_channel_scratch mscr)
|
||||||
{
|
{
|
||||||
@@ -4812,32 +4838,6 @@ static union __packed gsi_channel_scratch __gsi_update_mhi_channel_scratch(
|
|||||||
return scr;
|
return scr;
|
||||||
}
|
}
|
||||||
|
|
||||||
int gsi_query_aqc_msi_addr(unsigned long chan_hdl, phys_addr_t *addr)
|
|
||||||
{
|
|
||||||
if (!gsi_ctx) {
|
|
||||||
pr_err("%s:%d gsi context not allocated\n", __func__, __LINE__);
|
|
||||||
return -GSI_STATUS_NODEV;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (chan_hdl >= gsi_ctx->max_ch) {
|
|
||||||
GSIERR("bad params chan_hdl=%lu\n", chan_hdl);
|
|
||||||
return -GSI_STATUS_INVALID_PARAMS;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gsi_ctx->chan[chan_hdl].state == GSI_CHAN_STATE_NOT_ALLOCATED) {
|
|
||||||
GSIERR("bad state %d\n",
|
|
||||||
gsi_ctx->chan[chan_hdl].state);
|
|
||||||
return -GSI_STATUS_UNSUPPORTED_OP;
|
|
||||||
}
|
|
||||||
|
|
||||||
*addr = (phys_addr_t)(gsi_ctx->per.phys_addr +
|
|
||||||
gsihal_get_reg_nk_ofst(GSI_EE_n_GSI_CH_k_CNTXT_8,
|
|
||||||
gsi_ctx->per.ee, chan_hdl));
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(gsi_query_aqc_msi_addr);
|
|
||||||
|
|
||||||
static int msm_gsi_probe(struct platform_device *pdev)
|
static int msm_gsi_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/completion.h>
|
#include <linux/completion.h>
|
||||||
@@ -148,7 +148,6 @@ static ssize_t gsi_dump_ch(struct file *file,
|
|||||||
u32 arg2;
|
u32 arg2;
|
||||||
unsigned long missing;
|
unsigned long missing;
|
||||||
char *sptr, *token;
|
char *sptr, *token;
|
||||||
uint32_t val;
|
|
||||||
struct gsi_chan_ctx *ctx;
|
struct gsi_chan_ctx *ctx;
|
||||||
uint16_t i;
|
uint16_t i;
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2013-2020, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2013-2021, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/debugfs.h>
|
#include <linux/debugfs.h>
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/atomic.h>
|
#include <linux/atomic.h>
|
||||||
|
#include <linux/version.h>
|
||||||
#include "ecm_ipa.h"
|
#include "ecm_ipa.h"
|
||||||
#include "../ipa_common_i.h"
|
#include "../ipa_common_i.h"
|
||||||
#include "../ipa_pm.h"
|
#include "../ipa_pm.h"
|
||||||
@@ -176,7 +177,14 @@ static void ecm_ipa_packet_receive_notify
|
|||||||
(void *priv, enum ipa_dp_evt_type evt, unsigned long data);
|
(void *priv, enum ipa_dp_evt_type evt, unsigned long data);
|
||||||
static void ecm_ipa_tx_complete_notify
|
static void ecm_ipa_tx_complete_notify
|
||||||
(void *priv, enum ipa_dp_evt_type evt, unsigned long data);
|
(void *priv, enum ipa_dp_evt_type evt, unsigned long data);
|
||||||
|
|
||||||
|
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0))
|
||||||
|
static void ecm_ipa_tx_timeout(struct net_device *net,
|
||||||
|
unsigned int txqueue);
|
||||||
|
#else /* Legacy API. */
|
||||||
static void ecm_ipa_tx_timeout(struct net_device *net);
|
static void ecm_ipa_tx_timeout(struct net_device *net);
|
||||||
|
#endif
|
||||||
|
|
||||||
static int ecm_ipa_stop(struct net_device *net);
|
static int ecm_ipa_stop(struct net_device *net);
|
||||||
static void ecm_ipa_enable_data_path(struct ecm_ipa_dev *ecm_ipa_ctx);
|
static void ecm_ipa_enable_data_path(struct ecm_ipa_dev *ecm_ipa_ctx);
|
||||||
static int ecm_ipa_rules_cfg
|
static int ecm_ipa_rules_cfg
|
||||||
@@ -1196,7 +1204,12 @@ out:
|
|||||||
dev_kfree_skb_any(skb);
|
dev_kfree_skb_any(skb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0))
|
||||||
|
static void ecm_ipa_tx_timeout(struct net_device *net,
|
||||||
|
unsigned int txqueue)
|
||||||
|
#else /* Legacy API */
|
||||||
static void ecm_ipa_tx_timeout(struct net_device *net)
|
static void ecm_ipa_tx_timeout(struct net_device *net)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
struct ecm_ipa_dev *ecm_ipa_ctx = netdev_priv(net);
|
struct ecm_ipa_dev *ecm_ipa_ctx = netdev_priv(net);
|
||||||
|
|
||||||
@@ -1248,20 +1261,12 @@ static void ecm_ipa_debugfs_init(struct ecm_ipa_dev *ecm_ipa_ctx)
|
|||||||
ECM_IPA_ERROR("could not create debugfs directory entry\n");
|
ECM_IPA_ERROR("could not create debugfs directory entry\n");
|
||||||
goto fail_directory;
|
goto fail_directory;
|
||||||
}
|
}
|
||||||
file = debugfs_create_u8
|
debugfs_create_u8
|
||||||
("outstanding_high", flags_read_write,
|
("outstanding_high", flags_read_write,
|
||||||
ecm_ipa_ctx->directory, &ecm_ipa_ctx->outstanding_high);
|
ecm_ipa_ctx->directory, &ecm_ipa_ctx->outstanding_high);
|
||||||
if (!file) {
|
debugfs_create_u8
|
||||||
ECM_IPA_ERROR("could not create outstanding_high file\n");
|
|
||||||
goto fail_file;
|
|
||||||
}
|
|
||||||
file = debugfs_create_u8
|
|
||||||
("outstanding_low", flags_read_write,
|
("outstanding_low", flags_read_write,
|
||||||
ecm_ipa_ctx->directory, &ecm_ipa_ctx->outstanding_low);
|
ecm_ipa_ctx->directory, &ecm_ipa_ctx->outstanding_low);
|
||||||
if (!file) {
|
|
||||||
ECM_IPA_ERROR("could not create outstanding_low file\n");
|
|
||||||
goto fail_file;
|
|
||||||
}
|
|
||||||
file = debugfs_create_file
|
file = debugfs_create_file
|
||||||
("outstanding", flags_read_only,
|
("outstanding", flags_read_only,
|
||||||
ecm_ipa_ctx->directory,
|
ecm_ipa_ctx->directory,
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015-2020, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/debugfs.h>
|
#include <linux/debugfs.h>
|
||||||
@@ -371,17 +371,6 @@ static ssize_t ipa_mhi_debugfs_stats(struct file *file,
|
|||||||
return simple_read_from_buffer(ubuf, count, ppos, dbg_buff, nbytes);
|
return simple_read_from_buffer(ubuf, count, ppos, dbg_buff, nbytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t ipa_mhi_debugfs_uc_stats(struct file *file,
|
|
||||||
char __user *ubuf,
|
|
||||||
size_t count,
|
|
||||||
loff_t *ppos)
|
|
||||||
{
|
|
||||||
int nbytes = 0;
|
|
||||||
|
|
||||||
nbytes += ipa3_uc_mhi_print_stats(dbg_buff, IPA_MHI_MAX_MSG_LEN);
|
|
||||||
return simple_read_from_buffer(ubuf, count, ppos, dbg_buff, nbytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
static ssize_t ipa_mhi_debugfs_dump_host_ch_ctx_arr(struct file *file,
|
static ssize_t ipa_mhi_debugfs_dump_host_ch_ctx_arr(struct file *file,
|
||||||
char __user *ubuf,
|
char __user *ubuf,
|
||||||
size_t count,
|
size_t count,
|
||||||
@@ -447,10 +436,6 @@ const struct file_operations ipa_mhi_stats_ops = {
|
|||||||
.read = ipa_mhi_debugfs_stats,
|
.read = ipa_mhi_debugfs_stats,
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct file_operations ipa_mhi_uc_stats_ops = {
|
|
||||||
.read = ipa_mhi_debugfs_uc_stats,
|
|
||||||
};
|
|
||||||
|
|
||||||
const struct file_operations ipa_mhi_dump_host_ch_ctx_ops = {
|
const struct file_operations ipa_mhi_dump_host_ch_ctx_ops = {
|
||||||
.read = ipa_mhi_debugfs_dump_host_ch_ctx_arr,
|
.read = ipa_mhi_debugfs_dump_host_ch_ctx_arr,
|
||||||
};
|
};
|
||||||
@@ -477,19 +462,8 @@ static void ipa_mhi_debugfs_init(void)
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
file = debugfs_create_file("uc_stats", read_only_mode, dent,
|
debugfs_create_u32("use_ipadma", read_write_mode, dent,
|
||||||
0, &ipa_mhi_uc_stats_ops);
|
|
||||||
if (!file || IS_ERR(file)) {
|
|
||||||
IPA_MHI_ERR("fail to create file uc_stats\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_u32("use_ipadma", read_write_mode, dent,
|
|
||||||
&ipa_mhi_client_ctx->use_ipadma);
|
&ipa_mhi_client_ctx->use_ipadma);
|
||||||
if (!file || IS_ERR(file)) {
|
|
||||||
IPA_MHI_ERR("fail to create file use_ipadma\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_file("dump_host_channel_ctx_array",
|
file = debugfs_create_file("dump_host_channel_ctx_array",
|
||||||
read_only_mode, dent, 0, &ipa_mhi_dump_host_ch_ctx_ops);
|
read_only_mode, dent, 0, &ipa_mhi_dump_host_ch_ctx_ops);
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2013-2020, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2013-2021, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/atomic.h>
|
#include <linux/atomic.h>
|
||||||
@@ -20,6 +20,7 @@
|
|||||||
#include <linux/ipa.h>
|
#include <linux/ipa.h>
|
||||||
#include <linux/random.h>
|
#include <linux/random.h>
|
||||||
#include <linux/workqueue.h>
|
#include <linux/workqueue.h>
|
||||||
|
#include <linux/version.h>
|
||||||
#include "rndis_ipa.h"
|
#include "rndis_ipa.h"
|
||||||
#include "ipa_common_i.h"
|
#include "ipa_common_i.h"
|
||||||
#include "ipa_pm.h"
|
#include "ipa_pm.h"
|
||||||
@@ -247,7 +248,14 @@ static void rndis_ipa_packet_receive_notify
|
|||||||
(void *private, enum ipa_dp_evt_type evt, unsigned long data);
|
(void *private, enum ipa_dp_evt_type evt, unsigned long data);
|
||||||
static void rndis_ipa_tx_complete_notify
|
static void rndis_ipa_tx_complete_notify
|
||||||
(void *private, enum ipa_dp_evt_type evt, unsigned long data);
|
(void *private, enum ipa_dp_evt_type evt, unsigned long data);
|
||||||
|
|
||||||
|
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0))
|
||||||
|
static void rndis_ipa_tx_timeout(struct net_device *net,
|
||||||
|
unsigned int txqueue);
|
||||||
|
#else /* Legacy API. */
|
||||||
static void rndis_ipa_tx_timeout(struct net_device *net);
|
static void rndis_ipa_tx_timeout(struct net_device *net);
|
||||||
|
#endif
|
||||||
|
|
||||||
static int rndis_ipa_stop(struct net_device *net);
|
static int rndis_ipa_stop(struct net_device *net);
|
||||||
static void rndis_ipa_enable_data_path(struct rndis_ipa_dev *rndis_ipa_ctx);
|
static void rndis_ipa_enable_data_path(struct rndis_ipa_dev *rndis_ipa_ctx);
|
||||||
static struct sk_buff *rndis_encapsulate_skb(struct sk_buff *skb,
|
static struct sk_buff *rndis_encapsulate_skb(struct sk_buff *skb,
|
||||||
@@ -1075,7 +1083,12 @@ out:
|
|||||||
dev_kfree_skb_any(skb);
|
dev_kfree_skb_any(skb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0))
|
||||||
|
static void rndis_ipa_tx_timeout(struct net_device *net,
|
||||||
|
unsigned int txqueue)
|
||||||
|
#else /* Legacy API. */
|
||||||
static void rndis_ipa_tx_timeout(struct net_device *net)
|
static void rndis_ipa_tx_timeout(struct net_device *net)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
struct rndis_ipa_dev *rndis_ipa_ctx = netdev_priv(net);
|
struct rndis_ipa_dev *rndis_ipa_ctx = netdev_priv(net);
|
||||||
int outstanding = atomic_read(&rndis_ipa_ctx->outstanding_pkts);
|
int outstanding = atomic_read(&rndis_ipa_ctx->outstanding_pkts);
|
||||||
@@ -2189,23 +2202,15 @@ static void rndis_ipa_debugfs_init(struct rndis_ipa_dev *rndis_ipa_ctx)
|
|||||||
goto fail_file;
|
goto fail_file;
|
||||||
}
|
}
|
||||||
|
|
||||||
file = debugfs_create_u32
|
debugfs_create_u32
|
||||||
("outstanding_high", flags_read_write,
|
("outstanding_high", flags_read_write,
|
||||||
rndis_ipa_ctx->directory,
|
rndis_ipa_ctx->directory,
|
||||||
&rndis_ipa_ctx->outstanding_high);
|
&rndis_ipa_ctx->outstanding_high);
|
||||||
if (!file) {
|
|
||||||
RNDIS_IPA_ERROR("could not create outstanding_high file\n");
|
|
||||||
goto fail_file;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_u32
|
debugfs_create_u32
|
||||||
("outstanding_low", flags_read_write,
|
("outstanding_low", flags_read_write,
|
||||||
rndis_ipa_ctx->directory,
|
rndis_ipa_ctx->directory,
|
||||||
&rndis_ipa_ctx->outstanding_low);
|
&rndis_ipa_ctx->outstanding_low);
|
||||||
if (!file) {
|
|
||||||
RNDIS_IPA_ERROR("could not create outstanding_low file\n");
|
|
||||||
goto fail_file;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_file
|
file = debugfs_create_file
|
||||||
("outstanding", flags_read_only,
|
("outstanding", flags_read_only,
|
||||||
@@ -2216,29 +2221,17 @@ static void rndis_ipa_debugfs_init(struct rndis_ipa_dev *rndis_ipa_ctx)
|
|||||||
goto fail_file;
|
goto fail_file;
|
||||||
}
|
}
|
||||||
|
|
||||||
file = debugfs_create_u8
|
debugfs_create_u8
|
||||||
("state", flags_read_only,
|
("state", flags_read_only,
|
||||||
rndis_ipa_ctx->directory, (u8 *)&rndis_ipa_ctx->state);
|
rndis_ipa_ctx->directory, (u8 *)&rndis_ipa_ctx->state);
|
||||||
if (!file) {
|
|
||||||
RNDIS_IPA_ERROR("could not create state file\n");
|
|
||||||
goto fail_file;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_u32
|
debugfs_create_u32
|
||||||
("tx_dropped", flags_read_only,
|
("tx_dropped", flags_read_only,
|
||||||
rndis_ipa_ctx->directory, &rndis_ipa_ctx->tx_dropped);
|
rndis_ipa_ctx->directory, &rndis_ipa_ctx->tx_dropped);
|
||||||
if (!file) {
|
|
||||||
RNDIS_IPA_ERROR("could not create tx_dropped file\n");
|
|
||||||
goto fail_file;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_u32
|
debugfs_create_u32
|
||||||
("rx_dropped", flags_read_only,
|
("rx_dropped", flags_read_only,
|
||||||
rndis_ipa_ctx->directory, &rndis_ipa_ctx->rx_dropped);
|
rndis_ipa_ctx->directory, &rndis_ipa_ctx->rx_dropped);
|
||||||
if (!file) {
|
|
||||||
RNDIS_IPA_ERROR("could not create rx_dropped file\n");
|
|
||||||
goto fail_file;
|
|
||||||
}
|
|
||||||
|
|
||||||
aggr_directory = debugfs_create_dir
|
aggr_directory = debugfs_create_dir
|
||||||
(DEBUGFS_AGGR_DIR_NAME,
|
(DEBUGFS_AGGR_DIR_NAME,
|
||||||
@@ -2257,48 +2250,29 @@ static void rndis_ipa_debugfs_init(struct rndis_ipa_dev *rndis_ipa_ctx)
|
|||||||
goto fail_file;
|
goto fail_file;
|
||||||
}
|
}
|
||||||
|
|
||||||
file = debugfs_create_u8
|
debugfs_create_u8
|
||||||
("aggr_enable", flags_read_write,
|
("aggr_enable", flags_read_write,
|
||||||
aggr_directory, (u8 *)&ipa_to_usb_ep_cfg.aggr.aggr_en);
|
aggr_directory, (u8 *)&ipa_to_usb_ep_cfg.aggr.aggr_en);
|
||||||
if (!file) {
|
|
||||||
RNDIS_IPA_ERROR("could not create aggr_enable file\n");
|
|
||||||
goto fail_file;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_u8
|
debugfs_create_u8
|
||||||
("aggr_type", flags_read_write,
|
("aggr_type", flags_read_write,
|
||||||
aggr_directory, (u8 *)&ipa_to_usb_ep_cfg.aggr.aggr);
|
aggr_directory, (u8 *)&ipa_to_usb_ep_cfg.aggr.aggr);
|
||||||
if (!file) {
|
|
||||||
RNDIS_IPA_ERROR("could not create aggr_type file\n");
|
RNDIS_IPA_ERROR("could not create aggr_type file\n");
|
||||||
goto fail_file;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_u32
|
debugfs_create_u32
|
||||||
("aggr_byte_limit", flags_read_write,
|
("aggr_byte_limit", flags_read_write,
|
||||||
aggr_directory,
|
aggr_directory,
|
||||||
&ipa_to_usb_ep_cfg.aggr.aggr_byte_limit);
|
&ipa_to_usb_ep_cfg.aggr.aggr_byte_limit);
|
||||||
if (!file) {
|
|
||||||
RNDIS_IPA_ERROR("could not create aggr_byte_limit file\n");
|
|
||||||
goto fail_file;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_u32
|
debugfs_create_u32
|
||||||
("aggr_time_limit", flags_read_write,
|
("aggr_time_limit", flags_read_write,
|
||||||
aggr_directory,
|
aggr_directory,
|
||||||
&ipa_to_usb_ep_cfg.aggr.aggr_time_limit);
|
&ipa_to_usb_ep_cfg.aggr.aggr_time_limit);
|
||||||
if (!file) {
|
|
||||||
RNDIS_IPA_ERROR("could not create aggr_time_limit file\n");
|
|
||||||
goto fail_file;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_u32
|
debugfs_create_u32
|
||||||
("aggr_pkt_limit", flags_read_write,
|
("aggr_pkt_limit", flags_read_write,
|
||||||
aggr_directory,
|
aggr_directory,
|
||||||
&ipa_to_usb_ep_cfg.aggr.aggr_pkt_limit);
|
&ipa_to_usb_ep_cfg.aggr.aggr_pkt_limit);
|
||||||
if (!file) {
|
|
||||||
RNDIS_IPA_ERROR("could not create aggr_pkt_limit file\n");
|
|
||||||
goto fail_file;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_bool
|
file = debugfs_create_bool
|
||||||
("tx_dump_enable", flags_read_write,
|
("tx_dump_enable", flags_read_write,
|
||||||
@@ -2327,14 +2301,10 @@ static void rndis_ipa_debugfs_init(struct rndis_ipa_dev *rndis_ipa_ctx)
|
|||||||
goto fail_file;
|
goto fail_file;
|
||||||
}
|
}
|
||||||
|
|
||||||
file = debugfs_create_u32
|
debugfs_create_u32
|
||||||
("error_msec_sleep_time", flags_read_write,
|
("error_msec_sleep_time", flags_read_write,
|
||||||
rndis_ipa_ctx->directory,
|
rndis_ipa_ctx->directory,
|
||||||
&rndis_ipa_ctx->error_msec_sleep_time);
|
&rndis_ipa_ctx->error_msec_sleep_time);
|
||||||
if (!file) {
|
|
||||||
RNDIS_IPA_ERROR("fail to create error_msec_sleep_time file\n");
|
|
||||||
goto fail_file;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_bool
|
file = debugfs_create_bool
|
||||||
("during_xmit_error", flags_read_only,
|
("during_xmit_error", flags_read_only,
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#undef TRACE_SYSTEM
|
#undef TRACE_SYSTEM
|
||||||
@@ -70,5 +70,9 @@ TRACE_EVENT(
|
|||||||
|
|
||||||
/* This part must be outside protection */
|
/* This part must be outside protection */
|
||||||
#undef TRACE_INCLUDE_PATH
|
#undef TRACE_INCLUDE_PATH
|
||||||
|
#ifdef CONFIG_IPA_VENDOR_DLKM
|
||||||
|
#define TRACE_INCLUDE_PATH ../../../../vendor/qcom/opensource/dataipa/drivers/platform/msm/ipa/ipa_clients
|
||||||
|
#else
|
||||||
#define TRACE_INCLUDE_PATH ../../techpack/dataipa/drivers/platform/msm/ipa/ipa_clients
|
#define TRACE_INCLUDE_PATH ../../techpack/dataipa/drivers/platform/msm/ipa/ipa_clients
|
||||||
|
#endif
|
||||||
#include <trace/define_trace.h>
|
#include <trace/define_trace.h>
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/clk.h>
|
#include <linux/clk.h>
|
||||||
@@ -145,6 +145,11 @@ static struct ipa3_plat_drv_res ipa3_res = {0, };
|
|||||||
static struct clk *ipa3_clk;
|
static struct clk *ipa3_clk;
|
||||||
|
|
||||||
struct ipa3_context *ipa3_ctx = NULL;
|
struct ipa3_context *ipa3_ctx = NULL;
|
||||||
|
/* ipa_i.h is included in ipa_client modules and ipa3_ctx is
|
||||||
|
* declared as extern in ipa_i.h. So export ipa3_ctx variable
|
||||||
|
* to be visible to ipa_client module.
|
||||||
|
*/
|
||||||
|
EXPORT_SYMBOL(ipa3_ctx);
|
||||||
|
|
||||||
int ipa3_plat_drv_probe(struct platform_device *pdev_p);
|
int ipa3_plat_drv_probe(struct platform_device *pdev_p);
|
||||||
int ipa3_pci_drv_probe(
|
int ipa3_pci_drv_probe(
|
||||||
@@ -629,7 +634,7 @@ static int ipa3_active_clients_log_init(void)
|
|||||||
GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
active_clients_table_buf = kzalloc(sizeof(
|
active_clients_table_buf = kzalloc(sizeof(
|
||||||
char[IPA3_ACTIVE_CLIENTS_TABLE_BUF_SIZE]), GFP_KERNEL);
|
char[IPA3_ACTIVE_CLIENTS_TABLE_BUF_SIZE]), GFP_KERNEL);
|
||||||
if (ipa3_ctx->ipa3_active_clients_logging.log_buffer == NULL) {
|
if (ipa3_ctx->ipa3_active_clients_logging.log_buffer[0] == NULL) {
|
||||||
pr_err("Active Clients Logging memory allocation failed\n");
|
pr_err("Active Clients Logging memory allocation failed\n");
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_FS
|
#ifdef CONFIG_DEBUG_FS
|
||||||
@@ -2967,13 +2967,8 @@ void ipa3_debugfs_init(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
file = debugfs_create_u32("hw_type", IPA_READ_ONLY_MODE,
|
debugfs_create_u32("hw_type", IPA_READ_ONLY_MODE,
|
||||||
dent, &ipa3_ctx->ipa_hw_type);
|
dent, &ipa3_ctx->ipa_hw_type);
|
||||||
if (!file) {
|
|
||||||
IPAERR("could not create hw_type file\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
for (i = 0; i < debugfs_files_num; ++i) {
|
for (i = 0; i < debugfs_files_num; ++i) {
|
||||||
const struct ipa3_debugfs_file *curr = &debugfs_files[i];
|
const struct ipa3_debugfs_file *curr = &debugfs_files[i];
|
||||||
@@ -2993,50 +2988,26 @@ void ipa3_debugfs_init(void)
|
|||||||
if (active_clients_buf == NULL)
|
if (active_clients_buf == NULL)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
file = debugfs_create_u32("enable_clock_scaling", IPA_READ_WRITE_MODE,
|
debugfs_create_u32("enable_clock_scaling", IPA_READ_WRITE_MODE,
|
||||||
dent, &ipa3_ctx->enable_clock_scaling);
|
dent, &ipa3_ctx->enable_clock_scaling);
|
||||||
if (!file) {
|
|
||||||
IPAERR("could not create enable_clock_scaling file\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_u32("tx_wrapper_cache_max_size",
|
debugfs_create_u32("tx_wrapper_cache_max_size",
|
||||||
IPA_READ_WRITE_MODE,
|
IPA_READ_WRITE_MODE,
|
||||||
dent, &ipa3_ctx->tx_wrapper_cache_max_size);
|
dent, &ipa3_ctx->tx_wrapper_cache_max_size);
|
||||||
if (!file) {
|
|
||||||
IPAERR("could not create tx_wrapper_cache_max_size file\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_u32("enable_napi_chain", IPA_READ_WRITE_MODE,
|
debugfs_create_u32("enable_napi_chain", IPA_READ_WRITE_MODE,
|
||||||
dent, &ipa3_ctx->enable_napi_chain);
|
dent, &ipa3_ctx->enable_napi_chain);
|
||||||
if (!file) {
|
|
||||||
IPAERR("could not create enable_napi_chain file\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_u32("clock_scaling_bw_threshold_nominal_mbps",
|
debugfs_create_u32("clock_scaling_bw_threshold_nominal_mbps",
|
||||||
IPA_READ_WRITE_MODE, dent,
|
IPA_READ_WRITE_MODE, dent,
|
||||||
&ipa3_ctx->ctrl->clock_scaling_bw_threshold_nominal);
|
&ipa3_ctx->ctrl->clock_scaling_bw_threshold_nominal);
|
||||||
if (!file) {
|
|
||||||
IPAERR("could not create bw_threshold_nominal_mbps\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_u32("clock_scaling_bw_threshold_turbo_mbps",
|
debugfs_create_u32("clock_scaling_bw_threshold_turbo_mbps",
|
||||||
IPA_READ_WRITE_MODE, dent,
|
IPA_READ_WRITE_MODE, dent,
|
||||||
&ipa3_ctx->ctrl->clock_scaling_bw_threshold_turbo);
|
&ipa3_ctx->ctrl->clock_scaling_bw_threshold_turbo);
|
||||||
if (!file) {
|
|
||||||
IPAERR("could not create bw_threshold_turbo_mbps\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_u32("clk_rate", IPA_READ_ONLY_MODE,
|
debugfs_create_u32("clk_rate", IPA_READ_ONLY_MODE,
|
||||||
dent, &ipa3_ctx->curr_ipa_clk_rate);
|
dent, &ipa3_ctx->curr_ipa_clk_rate);
|
||||||
if (!file) {
|
|
||||||
IPAERR("could not create clk_rate file\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
ipa_debugfs_init_stats(dent);
|
ipa_debugfs_init_stats(dent);
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
#include "ipa_i.h"
|
#include "ipa_i.h"
|
||||||
#include <linux/if_vlan.h>
|
#include <linux/if_vlan.h>
|
||||||
@@ -353,7 +353,7 @@ static int ipa_eth_setup_rtk_gsi_channel(
|
|||||||
gsi_channel_props.dir = GSI_CHAN_DIR_FROM_GSI;
|
gsi_channel_props.dir = GSI_CHAN_DIR_FROM_GSI;
|
||||||
else
|
else
|
||||||
gsi_channel_props.dir = GSI_CHAN_DIR_TO_GSI;
|
gsi_channel_props.dir = GSI_CHAN_DIR_TO_GSI;
|
||||||
gsi_ep_info = ipa3_get_gsi_ep_info(ep->client);
|
gsi_ep_info = ipa3_get_gsi_ep_info(ep->client);
|
||||||
if (!gsi_ep_info) {
|
if (!gsi_ep_info) {
|
||||||
IPAERR("Failed getting GSI EP info for client=%d\n",
|
IPAERR("Failed getting GSI EP info for client=%d\n",
|
||||||
ep->client);
|
ep->client);
|
||||||
@@ -554,7 +554,7 @@ static int ipa_eth_setup_aqc_gsi_channel(
|
|||||||
gsi_channel_props.dir = GSI_CHAN_DIR_FROM_GSI;
|
gsi_channel_props.dir = GSI_CHAN_DIR_FROM_GSI;
|
||||||
else
|
else
|
||||||
gsi_channel_props.dir = GSI_CHAN_DIR_TO_GSI;
|
gsi_channel_props.dir = GSI_CHAN_DIR_TO_GSI;
|
||||||
gsi_ep_info = ipa3_get_gsi_ep_info(ep->client);
|
gsi_ep_info = ipa3_get_gsi_ep_info(ep->client);
|
||||||
if (!gsi_ep_info) {
|
if (!gsi_ep_info) {
|
||||||
IPAERR("Failed getting GSI EP info for client=%d\n",
|
IPAERR("Failed getting GSI EP info for client=%d\n",
|
||||||
ep->client);
|
ep->client);
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/device.h>
|
#include <linux/device.h>
|
||||||
@@ -9,7 +9,12 @@
|
|||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
|
#include <linux/version.h>
|
||||||
|
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0))
|
||||||
|
#include <linux/dma-map-ops.h>
|
||||||
|
#else /* Legacy */
|
||||||
#include <linux/dma-noncoherent.h>
|
#include <linux/dma-noncoherent.h>
|
||||||
|
#endif
|
||||||
#include "ipa_i.h"
|
#include "ipa_i.h"
|
||||||
#include "ipahal.h"
|
#include "ipahal.h"
|
||||||
#include "ipahal_nat.h"
|
#include "ipahal_nat.h"
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#undef TRACE_SYSTEM
|
#undef TRACE_SYSTEM
|
||||||
@@ -301,5 +301,9 @@ TRACE_EVENT(
|
|||||||
|
|
||||||
/* This part must be outside protection */
|
/* This part must be outside protection */
|
||||||
#undef TRACE_INCLUDE_PATH
|
#undef TRACE_INCLUDE_PATH
|
||||||
|
#ifdef CONFIG_IPA_VENDOR_DLKM
|
||||||
|
#define TRACE_INCLUDE_PATH ../../../../vendor/qcom/opensource/dataipa/drivers/platform/msm/ipa/ipa_v3
|
||||||
|
#else
|
||||||
#define TRACE_INCLUDE_PATH ../../techpack/dataipa/drivers/platform/msm/ipa/ipa_v3
|
#define TRACE_INCLUDE_PATH ../../techpack/dataipa/drivers/platform/msm/ipa/ipa_v3
|
||||||
|
#endif
|
||||||
#include <trace/define_trace.h>
|
#include <trace/define_trace.h>
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ipa_i.h"
|
#include "ipa_i.h"
|
||||||
@@ -1954,7 +1954,6 @@ int ipa3_wigig_init_debugfs_i(struct dentry *parent) { return 0; }
|
|||||||
int ipa3_wigig_init_debugfs_i(struct dentry *parent)
|
int ipa3_wigig_init_debugfs_i(struct dentry *parent)
|
||||||
{
|
{
|
||||||
const mode_t read_write_mode = 0664;
|
const mode_t read_write_mode = 0664;
|
||||||
struct dentry *file = NULL;
|
|
||||||
struct dentry *dent;
|
struct dentry *dent;
|
||||||
|
|
||||||
dent = debugfs_create_dir("ipa_wigig", parent);
|
dent = debugfs_create_dir("ipa_wigig", parent);
|
||||||
@@ -1965,38 +1964,18 @@ int ipa3_wigig_init_debugfs_i(struct dentry *parent)
|
|||||||
|
|
||||||
wigig_dent = dent;
|
wigig_dent = dent;
|
||||||
|
|
||||||
file = debugfs_create_u8("modc", read_write_mode, dent,
|
debugfs_create_u8("modc", read_write_mode, dent,
|
||||||
&int_modc);
|
&int_modc);
|
||||||
if (IS_ERR_OR_NULL(file)) {
|
|
||||||
IPAERR("fail to create file modc\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_u16("modt", read_write_mode, dent,
|
debugfs_create_u16("modt", read_write_mode, dent,
|
||||||
&int_modt);
|
&int_modt);
|
||||||
if (IS_ERR_OR_NULL(file)) {
|
|
||||||
IPAERR("fail to create file modt\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_u8("rx_mod_th", read_write_mode, dent,
|
debugfs_create_u8("rx_mod_th", read_write_mode, dent,
|
||||||
&rx_hwtail_mod_threshold);
|
&rx_hwtail_mod_threshold);
|
||||||
if (IS_ERR_OR_NULL(file)) {
|
|
||||||
IPAERR("fail to create file rx_mod_th\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
file = debugfs_create_u8("tx_mod_th", read_write_mode, dent,
|
debugfs_create_u8("tx_mod_th", read_write_mode, dent,
|
||||||
&tx_hwtail_mod_threshold);
|
&tx_hwtail_mod_threshold);
|
||||||
if (IS_ERR_OR_NULL(file)) {
|
|
||||||
IPAERR("fail to create file tx_mod_th\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
fail:
|
|
||||||
debugfs_remove_recursive(dent);
|
|
||||||
wigig_dent = NULL;
|
|
||||||
return -EFAULT;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ipahal.h"
|
#include "ipahal.h"
|
||||||
@@ -480,7 +480,7 @@ static struct ipahal_stats_init_pyld *ipahal_generate_init_pyld_flt_rt_v4_5(
|
|||||||
void *params, bool is_atomic_ctx)
|
void *params, bool is_atomic_ctx)
|
||||||
{
|
{
|
||||||
struct ipahal_stats_init_pyld *pyld;
|
struct ipahal_stats_init_pyld *pyld;
|
||||||
int num = (int)(params);
|
long num = (long)(params); /* params is treated as a pointer. */
|
||||||
|
|
||||||
if (num > IPA_MAX_FLT_RT_CNT_INDEX ||
|
if (num > IPA_MAX_FLT_RT_CNT_INDEX ||
|
||||||
num <= 0) {
|
num <= 0) {
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2014-2020, The Linux Foundation. All rights reserved.
|
* Copyright (c) 2014-2021, The Linux Foundation. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1310,7 +1310,12 @@ out:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0))
|
||||||
|
static void ipa3_wwan_tx_timeout(struct net_device *dev,
|
||||||
|
unsigned int txqueue)
|
||||||
|
#else /* Legacy API. */
|
||||||
static void ipa3_wwan_tx_timeout(struct net_device *dev)
|
static void ipa3_wwan_tx_timeout(struct net_device *dev)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
struct ipa3_wwan_private *wwan_ptr = netdev_priv(dev);
|
struct ipa3_wwan_private *wwan_ptr = netdev_priv(dev);
|
||||||
|
|
||||||
@@ -1318,7 +1323,6 @@ static void ipa3_wwan_tx_timeout(struct net_device *dev)
|
|||||||
IPAWANERR("[%s] data stall in UL, %d outstanding\n",
|
IPAWANERR("[%s] data stall in UL, %d outstanding\n",
|
||||||
dev->name, atomic_read(&wwan_ptr->outstanding_pkts));
|
dev->name, atomic_read(&wwan_ptr->outstanding_pkts));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* apps_ipa_tx_complete_notify() - Rx notify
|
* apps_ipa_tx_complete_notify() - Rx notify
|
||||||
*
|
*
|
||||||
@@ -4868,39 +4872,19 @@ static void rmnet_ipa_debugfs_init(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
dbgfs->dfile_outstanding_high = debugfs_create_u32("outstanding_high",
|
debugfs_create_u32("outstanding_high",
|
||||||
read_write_mode, dbgfs->dent,
|
read_write_mode, dbgfs->dent,
|
||||||
&rmnet_ipa3_ctx->outstanding_high);
|
&rmnet_ipa3_ctx->outstanding_high);
|
||||||
if (!dbgfs->dfile_outstanding_high ||
|
|
||||||
IS_ERR(dbgfs->dfile_outstanding_high)) {
|
|
||||||
pr_err("failed to create file for outstanding_high\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
dbgfs->dfile_outstanding_high_ctl =
|
|
||||||
debugfs_create_u32("outstanding_high_ctl",
|
debugfs_create_u32("outstanding_high_ctl",
|
||||||
read_write_mode, dbgfs->dent,
|
read_write_mode, dbgfs->dent,
|
||||||
&rmnet_ipa3_ctx->outstanding_high_ctl);
|
&rmnet_ipa3_ctx->outstanding_high_ctl);
|
||||||
if (!dbgfs->dfile_outstanding_high_ctl ||
|
|
||||||
IS_ERR(dbgfs->dfile_outstanding_high_ctl)) {
|
|
||||||
pr_err("failed to create file for outstanding_high_ctl\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
dbgfs->dfile_outstanding_low = debugfs_create_u32("outstanding_low",
|
debugfs_create_u32("outstanding_low",
|
||||||
read_write_mode, dbgfs->dent,
|
read_write_mode, dbgfs->dent,
|
||||||
&rmnet_ipa3_ctx->outstanding_low);
|
&rmnet_ipa3_ctx->outstanding_low);
|
||||||
if (!dbgfs->dfile_outstanding_low ||
|
|
||||||
IS_ERR(dbgfs->dfile_outstanding_low)) {
|
|
||||||
pr_err("failed to create file for outstanding_low\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
fail:
|
|
||||||
debugfs_remove_recursive(dbgfs->dent);
|
|
||||||
memset(dbgfs, 0, sizeof(struct rmnet_ipa_debugfs));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void rmnet_ipa_debugfs_remove(void)
|
static void rmnet_ipa_debugfs_remove(void)
|
||||||
|
Reference in New Issue
Block a user