| 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 |
| 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 |