123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /* Copyright (c) 2019, 2021 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_TETHER_INFO_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_TETHER_INFO,
- __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;
- };
- /* Tether Info Request Structure */
- struct rmnet_core_tether_info_req {
- uint8_t tether_filters_en;
- uint8_t 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);
- int rmnet_core_genl_tether_info_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_*/
|