This topic explains access point priorities and how the values are inherited.
Contention management issues are resolved using the priorities associated with the Access Points. Priorities are assigned to Access Point Layers. If an incoming GPRS connection has a higher priority than an existing GRPS connection, the existing connection is stopped and the new connection is started. If the incoming GPRS connection has a lower priority than all existing GPRS connections the incoming GPRS connection is discarded.
The Access Point priority is stored in the CommsDat AccessPointTable. You can specify a priority for access point using the CommsData config file in “cfg” format. The priority range is 1-KMaxTUint where 1 is high priority and KMaxTUint is low priority. If a priority is not assigned to an access point the default value is KMaxTUint is given. A zero priority value is not allowed.
Access Point Priorities can be inherited between Access Point Layers. The current Access Point Layer priority is compared to the inherited Access Point priority, the highest priority is assigned to the Point Layer. This means that the priority of an Access point layer can be overridden by an inherited priority.
CurrentPriority = max_priority{AccessPointPriority, inherited_priority}
The following diagram contains three Access Point Layers. Each Access Point Layer has an associated priority.
As a result of inheritance the following priorities are applied.
For IP_MCPR1 the resultant priority is {3, KmaxTUint} = 3
For IPPROTO_MCPR1 the resultant priority is {3, 5} = 3
For PDP_MCPR1 the resultant priority is {4, 3} = 3
The following diagram outlines how priorities can change at runtime.
In this example:
Two stack configurations (SNAP1 and SNAP2) are defined in the CommsDat. The configurations have different settings for the IP layer but the same IPProto and PDP layers.
An application is started on SNAP1. IP_CPR1 and IP_MCPR1 are created.
A second application is started on SNAP2. IP_CPR2 and IP_MCPR2 are created.
Current priorities for IPProto and PDP layer will be recalculated. On this example they do not change because priority 6 is the lowest priority in this stack.
If first application stops its connection and second application continue to work, IP_CPR1 is destroyed. IPPROTO_CPR1 and PDP_CPR1 priorities will be recalculated.
IPPROTO_CPR1 priority = max_priority{5, 6} = 5
PDP_CPR1 priority = max_priority{4, 5} = 4