osmo-pcu (1.5.1) unstable; urgency=medium

  [ Mychaela N. Falconia ]
  * fix E1 TS output when used with osmo-e1d

  [ Pau Espin Pedrol ]
  * tbf_ul_ass_fsm: Clarify use of X2000 timer
  * rcv_control_ack(): Improve logging of confirmation of Pkt Dl/Ul Ass
  * X2001 timeout: Update UL TBF's dl_ass_fsm state

  [ Oliver Smith ]
  * contrib/jenkins: libosmo-abis after libosmo-netif

  [ Philipp Maier ]
  * pcuif: add comment on TXT_IND/PCU_VERSION BTS initialization behavior

  [ Vadim Yanitskiy ]
  * Add .checkpatch.conf, ignore src/gsm_rlcmac.c

 -- Oliver Smith <osmith@sysmocom.de>  Wed, 12 Feb 2025 12:46:23 +0100

osmo-pcu (1.5.0) unstable; urgency=medium

  [ Oliver Smith ]
  * Revert "Revert "pdch_ul_controller: migrate from fn_cmp() to gsm0502_fncmp()""
  * contrib: remove rpm spec file
  * contrib/systemd: run as osmocom user

  [ Pau Espin Pedrol ]
  * tbf_ul_fsm: Fix wrong cast
  * cosmetic: TbfTest: fix typo in comment
  * Make sure GprsMs free() also frees its tbfs
  * README.md: Remove 'multi-slot ul tbf' line from 'Current Limitations'
  * bts: Drop no-longer existing GprsMsStorage reference
  * tbf.h: Fix wrong type declaration of field dl_ass_fsm
  * tbf_ul.h: Mark empty param list as void
  * doc: Introduce code architecture section with main class diagram

  [ Harald Welte ]
  * fix license headers
  * doc: Mention the `gb-dialect` vty option, as it is quite essential

  [ Vadim Yanitskiy ]
  * README.md: cosmetic: fix a typo

  [ Philipp Maier ]
  * pcuif_sock: do not retry when sending PCU version

 -- Oliver Smith <osmith@sysmocom.de>  Wed, 24 Jul 2024 16:16:26 +0200

osmo-pcu (1.4.0) unstable; urgency=medium

  [ Pau Espin Pedrol ]
  * tbf: Log poll timeout reason

  [ Vadim Yanitskiy ]
  * pdch_ul_controller: migrate from fn_cmp() to gsm0502_fncmp()
  * bts: bts_tfi_find_free(): fix -Wmaybe-uninitialized (false positive)

  [ Oliver Smith ]
  * systemd: remove RestartPreventExitStatus=1
  * Revert "pdch_ul_controller: migrate from fn_cmp() to gsm0502_fncmp()"

  [ Philipp Maier ]
  * pcuif_proto: rename PCU_IF_FLAG_SYSMO to PCU_IF_FLAG_DIRECT_PHY
  * pcuif_proto: drop support for PCUIF v10
  * pcu_l1_if: signal BTS model via PCUIF
  * gprs_rlcmac_sched: fix condition for generating dummy blocks on idle
  * bts: rename struct member gen_idle_blocks to gen_idle_blocks_C0

  [ Andreas Eversberg ]
  * Increase RR scheduler priority to 20, to avoid dropped bursts
  * Use uniform log format for default config files

  [ Keith ]
  * TBF status: Fix VTY output text

 -- Oliver Smith <osmith@sysmocom.de>  Tue, 12 Dec 2023 16:58:16 +0100

osmo-pcu (1.3.1) unstable; urgency=medium

  * tbf_dl_fsm: Fix assert hit due to EV_MAX_N3105 received in ST_RELEASING

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Fri, 15 Sep 2023 11:33:44 +0200

osmo-pcu (1.3.0) unstable; urgency=medium

  [ Philipp Maier ]
  * pcuif_proto: move gsm_pcu_if_e1_ccu_ind into right place
  * pcu_l1_if.cpp: handle TLLI based IMMEDIATE ASSIGNMENT confirmation
  * pcu_l1_if: move direct phy l1if functions to dedicated header file
  * lc15/oc2g: fix function signature of l1if_open_pdch()
  * osmo-bts-xyz: include pcu_l1_if_phy.h in phy in l1_if code
  * en/decoding: fix deprecated include path
  * pcu_l1_if: use only the term "direct PHY access"
  * pcu_l1_if_phy: add header file for struct gsmtap_inst
  * pcu_l1_if_phy: add new PHY API function to disconnect PDCH
  * pcu_l1_if_phy: add new PHY API function to initialize PHY
  * pcu_l1_if: cosmetic: remove whitespace after *
  * pcu_l1_if_phy: support multiple BTS (in theory)
  * bts: add IMMEDIATE ASSIGNMENT via PCH transmission
  * support for Ericsson RBS E1 CCU
  * pcu_l1_if: get rid of strange paging group calculation
  * doc: add sample config to illustrate how to use an E1 CCU
  * pcu_l1_if: do not copy IMSI when it is NULL
  * Makefile.am: remove phy specific EXTRA_DIST variables
  * doc: overview: put BTS and PCU on the same rank
  * doc: Add details regarding BSC co-location
  * pdch_ul_controller: log reserved frame numbers
  * pcu_l1_if: cosmetic: reformat comment
  * er_ccu_l1_if: use one ccu_desr per timeslot
  * pcu_l1_if_phy: fix API function names
  * pcu_l1_if: replace magic numbers with IMSI_DIGITS_FOR_PAGING
  * gprs_rlcmac: also use PCU_IF_SAPI_PCH_DT for paging MAC blocks
  * pcu_l1_if: use correct SAPI in PCUIF message PCU_IF_MSG_DATA_CNF_DT
  * neigh_cache: make neigh_cache_lookup_entry static
  * nacc_fsm: Add support for NACC with UTRAN and E-UTRAN cells
  * nacc_fsm: fix uninitialized neigh_key variable
  * pcuif_proto: rename tlli to msg_id
  * bts: get rid of fn parameter in bts_rcv_imm_ass_cnf
  * pcuif_proto: remove unnecessary members from gsm_pcu_if_data_cnf_dt
  * pcuif_proto: get rid of _DT, _dt (Direct TLLI)
  * pcuif_proto: add confirm flag to struct gsm_pcu_if_pch
  * pcu_l1_if: add support for PCU_IF_SAPI_AGCH_2 for PCUIF v.11
  * osmobts_sock: cosmetic: rename osmobts_sock.c to pcuif_sock.c
  * pcuif_sock: improve log output (OsmoBTS/OsmoBSC)

  [ Oliver Smith ]
  * Run struct_endianness.py
  * lc15bts.h: add missing extern keyword
  * debian: set compat level to 10
  * systemd: depend on networking-online.target

  [ Pau Espin Pedrol ]
  * tbf: Increase log level if polling requested in wrong TS
  * tbf_ul_fm: Allow receiving event TBF_EV_MAX_N3105 in state RELEASING
  * osmo_bts_sock.c: Call osmo_fd_unregister() before closing and changing bfd->fd
  * Update libosmogsm deprecated include
  * ms: Fix MS without PTMSI not freed immediatelly
  * ms: Drop setting tlli during ms_alloc()
  * tbf_dl: Avoid attempt scheduling DL ACK/NACK in TS != CTRL TS
  * ms: Drop setting (egprs_)ms_class during bts_alloc_ms()
  * bts: Rename bts_ms_by_{tlli,imsi} -> bts_get_ms_by_{tlli,imsi}
  * ms: Merge ms_storage into bts.cpp
  * ms: store in bts->ms_list during alloc/destroy of ms object
  * Merge bts_alloc_ms() and ms_alloc()
  * ms: Use osmo_use_count to track references
  * ms: Make sure tbf!=NULL in ms_attach_{ul,dl}_tbf()
  * ms: Make ms_{attach,detach}_tbf expectancies more robust
  * ms: Log detaching tbf log line in proper place
  * ms: Rewrite MS release lifecycle
  * tbf: Store initial timestamp during constructor
  * tbf: Move m_ctrs alloc to constructor
  * tbf_ul: Move rate_ctr allocation to constructor
  * tbf: Move enable_egprs() to constructor
  * cosmetic: Fix indentation in comment
  * ms: Hold a reference during ms_alloc
  * dl_tbf: Set BandWidth timestamps to current time directly
  * Add new log category 'ms'
  * ms: Increase log level when scheduling release timer
  * meas: Improve logging formatting
  * ms: Get rid of ms->delay field
  * ms: Rename field timer -> release_timer
  * ms: Log MS active/idle state in 'show ms' VTY commands
  * vty: Several improvements to 'show ms' output format
  * alloc_algo: Pass a struct containing all req params
  * alloc_algo: Move printing outside of update_ms_reserved_slots()
  * Move out of alloc_algo code modifying the data model
  * Move resource allocation outside of tbf allocation
  * ms: Mark ms_reset() as static
  * ms: Fix unsafe iterating freeing items in list
  * cosmetic: ms: fix formatting of function comment
  * tbf: Improve TBF name description in logs
  * cosmetic: tbf_ul_ack_fsm: Clean up use of ul_tbf and tbf pointers
  * Use always RFN when handling RACH indications
  * Error trying to obtain FN from RFN if curr_fn not known
  * bts: use RFN directly to calculate fn416
  * encoding: pass RFN to write_immediate_assignment(_reject)()
  * Derive FN from RFN once and cache it in struct rach_ind_params
  * Use fn_valid() helper in pcu_rx_time_ind()
  * Move call to bts_set_current_frame_number() earlier in the code path
  * Use OSMO_UNLIKELY() in bts_rfn_to_fn()
  * pcu_utils.h: Replace software based bitcount impl with gcc builtin
  * Document pcu_lsb() function
  * Log MS information in error message using usual MS API
  * tbf_dl_fsm: Apply T3193 using FSM infrastructure instead of manually
  * tbf_{ul,dl}_fsm: Remove unneeded asserts
  * tbf_{ul,dl}_fsm: remove impossible dst state transitions
  * Avoid using N3101 in DL TBFs
  * Avoid using N3103 in DL TBFs
  * Avoid using N3105 in UL TBFs
  * tbf_dl_fsm: Remove T3169 references, simplify T3195 set up as consequence
  * tbf_ul_fsm: Remove 3195 references, simplify T3169 set up as consequence
  * Abort UL TBF PACCH Ass based on T3168
  * Remove unused GPRS_RLCMAC_FLAG_TO_MASK
  * Improve logging in bts_snd_dl_ass()
  * tbf_dl_fsm: Fix wrong lchan specified in log line
  * tbf_{ul,dl}_fsm: Abort on unexpected path
  * tbf_{ul,dl}_fsm.c: Rearrange code/logs in mod_ass_type()
  * Move GPRS_RLCMAC_FLAG_TO_DL_ACK from state_fsm to dl_tbf
  * Move GPRS_RLCMAC_FLAG_DL_ACK from state_fsm to dl_tbf
  * tests/tbf: Drop unneeded line re-setting CCCH ass type
  * cosmetic: tbf_dl_fsm: Fix a couple comment typos
  * Move call to bts_snd_dl_ass() from tbf_dl.cpp to tbf_dl_fsm.c
  * Change several log lines to start with capital letter
  * cosmetic: Improve comment
  * Fix DL_TBF PACCH ass done on UL_TBF already scheduled to tx last PKT CTRL ACK
  * bts: Use same default value for T3193 as set in osmo-bts/bsc
  * Store T3192 value received from SI13, do some sanity checks
  * tbf_dl_fsm: Drop impossible event
  * cosmetic: tbf_fsm: Fix typo in comment
  * pdch.cpp: Drop impossible code path
  * Differentiate between T3192 and T3193
  * ms_need_dl_tbf(): Fix state checks and document function
  * tbf_ul: Avoid processing rx UL blocks for UL TBFs in RELEASING state
  * tbf_ul_fsm: Delay moving ul_tbf to FLOW
  * Avoid using UL TBF in RELEASE state to assign DL TBF over PACCH
  * Avoid re-assigning DL TBF over PACCH upon duplicate FinalACKs received
  * tbf_dl_fsm: Ignore DL_ACKNACK_MISS events in WAIT_{RELEASE,REUSE_TFI} states
  * Reestore last LLC frames never completely acked when freeing DL TBF
  * cosmetic: pdch.cpp: Drop wrong comment due to copy-paste error
  * tbf_dl_fsm: Fix '{FLOW}: Event ASSIGN_PCUIF_CNF not permitted'
  * pcuif: Log read() error cause
  * gprs_ms: Constify variable in ms_is_reachable_for_dl_ass()
  * gprs_ms: Update assert condition
  * oc2g: Fix multiple definitions of arrays
  * pcu_l1_if: Document tx_pch empty IMSI scenario
  * gprs_rlc_ul_window: Make sure V(N) array is cleared during reset_state()
  * Split rlc_{dl_,ul_,}window out of rlc.{h,cpp}
  * gprs_rlc_ul_window: Mark received BSNs falling out of the V(N)/RBB when V(R) is raised
  * cosmetic: mslot_class.h: Update spec reference
  * cosmetic: Document foce_two_phase feature based on specs
  * pcu_l1_if.cpp: Fix gsmtap not sent in PCU_IF_SAPI_PCH_DT
  * vty: Allow modifying default msclass

  [ Vadim Yanitskiy ]
  * {src,tests}/Makefile.am: libraries shall not be in AM_LDFLAGS
  * tests/Makefile.am: do not overwrite global LDFLAGS
  * fix pcu_rx(): actually discard malformed container message
  * tests: $(BUILT_SOURCES) is not defined, depend on osmo-pcu
  * copyright: fix typo: sysmocom s/s.m.f.c./s.f.m.c./ GmbH

  [ arehbein ]
  * PCU interface: Log version when starting listener

  [ Max ]
  * gprs_rlcmac: convert from C++ to C
  * ctrl: drop deprecated neighbor resolution interface

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Tue, 12 Sep 2023 16:00:25 +0200

