readme file to 25.331 v8.9.0 (2009-12): 2010-04-08

- v8.9.0 is missing 2 keywords "OPTIONAL" in the ASN.1 text
  which can cause severe backward/forward compatibility problems.

  It is therefore NOT recommended to use 25.331 v8.9.0 for implementation/testing purposes.

  In case where v8.9.0 can not be avoided these 2 "OPTIONAL" SHALL be added by PATCH1 and PATCH2 below.


= begin of PATCH1 =================================================================================================
The following is a copy from 25.331 v8.9.0:
===================================================================================================================
-- ***************************************************
--
-- ACTIVE SET UPDATE (FDD only)
--
-- ***************************************************

ActiveSetUpdate ::= CHOICE {
	r3								SEQUENCE {
		activeSetUpdate-r3				ActiveSetUpdate-r3-IEs,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			activeSetUpdate-r3-add-ext		BIT STRING		OPTIONAL,
			v4b0NonCriticalExtensions		SEQUENCE {
				activeSetUpdate-v4b0ext		ActiveSetUpdate-v4b0ext-IEs,
				v590NonCriticalExtensions		SEQUENCE {
					activeSetUpdate-v590ext			ActiveSetUpdate-v590ext-IEs,
					v690NonCriticalExtensions		SEQUENCE {
						activeSetUpdate-v690ext			ActiveSetUpdate-v690ext-IEs,
						nonCriticalExtensions			SEQUENCE {} OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			} OPTIONAL
		} OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r6								SEQUENCE {
				activeSetUpdate-r6				ActiveSetUpdate-r6-IEs,
				activeSetUpdate-r6-add-ext		BIT STRING		OPTIONAL,
				v6b0NonCriticalExtensions		SEQUENCE {
					activeSetUpdate-v6b0ext			ActiveSetUpdate-v6b0ext-IEs,
					nonCriticalExtensions			SEQUENCE {}		OPTIONAL
				}	OPTIONAL
			},
			criticalExtensions				CHOICE {
				r7								SEQUENCE {
					activeSetUpdate-r7				ActiveSetUpdate-r7-IEs,
					activeSetUpdate-r7-add-ext		BIT STRING		OPTIONAL,
					v780NonCriticalExtensions		SEQUENCE {
						activeSetUpdate-v780ext			ActiveSetUpdate-v780ext-IEs,
						v7f0NonCriticalExtensions	SEQUENCE {
							activeSetUdpate-v7f0ext		ActiveSetUpdate-v7f0ext-IEs,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				},
				criticalExtensions				CHOICE {
					r8								SEQUENCE {
						activeSetUpdate-r8				ActiveSetUpdate-r8-IEs,
						-- Container for adding non critical extensions after freezing REL-9
						activeSetUpdate-r8-add-ext		BIT STRING		OPTIONAL,
						v890NonCriticalExtensions		SEQUENCE {
							activeSetUpdate-v890ext			ActiveSetUpdate-v890ext-IEs,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						}
					},
					criticalExtensions				SEQUENCE {}
				}
			}
		}
	}
}
===================================================================================================================
To correct the error the last 8 lines of the text above need to be replaced by: 
===================================================================================================================
						}	OPTIONAL
					},
					criticalExtensions				SEQUENCE {}
				}
			}
		}
	}
}
= end of PATCH1 ===================================================================================================



