Fastforwarding datarmnet code to data-kernel.lnx.1.1

Change-Id: Iaa23d64a4b93e87bcd8c42923ba398471834e0e8
This commit is contained in:
Arnav Sharma 2020-06-11 16:51:41 -07:00
commit b7cf580e81
5 changed files with 67 additions and 23 deletions

View file

@ -360,7 +360,7 @@ static int rmnet_rtnl_validate(struct nlattr *tb[], struct nlattr *data[],
if (data[IFLA_RMNET_UL_AGG_PARAMS]) {
agg_params = nla_data(data[IFLA_RMNET_UL_AGG_PARAMS]);
if (agg_params->agg_time < 3000000)
if (agg_params->agg_time < 1000000)
return -EINVAL;
}
}

View file

@ -18,6 +18,7 @@ struct rmnet_ctl_ipa_dev {
};
static struct rmnet_ctl_ipa_dev ctl_ipa_dev;
static bool rmnet_ctl_ipa_registered;
static int rmnet_ctl_send_ipa(struct rmnet_ctl_dev *dev, struct sk_buff *skb)
{
@ -78,33 +79,31 @@ static void rmnet_ctl_ipa_ready(void *user_data)
rmnet_ctl_dl_callback,
&ctl_ipa_dev);
pr_info("%s: %d\n", __func__, rc);
if (rc)
pr_err("%s: %d\n", __func__, rc);
else
rmnet_ctl_ipa_registered = true;
}
static int __init rmnet_ctl_init(void)
{
int rc;
rc = ipa_register_rmnet_ctl_cb(
rmnet_ctl_probe,
&ctl_ipa_dev,
rmnet_ctl_remove,
&ctl_ipa_dev,
rmnet_ctl_dl_callback,
&ctl_ipa_dev);
if (rc == -EAGAIN)
rc = ipa_register_ipa_ready_cb(
rmnet_ctl_ipa_ready, NULL);
pr_info("%s: %d\n", __func__, rc);
rc = ipa_register_ipa_ready_cb(rmnet_ctl_ipa_ready, NULL);
if (rc == -EEXIST)
rmnet_ctl_ipa_ready(NULL);
else if (rc)
pr_err("%s: %d\n", __func__, rc);
return 0;
}
static void __exit rmnet_ctl_exit(void)
{
ipa_unregister_rmnet_ctl_cb();
if (rmnet_ctl_ipa_registered) {
ipa_unregister_rmnet_ctl_cb();
rmnet_ctl_ipa_registered = false;
}
}
module_init(rmnet_ctl_init)

View file

@ -1,5 +1,5 @@
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2019, The Linux Foundation. All rights reserved.
/* Copyright (c) 2019-2020, The Linux Foundation. All rights reserved.
*
* RMNET Data Generic Netlink
*
@ -190,11 +190,8 @@ static void rmnet_create_pid_bps_resp(struct rmnet_core_pid_bps_resp
tx_bytes_cur = node_p->tx_bytes;
if (tx_bytes_cur <= node_p->tx_bytes_last_query) {
/* Dont send inactive pids to userspace */
/* TODO: can remove from hash table probably */
node_p->tx_bps = 0;
node_p->timstamp_last_query =
pid_bps_resp_ptr->timestamp;
node_p->sched_boost_remaining_ms = 0;
hash_del(&node_p->list);
kfree(node_p);
continue;
}

View file

@ -1,5 +1,5 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
*/
#undef TRACE_SYSTEM
@ -101,6 +101,33 @@ DEFINE_EVENT
);
TRACE_EVENT(print_skb_gso,
TP_PROTO(struct sk_buff *skb, __be16 src, __be16 dest),
TP_ARGS(skb, src, dest),
TP_STRUCT__entry(
__field(void *, skbaddr)
__field(int, len)
__field(int, data_len)
__field(__be16, src)
__field(__be16, dest)
),
TP_fast_assign(
__entry->skbaddr = skb;
__entry->len = skb->len;
__entry->data_len = skb->data_len;
__entry->src = src;
__entry->dest = dest;
),
TP_printk("GSO: skbaddr=%pK, len=%d, data_len=%d, src=%u, dest=%u",
__entry->skbaddr, __entry->len, __entry->data_len,
be16_to_cpu(__entry->src), be16_to_cpu(__entry->dest))
);
/*****************************************************************************/
/* Trace events for rmnet_perf module */
/*****************************************************************************/

View file

@ -17,6 +17,8 @@
#include <linux/etherdevice.h>
#include <linux/if_arp.h>
#include <linux/ip.h>
#include <linux/ipv6.h>
#include <linux/tcp.h>
#include <net/pkt_sched.h>
#include "rmnet_config.h"
#include "rmnet_handlers.h"
@ -171,6 +173,25 @@ static u16 rmnet_vnd_select_queue(struct net_device *dev,
int boost_trigger = 0;
int txq = 0;
if (trace_print_skb_gso_enabled()) {
if (!skb_shinfo(skb)->gso_size)
goto skip_trace;
if (skb->protocol == htons(ETH_P_IP)) {
if (ip_hdr(skb)->protocol != IPPROTO_TCP)
goto skip_trace;
}
if (skb->protocol == htons(ETH_P_IPV6)) {
if (ipv6_hdr(skb)->nexthdr != IPPROTO_TCP)
goto skip_trace;
}
trace_print_skb_gso(skb, tcp_hdr(skb)->source,
tcp_hdr(skb)->dest);
}
skip_trace:
if (priv->real_dev)
txq = qmi_rmnet_get_queue(dev, skb);