osmo-pcu (1.2.0) unstable; urgency=medium

  [ Vadim Yanitskiy ]
  * encoding: fix an uninitialized field in gen_freq_params()
  * neigh_cache: fix: properly convert from nanoseconds to microseconds
  * tests/rlcmac: remove unused #includes
  * tests/rlcmac: remove unused printSizeofRLCMAC()
  * tests/rlcmac: make all test functions static
  * tests/rlcmac: cosmetic: fix coding style in arrays
  * tests/rlcmac: use ARRAY_SIZE macro
  * tests: make target 'check-local' depend on 'atconfig'
  * tests: target 'check-local' does not depend on BUILT_SOURCES
  * Makefile.am: generate missing .version file
  * Makefile.am: add 'git-version-gen' to EXTRA_DIST
  * {ms,gprs_pcu}_talloc_destructor(): call osmo_timer_del() unconditionally
  * {src,tests}/Makefile.am: $(COMMON_LA) is not definied
  * fix pcu_l1if_tx_ptcch(): do not send empty blocks to GSMTAP
  * Make linter happy: fix coding style issues
  * bts_set_current_frame_number(): log expected TDMA FN
  * bts: bts_snd_dl_ass(): clarify the meaning of last_rts_fn + 21216
  * bts: bts_snd_dl_ass(): use GSM_TDMA_FN_SUM() macro
  * Makefile.am: drop unneeded '-ldl -pthread' from AM_CXXFLAGS

  [ Pau Espin Pedrol ]
  * nacc_fsm: Fix uninitialized plmn.mnc_3_digits parsing CTRL neigh resolution cmd
  * cosmetic: Add missing spacing between params
  * Use GSM48_MT_RR_IMM_ASS instead of hardcoded 0x3f value
  * Clarify use RR imm_ass msg fields
  * bts_rcv_imm_ass_cnf(): Improve logging
  * cosmetic: Update reference to func renamed in the past
  * gprs_ms: Document functions setting/updating TLLI
  * Call ms_store->get_ms() with GSM_RESERVED_TMSI instead of 0
  * gprs_ms: Move creating string name of object to a function
  * Move LLC enqueuing and retransmit timer to MS object
  * tbf_ul_ack_fsm: Pass ul_tbf instead of generic tbf
  * Rename tbf_alloc_dl_tbf() -> dl_tbf_alloc()
  * tbf_dl: Make dl_tbf_alloc API available in C code
  * Fix mess with struct tbf types passed to LOGPTBF macro
  * Rename as_{dl,ul}_tbf -> tbf_as_{dl,ul}_tbf
  * tbf_ul_ack_fsm: get ul_tbf base class only when needed
  * use new {dl,ul}_tbf_as_tbf(_const) helper functions
  * pdch: Use helper function tbf_as_ul_tbf()
  * rcv_resource_request(): Validate expected message before MS lookup & allocation
  * encoding: Use MT_PACKET_UPLINK_ASSIGNMENT define instead of hardcoded value
  * rcv_resource_request(): Update meas before allocating and assigning new UL TBF
  * Delay ImmAss(PCH, PktDlAss) if waiting for PKT_CTRL_ACK answering UL_ACK_NACK (FinACK=1)
  * Refactor and clarify tbf->triger_ass() code
  * Rename function tbf_dl_request_dl_ack() -> dl_tbf_request_dl_ack()
  * Replace tbf->establish_dl_tbf_on_pacch() refactoring GprsMs functions
  * ul_tbf: Define m_contention_resolution_done as bool
  * tbf_fsm: Identify several events as Dl-TBF only
  * Move UL allocation&assign functions to gprs_ms.c
  * update_ms(): Set TLLI of new MS object before merge with old MS
  * Join ms_merge_and_clear_ms() and ms_merge_old_ms()
  * gprs_ms: Add comment warning the user that a ptr may be freed after call to func
  * Rename tbf_alloc_ul_tbf -> ul_tbf_alloc
  * Rework tbf::update_ms()
  * tbf_fsm: Introduce new event TBF_EV_FIRST_UL_DATA_RECVD
  * Avoid losing DL-TBF during MS merge
  * tbf_fsm: Introduce new event to act upon contention resolution success
  * tbf_ul: Assign DL-TBF if needed after UL-TBF has gone over contenion resolution
  * Improve TBF logging
  * Improve MS logging
  * Disable logging fsm addresses
  * tbf_fsm: Move tbf_fsm_state_chg macro to .c file
  * tbf_fsm: Move osmo_fsm_inst fi out of struct tbf_fsm_ctx
  * tbf: Drop unused function
  * tbf: Add tbf_as_{ul,dl}_tbf_const func helpers
  * Refactor tbf_is_tfi_assigned() to avoid accessing tbf->state_fsm
  * Split tbf_fsm as tbf_{ul,dl}_fsm
  * Convert gprs_debug.cpp to C
  * pdch: Initial support Handling PktResReq with ID_TYPE=UL/DL_TFI
  * pdch_ulc_get_node(): assert if ulc pointer is null
  * Pass gprs_rlcmac_pdch to tbf_is_control_ts
  * Pass pdch ptr to tbf_compute_priority
  * encoding::write_immediate_assignment(): Constify tbf param
  * tbf_ul_fsm_ctx: Properly define tbf backptr as ul_tbf
  * tbf_dl_fsm_ctx: Properly define tbf backptr as dl_tbf
  * Move control_ts explicit checks out of the scheduler implementation
  * sched: Pass pdch to *_create_rlcmac_msg() functions
  * Move first_common_ts from gprs_rlcmac_tbf to GprsMs
  * Get rid of tbf->first_ts
  * Refactor code related to DL-TBF upgrade to multislot
  * Trigger PACCH assignment inside dl_tbf_upgrade_to_multislot()
  * tbf_ul: Fix wrong struct type in field
  * Refactor code rejecting UL-TBF upon rx of PktResourceReq
  * bts: Adapt slot_mask to trx defined array size
  * Convert ms_first_common_ts to struct gprs_rlcmac_pdch
  * Rename gprs_rlcmac_ts_alloc.cpp -> alloc_algo.cpp & create own .h file
  * pdch: Introduce APIs to print PDCH name
  * tbf: Fix typo in define used
  * Convert tbf->control_ts to be a gprs_rlcmac_pdch*
  * tests/tbf: test_tbf_dl_llc_loss(): Fix wrong param passed and wrong expectancies
  * Pass gprs_rlcmac_pdch to create_dl_acked_block()
  * Pass gprc_rlcmac_pdch to tbf_check_polling
  * Pass gprc_rlcmac_pdch to tbf_set_polling
  * bts: Adapt trx check based on bts->trx[] defined array size
  * tests/TbfTest: reproduce buggy corner case: MS with TBFs on 2 TRXs
  * Avoid moving DL-TBF from old_msg to new_ms during ms_merge
  * llc: Mark llc_is_user_data_frame() as static
  * llc: Refactor code checking if PDU expired while dequeueing
  * llc: remove unused reference to msgb address
  * cosmetic: Remove unneeded curly braces
  * Mark several fsm related internal symbols as static
  * rlc.h: Fix typo in param name

  [ Max ]
  * Set working directory in systemd service file
  * Update and document realtime scheduling priority in service file
  * cosmetic: drop unused field from struct pdch_ulc
  * cosmetic: drop duplicated comment
  * constify pdch_ulc_get_next_free_fn() parameter

  [ Philipp Maier ]
  * pcuif_proto: cosmetic: rename struct member "h" to "hopping"
  * pcuif_proto: cosmetic: rename gsm_pcu_if_info_ts to gsm_pcu_if_info_trx_ts
  * pcuif_proto: use define constant to specify nax number of trx
  * bts: refuse to set invalid frame numbers
  * bts: use GSM_TDMA_FN_ macros and uint32_t in bts_rfn_to_fn
  * bts: log FN jump delta in bts_set_current_frame_number()
  * pcuif_proto: add indication to communicate E1 parameters
  * pcu_l1_if: cosmetic: use sizeof instead of constants
  * pcu_l1_if: ignore frame numbers that exceed the valid range
  * pcuif_proto: rename PCU_IF_SAPI_AGCH_DT to PCU_IF_SAPI_PCH_DT

  [ Harald Welte ]
  * update horribly outdated copyright statement on VTY

  [ arehbein ]
  * osmo-pcu:  Transition to use of 'telnet_init_default'

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Tue, 07 Feb 2023 17:10:40 +0100

