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