Commit Graph

3619 Commits

Author SHA1 Message Date
Harald Welte 5250da87ad Add funding link to github mirror
see https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository

Change-Id: I5e0beef247b80ceab6eee207b5c6ce9caa39cd84
2024-03-23 11:29:55 +01:00
Oliver Smith 78540e4475 debian: initial layer23 packaging
Related: OS#6409
Change-Id: I3713201233e13fca5ea4e0b8c4df913c787965f5
2024-03-19 12:58:58 +01:00
Vadim Yanitskiy 0d1ab4c8d2 trxcon: fix prim_compose_mr(): indicate proper tn
Change-Id: I0046f9c103bcb9207f0c2643c6a806bd56553d77
2024-03-11 04:06:13 +07:00
Vadim Yanitskiy fcaaaaf396 trxcon: fix hex formatting in prim_enqeue()
Change-Id: I78c310bd9cc5d69bbeca575ebf4a480f16971e93
2024-03-11 04:06:13 +07:00
Vadim Yanitskiy f12b17dffb mobile: fix GAPK I/O producing too many UL frames
GAPK I/O is currently generating too many UL voice frames, causing
Tx queue overflow in the L1 PHY.  Change the logic to make DL voice
frames drive the Uplink processing chain, like we do for CSD.

Change-Id: I3a7fa223cb592acd5b850819e0682c9c8f81e9d1
2024-02-06 19:15:09 +07:00
Vadim Yanitskiy 20107916e5 mobile: set TRAFFIC.{ind,req} mode during call establishment
Now that we support data (CSD) calls in addition to voice calls,
we can no longer initialize the TRAFFIC.{ind,req} routing mode
in gsm48_rr_init().  We need to apply the appropriate TCH routing
mode *during call establishment* based on its type and the
configured I/O handler type.

After this patch, one can have the following configuration:

tch-voice
 io-handler l1phy
tch-data
 io-handler unix-sock
 io-tch-format ti

so that the io-handler setting for voice would not affect data calls.
Before this patch, the L1 PHY (specifically, Calypso firmware) would
not route TRAFFIC.{ind,req} during data calls at all.

Thanks to this patch, it's also no longer required to restart the
mobile application after changing voice or data I/O handler.

Change-Id: Iab68cb47c28380a9c1efc149c6196ea54f75fdb8
Related: OS#4396
2024-02-06 02:00:01 +07:00
Vadim Yanitskiy 1b79142f0f mobile: init TCH state earlier (on receipt of CC ALERTING)
During a Mobile Originating voice call, we would normally start
receiving traffic indications with ringback tone (or even some
melody) before the call gets CONNECTed.  So in order for the user
to be able to hear that, we need to init the voice call handler
earlier (on receipt of CC ALERTING message).

We should not be transmitting voice/data frames before the call
gets CONNECTed, so add 'rx_only' flag to the TCH state.  In
tch_send_msg() drop msgb if this flag is set.

Rx only mode makes no sense for data calls, so in tch_recv_cb() we
discard received DL frames and thus do not trigger sending UL frames.

Change-Id: Idd32c823639cc1f9999d77fcefe7e260e31a85ec
Related: OS#4396
2024-02-06 01:59:39 +07:00
Vadim Yanitskiy b512a08a7c mobile: use tch_send_msg() in tch_csd_tx_to_l1()
Do not access the RR API directly, use TCH API for sending UL data.

Change-Id: Icd5b5fad835feecd96a83fa5c83ed08037826fa6
Related: OS#4396
2024-02-06 01:59:39 +07:00
Vadim Yanitskiy 45a11442e6 mobile: disable TCH/F14.4 (not implemented)
Change-Id: Ia8dff81d4b56c9d6599059f3a5a2964d3cd95829
Related: OS#4396, OS#6346
2024-02-06 01:59:39 +07:00
Vadim Yanitskiy 21d63cd6c5 mobile: assert() values returned by get_string_value()
Change-Id: I58bc31a4c3d952f71ed2c53b65bb30538172ca4e
2024-02-06 01:59:39 +07:00
Vadim Yanitskiy e67a21049a mobile: cosmetic: fix '(ptr *) foo' shour be '(ptr *)foo'
Change-Id: Id6ed92b27c61ae9dfbb702a3abdc75e5daa8235d
2024-02-06 01:59:39 +07:00
Vadim Yanitskiy aab5d12bdd layer23/modem: handle and forward L1CTL UL BLOCK.cnf
Change-Id: I9255ac17529b5ac260f9a0f141f3af6b3b72a802
Depends: libosmo-gprs.git I145b9586f83ae0235b4648916bd44996e8dc57f0
2024-02-05 15:34:28 +00:00
Vadim Yanitskiy bec5f4c4f8 layer23: cosmetic: clarify GPRS related L1CTL logging
Change-Id: Idcde85c132a52b7bc6c3f2f58c2eac0a509b7b43
2024-02-05 15:33:54 +00:00
Vadim Yanitskiy fc02727700 trxcon/l1sched: trigger sending UL BLOCK.cnf for PDTCH
In tx_pdtch_fn(), delay sending DATA.cnf until bid=3.  Otherwise we
send it too early (at bid=0) and trick the upper layers (RLC/MAC)
to believe that the whole block (all bursts) has been transmitted.