osmo-pcu (1.1.0) unstable; urgency=medium

  [ Oliver Smith ]
  * treewide: remove FSF address

  [ Pau Espin Pedrol ]
  * Fix assert hit if connecting to SGSN fails
  * llc: Convert to C: s/m_//g
  * llc: Convert to C
  * llc: Move static functions below related object
  * ms: validate codel enabled against proper define
  * ms: Remove unneeded bts!=NULL check
  * gprs_ms_storage: MS always has non NULL ms->bts
  * llc: schedule frames to MS based on SAPI priority
  * pdch is_enabled: Use API getter instead of accessing field directly
  * llc_queue: Refactor to handle codel_state per prio queue internally
  * tests/llc: Add test_llc_meta_pdu_life_expire
  * tests/llc: Add test_llc_codel
  * gprs_ms: Use osmo_timer_setup() API
  * gprs_ms_storage: Use bts_stat_item_inc/dec APIs
  * tests/tbf: Set up pcu timers in prepare_pcu()
  * gprs_pcu: Explicitly free all bts objects in list before freeing pcu
  * bts: Call gprs_bssgp_destroy() in destructor
  * TbfTest: Reset MS timeout to 0 in test_tbf_dl_llc_loss()
  * gprs_ms_stoage: Release all MS in ms_storage cleanup()

  [ Harald Welte ]
  * update git  URLs (git -> https; gitea)

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Wed, 29 Jun 2022 09:48:53 +0200

osmo-pcu (1.0.0) unstable; urgency=medium

  [ Pau Espin Pedrol ]
  * Support uplink multi-slot allocations
  * tbf: Log timeslot allocation failure
  * bts: Count TBF TS allocation failure
  * pdch: Standarize and improve logging
  * tbf: Improve logging when TBF being allocated or no TBF avail
  * Remove uneeded ms param from alloc_algorithm_func_t func
  * bts: Add new stats to detect TBF allocation failure reasons
  * llc: use memset to fill llc dummy frame padding
  * tbd_dl: Don't re-initialize class field twice
  * tbf: log keep_open condition status
  * tbf_dl: Fix m_last_dl_drained_fn not set under some conditions
  * tbf_dl: fix FBI not set upon X2031 = 0
  * ms: clarify delayed MS release process related code and logging
  * gprs_ms: Use standarized logging on more messages
  * sched: sched_select_ctrl_msg(): Clean up param list and improve logging
  * sched: sched_select_downlink(): Clean up param list and improve logging
  * TODO-RELEASE: document requirement of master libosmocore
  * tbf: Log N310* counter increments
  * pdch: Silently ignore DATA.ind with len=0
  * direct_phy: Support submitting DATA.ind with len=0 to upper layers
  * pcu_utils.h: Fix trailing whitespace
  * Track TDMA clock with DATA.ind instead of TIME.ind
  * Introduce init() APIs for PDCH and TRX objects
  * tests: rlcmac: Fix C vs C++ linkage of extern symbol
  * pdch.h: Drop uneeded include bts.h
  * Improve DATA.ind logging
  * Improve logging in DATA.req and ACT.req
  * tbf: Fix wrong variable printed in log
  * pdch: Log FN when decoding UL Ctrl block
  * Add new PDCH UL Controller, drop SBAllocator class
  * Replace PollController with newly added PDCH UL Controller
  * sched: Use new PDCH UL Controller
  * bts: Detect FN jumps
  * cosmetic: tests/Makefile.am: Split content into several lines
  * tests: Introduce unit tests for PDCH UL Controller
  * tests: ulc: Show current bug with FN wrap around
  * ulc: Fix FN store order upon wrap around
  * sysmo: fix wrong FN jumps in rx RA.ind
  * direct_phy: Fix condition dropping rx DATA.ind payload in in
  * Fix: left shift cannot be repesented in type int
  * sched: Fix scheduling UL TBF not matching conditions
  * sched: Simplify usf selection code
  * Set matching USF if available when polling a UL TBF
  * pdch: Add mising pdch_ulc_release_node in Rx Cell Change Notif
  * pdch_ulc: Create helper API pdch_ulc_release_node
  * Track scheduled UL blocks through USF
  * Properly implement N3101
  * sba: Document AGCH_START_OFFSET after some experimental tests
  * pdch_ulc: Optimize rbtree FN search
  * Pick unreserved UL FN when allocating an SBA
  * pdch_ulc: Support picking RRBP other than N+13
  * Drop unused function tbf_check()
  * pdch_ulc: Store TBF poll reason
  * tbf: Get rid of unneeded poll_scheduled()
  * tbf: Allow multiple concurrent polls
  * Remove unneeded poll_state check
  * tbf: get rid of poll_state completely
  * Get rid of param 'poll' with constant value
  * tbf: Get rid of attribute poll_fn
  * tbf: Get rid of attribute poll_ts
  * RIM: Improve logging
  * sba: Drop unused function find_sba_rts
  * pdch: rcv_resource_request: Improve robustness
  * pdch: tbf_by_tfi(): Allow returning TBFs in state RELEASING
  * Stop abusing T3169
  * Make use of T3142 received from BTS
  * Use negative numbers for non-spec osmo-specific timers
  * ul_tbf: Clean up handle_tbf_reject()
  * Make WaitIndication T3172 configurable
  * sched: Simplify else-if condition
  * Clarify, document Assignment related timers
  * doc/tbf.txt: Update and improve some information
  * bts: constify arg in func bts_ms_store()
  * sched: Rename func to describe its used only for RLCMAC CTRL blocks
  * rim: Constify param in func
  * Simplify helper function tbf_select_slot_set()
  * alloc_algorithm_b: Rearrange variable initialization
  * Rename function s/tbf_alloc_ul/tbf_alloc_ul_pacch/
  * Split ul_tbf alloc on CCCH into new function
  * Implement T3141
  * tbf_ul: Use is_tlli_valid() API
  * Tx ul ack/nack: Avoid sending invalid/unknown TLLI
  * encoding: Use gsm48_ta_is_valid() API
  * encoding: Encode TA in UL ACK/NACK if available
  * sched: Clean up helper function and improve logging
  * Drop existing tbf->ms() check condition
  * ul_tbf: Simplify function rcv_data_block_acknowledged
  * ul_tbf: Fix accessing zeroed block when checking if transfer is complete
  * sched: Clean up param passing and improve logging
  * pdch: Use llist_first_entry() API
  * RIM: Refactor Rx path to decode stack in proper order
  * Clean false positive in newer GCC version checking guard of else clause
  * Use LOGPDCH macro in bts_add_paging()
  * Optimize PAGING-CS PDCH set selection when target MS is known
  * bts: Use ms_store when calculating set of target PDCHs for Pkt Paging Request
  * tbf: Log error path in setup() failing to assign control TS
  * Move TBF list from BTS to the TRX structure
  * MsTest: Set up tbf talloc destructor
  * tbf: Move existing tbf_state implementation to osmo_fsm
  * cosmetic: Fix typo s/TIMSI/TMSI/
  * gsm_rlcmac.c: Fix arg list of 2 callbacks
  * csn1: Implement CSN_CALLBACK type in encoder
  * bts: Fix typo in field name
  * Use new stat item/ctr getter APIs
  * pdch: Log pdch_ulc reason upon rx of pkt ctrl ack
  * pcuif: Support receiving System Information 2
  * pdch: Fix null MS access gprs_rlcmac_pdch::rcv_control_ack
  * pcuif_proto.h: Add new container message
  * Support proto IPAC_PROTO_EXT_PCU BSC<->PCU
  * pdch: Fix heap-use-after-free in pdch->ulc
  * Make gcc 11.1.0 false positivies happy
  * tbf: Drop impossible paths in create_dl_ass()
  * tests/tbf: Fix null pointer access if slowly stepping with gdb
  * Revert "coverity: fix null deref from recent UL TBF leak fix"
  * Revert "fix: handle NULL return of as_dl_tbf() and as_ul_tbf()"
  * Revert "Revert "Stop abusing T3169""
  * Move NULL and ASSIGN tbf_state transition to tbf_fsm
  * Move FLOW tbf_state transition to tbf_fsm.
  * tests: tbf: Fix dl_tbf polled for data without being in FLOW state
  * Move FINISHED tbf_state transition to tbf_fsm
  * Move WAIT_RELEASE tbf_state transition to tbf_fsm
  * Move RELEASING tbf_state transition to tbf_fsm
  * Move T3169 and T3195 to tbf_fsm
  * Drop duplicate log line
  * Put dl_tbf::cleanup into destructor
  * Drop logging last mas report before freeing TBF
  * Remove duplicate call to gprs_rlcmac_lost_rep
  * Move rate_ctr free to tbf subclass destructor
  * Get rid of tbf_dl:abort()
  * tbf_free: Get rid of uneeded tbf_state transition
  * Replace ul_ass_state with osmocom FSM
  * tbf: Reimplement rlcmac_diag() and make it available from C
  * tbf: Drop unuseful flag GPRS_RLCMAC_FLAG_TO_UL_ASS
  * replace dl_ass_state with osmocom FSM
  * tbf: Drop unuseful flag GPRS_RLCMAC_FLAG_TO_DL_ASS
  * tbf: Drop unuseful flag GPRS_RLCMAC_FLAG_UL_DATA
  * Move timer X2001 to tbf_fsm
  * Get rid of lots of code only used by tests
  * tbf: Merge handle_ack_nack() into rcvd_dl_ack()
  * Fix typos in comments documenting fsm st chg macro
  * tbf: Use type bool for upgrade_to_multislot
  * Move timer X2002 to tbf_fsm
  * tbf_dl: Clarify requirements for DL ACK/NACK
  * tbf.h: Improve documentation on several flags
  * Move tbf ul_ack_state to osmocom FSM
  * Simplify tbf::set_polling()
  * tbf: Move T3193 to tbf_state FSM
  * fix typo 's/dowlink/downlink/g'
  * cosmetic: Fix typo in comment
  * sched: energy saving: Avoid Tx dummy blocks on empty PDCH TS
  * Fix crash with dyn TS when using direct pcu
  * Use LOGPDCH macro to standarize log line
  * cosmetic: sysmo: Drop unneded comment line
  * bts: Use public getter instead of class member
  * sched: Lower log level of RTS on disabled pdch
  * pdch: Make sure pending ImmAssRej scheduled for disabled pdch are dropped
  * Support Neighbor Address Resolution over PCUIF IPA multiplex
  * nacc_fsm: Move logic checking if SI is being waited for to a func helper
  * scheduler: Skip Tx DL idle blocks in TRX0 when not in DIRECT_PHY mode
  * PTCCH: skip Tx DL idle blocks when possible
  * tbf_ul_ass_fsm.c: Fix missing state transition in FSM description
  * tbf: poll_timeout(): Validate expected poll reason
  * nacc: Introduce helper function nacc_fsm_exp_ctrl_ack()
  * tbf: refactor poll_timeout() with a switch statement
  * tests: TbfTest: Fix wrong behavior in test_tbf_dl_reuse()
  * pdch: refactor rcv_control_ack() with a switch statement
  * cosmetic: Fix missing space
  * assert if tbf pointer for POLL event is NULL
  * tbf_fsm: Ignore event DL_ACKNACK_MISS in state RELEASING
  * tests: RLCMACTest: Add one more sample RA capabilities to suite
  * rlcmac: Fix CSN1 definition for DownlinkDualCarrierCapability_r7_t in MS RA cap
  * tbf: Assert if FSM allocation fails
  * sched: Rename function
  * pdch: Only release ULC entry if rx ul block matches the expected one
  * pdch: Validate poll reason matches in rcv_control_(egprs)_dl_ack_nack()
  * pdch: PktResReq: Avoid releasing ULC entry if expecting something else on UL
  * Handle Final UL ACK/NACK Confirmation in tbf_fsm
  * tbf_fsm: rename state NULL -> NEW
  * pdch_ulc: Log POLL reason upon timeout
  * tbf_dl_ass_fsm: Move block msg generation conditions to rts() function
  * tbf_ul_ass_fsm: Fix use of incorrect log macro
  * tbf_fsm: Handle MAX_N3105 in state ASSIGN
  * tbf: Use define to flag control_ts unset special value
  * tbf: Document temporary change of control_ts and move code assigning it back to FSM
  * Return void in tbf_assign_control_ts()
  * pdch: rcv_data_block: Avoid releasing ULC entry if expecting something else on UL
  * tbf: Avoid keeping poll nodes in pdch_ulc of temporary control_ts used during PACCH assignment
  * tbf_ul_ass_fsm: Avoid retrying Pkt Ul Ass if tbf is not in state ASSIGN
  * Abort scheduling of pending Pkt Ul Ass if tbf goes into RELEASE step
  * tbf: Drop pending polls during free also on states != ASSIGN
  * pdch: Simplify code path allocating UL TBF
  * pdch: Log reason of expected POLL when receiving unexpected UL data
  * bts_rcv_rach(): Gather pointers to data objects early and use them later
  * bts_rcv_rach(): Split code paths for Ass and Ass Rej
  * Get rid of tbf tsc field
  * ts_alloc: Rename s/tbf_/tbf/
  * tbf: Update FSM names when TFI change during tbf_update()
  * tbf_fsm: Add assert verifying X2002 only triggers for DL TBF
  * tbf: Assert if update() is called on UL TBF
  * tbf: update(): return negative val on error
  * tbf: Drop unneeded braces in one line condition
  * cosmetic: Fix typo in comment
  * pcuif: Submit data_req with len=0 as idle frames
  * Split csn1.c into common, enc and dec files
  * csn1: Add unit test showing RadioAccess Capability decoding failure
  * csn1: Avoid failing if optional DownlinkDualCarrierCapability_r7 is missing
  * csn1: Avoid storing existence bit as true if content was actually NULL
  * csn1_dec.c: Fix stored bit in CSN_NEXT_EXIST_LH
  * bts: Fix misleading log line in bts_rcv_rach()
  * tbf_ul: Document context where tbf_alloc_ul_ccch() is used
  * bts: Rename 11bit RACH request counter
  * vty: Avoid crash in tbf_print_vty_info with null ptr ctrg
  * vty: Log tbf_state when showing a TBF
  * vty: show tbf: Drop unneeded check for non-null ms
  * bts: Introduce new RACH req counters for one/two phase access
  * bts: Improve logging to clarify RACH req is for 2 phase access
  * bts: Count RACH Request with unexpected content
  * tbf: Increase log level of line about unable to allocate poll for TBF
  * pdch: Improve log line and increase log level
  * tbf_ul: Set first_(common_)ts in handle_tbf_reject
  * tbf: Set m_created_ts in constructor
  * tbf: Mark initial first_(common_)ts with special value
  * tbf: Set tfi to initial special value
  * bts: Add counters for successful 1,2 phase pkt access
  * tbf_ul: Update FSM names for dummy reject TBFs
  * cosmetic: Add parenthesis around expression to clarify it
  * pdch::rcv_resource_request(): Use local var to store bts pointer
  * tbf_ul: Improve documentation of tbf_alloc_ul_pacch()
  * Add counter for successful contention resolution procedures
  * doc: Update counters_generated.adoc using osmo_vty_interact.py
  * bts_pch_timer: Fix timer working only for MI type IMSI
  * tests/alloc: Extend test_bts_pch_timer() to validate MI type TMSI
  * bts_pch_timer: Avoid resend Paging Request over PCUIF if T3113 is armed
  * pdch: Log line detaching TBF at start of the function
  * pdch: Log TS enable/disable transitions
  * pdch: Log DL TBF originating the new UL TBF
  * ts_alloc: Simplify tfi_find_free logic
  * ts_alloc: rename function to clraify what it does
  * ts_alloc: rename variable to clarify meaning
  * pdch: Update ms_reserved_slots in GprsMS when TS becomes disabled
  * pdch: Drop previous UL TBF from MS who sent PktResReq through SBA
  * pdch: Increase log level of line informing about TS control change
  * tbf_ul_ass_fsm: Log both TBFs if old TBF is handling assignment for new one
  * cosmetic: gprs_pcu.h: Fix typo in comment
  * tbf_dl_ass_fsm: Log both TBFs if old TBF is handling assignment for new one
  * tbf_dl_ass_fsm: Fix missing transition to NONE if DL TBF is nonexistent
  * tbf_{dl,ul}_ass_fsm.c: use proper macro to log tbf
  * pcu_main: Mark -r cmdline param as deprecated
  * vty: Introduce command 'gsmtap-remote-host' and 'gsmtap-category enable-all'
  * Fix MS ending up with assigned imsi 000
  * bts: Add counter availablePDCHAllocatedTime
  * tbf_dl_ass_fsm: Drop unsued X2000 timer callback
  * T_defs_pcu: Set default val for X2000 to 0 ms
  * Move T3172 T_defs_bts->T_defs_pcu to have it configurable in VTY

  [ Alexander Couzens ]
  * gprs_bssgp_pcu: rework BSSGP Reset messages to support SGSN originated BSSGP-RESET
  * gprs_bssgp_pcu: ensure only known BVCI can be resetted by the SGSN
  * gprs_bssgp_pcu: add comments to the pcu states

  [ Harald Welte ]
  * pdch_ul_controller: Fix compiler warning on gcc-10.2
  * manual: remove revhistory, as we don't maintain it manually anyyway
  * manual: Update copyright years
  * vty: Add configuration for Gb DSCP and socket priority
  * manual: Include QoS chapter and add osmo-pcu specific example

  [ Vadim Yanitskiy ]
  * gprs_rlcmac_sched: fix incorrect length for CTR_RLC_DL_BYTES
  * PCUIF protocol: add message definition for interference report
  * pcu_l1_if: ignore PDCH interference reports, do not log errors

  [ Oliver Smith ]
  * test: add 'make update_exp' target
  * Add counters: pcu.sgsn.N.rx_paging_{cs,ps}
  * Add counters: pcu.bts.N.pch.requests
  * Add counters: pcu.bts.N.pch.requests.timeout
  * bts: delete pch_timer list in destructor
  * tests: make update_exp: build check_PROGRAMS first
  * debian/control: remove dh-systemd build-depend
  * Add stats: pcu.bts.N.pdch.available/occupied
  * Add stats: pcu.bts.N.pdch.occupied.gprs/egprs
  * pdch: has_gprs_only_tb_attached: use m_num_tbfs

  [ Neels Hofmeyr ]
  * T_defs_bts: remove unit from doc strings
  * Revert "Stop abusing T3169"
  * fix: handle NULL return of as_dl_tbf() and as_ul_tbf()
  * coverity: fix null deref from recent UL TBF leak fix

  [ Daniel Willmann ]
  * gprs_bssgp_pcu: Fix crash when configuring an existing ns bind

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Tue, 16 Nov 2021 16:47:29 +0100

