Title and Copyright Information
 
About This Manual
Audience
New and Changed Features
Organization
Related Documents
Reader's Comments
Conventions
 
1    Overview of ATM Architecture
1.1    ATM Subsystem
1.1.1    Connection Management Module
1.1.2    CMM Interfaces
1.2    ATM Subsystem Configuration
 
2    ATM Subsystem General Features
2.1    Header Files
2.2    ATM Module Configuration
2.3    Error Codes
2.4    Data Formats
2.4.1    Raw ATM Cells
2.4.2    Cooked Data
2.4.3    How the Data Is Carried
2.4.4    Time-Stamping
2.5    Physical Point of Attachment
2.5.1    Permanent Virtual Circuit PPAs
2.5.2    Switched Virtual Circuit PPAs
2.6    Memory Allocation
2.7    ATM Locking Macros
2.7.1    Locking Guidelines
2.7.2    Types of Locking Methods
2.7.3    Order of Locking Macros
2.7.4    Creation of ATM Threads
2.8    Types of Circuits
2.9    Global Data Structures
2.9.1    The atm_vc Structure
2.9.1.1    The conv_pp1 and conv_pp2 Members
2.9.1.2    The sig_pp1, sig_pp2, drv_pp1, and drv_pp2 Members
2.9.1.3    The vcs Member
2.9.1.4    The call_reference Member
2.9.1.5    The errno Member
2.9.1.6    The vci and vpi Members
2.9.1.7    The ppa Member
2.9.1.8    The selector Member
2.9.1.9    The direction Member
2.9.2    The atm_addr Structure
2.9.2.1    The vc Member
2.9.2.2    The address Member
2.9.2.3    The ton Member
2.9.2.4    The anpi Member
2.9.2.5    The subaddress Member
2.9.2.6    The subaddress_type Member
2.9.2.7    The eprtype Member
2.9.2.8    The endpoint Member
2.9.2.9    The state Member
2.9.2.10    The atm_error Member
2.9.2.11    The setup Member
2.9.2.12    The connect Member
2.9.2.13    The location, cause, diag_length, and diagnostic Members
2.9.2.14    The endstate Member
2.9.2.15    The conv_p1 and conv_p2 Members
2.9.2.16    The sig_p1 and sig_p2 Members
2.9.2.17    Allocating the atm_addr Structure
2.9.3    The atm_vc_services Structure
2.9.3.1    The vc Member
2.9.3.2    The fqos and bqos Members
2.9.3.3    The fmtu and bmtu Members
2.9.3.4    The valid_rates Member
2.9.3.5    The fpeakcr, bpeakcr, fsustcr, bsustcr, fburstcr, and bburstcr Members
2.9.3.6    The flags Member
2.9.3.7    The aal Member
2.9.3.8    The queue Member
2.9.3.9    The bearer_class Member
2.9.3.10    The lerrstat Member
2.9.3.11    The nerrstat Member
2.9.3.12    The cmm_drv_handle Member
2.9.3.13    The drv_resource Member
2.9.3.14    The converge_handle Member
2.9.3.15    Allocating the atm_vc_services Structure
2.9.4    The atm_uni_call_ie Structure
2.9.4.1    The ie_type Member
2.9.4.2    The last Member
2.9.4.3    The aal_params Member
2.9.4.4    The bb_high_layer and bb_low_layer Members
2.9.4.5    Allocating the atm_uni_call_ie Structure
2.9.4.6    Setting Fields in the atm__uni_call_ie Structure
2.9.5    The atm_ppa Structure
2.9.5.1    The driver Member
2.9.5.2    The sig Member
2.9.5.3    The ppas_id Member
2.9.5.4    The ton Member
2.9.5.5    The anpi Member
2.9.5.6    The addrlen Member
2.9.5.7    The address Member
2.9.5.8    The uni Member
2.9.5.9    The type Member
2.9.5.10    The esi_arg Member
2.9.6    The atm_esi Structure
2.9.6.1    The esi and esilen Members
2.9.6.2    The driver Member
2.9.6.3    The sigp1 and sigp2 Members
2.9.7    The atm_cause_info Structure
2.9.7.1    The cause Member
2.9.7.2    The location Member
2.9.7.3    The module_name Member
2.9.7.4    The reason Member
2.9.7.5    The diag_length Member
2.9.7.6    The diag Member
 