Change-Id: If32fafeef0ea347ed3800e6b67349bf12e66047f
2024-02-05 15:33:54 +00:00
Vadim Yanitskiy a6c837cd98 l1gprs: implement UL BLOCK.cnf (L1CTL_GPRS_UL_BLOCK_CNF)
Change-Id: I56e0b5631c7446390adbfc5664e56f56ebb88cc1
2024-02-05 15:33:54 +00:00
Pau Espin cf32f34292 modem: Improve logging when forwarding data to GRR
Change-Id: Idf80c0fa1c8293afbe354442a72f5b1c5a84f9e1
2024-02-05 15:27:25 +00:00
Pau Espin 1df9fecf16 apn_fsm: Set default timeout for APN activation to 65s
The current timeout is too low, taking into account that SM PDP
Activation timeout is already 30. When SM fails, it will retry sending
PDP Context Activation Req. Hence, give it enough time to at least retry
once, plus some extra buffer time (eg to go through GMM attach once).

Change-Id: I34f9b0a5ad5767155dc3e4c0ac1c4bf1521be596
2024-02-05 15:27:25 +00:00
Vadim Yanitskiy e344d6b7c2 l1gprs: minor changes to l1gprs_handle_rts_ind()
* assert() the given TDMA Tn before accessing gprs->pdch[]
* do not check TDMA Fn, as there can be no RTS.ind for PTCCH/U
** unlike PTCCH/D, we send Access Bursts on PTCCH/U

Change-Id: Ie74d1c4123715d61875c4c956eb4a1ce97ed5f24
2024-02-05 12:55:31 +00:00
Vadim Yanitskiy e2529ea58f mobile: fix -Wmaybe-uninitialized in tch_csd_rx_{to,from}_l1()
It's unlikely to happen as long as all TCH_DATA_IOF_* variants are
handled in the switch statements, but still gcc does complain.

Change-Id: I0a81d5c4f11feb7cf73771c23848dee9ce6ec620
2024-02-03 02:38:24 +07:00
Vadim Yanitskiy ff0e47de6b trxcon/l1gprs: print msgb hexdump in prim_dequeue_pdtch()
Change-Id: I1f82d53a46017c805c70b9dcccad058048549220
2024-02-02 00:09:28 +07:00
Vadim Yanitskiy 006bfe5c3a trxcon/l1gprs: print dropped prims in l1sched_reset_lchan()
Change-Id: Iaa11b5cee16dc43ef01c38be756864c2b3b57835
2024-02-02 00:09:24 +07:00
Vadim Yanitskiy 57ef3dea1b mobile: VTY: store/read data call params to/from config file
We already have VTY commands to configure data call parameters at
run-time, but so far there was no way to save and restore them.
This commit adds the respective commands to TCH_DATA_NODE.

Change-Id: I4453f2e7e048b3f3ebb1727f6d26f018c792c92d
Related: OS#4396
2024-01-26 14:29:44 +00:00
Vadim Yanitskiy 4b496a8c1c mobile: fix rate adaption checking for MO/MT CSD calls
Currently we unconditionally expect the rate adaption (octet 5) in
the Bearer Capability IE to be GSM48_BCAP_RA_V110_X30.  This is
correct for UDI (GSM48_BCAP_ITCAP_UNR_DIG_INF), but not for 3.1 kHz
audio (GSM48_BCAP_ITCAP_3k1_AUDIO) and fax (GSM48_BCAP_ITCAP_FAX_G3)
calls.  For the later two it should be GSM48_BCAP_RA_NONE.

Change-Id: I70d36b3540ed2469068e050809a17ed07b434ad7
Related: OS#4396
2024-01-26 14:29:44 +00:00
Vadim Yanitskiy 8fa524c397 mobile: properly handle different TRAFFIC.{ind,req} formats for CSD
So far we supported the Texas Instruments format (TCH_DATA_IOF_TI),
which is used by Calypso based phones (e.g. Motorola C1xx), but not
the format that trxcon speaks/understands (TCH_DATA_IOF_OSMO).

