android_kernel_xiaomi_sm8350/techpack/datarmnet/core/rmnet_genl.h
Michael Bestas d9efe6cda3
Add 'techpack/datarmnet/' from tag 'LA.UM.9.14.r1-18300-LAHAINA.0'
git-subtree-dir: techpack/datarmnet
git-subtree-mainline: 2305407022
git-subtree-split: eab1468cc3
Change-Id: I4eddf49f4e67f52b5735ab1a771fa080e112db79
2022-05-19 00:04:07 +03:00

97 lines
2.1 KiB
C

/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (c) 2019, The Linux Foundation. All rights reserved.
*
* RMNET Data Generic Netlink
*
*/
#ifndef _RMNET_GENL_H_
#define _RMNET_GENL_H_
#include <net/genetlink.h>
#define RMNET_CORE_DEBUG 0
#define rm_err(fmt, ...) \
do { if (RMNET_CORE_DEBUG) pr_err(fmt, __VA_ARGS__); } while (0)
/* Generic Netlink Definitions */
#define RMNET_CORE_GENL_VERSION 1
#define RMNET_CORE_GENL_FAMILY_NAME "RMNET_CORE"
#define RMNET_CORE_GENL_MAX_PIDS 32
#define RMNET_GENL_SUCCESS (0)
#define RMNET_GENL_FAILURE (-1)
extern int rmnet_core_userspace_connected;
enum {
RMNET_CORE_GENL_CMD_UNSPEC,
RMNET_CORE_GENL_CMD_PID_BPS_REQ,
RMNET_CORE_GENL_CMD_PID_BOOST_REQ,
__RMNET_CORE_GENL_CMD_MAX,
};
enum {
RMNET_CORE_GENL_ATTR_UNSPEC,
RMNET_CORE_GENL_ATTR_STR,
RMNET_CORE_GENL_ATTR_INT,
RMNET_CORE_GENL_ATTR_PID_BPS,
RMNET_CORE_GENL_ATTR_PID_BOOST,
__RMNET_CORE_GENL_ATTR_MAX,
};
#define RMNET_CORE_GENL_ATTR_MAX (__RMNET_CORE_GENL_ATTR_MAX - 1)
struct rmnet_core_pid_bps_info {
u64 tx_bps;
u32 pid;
u32 boost_remaining_ms;
};
struct rmnet_core_pid_boost_info {
u32 boost_enabled;
/* Boost period in ms */
u32 boost_period;
u32 pid;
};
struct rmnet_core_pid_bps_req {
struct rmnet_core_pid_bps_info list[RMNET_CORE_GENL_MAX_PIDS];
u64 timestamp;
u16 list_len;
u8 valid;
};
struct rmnet_core_pid_bps_resp {
struct rmnet_core_pid_bps_info list[RMNET_CORE_GENL_MAX_PIDS];
u64 timestamp;
u16 list_len;
u8 valid;
};
struct rmnet_core_pid_boost_req {
struct rmnet_core_pid_boost_info list[RMNET_CORE_GENL_MAX_PIDS];
u64 timestamp;
u16 list_len;
u8 valid;
};
/* Function Prototypes */
int rmnet_core_genl_pid_bps_req_hdlr(struct sk_buff *skb_2,
struct genl_info *info);
int rmnet_core_genl_pid_boost_req_hdlr(struct sk_buff *skb_2,
struct genl_info *info);
/* Called by vnd select queue */
void rmnet_update_pid_and_check_boost(pid_t pid, unsigned int len,
int *boost_enable, u64 *boost_period);
int rmnet_core_genl_init(void);
int rmnet_core_genl_deinit(void);
#endif /*_RMNET_CORE_GENL_H_*/