Commit a199ad4f authored by Yann Garcia's avatar Yann Garcia
Browse files

Try to activate data call using AT+QPING

parent 7593edbf
Loading
Loading
Loading
Loading
+16 −1
Changes for ttcn/AtsNGAP/NGAP_Steps.ttcn: 16 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ module NGAP_Steps { // TODO FSCOM f_xxx_UE_SecurityMode to be mmoved into NAG_NG
    import from NGAP_CommonDataTypes language "ASN.1:1997" all;
    import from NGAP_PDU_Descriptions language "ASN.1:1997" all;
    import from NGAP_IEs language "ASN.1:1997" all;
    import from NGAP_Constants language "ASN.1:1997" all;

    import from LibNGAP_Steps  all;
    import from LibNGAP_Templates all;
@@ -855,7 +856,10 @@ module NGAP_Steps { // TODO FSCOM f_xxx_UE_SecurityMode to be mmoved into NAG_NG
         *          tunnel endpoint of the PDU session (PX_TRANSPORT_LAYER_ADDRESS, PX_GTP_TEID); as the test
         *          system does not handle GTP-U yet, no reply comes back, and only a capture on the test system
         *          host (UDP port 2152) shows whether they arrived.
         *          The UE stays in CM-CONNECTED meanwhile: no NGAP signalling is expected.
         *          The UE stays in CM-CONNECTED meanwhile: no NGAP signalling is expected. If the gNB nevertheless
         *          asks for the release of the UE context (UE CONTEXT RELEASE REQUEST, e.g. user inactivity when the
         *          UE sends nothing), it is released (UE CONTEXT RELEASE COMMAND/COMPLETE) and the wait goes on:
         *          left unanswered, the request would end in an NG RESET from the gNB.
         * @note   The verdict is set by the UT dispatcher only (NGAP_UtDispatcher): inconc if the modem could not
         *         run the pings at all (e.g. the context of the data call is not usable by AT+QPING); lost
         *         replies are not a failure.
@@ -879,6 +883,17 @@ module NGAP_Steps { // TODO FSCOM f_xxx_UE_SecurityMode to be mmoved into NAG_NG
                [] utPtcMtcPort.receive(car_UT_COMMON_CNF) -> value v_cnf {
                    t_ping.stop;
                }
                [not vc_ueContextReleased] N2_gNBaMF_P.receive(mw_ngap_initMsg({
                                                                                procedureCode := id_UEContextReleaseRequest,
                                                                                criticality   := ?,
                                                                                value_        := ?
                                                                               })) -> value vc_recvNGAP_PDU {
                    log("*** " & __SCOPE__ & ": INFO: UE CONTEXT RELEASE REQUEST from the gNB during the ping: ", vc_recvNGAP_PDU, " ***");
                    if (not f_send_ue_context_release_command_await_ue_context_release_complete(m_cause_nas(normal_release))) {
                        log("*** " & __SCOPE__ & ": INFO: UE CONTEXT RELEASE COMPLETE does not conform ***");
                    }
                    repeat;
                }
                [] t_ping.timeout {
                    log("*** " & __SCOPE__ & ": INFO: no ping result from the upper tester ***");
                    return false;
+5 −0
Changes for ttcn/LibNGAP/lib_system/LibNGAP_Functions.ttcn: 5 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -1335,6 +1335,7 @@ module LibNGAP_Functions {
                                                                                                             vc_AMF_UE_ID,
                                                                                                             vc_RAN_UE_ID
                        )));
        vc_ueContextReleased := false;

        setverdict(pass, "Received InitialContextSetupResponse NAS message");

@@ -1561,6 +1562,7 @@ module LibNGAP_Functions {
                                                                                                             vc_AMF_UE_ID,
                                                                                                             vc_RAN_UE_ID
                        )));
        vc_ueContextReleased := false;
        // FIXME FSCOM To be continued
        setverdict(pass, "Received InitialContextSetupResponse NAS message");

@@ -1953,6 +1955,7 @@ module LibNGAP_Functions {
     *          TS 38.413, any optional IE); the verdict is set to fail if it does not conform.
     *          mw_n2_UEContextReleaseComplete is not used: it expects the criticality "reject" for the UE
     *          NGAP IDs, where TS 38.413 sets "ignore", and no optional IE (e.g. the user location information).
     *          Sets vc_ueContextReleased.
     * @param  p_Cause The cause of the release.
     * @return true if the complete conforms.
     */