Change-Id: Ib17e800e91ad536db53aa55661076089f0ce34b0
Related: OS#4396
2024-01-26 14:29:44 +00:00
Vadim Yanitskiy 17c3cbdb09 mobile: VTY: disable DATA_CALL_TR_V34_9600 (not supported)
We cannot initiate V.34 data calls because gsm48_encode_bearer_cap()
does not support octet 6d.  This variant should not be selectable.

Change-Id: Ibafb9a693654672fb9a6abf665c500a27c87bf22
Related: OS#4396, OS#6344
2024-01-26 14:29:44 +00:00
Vadim Yanitskiy b4cb78a9d9 modem: fix assigning .timer_cb twice (-Winitializer-overrides)
Change-Id: Id2d565a5035c47053c0dfa5ad9be3378471b6e14
2024-01-26 01:22:22 +07:00
Vadim Yanitskiy 2cb3b7adbb mobile: VTY: rework data type/rate configuration commands
Change-Id: I7393fce82613a57275033f5c47e16bbf708a3bfb
Related: OS#4396
2024-01-24 23:41:56 +07:00
Vadim Yanitskiy aae93c2163 mobile: VTY: make soft-UART parameters configurable
Change-Id: I48bb58aaf1101fbc0e58db3fb1100927e506ede2
Related: OS#4396
2024-01-24 23:41:56 +07:00
Vadim Yanitskiy 3c54d77b12 mobile: VTY: use 'enum gsm48_bcap_transp' from libosmogsm
Change-Id: Iebc0692f17a5a5d04e57d74a720db52775937bdd
Related: OS#4396
2024-01-24 23:41:56 +07:00
Vadim Yanitskiy 8ebaeca991 mobile: handle V.24 line status updates from V.110 TA
Change-Id: I05ba2e10fefe3cae687831b5ced971aa244ad336
Related: OS#4396
2024-01-24 23:41:53 +07:00
Vadim Yanitskiy f35414b75e mobile: add a separate logging category for CSD
Change-Id: If9db0759aeb4324ace9ae258c852787f37897d83
Related: OS#4396
2024-01-24 07:04:57 +07:00
Vadim Yanitskiy 17ea9530b9 doc/examples/mobile: add tch-{data,voice} sections
Change-Id: I9e53d4c429445ded07d77b27b6a31aa404b00e27
Related: OS#4396
2024-01-24 00:04:36 +00:00
Vadim Yanitskiy 149da511d4 firmware (libosmocore): fix gsm48_chan_mode for TCH/[FH]2.4
This is basically a back-port of the fix that was merged to
libosmocore.git back in 2013.  Our ancient copy of libosmocore,
which is used for building the firmware, predates this commit.

