/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */





#ifndef _LINUX_ATMSAP_H
#define _LINUX_ATMSAP_H

#include <linux/atmapi.h>







#define ATM_L2_NONE	0	
#define ATM_L2_ISO1745  0x01	
#define ATM_L2_Q291	0x02	
#define ATM_L2_X25_LL	0x06	
#define ATM_L2_X25_ML	0x07	
#define ATM_L2_LAPB	0x08	
#define ATM_L2_HDLC_ARM	0x09	
#define ATM_L2_HDLC_NRM	0x0a	
#define ATM_L2_HDLC_ABM	0x0b	
#define ATM_L2_ISO8802	0x0c	
#define ATM_L2_X75	0x0d	
#define ATM_L2_Q922	0x0e	
#define ATM_L2_USER	0x10	
#define ATM_L2_ISO7776	0x11	






#define ATM_L3_NONE	0	
#define ATM_L3_X25	0x06	
#define ATM_L3_ISO8208	0x07	
#define ATM_L3_X223	0x08	
#define ATM_L3_ISO8473	0x09	
#define ATM_L3_T70	0x0a	
#define ATM_L3_TR9577	0x0b	
#define ATM_L3_H310	0x0c	
#define ATM_L3_H321	0x0d	
#define ATM_L3_USER	0x10	






#define ATM_HL_NONE	0	
#define ATM_HL_ISO	0x01	
#define ATM_HL_USER	0x02	
#define ATM_HL_HLP	0x03	
#define ATM_HL_VENDOR	0x04	






#define ATM_IMD_NONE	 0	
#define ATM_IMD_NORMAL	 1	
#define ATM_IMD_EXTENDED 2	




#define ATM_TT_NONE	0	
#define ATM_TT_RX	1	
#define ATM_TT_TX	2	
#define ATM_TT_RXTX	3	

#define ATM_MC_NONE	0	
#define ATM_MC_TS	1	
#define ATM_MC_TS_FEC	2	
#define ATM_MC_PS	3	
#define ATM_MC_PS_FEC	4	
#define ATM_MC_H221	5	



#define ATM_MAX_HLI	8	


struct atm_blli {
    unsigned char l2_proto;	
    union {
	struct {
	    unsigned char mode;	
				
	    unsigned char window; 
	} itu;			
	unsigned char user;	
    } l2;
    unsigned char l3_proto;	
    union {
	struct {
	    unsigned char mode;	
				
	    unsigned char def_size; 
				    
	    unsigned char window;
	} itu;			
	unsigned char user;	
	struct {		      
	    unsigned char term_type;  
	    unsigned char fw_mpx_cap; 
				      
	    unsigned char bw_mpx_cap; 
				      
	} h310;
	struct {		  
	    unsigned char ipi;	  
	    unsigned char snap[5];
				  
	} tr9577;
    } l3;
} __ATM_API_ALIGN;


struct atm_bhli {
    unsigned char hl_type;	
    unsigned char hl_length;	
				
    unsigned char hl_info[ATM_MAX_HLI];
};


#define ATM_MAX_BLLI	3		


struct atm_sap {
	struct atm_bhli bhli;		
	struct atm_blli blli[ATM_MAX_BLLI] __ATM_API_ALIGN;
					
};


static __inline__ int blli_in_use(struct atm_blli blli)
{
	return blli.l2_proto || blli.l3_proto;
}

#endif
