{
  "_class" : "hudson.matrix.MatrixBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.SCMTrigger$SCMTriggerCause",
          "shortDescription" : "Started by an SCM change"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.model.ParametersAction",
      "parameters" : [
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "BRANCH",
          "value" : "master"
        },
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "EMAIL_NOTIFICATIONS",
          "value" : "jenkins-notifications@lists.osmocom.org laforge@gnumonks.org"
        }
      ]
    },
    {
      "_class" : "jenkins.metrics.impl.TimeInQueueAction",
      "blockedDurationMillis" : 0,
      "blockedTimeMillis" : 0,
      "buildableDurationMillis" : 0,
      "buildableTimeMillis" : 0,
      "buildingDurationMillis" : 265258,
      "executingTimeMillis" : 265258,
      "executorUtilization" : 1.0,
      "subTaskCount" : 0,
      "waitingDurationMillis" : 5749,
      "waitingTimeMillis" : 5749
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 10954,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "8d116715398e6160e3ae122d2277baadd1dc0519",
            "branch" : [
              {
                "SHA1" : "8d116715398e6160e3ae122d2277baadd1dc0519",
                "name" : "origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "8d116715398e6160e3ae122d2277baadd1dc0519",
            "branch" : [
              {
                "SHA1" : "8d116715398e6160e3ae122d2277baadd1dc0519",
                "name" : "origin/master"
              }
            ]
          }
        },
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 7614,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "73773447715c57075ad5acb96a5346ff23d7e91f",
            "branch" : [
              {
                "SHA1" : "73773447715c57075ad5acb96a5346ff23d7e91f",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "73773447715c57075ad5acb96a5346ff23d7e91f",
            "branch" : [
              {
                "SHA1" : "73773447715c57075ad5acb96a5346ff23d7e91f",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "8d116715398e6160e3ae122d2277baadd1dc0519",
        "branch" : [
          {
            "SHA1" : "8d116715398e6160e3ae122d2277baadd1dc0519",
            "name" : "origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://gerrit.osmocom.org/osmo-bts"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#10954",
  "duration" : 265258,
  "estimatedDuration" : 214111,
  "executor" : None,
  "fullDisplayName" : "master-osmo-bts #10954",
  "id" : "10954",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 10954,
  "queueId" : 1988111,
  "result" : "SUCCESS",
  "timestamp" : 1757366586044,
  "url" : "https://jenkins.osmocom.org/jenkins/view/TTCN3-io_uring/job/master-osmo-bts/10954/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/common/l1sap.c",
          "include/osmo-bts/msg_utils.h"
        ],
        "commitId" : "a9f3c01ece6fb59b07cd251ce93b342b1772eaed",
        "timestamp" : 1757099020000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/falcon",
          "fullName" : "falcon"
        },
        "authorEmail" : "falcon@freecalypso.org",
        "comment" : "TCH UL path: add out-of-band BFI flag\u000a\u000aIn original OsmoBTS architecture prior to Themyscira patches,\u000aBFI (Bad Frame Indication) condition was signaled internally by\u000azero-length payload passed from BTS model to l1sap, and externally\u000aby absence of RTP output (intentional gap) or a zero-length RTP\u000apayload emitted in 'rtp continuous-streaming' mode.  However, this\u000aparadigm is contrary to classic GSM BSS architecture in which BFI\u000ais an out-of-band metadata flag that travels alongside with frame\u000apayload bits, whether the latter are valid or invalid.\u000a\u000aSince 2024 OsmoBTS supports the option of TW-TS-001 output for\u000aFR and EFR codecs, which allows the possibility of BFI-with-data\u000ain RTP.  OsmoBTS can already emit such BFI-with-data packets when\u000athe BTS model delivered a deemed-good traffic frame, but that frame\u000awas subsequently deemed bad by the link quality check in l1sap -\u000abut there is still no explicit out-of-band BFI flag inside OsmoBTS\u000aTCH UL path.\u000a\u000aBy introducing an out-of-band BFI flag, we make it possible for BTS\u000amodel PHYs to deliver marked-bad traffic frames: when CRC fails\u000ain GSM 05.03 channel decoding step, a PHY that permits modification\u000a(libosmocoding or future FOSS DSP PHY) can be enhanced to preserve\u000achannel-decoded bits while conveying BFI.\u000a\u000aThe link quality check in l1sap is reworked to use the new OOB BFI\u000aflag.  Follow-on patches will introduce further logic that can also\u000aassert BFI at high level, above BTS model PHYs.\u000a\u000aWhile reworking the link quality check in l1sap, restrict it to\u000aspeech modes only: per GSM specs, BFI does not exist in CSD.\u000a\u000aChange-Id: I8097946429e83eae90f89e49d17ffb8eb0636fcb\u000a",
        "date" : "2025-09-05 19:03:40 +0000",
        "id" : "a9f3c01ece6fb59b07cd251ce93b342b1772eaed",
        "msg" : "TCH UL path: add out-of-band BFI flag",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "src/common/l1sap.c"
          },
          {
            "editType" : "edit",
            "file" : "include/osmo-bts/msg_utils.h"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/osmo-bts-trx/sched_lchan_tchh.c",
          "src/osmo-bts-trx/sched_lchan_tchf.c",
          "src/osmo-bts-lc15/tch.c",
          "include/osmo-bts/msg_utils.h",
          "src/common/l1sap.c",
          "src/osmo-bts-oc2g/tch.c",
          "src/osmo-bts-sysmo/tch.c"
        ],
        "commitId" : "d9b456ce6d7c55b139f78e5c5474a3ad3fdcb5ac",
        "timestamp" : 1757100607000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/falcon",
          "fullName" : "falcon"
        },
        "authorEmail" : "falcon@freecalypso.org",
        "comment" : "FR/HR/EFR: centralize TCH UL SID classification\u000a\u000aIn any environment where GSM MS may exercise DTXu on TCH/FS, TCH/HS or\u000aTCH/EFS, the BTS receiving this TCH UL has to classify each received\u000atraffic frame as valid SID, invalid SID or non-SID speech.  For E1 BTS\u000athis SID classification requirement is explicit as there are dedicated\u000abits in TRAU-UL frames carrying the SID code.  For an IP BTS the need\u000afor this classification is less obvious as most RTP payload formats\u000aomit SID indicator bits - however:\u000a\u000a* For HR codec, RTP output in RFC 5993 and TW-TS-002 formats does\u000a  include explicit SID classification;\u000a\u000a* Also for HR output in both TS 101 318 and RFC 5993 formats\u000a  (but not TW-TS-002), SID classification must be considered in order\u000a  to turn valid SID with some bit errors into perfect SID codeword;\u000a\u000a* OsmoBTS already had logic for all 3 of FR/HR/EFR whereby if a frame\u000a  is received that is an accepted SID frame in GSM 06.31/06.41/06.81\u000a  definition, a flag is set so that the next good speech frame will\u000a  be emitted in RTP with marker bit set.  This logic implies SID\u000a  classification in TCH UL path.\u000a\u000aPrior to this patch, OsmoBTS performed limited, non-consolidated\u000aSID classification:\u000a\u000a* For FR and EFR, the only SID classification in TCH UL path was done\u000a  for RTP marker purposes by way of osmo_{fr,efr}_is_any_sid() Boolean\u000a  result fed to lchan_set_marker();\u000a\u000a* For the same RTP marker logic with HR codec, only perfect, error-free\u000a  SID frames were detected;\u000a\u000a* The same limitation applied to SID classification for RFC 5993 output.\u000a\u000aCentralize this SID classification by moving it from BTS model to common\u000al1sap code and unifying it across all 3 codecs.  Immediate functional\u000aeffects from this change are:\u000a\u000a* On TCH/HS we now detect imperfect (partially corrupted) SID frames\u000a  and classify them as valid or invalid SID as intended by ETSI,\u000a  like we already did for TCH/FS and TCH/EFS;\u000a\u000a* When emitting TS 101 318 or RFC 5993, we apply the inherent limitations\u000a  of those RTP formats to valid and invalid SID;\u000a\u000a* With all 3 codecs, the check for a good speech frame as exit criterion\u000a  from DTXu state now happens after the link quality check in l1sap,\u000a  rather than before.\u000a\u000aAMR speech mode is not affected at all by these changes: AMR DTX model\u000ais completely different from that of FR/HR/EFR.\u000a\u000aRelated: OS#6036\u000aChange-Id: Id6c8c146962de2f173760889eb232693bb4229d3\u000a",
        "date" : "2025-09-05 19:30:07 +0000",
        "id" : "d9b456ce6d7c55b139f78e5c5474a3ad3fdcb5ac",
        "msg" : "FR/HR/EFR: centralize TCH UL SID classification",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "src/common/l1sap.c"
          },
          {
            "editType" : "edit",
            "file" : "src/osmo-bts-trx/sched_lchan_tchh.c"
          },
          {
            "editType" : "edit",
            "file" : "src/osmo-bts-lc15/tch.c"
          },
          {
            "editType" : "edit",
            "file" : "src/osmo-bts-trx/sched_lchan_tchf.c"
          },
          {
            "editType" : "edit",
            "file" : "src/osmo-bts-oc2g/tch.c"
          },
          {
            "editType" : "edit",
            "file" : "include/osmo-bts/msg_utils.h"
          },
          {
            "editType" : "edit",
            "file" : "src/osmo-bts-sysmo/tch.c"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "include/osmo-bts/lchan.h",
          "src/common/l1sap.c"
        ],
        "commitId" : "cb5b10e7b7fea20842b789feca50208a4e2094b9",
        "timestamp" : 1757101135000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/falcon",
          "fullName" : "falcon"
        },
        "authorEmail" : "falcon@freecalypso.org",
        "comment" : "FR/HR/EFR: implement SID filter in TCH UL path\u000a\u000aAs a result of how FR/HR/EFR DTX interacts with block diagonal\u000ainterleaving, at the beginning and end of each DTX pause a\u000acorrectly functioning TCH receiver will always pick up an\u000aartifact consisting of 4 received bursts (2 for TCH/HS)\u000aand same number of omitted bursts.  Standard channel decoding\u000aof this Rx artifact will produce a \"half-block\" in which half\u000aof the bits prior to convolutional decoding will come from\u000aa SID repetition whose Tx was notionally suppressed, while\u000athe other half will be garbage.  As a result of convolutional\u000adecoding, the result will often appear as valid SID per\u000aclassification rules - but passing it as such to the Rx DTX\u000ahandler is wrong.  Classic E1 BTS and GSM MS implementations\u000ainclude a kind of SID filter at this point, setting BFI on\u000athese received half-blocks, so that the Rx DTX handler will\u000asee an invalid SID condition.  Invalid SID means that comfort\u000anoise generation is to be continued, but no updated CN\u000aparameters are available - which is the truth in half-block\u000aRx situations.  Implement the same filter.\u000a\u000aAdditional background info can be found here:\u000a\u000ahttps://osmocom.org/projects/retro-gsm/wiki/DTXu_half-blocks\u000a\u000aChange-Id: I46c62312316b04567bcadf6050597673f071247d\u000a",
        "date" : "2025-09-05 19:38:55 +0000",
        "id" : "cb5b10e7b7fea20842b789feca50208a4e2094b9",
        "msg" : "FR/HR/EFR: implement SID filter in TCH UL path",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "include/osmo-bts/lchan.h"
          },
          {
            "editType" : "edit",
            "file" : "src/common/l1sap.c"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/common/bts.c",
          "src/common/l1sap.c"
        ],
        "commitId" : "8d116715398e6160e3ae122d2277baadd1dc0519",
        "timestamp" : 1757110567000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/falcon",
          "fullName" : "falcon"
        },
        "authorEmail" : "falcon@freecalypso.org",
        "comment" : "HRv1 codec: add support for TW-TS-002\u000a\u000aOsmoBTS supports TW-TS-001 enhanced RTP format for FR and EFR codecs\u000asince 2024, providing functional equivalent of GSM 08.60 TRAU-UL\u000aoutput over IP physical transport.  Now do the same with TW-TS-002,\u000aIP equivalent of GSM 08.61 for HRv1 codec.\u000a\u000aOnly TCH UL path is affected; no changes are needed to TCH DL path\u000abecause existing RTP Rx handling for RFC 5993 also covers TW-TS-002.\u000a\u000aRelated: OS#6036\u000aChange-Id: Icf11e43d4ce9df990d0e0a856d62d9ea11cb837c\u000a",
        "date" : "2025-09-05 22:16:07 +0000",
        "id" : "8d116715398e6160e3ae122d2277baadd1dc0519",
        "msg" : "HRv1 codec: add support for TW-TS-002",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "src/common/bts.c"
          },
          {
            "editType" : "edit",
            "file" : "src/common/l1sap.c"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/falcon",
      "fullName" : "falcon"
    }
  ],
  "runs" : [
    {
      "number" : 10954,
      "url" : "https://jenkins.osmocom.org/jenkins/view/TTCN3-io_uring/job/master-osmo-bts/BTS_MODEL=lc15,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/10954/"
    },
    {
      "number" : 10954,
      "url" : "https://jenkins.osmocom.org/jenkins/view/TTCN3-io_uring/job/master-osmo-bts/BTS_MODEL=lc15,FIRMWARE_VERSION=origin%2Fnrw%2Flitecell15,WITH_MANUALS=0,a4=default,label=osmocom-master/10954/"
    },
    {
      "number" : 10954,
      "url" : "https://jenkins.osmocom.org/jenkins/view/TTCN3-io_uring/job/master-osmo-bts/BTS_MODEL=lc15,FIRMWARE_VERSION=v2017.01,WITH_MANUALS=0,a4=default,label=osmocom-master/10954/"
    },
    {
      "number" : 10954,
      "url" : "https://jenkins.osmocom.org/jenkins/view/TTCN3-io_uring/job/master-osmo-bts/BTS_MODEL=oc2g,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/10954/"
    },
    {
      "number" : 10954,
      "url" : "https://jenkins.osmocom.org/jenkins/view/TTCN3-io_uring/job/master-osmo-bts/BTS_MODEL=oc2g,FIRMWARE_VERSION=origin%2Fnrw%2Foc2g,WITH_MANUALS=0,a4=default,label=osmocom-master/10954/"
    },
    {
      "number" : 10954,
      "url" : "https://jenkins.osmocom.org/jenkins/view/TTCN3-io_uring/job/master-osmo-bts/BTS_MODEL=oct,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/10954/"
    },
    {
      "number" : 10954,
      "url" : "https://jenkins.osmocom.org/jenkins/view/TTCN3-io_uring/job/master-osmo-bts/BTS_MODEL=oct+trx,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/10954/"
    },
    {
      "number" : 10954,
      "url" : "https://jenkins.osmocom.org/jenkins/view/TTCN3-io_uring/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=femtobts_v2.7,WITH_MANUALS=0,a4=default,label=osmocom-master/10954/"
    },
    {
      "number" : 10954,
      "url" : "https://jenkins.osmocom.org/jenkins/view/TTCN3-io_uring/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/10954/"
    },
    {
      "number" : 10954,
      "url" : "https://jenkins.osmocom.org/jenkins/view/TTCN3-io_uring/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=superfemto_v2.4,WITH_MANUALS=0,a4=default,label=osmocom-master/10954/"
    },
    {
      "number" : 10954,
      "url" : "https://jenkins.osmocom.org/jenkins/view/TTCN3-io_uring/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=superfemto_v3.0.1pre,WITH_MANUALS=0,a4=default,label=osmocom-master/10954/"
    },
    {
      "number" : 10954,
      "url" : "https://jenkins.osmocom.org/jenkins/view/TTCN3-io_uring/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=superfemto_v3.1,WITH_MANUALS=0,a4=default,label=osmocom-master/10954/"
    },
    {
      "number" : 10954,
      "url" : "https://jenkins.osmocom.org/jenkins/view/TTCN3-io_uring/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=superfemto_v5.1,WITH_MANUALS=0,a4=default,label=osmocom-master/10954/"
    },
    {
      "number" : 10954,
      "url" : "https://jenkins.osmocom.org/jenkins/view/TTCN3-io_uring/job/master-osmo-bts/BTS_MODEL=trx,FIRMWARE_VERSION=master,WITH_MANUALS=0,a4=default,label=raspbian/10954/"
    },
    {
      "number" : 10954,
      "url" : "https://jenkins.osmocom.org/jenkins/view/TTCN3-io_uring/job/master-osmo-bts/BTS_MODEL=trx,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/10954/"
    }
  ]
}