diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2022-11-28 18:51:53 +0100 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2022-11-30 20:10:35 +0100 |
commit | 3b5e8982715f110b92d9249f3db612e4515ad82c (patch) | |
tree | ecafd0e323cf029021abbb8c356eb8c0f8d24a29 /include/osmocom/bsc/paging.h | |
parent | 8c723f515714d0699446492961e146b9c24584be (diff) |
paging: Split paging queue into 2 queues: initial and retrans
Initial requests: paging requests which haven't been yet transmitted
Retrans requests: paging requests which have already been transmitted at
least once.
Until now one queue was used (llist) to store both. The initial requests
were stored at the start of the queue in FIFO order. After the last
initial requests, the retrans requests followed also in FIFO.
This ordering was used in order to prioritze scheduling of initial
paging requests over retransmit paging requests.
In the end, having both types in the same list only make code handling
the list more complex.
Hence, this patch splits the shared llist into 2 llists.
Related: SYS#6200
Change-Id: Ib68f2169e3790aea4ac77ec20ad79f242b7c2747
Diffstat (limited to 'include/osmocom/bsc/paging.h')
-rw-r--r-- | include/osmocom/bsc/paging.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/include/osmocom/bsc/paging.h b/include/osmocom/bsc/paging.h index dd1bb9eb6..b10c39893 100644 --- a/include/osmocom/bsc/paging.h +++ b/include/osmocom/bsc/paging.h @@ -108,10 +108,15 @@ struct gsm_paging_request { * to the gsm_bts, a timer and some more state. */ struct gsm_bts_paging_state { - /* pending requests */ - struct llist_head pending_requests; + /* pending requests (initial paging request, no retransmits) */ + struct llist_head initial_req_list; + /* Number of requests in initial_req_list */ + unsigned int initial_req_list_len; + /* pending requests (already transmitted at least once) */ + struct llist_head retrans_req_list; /* Number of requests in pending_requests_len */ - unsigned int pending_requests_len; + unsigned int retrans_req_list_len; + struct gsm_bts *bts; struct osmo_timer_list work_timer; |