= begin of PATCH2 =================================================================================================
The following is a copy from 25.331 v8.9.0:
===================================================================================================================
TransportChannelReconfiguration ::= CHOICE {
	r3								SEQUENCE {
		transportChannelReconfiguration-r3
										TransportChannelReconfiguration-r3-IEs,
		v3a0NonCriticalExtensions		SEQUENCE {
			transportChannelReconfiguration-v3a0ext
											TransportChannelReconfiguration-v3a0ext,
			laterNonCriticalExtensions			SEQUENCE {
				-- Container for additional R99 extensions
				transportChannelReconfiguration-r3-add-ext		BIT STRING		OPTIONAL,
				v4b0NonCriticalExtensions		SEQUENCE {
					transportChannelReconfiguration-v4b0ext	
													TransportChannelReconfiguration-v4b0ext-IEs,
					v590NonCriticalExtensions		SEQUENCE {
						transportChannelReconfiguration-v590ext	
														TransportChannelReconfiguration-v590ext-IEs,
						v690NonCriticalExtensions		SEQUENCE {
							transportChannelReconfiguration-v690ext	
														TransportChannelReconfiguration-v690ext-IEs,
							v770NonCriticalExtensions		SEQUENCE {
								transportChannelReconfiguration-v770ext
														TransportChannelReconfiguration-v770ext-IEs,
								nonCriticalExtensions			SEQUENCE {}		OPTIONAL
							}		OPTIONAL
						}		OPTIONAL
					}		OPTIONAL
				}		OPTIONAL
			}		OPTIONAL
		}		OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r4								SEQUENCE {
				transportChannelReconfiguration-r4
												TransportChannelReconfiguration-r4-IEs,
				v4d0NonCriticalExtensions			SEQUENCE {
					-- Container for adding non critical extensions after freezing REL-5
					transportChannelReconfiguration-r4-add-ext		BIT STRING		OPTIONAL,
					v590NonCriticalExtensions		SEQUENCE {
						transportChannelReconfiguration-v590ext	
													TransportChannelReconfiguration-v590ext-IEs,
						v690NonCriticalExtensions		SEQUENCE {
							transportChannelReconfiguration-v690ext	
														TransportChannelReconfiguration-v690ext-IEs,
							v770NonCriticalExtensions		SEQUENCE {
								transportChannelReconfiguration-v770ext
														TransportChannelReconfiguration-v770ext-IEs,
								nonCriticalExtensions			SEQUENCE {}		OPTIONAL
							}	OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			},
			criticalExtensions				CHOICE {
				r5								SEQUENCE {
					transportChannelReconfiguration-r5
													TransportChannelReconfiguration-r5-IEs,
					-- Container for adding non critical extensions after freezing REL-6
					transportChannelReconfiguration-r5-add-ext		BIT STRING		OPTIONAL,
					v690NonCriticalExtensions		SEQUENCE {
						transportChannelReconfiguration-v690ext	
														TransportChannelReconfiguration-v690ext-IEs,
						v770NonCriticalExtensions		SEQUENCE {
								transportChannelReconfiguration-v770ext
														TransportChannelReconfiguration-v770ext-IEs,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				},
				criticalExtensions				CHOICE {
					r6								SEQUENCE {
						transportChannelReconfiguration-r6
														TransportChannelReconfiguration-r6-IEs,
						-- Container for adding non critical extensions after freezing REL-7
						transportChannelReconfiguration-r6-add-ext		BIT STRING		OPTIONAL,
						v6b0NonCriticalExtensions		SEQUENCE {
							transportChannelReconfiguration-v6b0ext
														TransportChannelReconfiguration-v6b0ext-IEs,
							v770NonCriticalExtensions		SEQUENCE {
								transportChannelReconfiguration-v770ext
														TransportChannelReconfiguration-v770ext-IEs,
								nonCriticalExtensions			SEQUENCE {}		OPTIONAL
							}	OPTIONAL
						}	OPTIONAL
					},
					criticalExtensions				CHOICE {
						r7								SEQUENCE {
							transportChannelReconfiguration-r7
														TransportChannelReconfiguration-r7-IEs,
							-- Container for adding non critical extensions after freezing REL-8
							transportChannelReconfiguration-r7-add-ext		BIT STRING	OPTIONAL,
							v780NonCriticalExtensions		SEQUENCE {
								transportChannelReconfiguration-v780ext
														TransportChannelReconfiguration-v780ext-IEs,
								v7d0NonCriticalExtensions		SEQUENCE {
									transportChannelReconfiguration-v7d0ext
														TransportChannelReconfiguration-v7d0ext-IEs,
									v7f0NonCriticalExtensions		SEQUENCE {
										transportChannelReconfiguration-v7f0ext
														TransportChannelReconfiguration-v7f0ext-IEs,
										nonCriticalExtensions			SEQUENCE {}		OPTIONAL
									}	OPTIONAL
								}	OPTIONAL
							}	OPTIONAL
						},
						criticalExtensions				CHOICE {
							r8								SEQUENCE {
								transportChannelReconfiguration-r8
															TransportChannelReconfiguration-r8-IEs,
								-- Container for adding non critical extensions after freezing REL-9
								transportChannelReconfiguration-r8-add-ext
																BIT STRING		OPTIONAL,
								v7d0NonCriticalExtensions		SEQUENCE {
									transportChannelReconfiguration-v7d0ext
														TransportChannelReconfiguration-v7d0ext-IEs,
									v7f0NonCriticalExtensions		SEQUENCE {
										transportChannelReconfiguration-v7f0ext
														TransportChannelReconfiguration-v7f0ext-IEs,
										v890NonCriticalExtensions		SEQUENCE {
											transportChannelReconfiguration-v890ext
													TransportChannelReconfiguration-v890ext-IEs,
											nonCriticalExtensions			SEQUENCE {}		OPTIONAL
										}
									}	OPTIONAL
								}	OPTIONAL
							},
							criticalExtensions				SEQUENCE {}
						}
					}
				}
			}
		}
	}
}
===================================================================================================================
To correct the error the last 12 lines of the text above need to be replaced by: 
===================================================================================================================
										}	OPTIONAL
									}	OPTIONAL
								}	OPTIONAL
							},
							criticalExtensions				SEQUENCE {}
						}
					}
				}
			}
		}
	}
}
= end of PATCH2 ===================================================================================================



