Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b7cf580e authored by Arnav Sharma's avatar Arnav Sharma
Browse files

Fastforwarding datarmnet code to data-kernel.lnx.1.1

Change-Id: Iaa23d64a4b93e87bcd8c42923ba398471834e0e8
parents 94d3f634 17190b7e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
		}
	}
+14 −15
Original line number Diff line number Diff line
@@ -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)
{
	if (rmnet_ctl_ipa_registered) {
		ipa_unregister_rmnet_ctl_cb();
		rmnet_ctl_ipa_registered = false;
	}
}

module_init(rmnet_ctl_init)
+3 −6
Original line number Diff line number Diff line
// 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;
			}

+28 −1
Original line number Diff line number Diff line
/* 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 */
/*****************************************************************************/
+21 −0
Original line number Diff line number Diff line
@@ -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);