osmo-pcu (0.9.0) unstable; urgency=medium

  [ Pau Espin Pedrol ]
  * Pass paging group instead of imsi where later is not needed
  * Allow Gb PAGING-PS without P-TMSI
  * Support Gb PAGING-CS
  * Support PAGING-CS and PAGING-PS on on PTP-BVCI
  * tests/rlcmac: print test name at the start
  * tests/rlcmac: Memzero decoded struct
  * tests/rlcmac: Fix missing commas with unexpected results
  * tests/rlcmac: Use osmo_hexdump to print buffers
  * tests/rlcmac: Don't check stderr output
  * tests/rlcmac: Add test to showcase that decode_gsm_ra_cap() fails
  * csn1: Extend CSN_SERIALIZE to allow 0 bit of length
  * csn1: Allow CHOICE elements to re-process the bits used for the choice
  * csn1: Fix pedantic compiler warnings in csn.1 dissectors
  * csn1: Drop format_p union from CSN_DESCR
  * gsm_rlcmac.cpp: Fix trailing whitespace
  * cosmetic: csn1.cpp: Fix whitespace
  * csn1.cpp: Rework ProcessError() function to print errors
  * rlcmac: Return error code from csn1 encoder/decoder
  * Check return code of rlcmac decode/encode functions
  * rlcmac: Transform a few LOGPC messages to LOGP
  * Fix trailing newline mess with LOGP(C) in rlcmac/csn1
  * llc_queue::{dequeue,enqueue}() refactor
  * gsm_rlcmac: fix Packet_Resource_Request_t: s/Slot/I_LEVEL_TN/
  * tests/llc: Change unrealistic time jump to avoid runtime error under ARM
  * Use clock_gettime(CLOCK_MONOTONIC) and timespec everywhere
  * Use downlink BSSGP RA Cap IE
  * tests/RLCMACTest: free allocated bitvectors
  * tests/RLCMACTest: Several fixes and improvements to RAcap tests
  * rlcmac: Don't pass array element to CSN1 descriptors
  * csn1: Validate recursive array max size during decoding
  * rlcmac: Fix bug receiving RA cap
  * rlcmac: Log names of de/encoded rlcmac packet types
  * rlcmac: Introduce MS Radio Access Capabilities 2 to fix related spare bits
  * cosmetic: rlcmac: Fix comment typo and whitespace introduced recently
  * rlcmac: Rename field to MS RA Cap2 in Additional_MS_Rad_Access_Cap_t
  * pcu_l1_if.cpp: Add missing header ctype.h
  * gsm_rlcmac: Use 'struct bitvec' instead of 'bitvec'
  * cosmetic: Do not indent header includes inside extern C block
  * gsm_rlcmac.cpp: Avoid declaring variable in for loop
  * csn1.h: Fix trailing whitespace
  * tbf.cpp: Include c++ <new> header required for new operator's replacement type
  * gsm_rlcmac: Disable unused CSN1 descriptors
  * Move gsm_rlcmac.cpp -> .c
  * rlcmac: support decode FDD_CELL_INFORMATION of "UTRAN FDD Description
  * rlcmac: add dissection of 2G->3G/4G PS handover
  * csn1: Fix Several typos & whitespace
  * csn1: verify enough bits present to decode whole CSN_UINT_ARRAY
  * csn1: Properly verify CSN_BITMAP length
  * csn1: Remove code block from CSN_NEXT_EXIST_LH
  * pcu_l1_if: Don't use GSMTAP_CHANNEL_PACCH when sending unknown gsmtap blocks
  * pdch: Avoid sending GSMTAP_CHANNEL_UNKOWN for rejected UL EGPRS data block
  * tbf: Avoid crash: don't set TBF window size if setup failed
  * bts: Rename mslot_class_from_ra
  * bts: Fix Decoding EGPRS MultislotClass from 11-bit EGPRS PACKET CHANNEL REQUEST
  * bts: Return uint8_t in egprs_mslot_class_from_ra()
  * Use OSMO_FD_* instead of deprecated BSC_FD_*
  * Expect ms object to exist before calling tbf_alloc_ul_tbf()
  * Expect ms object to exist before calling tbf_alloc_dl_tbf()
  * pdch: rcv_resource_request(): Clarify tbf_free only needed if MS used to exist beforehand
  * Drop unneeded arg 'ta' in tbf_alloc_ul()
  * bts: Drop specific functions to increase counters
  * bts: Drop specific functions to add values to counters
  * bts: Drop specific functions to add values to stats
  * pcu: tbf_ul: Clean up maybe_schedule_uplink_acknack()
  * sysmo: femtobts.h: Avoid redefining global variables
  * rlc: Drop unused function gprs_rlc_data::put_data
  * rlc: Move prepare() function out of gprs_rlc_data struct
  * tbf_ul: Fix UL ACK not sent to MS if intermediate UL block is lost
  * Get rid of class GprsCodingScheme
  * gsmtap: Set signal level and SNR fields
  * gprs_ms: Small clean ups in IMSI storage related code
  * gprs_ms: Transfer known EGPRS MS class when mergling old MS
  * tbf: Drop unneeded method set_tlli_from_ul
  * pdch.cpp: Fix logging line format in rcv_block wrong length
  * Set correct GSMTAP channel type for PDTCH messages returning error
  * decoding.cpp: Improve logging in malformed UL data parsing
  * tbf_dl: uint8_t is enough to store a TA value
  * encoding: Encode TA as unsigned and check validty against GSM48_TA_INVALID
  * encoding.cpp: Fix missing spacing in function param
  * pdch.cpp: Avoid dropping existing DL TBF during rcv_resource_request
  * pdch.cpp: Avoid resetting (egprs_)ms_class to unknown if not found in MS RadioAccCap
  * pdch.cpp: Fix wrong annoying log line about non-scheduled ResourceReq received
  * pdch.cpp: Store TLLI promptly on newly created TLLI in rcv_resource_request
  * Fix typo in log message
  * pdch: Drop unneeded notice log message in rcv pkt meas report
  * Introduce log macro helper LOGPMS
  * configure.ac: Fix trailing whitespace
  * doc: Update VTY reference xml file
  * Support setting rt-prio and cpu-affinity mask through VTY
  * pdch: rcv pkt meas rep: Allocate MS object early in path and use it
  * Fix recent typo preventing MS from registering
  * gitignore: Add __pychache__ dir
  * tbf: Don't log rlcmac_diag() output in separate lines
  * gprs_ms_storage.h: Set pointer to NULL instead of 0
  * Free all MS TBFs when receiving GPRS Suspension Request
  * cosmetic: fix indentation alignment
  * vty: Add 'show bts pdch' command
  * cosmetic: Fix indentation of for loops
  * cosmetic: Fix typo in comment
  * Fix crash accessing NULL tbf->pdch[first_ts]
  * contrib/jenkins: Enable parallel make in make distcheck
  * Improve debug logging for alloc algos
  * Fix several calls to LOGPAL
  * Move gprs_rlcmac_ul_tbf::window to correct file
  * Move constructor gprs_rlcmac_dl_tbf::BandWidth to correct file
  * tbf: Make window() available to tbf base class
  * tbf: Implement enable_egprs() once
  * tbf: Set MS during constructor time
  * Move ul_tbf allocation code to correct file
  * Move dl_tbf allocation code to correct file
  * tbf: Drop unused function disable_egprs()
  * tests: ms: Pass correct pointer in constructor instead of NULL
  * tbf: Clean up gprs_rlcmac_dl_tbf::handle()
  * alloc_algo_b: Select TRX with least assigned TFIs during TBF alloc
  * bts: define egprs_enabled as bool
  * cosmetic: Fix ws between if keyword and parenthesis
  * tbf_dl: Update (egprs_)ms_class for already known MS
  * cosmetic: tests: pcu_emu: fix trailing whitespace
  * gprs_ms: Use proper function to get CS
  * Move BTS initial values inside bts.cpp
  * pcuif: Improve BTS-supported CS/MCS handling
  * Move EGPRS MS mode set to gprs_ms.cpp
  * Take into account BTS supported (M)CS values when retrieving the maximum
  * Enable egprs support through PCUIF from BTS/BSC
  * pdch: Process received CS1-4 data blocks regardless of egprs_enabled
  * tbf_dl: Don't fake EGPRS MS class when no related info is available
  * tbf_ul: Allow non-egprs phones if EGPRS is enabled
  * Get rid of bts->egprs_enabled
  * Fix configuration of initial_(m)cs
  * Fix mcs_is_valid(): UNKNOWN value is not a valid (M)CS
  * gprs_ms: Avoid enabling EGPRS if no MCS are supported
  * tbf_ul: Log mismatching TLLI on log message
  * Fix ctr reports: Remove ctr description from already removed counter
  * encoding: Fix duplicate word in log str
  * sched: Fix sending GSMTAP DL data blocks with unset USF
  * sched: Use correct GMSTAP category for EGPRS DL data blocks
  * Support multiplexing of GPRS and EGPRS TBFs in one PDCH
  * pdch: packet_paging_request: Put back non-fitting paging entry where where it was
  * pdch: Log hexdump of decde failure for dl rlcmac block
  * csn1: Fix readIndex pointer change in CSN_VARIABLE_ARRAY
  * csn1: Log CSN_VARIABLE_ARRAY values as hex
  * main: generate coredump and exit upon SIGABRT received
  * tbf: Log previous TS when changing Control TS
  * Implement downgrade to DL MCS1-4 when USF for GPRS_only MS
  * Dl TBF: Get rid of LLC UI dummy blocks following other data
  * rlcmac: Fix typo in MT_PACKET_CELL_CHANGE_NOTIFICATION value_string
  * gprs_rlcmac_sched: Use helper structure to store several tbf pointer params
  * sched: Convert code handling next_list array to be size independant
  * Convert GprsMS and helpers classes to C
  * tbf: Fix wrong verb used in log message
  * .gitignore: ignore files ending with ~
  * doc: Improve CS/MCS GPRS/EGPRS considerations in User Manual
  * tbf: remove 'software error' logs from tbf_free
  * ms: Replace struct var with rate_ctr
  * AllocTest: Avoid queuing tons of to-be-freed ms
  * gprs_ms: Mark ms_ctrg_desc static
  * Workaround ASan false positive runtime errors under some platforms
  * Split PCU global PCU object from BTS object
  * Move T_defs_pcu from BTS to PCU object
  * Move force_two_phase field from BTS to PCU
  * Move alpha,gamma fields from BTS to PCU
  * Move dl_tbf_preemptive_retransmission field from BTS to PCU
  * Move dl_arq_type field from BTS to PCU
  * Move cs_adj* fields from BTS to PCU
  * Move cs_downgrade_threshold field from BTS to PCU
  * Move (m)cs_lqual_ranges fields from BTS to PCU
  * Move ns_dialect field from BTS to PCU
  * Move fc_* fields from BTS to PCU
  * tests/tbf: Allocate PCU per test instead of globally
  * Move ws_* fields from BTS to PCU
  * Move llc_* fields from BTS to PCU
  * Fix configuration mess of initial_cs/mcs between PCUIF and VTY
  * Unify BTS into a C usable structure
  * Get rid of bts singletons
  * Rename 'bts_data' leftovers to 'bts'
  * bts: combine bts_{init,cleanup} into consturctor/destructor methods
  * Get rid of unused gsm_timer.{cpp,h}
  * Convert gprs_bssgp_pcu.cpp to C
  * Move tbf::free_all static methods to proper object files
  * Convert osmo_bts_sock.cpp to C
  * Allow multiple bts objects in PCU
  * bts: Store RAC+CI from info_ind
  * Get rid of singleton gprs_bssgp_pcu_current_bctx()
  * Initial handling support for RIM messages
  * gprs_pcu: Use libosmocore osmo_cgi_ps_cmp API
  * ms: Drop always-false check
  * sched: Check if egprs is enabled in TBF rather than MS being egprs capable
  * tbf: Drop always-true condition checking for MS
  * encoding: fix typos in comment
  * ms: Set proper initial MCS values setting mode EGPRS_GMSK
  * ms: Properly handle EGPRS_GMSK mode in ms_max_cs_dl/ul()
  * Fix Dl EGPRS data blocks being generated occasionally on GPRS TBFs
  * sched: Avoid picking TBF with nacked dl blocks when GMSK is required
  * tbf: Make tbf_ms() param const
  * Introduce NACC support
  * NACC: Fix crash freeing struct if CTRL conn was refused during alloc
  * NACC: delay CTRL conn socket init until it's needed
  * NACC: allow setting keep time for entries in neigh and si cache
  * NACC: Configure neighbor and SI resolution timeout values
  * NACC: Send only Pkt Cell Chg Continue if SI retrieve fails
  * doc: Mark PCU node red in network node diagram
  * doc: Introduce section documenting NACC support
  * nacc: Improve log line failing to establish CTRL neigh conn
  * Update TS 04.60 references to new TS 44.060
  * Drop comment about an already implemented TODO
  * Move src/tbf.txt to doc/
  * encoding: Fix comment description of S/P field
  * tbf: Reuse stored result in variable in check_polling()
  * tbf: Constify some methods
  * nacc: Fix typo in function name
  * nacc: Implement Pkt Cell Change Continue retransmission
  * nacc: Avoid RIM procedures targeting cells under same PCU
  * rlc.h: Fix struct bit fields on big endian systems
  * cosmetic: fix typo in comment
  * nacc_fsm: Move code filling struct to helper function
  * nacc_fsm: Remove NACC_EV_RX_SI from in_event_mask of some states
  * nacc_fsm: Support receiving Pkt Cell Change Notify in state WAIT_RESOLVE_RAC_CI
  * nacc_fsm: nacc_fsm: Support receiving Pkt Cell Change Notify in state WAIT_REQUEST_SI
  * nacc_fsm: Support receiving Pkt Cell Chg Notif while in some advanced states
  * nacc_fsm: Improve log when sending RIM RAN-INFO to gather SI from remote cell
  * vty: Write 'neighbor resolution' config to file
  * cosmetic: fix line indentation
  * sched: Avoid selecting TBF to tx NACC Dl msg if no TFI is assigned
  * tests: Explicitly drop category from log
  * tests: Replace deprecated API log_set_print_filename
  * Use NULL as default value for pointer type
  * find_multi_slots: Avoid calling mslot_class_get_tx() on each iteration
  * find_multi_slots: Avoid multiple calls to mslot_class_get_rx()
  * find_multi_slots: Mark mslot_class properties const
  * find_multi_slots: Avoid multiple calls to mslot_class_get_type()
  * Use ALPHA value received in SI13 from PCUIF

  [ Vadim Yanitskiy ]
  * pcu_l1_if.cpp: fix NULL-pointer dereference in imsi2paging_group()
  * gsm_timer: fix comparison of constant LONG_MAX with an integer
  * encoding: fix log_alert_exit(): do not treat error as format string
  * tests/alloc: fix implicit conversion from 'double' to 'int8_t'
  * gprs_bssgp_pcu: fix invalid use of non-static data member 'frame'
  * gprs_bssgp_pcu: fixup: fix length check in gprs_bssgp_pcu_rx_dl_ud()
  * csn1: fix csnStreamDecoder(): avoid conditional calls to bitvec_read_field()
  * VTY: get rid of pcu_vty_go_parent() / pcu_vty_is_config_node()
  * VTY: install talloc context introspection commands
  * pcu_sock: fix memleak, allocate pcu_sock_state on stack
  * pcu_sock: cosmetic: fix typo in a comment message
  * tbf: cosmetic: fix spacing in gprs_rlcmac_tbf::create_ul_ass()
  * tbf: fix NULL pointer dereference in create_[ul|dl]_ass()
  * encoding: assert return value of bitvec_set_u64()
  * csn1: fix some mistaken CSN.1 error names
  * csn1: fix csnStreamDecoder(): catch unknown CSN_CHOICE values
  * tests/rlcmac: mark Packet Polling Request as malformed
  * csn1: fix existNextElement(): use bitvec_get_bit_pos()
  * tests/rlcmac: additionally match debug output of the CSN.1 codec
  * csn1: get rid of C++ specific code, compile with GCC
  * csn1: fix csnStreamDecoder(): do not subtract no_of_bits twice
  * csn1: fix csnStreamDecoder(): always keep remaining_bits_len updated
  * csn1: fix csnStreamDecoder(): update bit_offset in CSN_EXIST{_LH}
  * csn1: bitvec_get_uint() may return a negative, use %d
  * csn1: use proper format specifier for unsigned integers
  * gsm_rlcmac: fix misleading LOGP statement in decode_gsm_ra_cap()
  * tests/rlcmac: fix malformed MS RA capability in testRAcap()
  * tests/rlcmac: also verify encoding of MS RA Capability
  * tests/rlcmac: add a new test vector for Packet Resource Request
  * csn1: fix csnStreamDecoder(): skip bits unhandled by serialize()
  * tests/rlcmac: also enable logging for DRLCMACDATA category
  * rlcmac: fix encode_gsm_*(): do not suppress encoding errors
  * csn1: fix: do not return 0 if no bits left in the buffer
  * BSSGP: cosmetic use OSMO_IMSI_BUF_SIZE from libosmocore
  * BSSGP: fix: properly encode P-TMSI in RR Paging Request
  * pdch: fix packet_paging_request(): properly print paging MI
  * pdch: cosmetic: use GSM_MI_TYPE_* constants from libosmocore
  * fix: properly include pure C headers from C++ code
  * l1if: fix pcu_rx_rach_ind(): use proper format string specifiers
  * sba: fix possible memleak in SBAController::alloc()
  * TBF/UL: fix rcv_data_block_acknowledged(): print the actual TLLI
  * fix egprs_mslot_class_from_ra(): multislot class may not be present
  * l1if: fix: s/pcu_rx_rach_ind_pdtch/pcu_rx_rach_ind_ptcch/g
  * csn1: fix M_CHOICE: restirct maximum length of the choice list
  * csn1: fix csnStreamEncoder(): also check length of the choice list
  * csn1: fix csnStreamEncoder(): always check the choice index
  * csn1: fix: never use enumerated types in codec structures
  * encoding: cosmetic: use RLC_MODE_ACKNOWLEDGED where possible
  * RLC/MAC: implement decoding of EGPRS Packet Channel Request
  * encoding: fix write_ia_rest_egprs_uplink_sba(): add missing CHECK(rc)
  * doc/manuals: fix typo in overview.adoc: s/Omsocom/Osmocom/g
  * bts: refactor handling and parsing of RACH.ind
  * BTS::parse_rach_ind(): properly handle EGPRS Packet Channel Request
  * bts: add send_gsmtap_rach(), also send PTCCH/U over GSMTAP
  * bts: fix send_gsmtap_rach(): properly pack 11 bit RA
  * bts: cosmetic: use DUMMY_VEC for padding where possible
  * encoding: drop log_alert_exit(), use OSMO_ASSERT() instead
  * encoding: assert() presence of Downlink TBF
  * direct-phy: fix handle_ph_ra_ind(): handle PH-RA.ind on PRACH SAPI
  * debian/control: change maintainer to the Osmocom team / mailing list
  * pcu_l1_if: use proper format specifier for PCUIF version
  * pcu_l1_if: constify the argument of pcu_rx_info_ind()
  * pcu_l1_if: cosmetic: rename both 'trx'/'ts' to 'trx_nr'/'ts_nr'
  * pcu_l1_if: cosmetic: move struct 'gprs_rlcmac_pdch' into the for loop
  * pcu_l1_if: cosmetic: correct error message in pcu_rx_info_ind()
  * gsm_rlcmac: use consistent naming for [Extended] Packet Timing Advance
  * tbf: cosmetic: use GSM_MACBLOCK_LEN where possible
  * tbf: allocate the bitvec on stack in create_{dl,ul}_ass()
  * encoding: constify 'tbf' in UL/DL assignment functions
  * encoding: do not encode out of range Timing Advance values
  * encoding: fix RRBP field in write_packet_uplink_assignment()
  * encoding: use bool for use_egprs in write_packet_uplink_assignment()
  * encoding: pass pdch slot directly to encoding functions
  * encoding: clarify docstring for write_packet_downlink_assignment()
  * encoding: use CSN.1 codec to generate Packet Uplink Assignment
  * encoding: implement handing of hopping parameters
  * encoding: fix gen_freq_params(): do not check pdch twice
  * pcuif_proto: version 10: add frequency hopping parameters
  * pcu_l1_if: cosmetic: use ARRAY_SIZE() in pcu_rx_info_ind()
  * pcu_l1_if: correct logging level in pcu_rx_info_ind()
  * pcu_l1_if: cosmetic: make {local,remote}_sockaddr scoped variables
  * pcu_l1_if: use proper format string specifiers: %d -> %u
  * pcu_l1_if: print NSVC address in more common format
  * gprs_bssgp_pcu: make osmo_sockaddr local/sgsn arguments const
  * gprs_bssgp_pcu: fix possible memleak in gprs_nsvc_create_and_connect()
  * struct gprs_rlcmac_bts: remove unused 'nsei' field
  * gprs_bssgp_pcu: fix: do not crash on receipt of subsequent INFO.ind
  * doc/manuals: (re-)generate XML VTY reference automatically
  * fix tbf_select_slot_set(): use LOGP() instead of LOGPC()
  * main: remove line breaks in print_help(), increase spacing
  * main: add --vty-ref-mode, use vty_dump_xml_ref_mode()
  * BSSGP: use tlvp_val8() in gprs_bssgp_pcu_rx_paging_cs()
  * BSSGP: constify argument 'tp' of gprs_bssgp_pcu_rx_paging_{cs,ps}
  * TLLI 0x00000000 is a valid TLLI, use 0xffffffff instead
  * gprs_rlcmac_sched: fix incorrect SBA frame number assignment
  * bts: fix uninitialized memaccess in BTS::send_gsmtap_rach()
  * bts: fix uninitialized memaccess in BTS::send_gsmtap()
  * tests/rlcmac: add more test vectors for Packet Resource Request
  * contrib/osmo-pcu.spec.in: require libosmo* version 1.4.0
  * contrib/osmo-pcu.spec.in: add missing libosmoctrl dependency
  * vty: register libosmocore's FSM introspection commands

  [ Anders Broman ]
  * csn1: Update M_NULL CSN_DESCR to match wireshark
  * csn1: packet-csn1.c:179: warning: 'pui8' may be used uninitialized in this function
  * csn1: Fix warning with -Wmissing-prototypes
  * csn1: Try to fix cast discards '__attribute__((const))' qualifier from pointer target type
  * gsm_rlcmac.cpp: hanged all M_BIT macros to M_UINT, as M_BIT does not use the referenced hf.

  [ Jeff Morriss ]
  * csn1: shuffle decrements of remaining_bits_len

  [ Pascal Quantin ]
  * csn1: Fix an infinite loop in CSN.1 dissector when having more than 255 padding bits
  * gsm_rlcmac.h: Remove Uplink messages from the RlcMacDownlink_t structure
  * gsm_rlcmac: Enhance dissection of PSI1
  * gsm_rlcmac.cpp: Do not skip too many lines of the CSN_DESCR when the field is missing
  * gsm_rlcmac.cpp: fix an out of bounds access
  * gsm_rlcmac.cpp: fix another global-buffer-overflow error reported by ASAN
  * gsm_rlcmac.cpp: fix global-buffer-overflow error reported by ASAN

  [ Guy Harris ]
  * csn1: Don't cast away constness

  [ Alexis La Goutte ]
  * csn1: fix this statement may fall through [-Werror=implicit-fallthrough=] found by gcc7

  [ Bill Meier ]
  * gsm_rlcmac.h: #if 0 unused stuff

  [ Gerald Combs ]
  * gsm_rlcmac.h: Make sure we have a corresponding 'u' member to RlcMacDownlink_t for every call

  [ Vincent Helfre ]
  * gsm_rlcmac: add dissection of NAS container
  * gsm_rlcmac: improve dissection of MS RA Capability IE

  [ AndersBroman ]
  * gsm_rlcmac: Update : PACKET RESOURCE REQUEST to Release 14.0.0

  [ Keith ]
  * Send UL-CTRL Packet to GSMTAP even if we fail to decode.
  * Don't check ul_control_block before decoding into it.

  [ Harald Welte ]
  * csn1.c: Almost all of the logging is DEBUG, not NOTICE
  * TODO: remove those that have obviously been implemented 5+ years ago
  * bts.cpp: Increase constructor priority
  * Use osmo_fd_setup() whenever applicable
  * Use osmo_fd_*_{disable,enable}
  * gb manual: 08.16 -> 48.016 / 08.18 -> 48.018
  * gb manual: NS is implemented in libosmogb, not libosmocore
  * manuals/gb/ns.adoc: Update documentation regarding SNS capability
  * migrate to DLBSSGP as log sub-system for BSSGP

  [ Eric ]
  * configure.ac: fix libtool issue  with clang and sanitizer
  * tbf: add virtual destructor

  [ Philipp Maier ]
  * gprs_debug: Use only LOGL_NOTICE as default loglevel
  * vty: add attributes to VTY commands indicating when they apply
  * pcu_main: add commandline option --vty-ref-xml
  * gprs_bssgp_rim: add serving BSS NACC application

  [ Oliver Smith ]
  * contrib: import RPM spec
  * contrib: integrate RPM spec
  * Makefile.am: EXTRA_DIST: debian, contrib/*.spec.in
  * contrib/jenkins: don't build osmo-gsm-manuals
  * configure.ac: set -std=gnu11

  [ Neels Hofmeyr ]
  * use new osmo_mobile_identity api (avoid deprecation)
  * paging: pass struct osmo_mobile_identity, not encoded IE bytes

  [ Alexander Couzens ]
  * pcuif_proto: version 0xa: add support for IPv6 NSVCs
  * Revert "pcuif_proto: version 0xa: add support for IPv6 NSVCs"
  * pcuif_proto: version 10: add support for IPv6 NSVCs
  * Use the new NS2 lib
  * Rework NS configuration over the info indication
  * pcu_l1_if: fix misaligned assignment of remote address
  * NS2: follow the change of ownership
  * gprs_bssgp_pcu: follow ns2 library changes
  * NS2: rework handling of unknown primitive
  * ns2: follow ns2 dialect changes
  * ns2: follow changes to add a unique name to all binds
  * ns2: follow ns2 sns api changes
  * gprs_ns2: set default dialect to ipaccess
  * gprs_rlcmac_sched: don't leak a sched_dummy()
  * gprs_rlc_ts_alloc: ensure no rolling slots are allocated
  * follow gprs_ns2 API enum changes
  * gprs_ns2: migrate to the new vty syntax
  * gprs_bssgp: rework and rename ns_create_nsvc -> ns_configure_nse
  * gprs_bssgp: rename gprs_ns_config -> gprs_ns_update_config
  * gprs_bssgp: use gprs_ns2_sns_add_bind() to allow the NSE to use the binds for IP-SNS configuration

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Tue, 23 Feb 2021 14:41:00 +0100

osmo-pcu (0.8.0) unstable; urgency=medium

  [ Alexander Couzens ]
  * tests: test encoding of egprs ul ack/nacks
  * tbf_dl: add comments to the scheduler
  * encoding: fix space, tabs

  [ Vadim Yanitskiy ]
  * osmobts_sock.cpp: pcu_sock_cb(): use libosmocore's socket API
  * osmobts_sock.cpp: pcu_sock_read(): use stack buffer, not heap
  * osmobts_sock.cpp: pcu_sock_read(): further simplify the code
  * osmobts_sock.cpp: do not print the same debug message twice
  * VTY: refactor pcu_vty_show_ms_all(): use show_ms()
  * VTY: fix command 'show tbf all': properly filter TBFs
  * BSSGP: do not reject SUSPEND ACK / NACK messages
  * BSSGP: properly print BVCI for signalling messages (BVCI=0)
  * tests/tbf: suspend warnings about the link quality measurements
  * GprsMs::update_cs_ul(): clarify the meaning of old_link_qual
  * gprs_bssgp_destroy(): fix memleak and NULL-pointer dereference
  * PTCCH: implement basic message codec and API
  * PTCCH: properly handle RTS.req for PCU_IF_SAPI_PTCCH
  * pcuif_proto.h: extend RACH.ind with TRX / TS numbers
  * PTCCH: properly handle RACH.ind for PCU_IF_SAPI_PTCCH
  * VTY: add warning about changing PCU socket path at run-time
  * VTY: cosmetic: use osmo_talloc_replace_string()

  [ Pau Espin Pedrol ]
  * cosmetic: tbf: Rename T and N arrays
  * Use proper API osmo_timer_setup() to set up timer struct
  * Introduce osmo_tdef infra and timer VTY commands
  * bts.cpp: Fix osmo_tdef initialization on older g++ compilers
  * Use osmo_tdef for BSSGP T1 and T2
  * Use osmo_tdef to implement T3190
  * tests: TbfTest: Unify stderr and stdout to ease debugging
  * Use osmo_tdef to implement ms-idle-time
  * Use osmo_tdef to implement dl-tbf-idle-time
  * pdch.cpp: Refactor bitvec param passing in rcv_control_block
  * pdch.cpp: Use pcu_l1_meas previously filled by lower layers
  * cosmetic: fix whitespace
  * Move out tbf subclasses from tbf.h to their own headers
  * Move tbf_{dl,ul} child constructors to respective .cpp files
  * tbf_dl: Setup m_llc_timer in constructor using osmocom API
  * tbf_dl.cpp: Remove dup call to tbf_update_ms_class() in state GPRS_RLCMAC_WAIT_RELEASE
  * vty: Fix osmo_tdef timers not listed in write config
  * Log RACH Requests using GSMTAP
  * Log AGCH and PCH blocks using GSMTAP
  * pcu_l1_if.cpp: Fix GSMTAP Imm Assign PCH wrong encoding
  * pcu_l1_if.cpp: Drop unneeded byte in Imm Ass PCH buffer
  * pcu_l1_if.cpp: Imm Assign PCH: clarify size of different items
  * pcu_l1_if.cpp: Replace value 23 with libosmocore's GSM_MACBLOCK_LEN
  * Fix assertion hit upon CCCH Paging Request
  * doc: vty: Update osmo-pcu_vty_reference.xml
  * Clarify (M)CS related VTY attributes
  * Remove dash from name used in VTY cmd prompt
  * tbf_dl.cpp: Fix typo in log line
  * pcu_l1_if: Check pag_req id_lv len fits buffer
  * prs_bssgp_pcu.cpp: Mark priv funcs as static and remove trailing whitespace
  * Fix trailing whitespace
  * fix typo in log message
  * Log BVCI PTP value upon msg recv
  * Split identity_lv param into mi+mi_len

  [ Oliver Smith ]
  * doc: update generated VTY reference
  * tbf_dl: make preemptive retransmission optional
  * Forward ETWS Primary Notification to MS
  * tests/app_info: fix compiling with older g++
  * configure.ac: set C and C++ dialects

  [ Harald Welte ]
  * manual: Fix copy+paste error
  * manual: Fix documentation missing "-D" command line option
  * manual: Add missing documentation for '-i' command line option

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Fri, 03 Jan 2020 19:40:02 +0100

osmo-pcu (0.7.0) unstable; urgency=medium

  [ Rafael Diniz ]
  * Added support for daemonize to osmo-pcu.
  * Fix help message formatting of osmo-pcu.

  [ Max ]
  * Don't install pcuif_proto.h header
  * Move C include to proper place
  * Add define for dummy burst string
  * Add encoding tests for Immediate Assignment
  * Clarify write_immediate_assignment() signature
  * Restructure IA Rest Octets encoders
  * Rewrite Packet Downlink Assignment
  * Rewrite EGPRS Packet Uplink IA Rest Octets for MBA
  * Rewrite EGPRS Packet Uplink IA Rest Octets for SBA
  * MCS: internalize 'family' parameter
  * EDGE tests: reduce code duplication
  * MCS: remove dead code
  * EDGE tests: remove no-op check
  * Use msgb_eq_data_print() in tests
  * Tighten lqual table limits check
  * Enable LGLOBAL logging for TBF tests
  * Log (M)CS UL update errors
  * MCS: move Coding Scheme enum outside of class definition
  * Make get_retx_mcs() into regular function
  * MCS: remove unused function
  * Debian: bump copyright year
  * Use unique NSEI/BVCI/NSVCI in TBF tests
  * MS store: move test helper to unit test
  * Explicitly clean up BTS singleton
  * MCS: move HeaderType enum outside of class definition
  * MCS: use value_string for conversion
  * TBF-DL: log MCS as string
  * Fix TA index encoder
  * MCS: move Mode enum outside of class definition
  * MCS: add mcs_is_*() helpers
  * MCS: add Channel Coding Command encoder
  * Fix Channel Coding Command for MCS
  * Rewrite Packet Uplink IA Rest Octets for MBA
  * Rewrite Packet Uplink IA Rest Octets for SBA
  * Use Timing Advance Index in UL assignments
  * TBF: update MCS counters
  * TBF-DL: cosmetic update for helper routines
  * Update IA Rest Octets encoding
  * TS alloc: expand tests log
  * vty: add commands to show TBF of a certain kind
  * Update MCS selection for retransmission
  * cosmetic: use const pointer for bts_data
  * Add test for MS mode and (M)CS settings
  * Use libosmocore for IMSI parsing

  [ Harald Welte ]
  * Mark gprs_ns_reconnect() as static (not used outside of C file)
  * Optionally Use the NS Sub-Network-Service (SNS) on Gb
  * pcu_l1_if: Fix erroneous endian-swapping of the CellID
  * Forward GPRS SUSPEND REQ from BTS to SGSN using BSSGP
  * gprs_debug: Use named initializers and explicit array indicies
  * bssgp: Fix dead code: PDUT_STATUS can never reach this part

  [ JF Dionne ]
  * encoding: Fixes TMSI vs MI bit selection in repeated page info

  [ Oliver Smith ]
  * tests: use -no-install libtool flag to avoid ./lt-* scripts
  * debian: create -doc subpackage with pdf manuals
  * contrib/jenkins.sh: run "make maintainer-clean"

  [ Daniel Willmann ]
  * Include pdch.h in bts.h even if we're not compiling C++
  * oc2g: Remove custom alarms
  * oc2g: Change log type (Litecell15->Oc2g)
  * jenkins.sh: Add oc2g build support
  * manuals: Add script to regenerate vty/counter documentation
  * manuals: Update VTY documentation

  [ Jean-Francois Dionne ]
  * Initial commit for OC-2G support.

  [ Minh-Quang Nguyen ]
  * OC-2G: Fix missing header
  * OC-2G: Fix TA adjustment
  * OC-2G: Always use positive TA information provided in PH-RA-IND

  [ Alexander Couzens ]
  * gprs_bssgp_pcu: make gprs_bssgp_ns_cb public
  * gprs_bssgp_pcu: explicit allocate & initialize bssgp_nsi instance
  * encoding: correct encoding of CRBB in ACK/NACK when not byte aligned
  * encoding: use `/* */` for comments instead of `#if 0 #endif`
  * egprs_rlc_compression: fix white spaces
  * tests/BitcompTest: fix wording in log message
  * rlc: replace int with uint16_t
  * Encoding: drop struct gprs_rlcmac_bts* from all functions
  * decompress_crbb: add length argument for search_runlen
  * Encoding: write_packet_ack_nack_desc_egprs: don't use a reference for rest_bits
  * bts.cpp: ensure left-shift operation does not exceed uint32_t
  * Encoding: use uint16_t when interacting with the window object
  * Encoding: ACK/NACK: always encode with length field present

  [ Keith ]
  * Cosmetic: Osmcoom -> Osmocom

  [ Vadim Yanitskiy ]
  * src/pcu_l1_if.cpp: fix: properly pass measurements from PCUIF
  * gprs_bssgp_pcu_rx_dl_ud(): fix: BSSGP_IE_IMSI is optional
  * gprs_bssgp_pcu.cpp: check return code of gsm48_mi_to_string()
  * gprs_bssgp_pcu_rx_dl_ud(): use OSMO_IMSI_BUF_SIZE

  [ Thorsten Alteholz ]
  * fix spelling errors detected by lintian

  [ Eric Wild ]
  * ubsan: fix shift

  [ Pau Espin Pedrol ]
  * Remove undefined param passed to {logging,osmo_stats}_vty_add_cmds
  * Require newer libosmocore to avoid compile failures

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Wed, 07 Aug 2019 21:09:53 +0200