3    Device Driver Interface
3.1    Registering the Device Driver
3.2    Receiving Data Packets and Cells
3.3    Reporting Errors
3.4    Unregistering the Device Driver
3.5    Using ATM Device Driver Interface Structures
3.5.1    The atm_drv_params Structure
3.5.1.1    The name member
3.5.1.2    The unit Member
3.5.1.3    The type Member
3.5.1.4    The num_vc Member
3.5.1.5    The max_vcib and max_vpib Members
3.5.1.6    The max_vci and max_vpi Members
3.5.1.7    The sent Member
3.5.1.8    The received Member
3.5.1.9    The dropped Member
3.5.1.10    The num_vci and num_vpi Members
3.5.1.11    The hard_mtu Member
3.5.1.12    The nqueue Member
3.5.1.13    The flowcontrol Member
3.5.1.14    The rates Member
3.5.1.15    The capabilities Member
3.5.1.16    The numid Member
3.5.1.17    The ids Member
3.5.2    The atm_queue_param Structure
3.5.2.1    The vc Member
3.5.2.2    The qlength Member
3.5.2.3    The qtime Member
3.5.2.4    The flags Member
 
4    Signaling Module Interface
4.1    Registering the Signaling Module
4.2    Receiving a New Call
4.3    Reporting a VC Activation
4.4    Activating a Connection
4.5    Reporting a Connection Failure
4.6    Releasing a Connection
4.7    Dropping an Endpoint
4.8    Deleting a Connection
4.9    Restarting a Virtual Circuit
4.10    Reporting a Completed Restart
4.11    Reporting a Completed Status Enquiry
4.12    Requesting Endpoint Information
4.13    Adding a PPA
4.14    Deleting a PPA
4.15    Requesting VC Status
4.16    Using the atm_sig_params Structure
4.16.1    The sig_setup Member
4.16.2    The sig_release Member
4.16.3    The sig_add Member
4.16.4    The sig_drop Member
4.16.5    The sig_enquery Member
4.16.6    The sig_restart Member
4.16.7    The sig_exception Member
4.16.8    The sig_mmi Member
4.16.9    The sig_mib Member
4.16.10    The reserved1, reserved2, and reserved3 Members
 
5    Convergence Module Interface
5.1    Registering a Convergence Module
5.2    Receiving Data
5.2.1    Receiving Exception Notifications
5.2.2    Connecting to the ATM Module Management Interface
5.3    Unregistering a Convergence Module
5.4    Requesting Interface Parameters
5.5    Reserving Resources for CBR Circuits
5.6    Releasing Reserved Resources
5.7    Requesting a Connection to a Remote System
5.8    Adding an Endpoint to a Connection
5.9    Requesting a Connection Be Torn Down
5.10    Dropping an Endpoint from a Connection
5.11    Transmitting Data on an Established VC
5.12    Modifying VC Parameters
5.13    Requesting Endpoint Connection State Information
5.14    Binding to a PPA
5.15    Receiving a Connection Notification
5.16    Unbinding from a PPA
5.17    Accepting an Incoming Call
5.18    Rejecting an Incoming Call
5.19    Adding a New ATM Address
5.20    Deleting an ATM Address
5.21    Requesting VC Statistics
5.22    Using ATM Convergence Module Interface Structures
5.22.1    The atm_vc_stats Structure
5.22.2    The atm_cmi_addr Union
5.22.2.1    The addr Member
5.22.2.2    The vcn Member
5.22.3    The atm_cvg_params Structure
5.22.3.1    The receive Member
5.22.3.2    The exception Member
5.22.3.3    The mmi_manage Member
5.22.3.4    The endpt_receive Member
5.22.3.5    The reserved1, reserved2, and reserved3 Members
 
6    Connections
6.1    Making Outgoing Connections
6.1.1    Making the Call
6.1.2    Adding Parties to an Existing Connection
6.2    Accepting Connections
6.3    Controlling the Aging of Connections
6.4    Releasing a Connection
6.4.1    Release by a Convergence Module
6.4.2    Release by Network or Endpoint
6.5    Creating Permanent Virtual Circuits
6.6    Creating Signaling Virtual Circuits
 
