xref: /linux/include/uapi/linux/gsmmux.h (revision ab1c247094e323177a578b38f0325bf79f0317ac)
16f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*e6b3d55bSDaniel Starke /* Copyright (c) 2022/23 Siemens Mobility GmbH */
31c4b1d73SJiri Slaby #ifndef _LINUX_GSMMUX_H
41c4b1d73SJiri Slaby #define _LINUX_GSMMUX_H
51c4b1d73SJiri Slaby 
6a031c77dSDaniel Starke #include <linux/const.h>
71c4b1d73SJiri Slaby #include <linux/if.h>
81c4b1d73SJiri Slaby #include <linux/ioctl.h>
945c6df44SJiri Slaby #include <linux/types.h>
101c4b1d73SJiri Slaby 
11a031c77dSDaniel Starke /*
12a031c77dSDaniel Starke  * flags definition for n_gsm
13a031c77dSDaniel Starke  *
14a031c77dSDaniel Starke  * Used by:
15e112ec42SDaniel Starke  * struct gsm_config_ext.flags
16a031c77dSDaniel Starke  * struct gsm_dlci_config.flags
17a031c77dSDaniel Starke  */
18a031c77dSDaniel Starke /* Forces a DLCI reset if set. Otherwise, a DLCI reset is only done if
19a031c77dSDaniel Starke  * incompatible settings were provided. Always cleared on retrieval.
20a031c77dSDaniel Starke  */
21a031c77dSDaniel Starke #define GSM_FL_RESTART	_BITUL(0)
22a031c77dSDaniel Starke 
23901de5acSDaniel Starke /**
24901de5acSDaniel Starke  * struct gsm_config - n_gsm basic configuration parameters
25901de5acSDaniel Starke  *
26901de5acSDaniel Starke  * This structure is used in combination with GSMIOC_GETCONF and GSMIOC_SETCONF
27901de5acSDaniel Starke  * to retrieve and set the basic parameters of an n_gsm ldisc.
28901de5acSDaniel Starke  * struct gsm_config_ext can be used to configure extended ldisc parameters.
29901de5acSDaniel Starke  *
30901de5acSDaniel Starke  * All timers are in units of 1/100th of a second.
31901de5acSDaniel Starke  *
32901de5acSDaniel Starke  * @adaption:      Convergence layer type
33901de5acSDaniel Starke  * @encapsulation: Framing (0 = basic option, 1 = advanced option)
34901de5acSDaniel Starke  * @initiator:     Initiator or responder
35901de5acSDaniel Starke  * @t1:            Acknowledgment timer
36901de5acSDaniel Starke  * @t2:            Response timer for multiplexer control channel
37901de5acSDaniel Starke  * @t3:            Response timer for wake-up procedure
38901de5acSDaniel Starke  * @n2:            Maximum number of retransmissions
39901de5acSDaniel Starke  * @mru:           Maximum incoming frame payload size
40901de5acSDaniel Starke  * @mtu:           Maximum outgoing frame payload size
41901de5acSDaniel Starke  * @k:             Window size
42901de5acSDaniel Starke  * @i:             Frame type (1 = UIH, 2 = UI)
43901de5acSDaniel Starke  * @unused:        Can not be used
44901de5acSDaniel Starke  */
451c4b1d73SJiri Slaby struct gsm_config
461c4b1d73SJiri Slaby {
471c4b1d73SJiri Slaby 	unsigned int adaption;
481c4b1d73SJiri Slaby 	unsigned int encapsulation;
491c4b1d73SJiri Slaby 	unsigned int initiator;
501c4b1d73SJiri Slaby 	unsigned int t1;
511c4b1d73SJiri Slaby 	unsigned int t2;
521c4b1d73SJiri Slaby 	unsigned int t3;
531c4b1d73SJiri Slaby 	unsigned int n2;
541c4b1d73SJiri Slaby 	unsigned int mru;
551c4b1d73SJiri Slaby 	unsigned int mtu;
561c4b1d73SJiri Slaby 	unsigned int k;
571c4b1d73SJiri Slaby 	unsigned int i;
58901de5acSDaniel Starke 	unsigned int unused[8];
591c4b1d73SJiri Slaby };
601c4b1d73SJiri Slaby 
611c4b1d73SJiri Slaby #define GSMIOC_GETCONF		_IOR('G', 0, struct gsm_config)
621c4b1d73SJiri Slaby #define GSMIOC_SETCONF		_IOW('G', 1, struct gsm_config)
631c4b1d73SJiri Slaby 
64901de5acSDaniel Starke /**
65901de5acSDaniel Starke  * struct gsm_netconfig - n_gsm network configuration parameters
66901de5acSDaniel Starke  *
67901de5acSDaniel Starke  * This structure is used in combination with GSMIOC_ENABLE_NET and
68901de5acSDaniel Starke  * GSMIOC_DISABLE_NET to enable or disable a network data connection
69901de5acSDaniel Starke  * over a mux virtual tty channel. This is for modems that support
70901de5acSDaniel Starke  * data connections with raw IP frames instead of PPP.
71901de5acSDaniel Starke  *
72901de5acSDaniel Starke  * @adaption: Adaption to use in network mode.
73901de5acSDaniel Starke  * @protocol: Protocol to use - only ETH_P_IP supported.
74901de5acSDaniel Starke  * @unused2:  Can not be used.
75901de5acSDaniel Starke  * @if_name:  Interface name format string.
76901de5acSDaniel Starke  * @unused:   Can not be used.
77901de5acSDaniel Starke  */
781c4b1d73SJiri Slaby struct gsm_netconfig {
79901de5acSDaniel Starke 	unsigned int adaption;
80901de5acSDaniel Starke 	unsigned short protocol;
81901de5acSDaniel Starke 	unsigned short unused2;
82901de5acSDaniel Starke 	char if_name[IFNAMSIZ];
83901de5acSDaniel Starke 	__u8 unused[28];
841c4b1d73SJiri Slaby };
851c4b1d73SJiri Slaby 
861c4b1d73SJiri Slaby #define GSMIOC_ENABLE_NET      _IOW('G', 2, struct gsm_netconfig)
871c4b1d73SJiri Slaby #define GSMIOC_DISABLE_NET     _IO('G', 3)
881c4b1d73SJiri Slaby 
89a7b121b4SMartin Hundebøll /* get the base tty number for a configured gsmmux tty */
90a7b121b4SMartin Hundebøll #define GSMIOC_GETFIRST		_IOR('G', 4, __u32)
911c4b1d73SJiri Slaby 
92901de5acSDaniel Starke /**
93901de5acSDaniel Starke  * struct gsm_config_ext - n_gsm extended configuration parameters
94901de5acSDaniel Starke  *
95901de5acSDaniel Starke  * This structure is used in combination with GSMIOC_GETCONF_EXT and
96901de5acSDaniel Starke  * GSMIOC_SETCONF_EXT to retrieve and set the extended parameters of an
97901de5acSDaniel Starke  * n_gsm ldisc.
98901de5acSDaniel Starke  *
99901de5acSDaniel Starke  * All timers are in units of 1/100th of a second.
100901de5acSDaniel Starke  *
101901de5acSDaniel Starke  * @keep_alive:  Control channel keep-alive in 1/100th of a second (0 to disable).
102901de5acSDaniel Starke  * @wait_config: Wait for DLCI config before opening virtual link?
103e112ec42SDaniel Starke  * @flags:       Mux specific flags.
104901de5acSDaniel Starke  * @reserved:    For future use, must be initialized to zero.
10572206cc7SDaniel Starke  */
106901de5acSDaniel Starke struct gsm_config_ext {
107901de5acSDaniel Starke 	__u32 keep_alive;
108901de5acSDaniel Starke 	__u32 wait_config;
109e112ec42SDaniel Starke 	__u32 flags;
110e112ec42SDaniel Starke 	__u32 reserved[5];
11172206cc7SDaniel Starke };
11272206cc7SDaniel Starke 
11372206cc7SDaniel Starke #define GSMIOC_GETCONF_EXT	_IOR('G', 5, struct gsm_config_ext)
11472206cc7SDaniel Starke #define GSMIOC_SETCONF_EXT	_IOW('G', 6, struct gsm_config_ext)
11572206cc7SDaniel Starke 
116901de5acSDaniel Starke /**
117901de5acSDaniel Starke  * struct gsm_dlci_config - n_gsm channel configuration parameters
118901de5acSDaniel Starke  *
119901de5acSDaniel Starke  * This structure is used in combination with GSMIOC_GETCONF_DLCI and
120901de5acSDaniel Starke  * GSMIOC_SETCONF_DLCI to retrieve and set the channel specific parameters
121901de5acSDaniel Starke  * of an n_gsm ldisc.
122901de5acSDaniel Starke  *
123901de5acSDaniel Starke  * Set the channel accordingly before calling GSMIOC_GETCONF_DLCI.
124901de5acSDaniel Starke  *
125901de5acSDaniel Starke  * @channel:  DLCI (0 for the associated DLCI).
126901de5acSDaniel Starke  * @adaption: Convergence layer type.
127901de5acSDaniel Starke  * @mtu:      Maximum transfer unit.
128901de5acSDaniel Starke  * @priority: Priority (0 for default value).
129901de5acSDaniel Starke  * @i:        Frame type (1 = UIH, 2 = UI).
130901de5acSDaniel Starke  * @k:        Window size (0 for default value).
131901de5acSDaniel Starke  * @flags:    DLCI specific flags.
132901de5acSDaniel Starke  * @reserved: For future use, must be initialized to zero.
133901de5acSDaniel Starke  */
1344ca58966SDaniel Starke struct gsm_dlci_config {
135901de5acSDaniel Starke 	__u32 channel;
136901de5acSDaniel Starke 	__u32 adaption;
137901de5acSDaniel Starke 	__u32 mtu;
138901de5acSDaniel Starke 	__u32 priority;
139901de5acSDaniel Starke 	__u32 i;
140901de5acSDaniel Starke 	__u32 k;
141901de5acSDaniel Starke 	__u32 flags;
142901de5acSDaniel Starke 	__u32 reserved[7];
1434ca58966SDaniel Starke };
1444ca58966SDaniel Starke 
1454ca58966SDaniel Starke #define GSMIOC_GETCONF_DLCI	_IOWR('G', 7, struct gsm_dlci_config)
1464ca58966SDaniel Starke #define GSMIOC_SETCONF_DLCI	_IOW('G', 8, struct gsm_dlci_config)
1474ca58966SDaniel Starke 
1481c4b1d73SJiri Slaby #endif
149