1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*f80ad8b4SAndroid Build Coastguard Worker /* 3*f80ad8b4SAndroid Build Coastguard Worker * ATM Lan Emulation Daemon driver interface 4*f80ad8b4SAndroid Build Coastguard Worker * 5*f80ad8b4SAndroid Build Coastguard Worker * Marko Kiiskila <[email protected]> 6*f80ad8b4SAndroid Build Coastguard Worker */ 7*f80ad8b4SAndroid Build Coastguard Worker 8*f80ad8b4SAndroid Build Coastguard Worker #ifndef _ATMLEC_H_ 9*f80ad8b4SAndroid Build Coastguard Worker #define _ATMLEC_H_ 10*f80ad8b4SAndroid Build Coastguard Worker 11*f80ad8b4SAndroid Build Coastguard Worker #include <linux/atmapi.h> 12*f80ad8b4SAndroid Build Coastguard Worker #include <linux/atmioc.h> 13*f80ad8b4SAndroid Build Coastguard Worker #include <linux/atm.h> 14*f80ad8b4SAndroid Build Coastguard Worker #include <linux/if_ether.h> 15*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h> 16*f80ad8b4SAndroid Build Coastguard Worker 17*f80ad8b4SAndroid Build Coastguard Worker /* ATM lec daemon control socket */ 18*f80ad8b4SAndroid Build Coastguard Worker #define ATMLEC_CTRL _IO('a', ATMIOC_LANE) 19*f80ad8b4SAndroid Build Coastguard Worker #define ATMLEC_DATA _IO('a', ATMIOC_LANE+1) 20*f80ad8b4SAndroid Build Coastguard Worker #define ATMLEC_MCAST _IO('a', ATMIOC_LANE+2) 21*f80ad8b4SAndroid Build Coastguard Worker 22*f80ad8b4SAndroid Build Coastguard Worker /* Maximum number of LEC interfaces (tweakable) */ 23*f80ad8b4SAndroid Build Coastguard Worker #define MAX_LEC_ITF 48 24*f80ad8b4SAndroid Build Coastguard Worker 25*f80ad8b4SAndroid Build Coastguard Worker typedef enum { 26*f80ad8b4SAndroid Build Coastguard Worker l_set_mac_addr, 27*f80ad8b4SAndroid Build Coastguard Worker l_del_mac_addr, 28*f80ad8b4SAndroid Build Coastguard Worker l_svc_setup, 29*f80ad8b4SAndroid Build Coastguard Worker l_addr_delete, 30*f80ad8b4SAndroid Build Coastguard Worker l_topology_change, 31*f80ad8b4SAndroid Build Coastguard Worker l_flush_complete, 32*f80ad8b4SAndroid Build Coastguard Worker l_arp_update, 33*f80ad8b4SAndroid Build Coastguard Worker l_narp_req, /* LANE2 mandates the use of this */ 34*f80ad8b4SAndroid Build Coastguard Worker l_config, 35*f80ad8b4SAndroid Build Coastguard Worker l_flush_tran_id, 36*f80ad8b4SAndroid Build Coastguard Worker l_set_lecid, 37*f80ad8b4SAndroid Build Coastguard Worker l_arp_xmt, 38*f80ad8b4SAndroid Build Coastguard Worker l_rdesc_arp_xmt, 39*f80ad8b4SAndroid Build Coastguard Worker l_associate_req, 40*f80ad8b4SAndroid Build Coastguard Worker l_should_bridge /* should we bridge this MAC? */ 41*f80ad8b4SAndroid Build Coastguard Worker } atmlec_msg_type; 42*f80ad8b4SAndroid Build Coastguard Worker 43*f80ad8b4SAndroid Build Coastguard Worker #define ATMLEC_MSG_TYPE_MAX l_should_bridge 44*f80ad8b4SAndroid Build Coastguard Worker 45*f80ad8b4SAndroid Build Coastguard Worker struct atmlec_config_msg { 46*f80ad8b4SAndroid Build Coastguard Worker unsigned int maximum_unknown_frame_count; 47*f80ad8b4SAndroid Build Coastguard Worker unsigned int max_unknown_frame_time; 48*f80ad8b4SAndroid Build Coastguard Worker unsigned short max_retry_count; 49*f80ad8b4SAndroid Build Coastguard Worker unsigned int aging_time; 50*f80ad8b4SAndroid Build Coastguard Worker unsigned int forward_delay_time; 51*f80ad8b4SAndroid Build Coastguard Worker unsigned int arp_response_time; 52*f80ad8b4SAndroid Build Coastguard Worker unsigned int flush_timeout; 53*f80ad8b4SAndroid Build Coastguard Worker unsigned int path_switching_delay; 54*f80ad8b4SAndroid Build Coastguard Worker unsigned int lane_version; /* LANE2: 1 for LANEv1, 2 for LANEv2 */ 55*f80ad8b4SAndroid Build Coastguard Worker int mtu; 56*f80ad8b4SAndroid Build Coastguard Worker int is_proxy; 57*f80ad8b4SAndroid Build Coastguard Worker }; 58*f80ad8b4SAndroid Build Coastguard Worker 59*f80ad8b4SAndroid Build Coastguard Worker struct atmlec_msg { 60*f80ad8b4SAndroid Build Coastguard Worker atmlec_msg_type type; 61*f80ad8b4SAndroid Build Coastguard Worker int sizeoftlvs; /* LANE2: if != 0, tlvs follow */ 62*f80ad8b4SAndroid Build Coastguard Worker union { 63*f80ad8b4SAndroid Build Coastguard Worker struct { 64*f80ad8b4SAndroid Build Coastguard Worker unsigned char mac_addr[ETH_ALEN]; 65*f80ad8b4SAndroid Build Coastguard Worker unsigned char atm_addr[ATM_ESA_LEN]; 66*f80ad8b4SAndroid Build Coastguard Worker unsigned int flag; /* 67*f80ad8b4SAndroid Build Coastguard Worker * Topology_change flag, 68*f80ad8b4SAndroid Build Coastguard Worker * remoteflag, permanent flag, 69*f80ad8b4SAndroid Build Coastguard Worker * lecid, transaction id 70*f80ad8b4SAndroid Build Coastguard Worker */ 71*f80ad8b4SAndroid Build Coastguard Worker unsigned int targetless_le_arp; /* LANE2 */ 72*f80ad8b4SAndroid Build Coastguard Worker unsigned int no_source_le_narp; /* LANE2 */ 73*f80ad8b4SAndroid Build Coastguard Worker } normal; 74*f80ad8b4SAndroid Build Coastguard Worker struct atmlec_config_msg config; 75*f80ad8b4SAndroid Build Coastguard Worker struct { 76*f80ad8b4SAndroid Build Coastguard Worker __u16 lec_id; /* requestor lec_id */ 77*f80ad8b4SAndroid Build Coastguard Worker __u32 tran_id; /* transaction id */ 78*f80ad8b4SAndroid Build Coastguard Worker unsigned char mac_addr[ETH_ALEN]; /* dst mac addr */ 79*f80ad8b4SAndroid Build Coastguard Worker unsigned char atm_addr[ATM_ESA_LEN]; /* reqestor ATM addr */ 80*f80ad8b4SAndroid Build Coastguard Worker } proxy; /* 81*f80ad8b4SAndroid Build Coastguard Worker * For mapping LE_ARP requests to responses. Filled by 82*f80ad8b4SAndroid Build Coastguard Worker * zeppelin, returned by kernel. Used only when proxying 83*f80ad8b4SAndroid Build Coastguard Worker */ 84*f80ad8b4SAndroid Build Coastguard Worker } content; 85*f80ad8b4SAndroid Build Coastguard Worker } __ATM_API_ALIGN; 86*f80ad8b4SAndroid Build Coastguard Worker 87*f80ad8b4SAndroid Build Coastguard Worker struct atmlec_ioc { 88*f80ad8b4SAndroid Build Coastguard Worker int dev_num; 89*f80ad8b4SAndroid Build Coastguard Worker unsigned char atm_addr[ATM_ESA_LEN]; 90*f80ad8b4SAndroid Build Coastguard Worker unsigned char receive; /* 1= receive vcc, 0 = send vcc */ 91*f80ad8b4SAndroid Build Coastguard Worker }; 92*f80ad8b4SAndroid Build Coastguard Worker #endif /* _ATMLEC_H_ */ 93