@@ -1979,6 +1982,7 @@ module LibNGAP_Functions {
                                            value_        := ?
                                        }
                        ));
        vc_ueContextReleased := true;
        return f_NGAP_check_received_PDU(
                                         mw_ngap_succMsg(mw_n2_UEContextReleaseComplete_conformant(vc_AMF_UE_ID, vc_RAN_UE_ID)),
                                         "UE CONTEXT RELEASE COMPLETE"
@@ -2100,6 +2104,7 @@ module LibNGAP_Functions {
                                                                                                             vc_AMF_UE_ID,
                                                                                                             vc_RAN_UE_ID
                        )));
        vc_ueContextReleased := false;
        log("<<< f_send_ue_context_release_command_await_service_request_send_service_accept");
    } // End of function f_send_ue_context_release_command_await_service_request_send_service_accept

+1 −0
Changes for ttcn/LibNGAP/lib_system/LibNGAP_Interface.ttcn: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ module LibNGAP_Interface {

            var NGAP_PDU vc_sendNGAP_PDU ;
            var NGAP_PDU vc_recvNGAP_PDU ;
            var boolean vc_ueContextReleased := false; // true once the UE context is released (UE CONTEXT RELEASE COMPLETE received), false again once a new one is set up (INITIAL CONTEXT SETUP RESPONSE received)
            var NasCount_Type vc_previous_nas_count_ul;
            var NasCount_Type vc_previous_nas_count_dl;
            var NG_REGISTRATION_REQUEST vc_registration_request;
+4 −1
Changes for ttcn/LibNGAP/lib_system/LibNGAP_Steps.ttcn: 4 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -273,7 +273,8 @@ module LibNGAP_Steps {
             * @details In offline mode (PICS_OFFLINE_MODE), awaits the UE CONTEXT RELEASE COMMAND and the UE
             *          CONTEXT RELEASE COMPLETE read from the capture. Otherwise sends a UE CONTEXT RELEASE
             *          COMMAND and awaits the UE CONTEXT RELEASE COMPLETE of the gNB. In both cases the
             *          COMPLETE is checked, and the verdict set to fail if it does not conform.
             *          COMPLETE is checked, and the verdict set to fail if it does not conform. Nothing is sent
             *          if the UE context is already released (vc_ueContextReleased).
             * @param  p_Cause The cause of the release.
             */
            function f_postambleNGAP_gNB(
@@ -281,6 +282,8 @@ module LibNGAP_Steps {
                                         ) runs on gNBNGAPComponent {
                if (PICS_OFFLINE_MODE) {
                    f_await_ue_context_release_command_await_ue_context_release_complete(p_Cause);
                } else if (vc_ueContextReleased) {
                    log("f_postambleNGAP_gNB: UE context already released");
                } else {
                    if (not f_send_ue_context_release_command_await_ue_context_release_complete(p_Cause)) {
                        log("f_postambleNGAP_gNB: the UE CONTEXT RELEASE COMPLETE does not conform (verdict set to fail)");
+4 −2
Changes for upper_tester/README.md: 4 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ differently on this modem. Select one with `--profile` (or `profile = ...` in th
| Profile          | Modem                                              |
|------------------|----------------------------------------------------|
| `generic`        | Any 3GPP TS 27.007 modem, standard commands only   |
| `rm520n-gl`      | Quectel RM520N-GL (default): no `AT+QNETDEVCTL`; `AT+COPS=2` is refused, because it leaves the modem in `SIM failure` |
| `rm520n-gl`      | Quectel RM520N-GL (default): no `AT+QNETDEVCTL`; `AT+COPS=2` is refused, because it leaves the modem in `SIM failure`; data calls are dialled with `AT+QIACT` (`dial = "qiact"`), so that `PING` (`AT+QPING`) uses the same PDU session |
| `quectel-netdev` | Quectel modems with `AT+QNETDEVCTL` (RG500U, RG801H, EC200T): `NETDEV=1` by default |

`--list-profiles` prints them. For another modem, write a TOML file and pass its path:
@@ -90,7 +90,9 @@ Parameter names are case-insensitive. `ACTIVATE_BEARER` replies `result=true` on
modem reports an IP address; the reply then ends with `+UT: data call connected: cid=1 ip=...`.
On failure it ends with a `+UT:` line giving the reason.

The call is dialled with `AT+CGACT=1,<cid>`: the network sees the session, but the host has no
The call is dialled with `AT+CGACT=1,<cid>`, or with `AT+QIACT=<cid>` when the modem profile
says `dial = "qiact"` (the RM520N-GL default: `AT+QPING` only uses contexts of Quectel's TCP/IP
stack, and opens a second PDU session of its own otherwise): the network sees the session, but the host has no
data path through the modem's network interface. `AT+QNETDEVCTL`, which `quectel-CM` uses to
also connect that interface, is not supported by the RM520N-GL and its firmware; `NETDEV=1`
asks for it on a modem that has it (the default with the `quectel-netdev` profile). The host network interface is never configured here
Loading