xref: /aosp_15_r20/external/kernel-headers/original/uapi/linux/gsmmux.h (revision f80ad8b4341604f5951dab671d41019a6d7087ce)
1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*f80ad8b4SAndroid Build Coastguard Worker /* Copyright (c) 2022/23 Siemens Mobility GmbH */
3*f80ad8b4SAndroid Build Coastguard Worker #ifndef _LINUX_GSMMUX_H
4*f80ad8b4SAndroid Build Coastguard Worker #define _LINUX_GSMMUX_H
5*f80ad8b4SAndroid Build Coastguard Worker 
6*f80ad8b4SAndroid Build Coastguard Worker #include <linux/const.h>
7*f80ad8b4SAndroid Build Coastguard Worker #include <linux/if.h>
8*f80ad8b4SAndroid Build Coastguard Worker #include <linux/ioctl.h>
9*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h>
10*f80ad8b4SAndroid Build Coastguard Worker 
11*f80ad8b4SAndroid Build Coastguard Worker /*
12*f80ad8b4SAndroid Build Coastguard Worker  * flags definition for n_gsm
13*f80ad8b4SAndroid Build Coastguard Worker  *
14*f80ad8b4SAndroid Build Coastguard Worker  * Used by:
15*f80ad8b4SAndroid Build Coastguard Worker  * struct gsm_config_ext.flags
16*f80ad8b4SAndroid Build Coastguard Worker  * struct gsm_dlci_config.flags
17*f80ad8b4SAndroid Build Coastguard Worker  */
18*f80ad8b4SAndroid Build Coastguard Worker /* Forces a DLCI reset if set. Otherwise, a DLCI reset is only done if
19*f80ad8b4SAndroid Build Coastguard Worker  * incompatible settings were provided. Always cleared on retrieval.
20*f80ad8b4SAndroid Build Coastguard Worker  */
21*f80ad8b4SAndroid Build Coastguard Worker #define GSM_FL_RESTART	_BITUL(0)
22*f80ad8b4SAndroid Build Coastguard Worker 
23*f80ad8b4SAndroid Build Coastguard Worker /**
24*f80ad8b4SAndroid Build Coastguard Worker  * struct gsm_config - n_gsm basic configuration parameters
25*f80ad8b4SAndroid Build Coastguard Worker  *
26*f80ad8b4SAndroid Build Coastguard Worker  * This structure is used in combination with GSMIOC_GETCONF and GSMIOC_SETCONF
27*f80ad8b4SAndroid Build Coastguard Worker  * to retrieve and set the basic parameters of an n_gsm ldisc.
28*f80ad8b4SAndroid Build Coastguard Worker  * struct gsm_config_ext can be used to configure extended ldisc parameters.
29*f80ad8b4SAndroid Build Coastguard Worker  *
30*f80ad8b4SAndroid Build Coastguard Worker  * All timers are in units of 1/100th of a second.
31*f80ad8b4SAndroid Build Coastguard Worker  *
32*f80ad8b4SAndroid Build Coastguard Worker  * @adaption:      Convergence layer type
33*f80ad8b4SAndroid Build Coastguard Worker  * @encapsulation: Framing (0 = basic option, 1 = advanced option)
34*f80ad8b4SAndroid Build Coastguard Worker  * @initiator:     Initiator or responder
35*f80ad8b4SAndroid Build Coastguard Worker  * @t1:            Acknowledgment timer
36*f80ad8b4SAndroid Build Coastguard Worker  * @t2:            Response timer for multiplexer control channel
37*f80ad8b4SAndroid Build Coastguard Worker  * @t3:            Response timer for wake-up procedure
38*f80ad8b4SAndroid Build Coastguard Worker  * @n2:            Maximum number of retransmissions
39*f80ad8b4SAndroid Build Coastguard Worker  * @mru:           Maximum incoming frame payload size
40*f80ad8b4SAndroid Build Coastguard Worker  * @mtu:           Maximum outgoing frame payload size
41*f80ad8b4SAndroid Build Coastguard Worker  * @k:             Window size
42*f80ad8b4SAndroid Build Coastguard Worker  * @i:             Frame type (1 = UIH, 2 = UI)
43*f80ad8b4SAndroid Build Coastguard Worker  * @unused:        Can not be used
44*f80ad8b4SAndroid Build Coastguard Worker  */
45*f80ad8b4SAndroid Build Coastguard Worker struct gsm_config
46*f80ad8b4SAndroid Build Coastguard Worker {
47*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int adaption;
48*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int encapsulation;
49*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int initiator;
50*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int t1;
51*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int t2;
52*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int t3;
53*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int n2;
54*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int mru;
55*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int mtu;
56*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int k;
57*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int i;
58*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int unused[8];
59*f80ad8b4SAndroid Build Coastguard Worker };
60*f80ad8b4SAndroid Build Coastguard Worker 
61*f80ad8b4SAndroid Build Coastguard Worker #define GSMIOC_GETCONF		_IOR('G', 0, struct gsm_config)
62*f80ad8b4SAndroid Build Coastguard Worker #define GSMIOC_SETCONF		_IOW('G', 1, struct gsm_config)
63*f80ad8b4SAndroid Build Coastguard Worker 
64*f80ad8b4SAndroid Build Coastguard Worker /**
65*f80ad8b4SAndroid Build Coastguard Worker  * struct gsm_netconfig - n_gsm network configuration parameters
66*f80ad8b4SAndroid Build Coastguard Worker  *
67*f80ad8b4SAndroid Build Coastguard Worker  * This structure is used in combination with GSMIOC_ENABLE_NET and
68*f80ad8b4SAndroid Build Coastguard Worker  * GSMIOC_DISABLE_NET to enable or disable a network data connection
69*f80ad8b4SAndroid Build Coastguard Worker  * over a mux virtual tty channel. This is for modems that support
70*f80ad8b4SAndroid Build Coastguard Worker  * data connections with raw IP frames instead of PPP.
71*f80ad8b4SAndroid Build Coastguard Worker  *
72*f80ad8b4SAndroid Build Coastguard Worker  * @adaption: Adaption to use in network mode.
73*f80ad8b4SAndroid Build Coastguard Worker  * @protocol: Protocol to use - only ETH_P_IP supported.
74*f80ad8b4SAndroid Build Coastguard Worker  * @unused2:  Can not be used.
75*f80ad8b4SAndroid Build Coastguard Worker  * @if_name:  Interface name format string.
76*f80ad8b4SAndroid Build Coastguard Worker  * @unused:   Can not be used.
77*f80ad8b4SAndroid Build Coastguard Worker  */
78*f80ad8b4SAndroid Build Coastguard Worker struct gsm_netconfig {
79*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int adaption;
80*f80ad8b4SAndroid Build Coastguard Worker 	unsigned short protocol;
81*f80ad8b4SAndroid Build Coastguard Worker 	unsigned short unused2;
82*f80ad8b4SAndroid Build Coastguard Worker 	char if_name[IFNAMSIZ];
83*f80ad8b4SAndroid Build Coastguard Worker 	__u8 unused[28];
84*f80ad8b4SAndroid Build Coastguard Worker };
85*f80ad8b4SAndroid Build Coastguard Worker 
86*f80ad8b4SAndroid Build Coastguard Worker #define GSMIOC_ENABLE_NET      _IOW('G', 2, struct gsm_netconfig)
87*f80ad8b4SAndroid Build Coastguard Worker #define GSMIOC_DISABLE_NET     _IO('G', 3)
88*f80ad8b4SAndroid Build Coastguard Worker 
89*f80ad8b4SAndroid Build Coastguard Worker /* get the base tty number for a configured gsmmux tty */
90*f80ad8b4SAndroid Build Coastguard Worker #define GSMIOC_GETFIRST		_IOR('G', 4, __u32)
91*f80ad8b4SAndroid Build Coastguard Worker 
92*f80ad8b4SAndroid Build Coastguard Worker /**
93*f80ad8b4SAndroid Build Coastguard Worker  * struct gsm_config_ext - n_gsm extended configuration parameters
94*f80ad8b4SAndroid Build Coastguard Worker  *
95*f80ad8b4SAndroid Build Coastguard Worker  * This structure is used in combination with GSMIOC_GETCONF_EXT and
96*f80ad8b4SAndroid Build Coastguard Worker  * GSMIOC_SETCONF_EXT to retrieve and set the extended parameters of an
97*f80ad8b4SAndroid Build Coastguard Worker  * n_gsm ldisc.
98*f80ad8b4SAndroid Build Coastguard Worker  *
99*f80ad8b4SAndroid Build Coastguard Worker  * All timers are in units of 1/100th of a second.
100*f80ad8b4SAndroid Build Coastguard Worker  *
101*f80ad8b4SAndroid Build Coastguard Worker  * @keep_alive:  Control channel keep-alive in 1/100th of a second (0 to disable).
102*f80ad8b4SAndroid Build Coastguard Worker  * @wait_config: Wait for DLCI config before opening virtual link?
103*f80ad8b4SAndroid Build Coastguard Worker  * @flags:       Mux specific flags.
104*f80ad8b4SAndroid Build Coastguard Worker  * @reserved:    For future use, must be initialized to zero.
105*f80ad8b4SAndroid Build Coastguard Worker  */
106*f80ad8b4SAndroid Build Coastguard Worker struct gsm_config_ext {
107*f80ad8b4SAndroid Build Coastguard Worker 	__u32 keep_alive;
108*f80ad8b4SAndroid Build Coastguard Worker 	__u32 wait_config;
109*f80ad8b4SAndroid Build Coastguard Worker 	__u32 flags;
110*f80ad8b4SAndroid Build Coastguard Worker 	__u32 reserved[5];
111*f80ad8b4SAndroid Build Coastguard Worker };
112*f80ad8b4SAndroid Build Coastguard Worker 
113*f80ad8b4SAndroid Build Coastguard Worker #define GSMIOC_GETCONF_EXT	_IOR('G', 5, struct gsm_config_ext)
114*f80ad8b4SAndroid Build Coastguard Worker #define GSMIOC_SETCONF_EXT	_IOW('G', 6, struct gsm_config_ext)
115*f80ad8b4SAndroid Build Coastguard Worker 
116*f80ad8b4SAndroid Build Coastguard Worker /**
117*f80ad8b4SAndroid Build Coastguard Worker  * struct gsm_dlci_config - n_gsm channel configuration parameters
118*f80ad8b4SAndroid Build Coastguard Worker  *
119*f80ad8b4SAndroid Build Coastguard Worker  * This structure is used in combination with GSMIOC_GETCONF_DLCI and
120*f80ad8b4SAndroid Build Coastguard Worker  * GSMIOC_SETCONF_DLCI to retrieve and set the channel specific parameters
121*f80ad8b4SAndroid Build Coastguard Worker  * of an n_gsm ldisc.
122*f80ad8b4SAndroid Build Coastguard Worker  *
123*f80ad8b4SAndroid Build Coastguard Worker  * Set the channel accordingly before calling GSMIOC_GETCONF_DLCI.
124*f80ad8b4SAndroid Build Coastguard Worker  *
125*f80ad8b4SAndroid Build Coastguard Worker  * @channel:  DLCI (0 for the associated DLCI).
126*f80ad8b4SAndroid Build Coastguard Worker  * @adaption: Convergence layer type.
127*f80ad8b4SAndroid Build Coastguard Worker  * @mtu:      Maximum transfer unit.
128*f80ad8b4SAndroid Build Coastguard Worker  * @priority: Priority (0 for default value).
129*f80ad8b4SAndroid Build Coastguard Worker  * @i:        Frame type (1 = UIH, 2 = UI).
130*f80ad8b4SAndroid Build Coastguard Worker  * @k:        Window size (0 for default value).
131*f80ad8b4SAndroid Build Coastguard Worker  * @flags:    DLCI specific flags.
132*f80ad8b4SAndroid Build Coastguard Worker  * @reserved: For future use, must be initialized to zero.
133*f80ad8b4SAndroid Build Coastguard Worker  */
134*f80ad8b4SAndroid Build Coastguard Worker struct gsm_dlci_config {
135*f80ad8b4SAndroid Build Coastguard Worker 	__u32 channel;
136*f80ad8b4SAndroid Build Coastguard Worker 	__u32 adaption;
137*f80ad8b4SAndroid Build Coastguard Worker 	__u32 mtu;
138*f80ad8b4SAndroid Build Coastguard Worker 	__u32 priority;
139*f80ad8b4SAndroid Build Coastguard Worker 	__u32 i;
140*f80ad8b4SAndroid Build Coastguard Worker 	__u32 k;
141*f80ad8b4SAndroid Build Coastguard Worker 	__u32 flags;
142*f80ad8b4SAndroid Build Coastguard Worker 	__u32 reserved[7];
143*f80ad8b4SAndroid Build Coastguard Worker };
144*f80ad8b4SAndroid Build Coastguard Worker 
145*f80ad8b4SAndroid Build Coastguard Worker #define GSMIOC_GETCONF_DLCI	_IOWR('G', 7, struct gsm_dlci_config)
146*f80ad8b4SAndroid Build Coastguard Worker #define GSMIOC_SETCONF_DLCI	_IOW('G', 8, struct gsm_dlci_config)
147*f80ad8b4SAndroid Build Coastguard Worker 
148*f80ad8b4SAndroid Build Coastguard Worker #endif
149