1ceed73a2SSubash Abhinov Kasiviswanathan /* Copyright (c) 2013-2014, 2016-2017 The Linux Foundation. All rights reserved.
2ceed73a2SSubash Abhinov Kasiviswanathan  *
3ceed73a2SSubash Abhinov Kasiviswanathan  * This program is free software; you can redistribute it and/or modify
4ceed73a2SSubash Abhinov Kasiviswanathan  * it under the terms of the GNU General Public License version 2 and
5ceed73a2SSubash Abhinov Kasiviswanathan  * only version 2 as published by the Free Software Foundation.
6ceed73a2SSubash Abhinov Kasiviswanathan  *
7ceed73a2SSubash Abhinov Kasiviswanathan  * This program is distributed in the hope that it will be useful,
8ceed73a2SSubash Abhinov Kasiviswanathan  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9ceed73a2SSubash Abhinov Kasiviswanathan  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10ceed73a2SSubash Abhinov Kasiviswanathan  * GNU General Public License for more details.
11ceed73a2SSubash Abhinov Kasiviswanathan  *
12ceed73a2SSubash Abhinov Kasiviswanathan  * RMNET Data configuration engine
13ceed73a2SSubash Abhinov Kasiviswanathan  *
14ceed73a2SSubash Abhinov Kasiviswanathan  */
15ceed73a2SSubash Abhinov Kasiviswanathan 
16ceed73a2SSubash Abhinov Kasiviswanathan #include <linux/skbuff.h>
17ceed73a2SSubash Abhinov Kasiviswanathan 
18ceed73a2SSubash Abhinov Kasiviswanathan #ifndef _RMNET_CONFIG_H_
19ceed73a2SSubash Abhinov Kasiviswanathan #define _RMNET_CONFIG_H_
20ceed73a2SSubash Abhinov Kasiviswanathan 
21ceed73a2SSubash Abhinov Kasiviswanathan #define RMNET_MAX_LOGICAL_EP 255
22ceed73a2SSubash Abhinov Kasiviswanathan 
23ceed73a2SSubash Abhinov Kasiviswanathan /* Information about the next device to deliver the packet to.
24ceed73a2SSubash Abhinov Kasiviswanathan  * Exact usage of this parameter depends on the rmnet_mode.
25ceed73a2SSubash Abhinov Kasiviswanathan  */
26ceed73a2SSubash Abhinov Kasiviswanathan struct rmnet_endpoint {
27ceed73a2SSubash Abhinov Kasiviswanathan 	u8 mux_id;
28ceed73a2SSubash Abhinov Kasiviswanathan 	struct net_device *egress_dev;
29ceed73a2SSubash Abhinov Kasiviswanathan };
30ceed73a2SSubash Abhinov Kasiviswanathan 
31ceed73a2SSubash Abhinov Kasiviswanathan /* One instance of this structure is instantiated for each real_dev associated
32ceed73a2SSubash Abhinov Kasiviswanathan  * with rmnet.
33ceed73a2SSubash Abhinov Kasiviswanathan  */
34b665f4f8SSubash Abhinov Kasiviswanathan struct rmnet_port {
35ceed73a2SSubash Abhinov Kasiviswanathan 	struct net_device *dev;
36ceed73a2SSubash Abhinov Kasiviswanathan 	struct rmnet_endpoint muxed_ep[RMNET_MAX_LOGICAL_EP];
37ceed73a2SSubash Abhinov Kasiviswanathan 	u32 ingress_data_format;
38ceed73a2SSubash Abhinov Kasiviswanathan 	u32 egress_data_format;
39009e1b2bSSubash Abhinov Kasiviswanathan 	struct net_device *rmnet_devices[RMNET_MAX_LOGICAL_EP];
40ceed73a2SSubash Abhinov Kasiviswanathan 	u8 nr_rmnet_devs;
4191489632SSubash Abhinov Kasiviswanathan 	u8 rmnet_mode;
42ceed73a2SSubash Abhinov Kasiviswanathan };
43ceed73a2SSubash Abhinov Kasiviswanathan 
44ceed73a2SSubash Abhinov Kasiviswanathan extern struct rtnl_link_ops rmnet_link_ops;
45ceed73a2SSubash Abhinov Kasiviswanathan 
46ceed73a2SSubash Abhinov Kasiviswanathan struct rmnet_priv {
47ceed73a2SSubash Abhinov Kasiviswanathan 	struct rmnet_endpoint local_ep;
48ceed73a2SSubash Abhinov Kasiviswanathan 	u8 mux_id;
49b752eff5SSubash Abhinov Kasiviswanathan 	struct net_device *real_dev;
50ceed73a2SSubash Abhinov Kasiviswanathan };
51ceed73a2SSubash Abhinov Kasiviswanathan 
52b665f4f8SSubash Abhinov Kasiviswanathan struct rmnet_port *rmnet_get_port(struct net_device *real_dev);
53ceed73a2SSubash Abhinov Kasiviswanathan 
54ceed73a2SSubash Abhinov Kasiviswanathan #endif /* _RMNET_CONFIG_H_ */
55