osmo-pcu (0.6.0) unstable; urgency=medium

  [ Harald Welte ]
  * debian/rules: Don't overwrite .tarball-version
  * gprs_rlcmac_received_lost(): Fix regression / uninitialized now_tv
  * initial checkin of manuals to public repo
  * Add link to Asciidoc source code of manual
  * Initial place-holder for the new Gb/IP interface documentation
  * Gb message sequence chart: flip sides (SGSN should be right)
  * Gb message sequence chart: Add notion of PCU unix domain socket
  * Gb: Various spelling fixes
  * gb: Some language improvements, formatting changes
  * consistently use '3GPP TS' not sometimes 3GPP TS and sometimes TS.
  * gb/NS: Clarify the language regarding the UDP port numbers / socket
  * vty-ref: Update URI of docbook 5.0 schema

  [ Pau Espin Pedrol ]
  * Cleanup of systemd service files
  * configure.ac: Set CXXFLAGS during --enable-sanitize
  * Install systemd services with autotools
  * Move examples/ to doc/examples/
  * Install osmo-pcu.cfg to docdir/examples
  * Allow easily disabling GFDL references

  [ Stefan Sperling ]
  * check for overlong unix socket paths

  [ Max ]
  * deb: add missing copyright file
  * OsmoPCU: fix Gb documentation front page
  * OsmoPCU: expand NS documentation
  * OsmoPCU: expand BSSGP documentation
  * OsmoPCU: add MSC chart

  [ Neels Hofmeyr ]
  * Importing history from osmo-gsm-manuals.git
  * make clean: also remove generated image files
  * add 'make check' target
  * fix 'make clean': shell glob, ignore failure
  * refactor Makefile build rules, don't use the FORCE

  [ Jonathan Brielmaier ]
  * fix various typos across all manuals

  [ Philipp ]
  * configuration: fixing typos

  [ Alexander Couzens ]
  * OsmoPCU: add rate counter documentation

  [ Daniel Willmann ]
  * Change OpenBSC mentions to OsmoBSC where applicable

  [ Oliver Smith ]
  * build manuals moved here from osmo-gsm-manuals.git
  * Fix DISTCHECK_CONFIGURE_FLAGS override
  * contrib/jenkins.sh: build and publish manuals
  * contrib: fix makedistcheck with disabled systemd

 -- Harald Welte <laforge@gnumonks.org>  Mon, 21 Jan 2019 19:03:52 +0100