7    Module Management Interface
7.1    Creating an MMI Path
7.2    Verifying the ioctl Version
7.3    Defining New MMI ioctl Commands
7.4    Using MMI Calling Conventions
7.5    Using the Device Driver MMI
7.6    Using the Signaling Module MMI
7.7    Using the Convergence Module MMI
 
8    Queuing Guidelines
8.1    Queuing in Device Drivers
8.1.1    Device Driver Transmit Queuing
8.1.2    Device Driver Receive Queuing
8.2    Queuing in Convergence Modules
8.2.1    Convergence Module Transmit Queuing
8.2.2    Convergence Module Receive Queuing
 
9    Flow Control
9.1    Hardware Flow Control
9.2    Software Flow Control
9.2.1    High-Water Mark
9.2.2    Low-Water Mark
9.3    Convergence Module Flow Control
 
A    CMM Routines
atm_cmm_accept
atm_cmm_activate_con
atm_cmm_add
atm_cmm_adi_set_cause
atm_cmm_adi_set_log
atm_cmm_alloc_addr
atm_cmm_alloc_ie
atm_cmm_alloc_services
atm_cmm_bind_info
atm_cmm_con_deleted
atm_cmm_con_failed
atm_cmm_con_release
atm_cmm_connect
atm_cmm_cr2grain
atm_cmm_del_esi
atm_cmm_del_ppa
atm_cmm_drop
atm_cmm_enquery
atm_cmm_ep_add
atm_cmm_ep_dropped
atm_cmm_error
atm_cmm_findaddr
atm_cmm_find_driver
atm_cmm_free_addr
atm_cmm_free_ie
atm_cmm_free_services
atm_cmm_grain2cr
atm_cmm_new_call
atm_cmm_new_esi
atm_cmm_new_ppa
atm_cmm_new_thread
atm_cmm_next_cause
atm_cmm_oam_receive
atm_cmm_ppa_bind
atm_cmm_ppa_info
atm_cmm_ppa_unbind
atm_cmm_receive
atm_cmm_register_cvg
atm_cmm_register_dd
atm_cmm_register_sig
atm_cmm_reject
atm_cmm_release
atm_cmm_reply
atm_cmm_reserve_resources
atm_cmm_restart
atm_cmm_restart_ack
atm_cmm_send
atm_cmm_set_cause
atm_cmm_set_log
atm_cmm_smi_set_cause
atm_cmm_smi_set_log
atm_cmm_status_done
atm_cmm_unregister_cvg
atm_cmm_unregister_dd
atm_cmm_vc_control
atm_cmm_vc_get
atm_cmm_vc_stats
xxx_add
xxx_connect
xxx_drop
xxx_endpt_receive
xxx_enquery
xxx_except
xxx_manage
xxx_mmi
xxx_receive
xxx_release
xxx_restart
xxx_setup
xxx_xmit
 
B    Connection Programming Examples
B.1    Making a Call
B.2    Adding More Parties to a Point-to-Multipoint Connection
B.3    Processing an Incoming Call
 
C    ATM Cause Codes
 
Examples
2-1    The atm_uni_call_ie Structure Definition
4-1    The atm_sig_params Structure Definition
5-1    The atm_cvg_params Structure Definition
B-1    Making a Call Code Fragment
B-2    Adding Parties to a Point-to-Multipoint Connection Code Fragment
B-3    Incoming Call Processing Code Fragment
 
Figures
1-1    ATM Subsystem
 
Tables
2-1    The atm_vc Structure Members
2-2    The atm_addr Structure Members
2-3    The atm_vc_services Structure Members
2-4    Information Element Macros
2-5    The atm_ppa Structure Members
2-6    The atm_esi Structure Members
2-7    The atm_cause_info Structure Members
3-1    The atm_drv_params Structure Members
3-2    The atm_queue_param Structure Members
5-1    The atm_vc_stats Structure Members
6-1    Aging Parameter Values
7-1    The atm_mmi_path Structure Members
 
Index