summaryrefslogtreecommitdiff
path: root/core/rmnet_ctl.h
blob: d4545b3e5a83c9394cdd497976e91fc0c51b87dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (c) 2019-2021, The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 *
 * RMNET_CTL header
 *
 */

#ifndef _RMNET_CTL_H_
#define _RMNET_CTL_H_

#include <linux/skbuff.h>

enum rmnet_ctl_log_lvl {
	RMNET_CTL_LOG_CRIT,
	RMNET_CTL_LOG_ERR,
	RMNET_CTL_LOG_INFO,
	RMNET_CTL_LOG_DEBUG,
};

struct rmnet_ctl_client_hooks {
	void (*ctl_dl_client_hook)(struct sk_buff *skb);
};

struct rmnet_ctl_client_if {
	void *	(*reg)(struct rmnet_ctl_client_hooks *hook);
	int	(*dereg)(void *handle);
	int	(*send)(void *handle, struct sk_buff *skb);
	void	(*log)(enum rmnet_ctl_log_lvl lvl, const char *msg, int rc,
		       const void *data, unsigned int len);
};

#ifdef RMNET_LA_PLATFORM
struct rmnet_ctl_client_if *rmnet_ctl_if(void);
int rmnet_ctl_get_stats(u64 *s, int n);
#else
static inline struct rmnet_ctl_client_if *rmnet_ctl_if(void) {return NULL;};
static inline int rmnet_ctl_get_stats(u64 *s, int n) {return 0;};
#endif /* RMNET_LA_PLATFORM */

#endif /* _RMNET_CTL_H_ */