This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.
Holger Freyther zecke at selfish.orgHi, I have finally an idea on how to go from varpoware "oh I need to merge that" to actually merging stuff and started to work on that. The one goal I have is to create a BSC/MSC split inside our codebase and to make MSC functionality only communicate via a given BSC API. This move will allow to do some things transparently to the MSC code, it includes automatic RLL establishes for SAPI, very early/early assignment will become transparent and in the future I can roll out my "subscriber task" scheduler to do stuff like SMS submit during a voice call... Here is my plan on how to get there... 1.) Create a new structure for the MS Connection. This would happen on a GSM 0808 Complete Layer3 Information message (e.g. CM Service Request, Paging Response). The name I picked is total rubish but can easily changed later. I have embedded this connection into the struct gsm_lchan and moved all MSC attributes into this new structure. So right now we have a 1:1 mapping between a GSM LCHAN and the Subscriber Connection. 2.) Moved transaction code to work on this new structure instead of the lchan, I verified MT-SMS, MO-SMS, MT-Call, MO-Call. So the plan is to remove the occurence of GSM LCHAN from the MSC code paths, this will also mean to remove direct calls to RSL, RLL, paging.c. 3.) I picked gsm_04_11.c as the first file from the MSC (actually SMSC) code to go without the lchan. I have removed the direct call to RSL and placed it behind a new GSM0808 DTAP API. This would be the place where we figure out the real LCHAN.. This is all working and I can build on top of that until I reach the goal at which point I can forward port some of my code from the On Waves branch and instead of playing MSC myself, put it into SCCP... <- now comes the stuff that I want to complete by the end of next month -> 4.) Currently when compiling you see a "BROKEN" warning, this is more that it is broken conceptually as the code handles paging and RLL establishment by itself. So the idea will be to move my "bssap.c" code to master and handle the RLL establishment and paging inside the new BSC API. This would involve queuing of messages... 5.) Remove the callback for SMS from abis_rsl.c and create a bsc_api_init with callbacks for various things (mostly Create Connection, Clear Request, Data). At this point the gsm_04_11.c will be free of BSC code. 6.) Move it to gsm_04_08. This will involve adding new commands (resembling the GSM 08.08) message names, sharing some callbacks between SAPI=0 and SAPI=3 and having a dispatch. E.g. later we should have a handler for new connection which would run authentication and then dispatch the handling of the connection to a task, on task completion close the channel or give it to the next task. After this we should magically be able to switch between very early/early assignment in the BSC code and the MSC will not recognize this, also TCH/H handling with be mostly transparent. 7.) Remove the 1:1 mapping of of GSM LChan to the new struct. Actually the new struct should include two lchan's (in case of handover or assignment), I will have to figure out on how to marry the handover code with that... 8.) I could rebuild my bsc_msc_ip.c on top of the new BSC API and all I need to do is to handle MSC. We could also create a msc_bsc_ip.c which takes these SCCP messages and sticks it into the MSC code of ours and we have a MSC. as usual... any help is more than welcome. z.