Ideally, we should rip off this ancient copy and build the firmware
against recent master (see OS#2378).  But for now, let's just fix
our local copy.  Otherwise TCH/[FH]2.4 support is broken.

Change-Id: I99f528f3e1cd4c04ebb9d8becf1572688dd531ae
Related: libosmocore.git 31e844bfe2
Related: OS#4396
2024-01-24 00:01:50 +00:00
Vadim Yanitskiy 088ddb23c4 mobile: fix unsupported data rate (UR/IR) messages
Change-Id: I4f68cc999cb7bf9c5a17c8650de0411248420c1e
Related: OS#4396
2024-01-20 07:36:33 +07:00
Vadim Yanitskiy 4371181456 mobile: implement sending CSD data over UNIX socket
Change-Id: Id054af7b3d9d0a41715f7981deb420f6e09bf30c
Related: OS#4396
2024-01-20 07:36:15 +07:00
Vadim Yanitskiy caa0065824 mobile: integrate V.110 TA & soft-UART from libosmocore
Change-Id: I7ac9c0e5010730fa4d8bc7a7a3c7ff85e11731c0
Depends: libosmocore.git I6d2f8e250df31c233a2741163113dc07515409ae
Depends: libosmocore.git I5716bd6fd0201ee7a7a29e72f775972cd374082f
Depends: libosmocore.git I2ca95963fd5852ddb89bdd35b86b31489127fe84
Related: OS#4396
2024-01-20 06:08:06 +07:00
Vadim Yanitskiy f147776e47 mobile: split voice specific TCH handling into its own file
Change-Id: Ib917d95fe77da3e60bc932cce56714d81095c7d4
Related: OS#4396
2024-01-20 06:08:03 +07:00
Vadim Yanitskiy 0829246a22 mobile: rename tch_send_voice_{msg,frame}() functions
These functions can also be used for sending data frames (CSD).

Change-Id: Ib55b4405847f2efb583f3a379ff4b6929d6d6c5b
Related: OS#4396
2024-01-18 03:54:15 +07:00
Vadim Yanitskiy 129d0ea802 mobile: init/deinit GAPK I/O based on CC transaction events
Change-Id: I28f87f6a6de673611aa02a24e8985aee23d4498b
Related: OS#4396
2024-01-18 03:51:35 +07:00
Vadim Yanitskiy 4038d3e42f mobile: cosmetic: use consistent naming for gapk_io_state
Change-Id: I96a995bdf20c95a15271de68fbf434e101047313
Related: OS#4396
2024-01-17 22:52:41 +07:00
Vadim Yanitskiy a8c3e6eb0e mobile: store MNCC Bearer Capability in CC transaction
We will need to know the current Bearer Capability of a CC
transaction in the upcoming patches adding CSD support.

Change-Id: Ifc3ecf832a552c65444f49711ac836b6cd984715
Related: OS#4396
2024-01-17 22:52:41 +07:00
Vadim Yanitskiy c3a1f4a39b mobile: add generic signals for CC/SS/SM transactions
This allows driving logic in other modules based on transaction
related events, such as allocation, deallocation, or a state change.
These new signals will be used in the upcoming CSD implementation.

Change-Id: Idae5da24cb517878a26cc14b2ba6976e60f0b31b
Related: OS#4396
2024-01-17 22:52:41 +07:00
Vadim Yanitskiy 1f0ce9c9ab fixup: mobile: always check return value of tlv_parse()
Fix a regression: check if Location Area Information IE fits.

Change-Id: I51e2ae1be1c51a6359f8b0faad56f654251f1413
Fixes: bb0ac02e "mobile: always check return value of tlv_parse()"
Fixes: CID#341618
2024-01-17 05:02:12 +07:00
Vadim Yanitskiy 5a1d79e587 mobile: gsm48_mm_data_ind(): check if struct gsm48_hdr fits
A similar check was recently added to gsm48_cc_data_ind().

Change-Id: Ibc5153df41e2c6365a3c65b1906d440a1074514b
Related: 273d412a "mobile: gsm48_cc_data_ind(): check if struct gsm48_hdr fits"
2024-01-17 05:02:12 +07:00
Vadim Yanitskiy 8d4c4d649d mobile: mncc_recvmsg(): fix 'msg_type' param type
Change-Id: I5146637f1c45044d0df258aa3d82fa9454898c92
Related: OS#4396
2024-01-16 03:03:36 +07:00
Vadim Yanitskiy 273d412ad7 mobile: gsm48_cc_data_ind(): check if struct gsm48_hdr fits
Change-Id: I06c1877f603d3de0210dee7033ef163637c22054
Related: OS#4396
2024-01-16 03:02:49 +07:00
Vadim Yanitskiy bb0ac02ecf mobile: always check return value of tlv_parse()
Change-Id: Id02fc0b1af6da939cb72f327c7d2ddca484ca063
2024-01-16 01:37:02 +07:00
Vadim Yanitskiy 83e36c0caf layer23: drop unneeded forward declaration
Change-Id: I75bd08c1a88ad75d93a519422dfb7922c37a27a3
2024-01-16 01:37:02 +07:00
Vadim Yanitskiy ca183f79d8 mobile: fix segfault on empty TRAFFIC.ind
The L1 PHY may emit empty TRAFFIC.ind in case of decoding errors.
Abort execution of pq_audio_sink early, otherwise we hit an assert.

Change-Id: Ice11b72ddfd51fbfb17a4c609c664b86a8f69591
2024-01-16 01:36:44 +07:00
Vadim Yanitskiy 697e259dc4 firmware: fix shebang in solve_envs.py: s/python/python3/
This patch fixes [currently missing] Jenkins build verification.
Currently it's just skipping the firmware due to errors:

make -C target/firmware CROSS_COMPILE=arm-none-eabi-
make[1]: Entering directory '/build/src/target/firmware'
/usr/bin/env: 'python': No such file or directory
/usr/bin/env: 'python': No such file or directory
/usr/bin/env: 'python': No such file or directory
/usr/bin/env: 'python': No such file or directory
/usr/bin/env: 'python': No such file or directory
/usr/bin/env: 'python': No such file or directory
...

Change-Id: Ibfcc17ca2736da82d60db3b0e350b74e788031b0
2024-01-10 23:01:56 +07:00