osmo-pcu (0.5.1) unstable; urgency=medium

  [ Harald Welte ]
  * Don't register SIGHUP handler without actually handling SIGHUP

  [ Pau Espin Pedrol ]
  * tbf: Fix memset(0) on object with no trivial copy-assignment
  * rlc: Fix memset(0) on object with no trivial copy-assignment
  * jenkins.sh: use flag --enable-werror for sysmo and none
  * tbf: Use incrementing id for rate_ctr_group_alloc
  * tbf: Replace '.' in counter names with ':'

  [ Stefan Sperling ]
  * fix a one-byte stack buffer overrun in osmo-pcu
  * read monotonic clock with clock_gettime() instead of gettimeofday()
  * fix time-delta calculations for measurement reports
  * change log level of "DL packet loss" log messages
  * check bssgp_tlv_parse() return code in gprs_bssgp_pcu_rcvmsg()

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Fri, 27 Jul 2018 21:56:38 +0200

osmo-pcu (0.5.0) unstable; urgency=medium

  [ Neels Hofmeyr ]
  * jenkins: use osmo-clean-workspace.sh before and after build
  * vty: skip installing cmds now always installed by default
  * implement support for 3-digit MNC with leading zeros
  * configure: add --enable-werror
  * mslot_class: find_free_tfi(): use uint32_t to shift 1 << 31
  * mslot_class: two more: use uint32_t to shift 1 << 31
  * Revert "Use Timing Advance Index in UL assignments"
  * Revert "Rewrite Packet Uplink Assignment"
  * Revert "Rewrite Packet Downlink Assignment"
  * configure: fix --enable-sysmocom-dsp and --with-sysmobts flags
  * configure: properly quote CFLAGS in lc15 check
  * Revert "Rewrite EGPRS Packet Uplink Assignment"
  * use osmo_init_logging2() with proper talloc ctx

  [ Minh-Quang Nguyen ]
  * PCU: Fix TA adjustment
  * PCU: display TA information in TBF stats

  [ Max ]
  * Remove unused parameter
  * Move multislot table to separate file
  * Replace '.' in counter names with ':'
  * Fix compiler warning
  * TBF: log timer override
  * TBF: fix compiler warning in test
  * TBF: expand timer logging
  * vty: print class and TBFs for each MS
  * DL window: constify resend_needed() function
  * TBF: move EGPRS enablement into (U|D)L-TBF
  * TBF-DL: fix misleading idle time check
  * TBF: remove unused variable
  * Remove unused includes and forward declarations
  * Fix tests after rate_ctr change
  * Introduce LOGTBF* for consistent logging
  * TBF: implement independent T31xx timers
  * TBF: add N3101 counter
  * Fix warnings
  * Add function to get max supported MS class
  * Add --enable-sanitize configure option
  * Enable sanitize for CI test
  * Add tests for pcu_lsb()
  * Add optional profiling support
  * TBF: unify timer handling
  * TBF: log timer invocation source
  * TBF: bail out for unknown timers
  * Fix llc_queue_size() type
  * TBF-DL: mark rcvd_dl_ack() parameters as boolean
  * window: move encoding into functions
  * cosmetic: clarify coding scheme and puncturing
  * Make TBF state private
  * TBF: cleanup state flag handling
  * Clarify RACH-related interfaces
  * TBF-UL: add simpler test helper
  * Avoid code duplication in TBF test
  * TBF: move window parameters to UL/DL level
  * TBF-DL: move priority computation into function
  * TBF: unify EGPRS window calculation
  * Don't access TBF internals in vty functions
  * Fix jenkins.sh to match jenkins job axis filter
  * Allocate global context for TypesTest
  * Fix sanitizer build
  * Rewrite EGPRS Packet Uplink Assignment
  * Rewrite Packet Downlink Assignment
  * Rewrite Packet Uplink Assignment
  * Use Timing Advance Index in UL assignments
  * Allow specifying sysmocom headers explicitly
  * TBF: log source of state transitions
  * jenkins.sh: Disable building doxygen for deps
  * Set V_N and V_B to known initial state
  * TBF: add dedicated log categories
  * TBF: make UL/DL state internal
  * TBF: make UL ack state internal
  * TBF: make poll state internal
  * TBF: adjust test log levels
  * Add tests for find_multi_slots()
  * AllocTest: adjust test_alloc_b()
  * AllocTest: expand test output
  * AllocTest: remove assumption on max MS class
  * Add multislot classes from latest spec
  * cosmetic: fix whitespace issue with include files
  * TBF: decrease L1 logging verbosity in test
  * TBF: override send function via linker option
  * Simplify TS alloc: adjust allocator signatures
  * Simplify TS alloc: fix allocation calls
  * Simplify TS alloc: avoid TS reassignment
  * Simplify TS alloc: use defines for constants
  * Simplify TS alloc: adjust function signatures
  * TS alloc: print suggested TRX on allocation errors
  * Simplify TS alloc: internalize TRX check
  * TBF: decrease logging verbosity for traffic
  * TBF: add helpers for assignment type handling
  * TBF: show assignment kind in vty
  * vty: drop unused function
  * RACH: improve single block detection
  * TBF: move common test code into functions
  * emu: use libosmocore definitions
  * Use explicit type for pcu_lsb()
  * Move paging generation into PDCH
  * Move include guard to the top
  * Update header includes
  * Simplify TS alloc: split off RX mask computation
  * Simplify TS alloc: separate capacity computation
  * Simplify TS alloc: split allocation
  * Simplify TS alloc: split USF/UL allocation
  * Move PDCH-related functions into separate files
  * Simplify TS alloc: don't use PDCH for free TFI
  * Simplify TS alloc: constify max dl slot func
  * TBF: make network counters internal
  * Simplify TS alloc: move slot assignment
  * Simplify TS alloc: move slot check into functions

  [ Pau Espin Pedrol ]
  * Print error cause of pcu socket connect failure
  * gprs_bssgp_pcu.cpp: Comment unused function parse_ra_cap

  [ Stefan Sperling ]
  * Make osmo-pcu wait for BTS to become available at start-up time.
  * improve documentation of Encoding::write_paging_request()

  [ Alexander Couzens ]
  * pcuif_proto.h: fix whitespaces and indention
  * pcuif_proto: add version 8 features

  [ Philipp Maier ]
  * cosmetic: remove runaway semicolon
  * pcu_l1_if: add frame number to log output
  * tbf: add frame number to log output

 -- Pau Espin Pedrol <pespin@sysmocom.de>  Thu, 03 May 2018 16:20:00 +0200