- Background information for PATCH1:  

  - 25.331 v8.9.0 (2009-12):
    CR3885 rev 1 to 25.331 REL-8 (R2-097411 in RP-091308, approved by RAN #46 in Dec. 2009) and
    CR3955 rev 1 to 25.331 REL-8 (R2-097309 in RP-091259, approved by RAN #46 in Dec. 2009) were
    clashing (i.e. modifying same paragraph in a different way).
    While CR3885 rev 1 had the keyword "OPTIONAL" in ASN.1 "11.2 PDU definitions" under "ActiveSetUpdate ::= CHOICE {"
    for "r8" after the sequence for "v890NonCriticalExtensions", the CR3955 rev 1 did not have it.
    This problem was indicated on the RAN2 email reflector on 29.12.2009 but unfortunately it was
    not finally solved so that CR3955 rev 1 without "OPTIONAL" remained implemented.

  - 25.331 v9.1.0 (2009-12):
    In contrast to CR3955 rev 1 to 25.331 REL-8: Its cat.A CR:
    CR3956 rev 1 to 25.331 REL-9 (R2-097310 in RP-091259, approved by RAN #46 in Dec. 2009)
    had this "OPTIONAL" in ASN.1 "11.2 PDU definitions" for "ActiveSetUpdate".

  - 25.331 v8.10.0 (2010-03):
    CR4009 rev 1 to 25.331 REL-8 (R2-101743 in RP-100199, approved by RAN #47 in March 2010)
    added the "OPTIONAL" in ASN.1 "11.2 PDU definitions" for "ActiveSetUpdate" of 25.331 v8.10.0
    that was missing in 25.331 v8.9.0.

  - So v8.9.0 does not have the OPTIONAL while v8.10.0 and v9.1.0 have it.
    This MUST be corrected by PATCH1.


- Background information for PATCH2:  

  - 25.331 v8.9.0 (2009-12):
    CR3955 rev 1 to 25.331 REL-8 (R2-097309 in RP-091259, approved by RAN #46 in Dec. 2009)
    did not introduce an "OPTIONAL" in ASN.1 "11.2 PDU definitions" under "TransportChannelReconfiguration ::= CHOICE {"
    for "r8" after the sequence for "v890NonCriticalExtensions".
    This was a mistake in the CR that was not detected before.

  - 25.331 v9.1.0 (2009-12):
    However, its cat.A CR for 25.331 REL-9 did introduce this "OPTIONAL":
    CR3956 rev 1 to 25.331 REL-9 (R2-097310 in RP-091259, approved by RAN #46 in Dec. 2009)

  - 25.331 v8.10.0 (2010-03):
    CR4060 to 25.331 REL-8 (R2-101679 in RP-100289, approved by RAN #47 in March 2010)     
    added the "OPTIONAL" in ASN.1 "11.2 PDU definitions" for "TransportChannelReconfiguration" of 25.331 v8.10.0
    that was missing in 25.331 v8.9.0.

  - So v8.9.0 does not have the OPTIONAL while v8.10.0 and v9.1.0 have it.
    This MUST be corrected by PATCH2.