osmo-pcu (0.4.0) unstable; urgency=medium

  [ Holger Hans Peter Freyther ]
  * Initial release.

  [ Max ]
  * Use value string check from osmo-ci
  * cosmetic: tighten direct-phy related code
  * Support receiving SI13 from BTS
  * Move gsmtap and accounting into separate function
  * cosmetic: convert explicit warnings to fixme/todo
  * Assert valid CS
  * TBF-DL: extend index check for RLC block copy
  * TS alloc: properly count UL slots
  * cosmetic: reformat multislot classes table

  [ Philipp Maier ]
  * gb: allow only packets from a specific SGSN

  [ Harald Welte ]
  * tests: Don't use private version of log_info but global gprs_log_info
  * Call osmo_init_logging() before static BTS constructor
  * Forward GPRS SUSPEND REQ from BTS to SGSN using BSSGP
  * Debian: Cosmetic changes to control file; add better Description
  * Debian: print test results in case of failure + clean-up autotest
  * Debian: migrate from DEB_BUILD_HARDENING to DEB_BUILD_MAINT_OPTIONS
  * Debian: upgrade to debhelper 9 / Standards 3.9.8

 -- Harald Welte <laforge@gnumonks.org>  Sun, 29 Oct 2017 12:03:05 +0100

osmo-pcu (0.3.0) UNRELEASED; urgency=medium

  * Initial release.

 -- Holger Hans Peter Freyther <holger@moiji-mobile.com>  Fri, 01 Apr 2016 18:59:00 +0200
