<p>fixeria has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bts/+/23820">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">lchan2lch_par(): fix missing default branch in switch<br><br>New channel mode values have recently been added with change [1]<br>to 'enum gsm48_chan_mode'.  The lack of default branch in<br>lchan2lch_par() caused build failures on Jenkins:<br><br>  oml.c:956:2: error: enumeration value ‘GSM48_CMODE_SPEECH_V2_VAMOS’<br>                      not handled in switch [-Werror=switch]<br>  oml.c:956:2: error: enumeration value ‘GSM48_CMODE_SPEECH_V3_VAMOS’<br>                      not handled in switch [-Werror=switch]<br>  oml.c:956:2: error: enumeration value ‘GSM48_CMODE_SPEECH_V5_VAMOS’<br>                      not handled in switch [-Werror=switch]<br><br>This function is duplicated in osmo-bts-{lc15,oc2g,octphy,sysmo},<br>so we unfortunately need to apply the same fix to all copy-pasted files.<br><br>Change-Id: I557ff8cac6564d22485c101fba9212f5f0e95bb7<br>Related: [1] Ie0ea592da5610ae70290106d004e549cf3212a89<br>---<br>M src/osmo-bts-lc15/oml.c<br>M src/osmo-bts-oc2g/oml.c<br>M src/osmo-bts-octphy/l1_oml.c<br>M src/osmo-bts-sysmo/oml.c<br>4 files changed, 63 insertions(+), 25 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/20/23820/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo-bts-lc15/oml.c b/src/osmo-bts-lc15/oml.c</span><br><span>index 44139cf..39d0e5e 100644</span><br><span>--- a/src/osmo-bts-lc15/oml.c</span><br><span>+++ b/src/osmo-bts-lc15/oml.c</span><br><span>@@ -935,7 +935,7 @@</span><br><span>     lch_par->tch.tchPlFmt = GsmL1_TchPlFmt_Rtp;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void lchan2lch_par(GsmL1_LogChParam_t *lch_par, struct gsm_lchan *lchan)</span><br><span style="color: hsl(120, 100%, 40%);">+static int lchan2lch_par(GsmL1_LogChParam_t *lch_par, struct gsm_lchan *lchan)</span><br><span> {</span><br><span>  struct amr_multirate_conf *amr_mrc = &lchan->tch.amr_mr;</span><br><span>      struct gsm48_multi_rate_conf *mr_conf =</span><br><span>@@ -1020,10 +1020,13 @@</span><br><span>    case GSM48_CMODE_DATA_12k0:</span><br><span>  case GSM48_CMODE_DATA_6k0:</span><br><span>   case GSM48_CMODE_DATA_3k6:</span><br><span style="color: hsl(0, 100%, 40%);">-              LOGP(DL1C, LOGL_ERROR, "%s: CSD not supported!\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                    gsm_lchan_name(lchan));</span><br><span style="color: hsl(0, 100%, 40%);">-         break;</span><br><span style="color: hsl(120, 100%, 40%);">+        default:</span><br><span style="color: hsl(120, 100%, 40%);">+              LOGPLCHAN(lchan, DL1C, LOGL_ERROR, "Channel mode %s is not supported!\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                     gsm48_chan_mode_name(lchan->tch_mode));</span><br><span style="color: hsl(120, 100%, 40%);">+          return -ENOTSUP;</span><br><span>     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   return 0;</span><br><span> }</span><br><span> </span><br><span> static int mph_send_activate_req(struct gsm_lchan *lchan, struct sapi_cmd *cmd)</span><br><span>@@ -1032,6 +1035,7 @@</span><br><span>        struct msgb *msg = l1p_msgb_alloc();</span><br><span>         int sapi = cmd->sapi;</span><br><span>     int dir = cmd->dir;</span><br><span style="color: hsl(120, 100%, 40%);">+        int rc;</span><br><span>      GsmL1_MphActivateReq_t *act_req;</span><br><span>     GsmL1_LogChParam_t *lch_par;</span><br><span> </span><br><span>@@ -1054,7 +1058,10 @@</span><br><span>            break;</span><br><span>       case GsmL1_Sapi_TchH:</span><br><span>        case GsmL1_Sapi_TchF:</span><br><span style="color: hsl(0, 100%, 40%);">-           lchan2lch_par(lch_par, lchan);</span><br><span style="color: hsl(120, 100%, 40%);">+                if ((rc = lchan2lch_par(lch_par, lchan)) != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      talloc_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+                     return rc;</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span>            /*</span><br><span>            * Be sure that every packet is received, even if it</span><br><span>                  * fails. In this case the length might be lower or 0.</span><br><span>@@ -1390,6 +1397,7 @@</span><br><span>       struct msgb *msg = l1p_msgb_alloc();</span><br><span>         GsmL1_MphConfigReq_t *conf_req;</span><br><span>      GsmL1_LogChParam_t *lch_par;</span><br><span style="color: hsl(120, 100%, 40%);">+  int rc;</span><br><span> </span><br><span>  /* channel mode, encryption and/or multirate have changed */</span><br><span> </span><br><span>@@ -1404,7 +1412,10 @@</span><br><span>    conf_req->hLayer3 = (HANDLE)l1if_lchan_to_hLayer(lchan);</span><br><span> </span><br><span>      lch_par = &conf_req->cfgParams.setLogChParams.logChParams;</span><br><span style="color: hsl(0, 100%, 40%);">-       lchan2lch_par(lch_par, lchan);</span><br><span style="color: hsl(120, 100%, 40%);">+        if ((rc = lchan2lch_par(lch_par, lchan)) != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+              talloc_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+             return rc;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span> </span><br><span>        /* Update the MS Power Level */</span><br><span>      if (cmd->sapi == GsmL1_Sapi_Sacch && trx_ms_pwr_ctrl_is_osmo(trx))</span><br><span>diff --git a/src/osmo-bts-oc2g/oml.c b/src/osmo-bts-oc2g/oml.c</span><br><span>index ced6ad1..8fd3688 100644</span><br><span>--- a/src/osmo-bts-oc2g/oml.c</span><br><span>+++ b/src/osmo-bts-oc2g/oml.c</span><br><span>@@ -950,7 +950,7 @@</span><br><span>         lch_par->tch.tchPlFmt = GsmL1_TchPlFmt_Rtp;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void lchan2lch_par(GsmL1_LogChParam_t *lch_par, struct gsm_lchan *lchan)</span><br><span style="color: hsl(120, 100%, 40%);">+static int lchan2lch_par(GsmL1_LogChParam_t *lch_par, struct gsm_lchan *lchan)</span><br><span> {</span><br><span>  struct amr_multirate_conf *amr_mrc = &lchan->tch.amr_mr;</span><br><span>      struct gsm48_multi_rate_conf *mr_conf =</span><br><span>@@ -1035,10 +1035,13 @@</span><br><span>    case GSM48_CMODE_DATA_12k0:</span><br><span>  case GSM48_CMODE_DATA_6k0:</span><br><span>   case GSM48_CMODE_DATA_3k6:</span><br><span style="color: hsl(0, 100%, 40%);">-              LOGP(DL1C, LOGL_ERROR, "%s: CSD not supported!\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                    gsm_lchan_name(lchan));</span><br><span style="color: hsl(0, 100%, 40%);">-         break;</span><br><span style="color: hsl(120, 100%, 40%);">+        default:</span><br><span style="color: hsl(120, 100%, 40%);">+              LOGPLCHAN(lchan, DL1C, LOGL_ERROR, "Channel mode %s is not supported!\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                     gsm48_chan_mode_name(lchan->tch_mode));</span><br><span style="color: hsl(120, 100%, 40%);">+          return -ENOTSUP;</span><br><span>     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   return 0;</span><br><span> }</span><br><span> </span><br><span> static int mph_send_activate_req(struct gsm_lchan *lchan, struct sapi_cmd *cmd)</span><br><span>@@ -1047,6 +1050,7 @@</span><br><span>        struct msgb *msg = l1p_msgb_alloc();</span><br><span>         int sapi = cmd->sapi;</span><br><span>     int dir = cmd->dir;</span><br><span style="color: hsl(120, 100%, 40%);">+        int rc;</span><br><span>      GsmL1_MphActivateReq_t *act_req;</span><br><span>     GsmL1_LogChParam_t *lch_par;</span><br><span> </span><br><span>@@ -1069,7 +1073,10 @@</span><br><span>            break;</span><br><span>       case GsmL1_Sapi_TchH:</span><br><span>        case GsmL1_Sapi_TchF:</span><br><span style="color: hsl(0, 100%, 40%);">-           lchan2lch_par(lch_par, lchan);</span><br><span style="color: hsl(120, 100%, 40%);">+                if ((rc = lchan2lch_par(lch_par, lchan)) != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      talloc_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+                     return rc;</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span>            /*</span><br><span>            * Be sure that every packet is received, even if it</span><br><span>                  * fails. In this case the length might be lower or 0.</span><br><span>@@ -1401,6 +1408,7 @@</span><br><span>       struct msgb *msg = l1p_msgb_alloc();</span><br><span>         GsmL1_MphConfigReq_t *conf_req;</span><br><span>      GsmL1_LogChParam_t *lch_par;</span><br><span style="color: hsl(120, 100%, 40%);">+  int rc;</span><br><span> </span><br><span>  /* channel mode, encryption and/or multirate have changed */</span><br><span> </span><br><span>@@ -1415,7 +1423,10 @@</span><br><span>    conf_req->hLayer3 = (HANDLE)l1if_lchan_to_hLayer(lchan);</span><br><span> </span><br><span>      lch_par = &conf_req->cfgParams.setLogChParams.logChParams;</span><br><span style="color: hsl(0, 100%, 40%);">-       lchan2lch_par(lch_par, lchan);</span><br><span style="color: hsl(120, 100%, 40%);">+        if ((rc = lchan2lch_par(lch_par, lchan)) != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+              talloc_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+             return rc;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span> </span><br><span>        /* Update the MS Power Level */</span><br><span>      if (cmd->sapi == GsmL1_Sapi_Sacch && trx_ms_pwr_ctrl_is_osmo(trx))</span><br><span>diff --git a/src/osmo-bts-octphy/l1_oml.c b/src/osmo-bts-octphy/l1_oml.c</span><br><span>index bf17125..b7f4935 100644</span><br><span>--- a/src/osmo-bts-octphy/l1_oml.c</span><br><span>+++ b/src/osmo-bts-octphy/l1_oml.c</span><br><span>@@ -250,7 +250,7 @@</span><br><span>             p_Config->abyRate[i] = cOCTVC1_GSM_AMR_CODEC_MODE_ENUM_UNSET;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void lchan2lch_par(struct gsm_lchan *lchan,</span><br><span style="color: hsl(120, 100%, 40%);">+static int lchan2lch_par(struct gsm_lchan *lchan,</span><br><span>                  tOCTVC1_GSM_LOGICAL_CHANNEL_CONFIG * p_Config)</span><br><span> {</span><br><span>       struct amr_multirate_conf *amr_mrc = &lchan->tch.amr_mr;</span><br><span>@@ -348,11 +348,13 @@</span><br><span>      case GSM48_CMODE_DATA_12k0:</span><br><span>  case GSM48_CMODE_DATA_6k0:</span><br><span>   case GSM48_CMODE_DATA_3k6:</span><br><span style="color: hsl(0, 100%, 40%);">-              LOGP(DL1C, LOGL_ERROR, "%s: CSD not supported!\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                 gsm_lchan_name(lchan));</span><br><span style="color: hsl(0, 100%, 40%);">-            break;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+        default:</span><br><span style="color: hsl(120, 100%, 40%);">+              LOGPLCHAN(lchan, DL1C, LOGL_ERROR, "Channel mode %s is not supported!\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                     gsm48_chan_mode_name(lchan->tch_mode));</span><br><span style="color: hsl(120, 100%, 40%);">+          return -ENOTSUP;</span><br><span>     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   return 0;</span><br><span> }</span><br><span> </span><br><span> /***********************************************************************</span><br><span>@@ -444,6 +446,7 @@</span><br><span>         struct octphy_hdl *fl1h = pinst->phy_link->u.octphy.hdl;</span><br><span>       struct msgb *msg = l1p_msgb_alloc();</span><br><span>         tOCTVC1_GSM_MSG_TRX_ACTIVATE_LOGICAL_CHANNEL_CMD *lac;</span><br><span style="color: hsl(120, 100%, 40%);">+        int rc;</span><br><span> </span><br><span>  lac = (tOCTVC1_GSM_MSG_TRX_ACTIVATE_LOGICAL_CHANNEL_CMD *)</span><br><span>                   msgb_put(msg, sizeof(*lac));</span><br><span>@@ -458,8 +461,10 @@</span><br><span> </span><br><span>      lac->Config.byTimingAdvance = lchan->rqd_ta;</span><br><span>   lac->Config.byBSIC = lchan->ts->trx->bts->bsic;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  lchan2lch_par(lchan, &lac->Config);</span><br><span style="color: hsl(120, 100%, 40%);">+    if ((rc = lchan2lch_par(lchan, &lac->Config)) != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+          talloc_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+             return rc;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span> </span><br><span>        mOCTVC1_GSM_MSG_TRX_ACTIVATE_LOGICAL_CHANNEL_CMD_SWAP(lac);</span><br><span> </span><br><span>diff --git a/src/osmo-bts-sysmo/oml.c b/src/osmo-bts-sysmo/oml.c</span><br><span>index 8e38c60..ac3176c 100644</span><br><span>--- a/src/osmo-bts-sysmo/oml.c</span><br><span>+++ b/src/osmo-bts-sysmo/oml.c</span><br><span>@@ -943,7 +943,7 @@</span><br><span> #endif /* L1_HAS_RTP_MODE */</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void lchan2lch_par(GsmL1_LogChParam_t *lch_par, struct gsm_lchan *lchan)</span><br><span style="color: hsl(120, 100%, 40%);">+static int lchan2lch_par(GsmL1_LogChParam_t *lch_par, struct gsm_lchan *lchan)</span><br><span> {</span><br><span>      struct amr_multirate_conf *amr_mrc = &lchan->tch.amr_mr;</span><br><span>      struct gsm48_multi_rate_conf *mr_conf =</span><br><span>@@ -1028,10 +1028,13 @@</span><br><span>    case GSM48_CMODE_DATA_12k0:</span><br><span>  case GSM48_CMODE_DATA_6k0:</span><br><span>   case GSM48_CMODE_DATA_3k6:</span><br><span style="color: hsl(0, 100%, 40%);">-              LOGP(DL1C, LOGL_ERROR, "%s: CSD not supported!\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                    gsm_lchan_name(lchan));</span><br><span style="color: hsl(0, 100%, 40%);">-         break;</span><br><span style="color: hsl(120, 100%, 40%);">+        default:</span><br><span style="color: hsl(120, 100%, 40%);">+              LOGPLCHAN(lchan, DL1C, LOGL_ERROR, "Channel mode %s is not supported!\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                     gsm48_chan_mode_name(lchan->tch_mode));</span><br><span style="color: hsl(120, 100%, 40%);">+          return -ENOTSUP;</span><br><span>     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   return 0;</span><br><span> }</span><br><span> </span><br><span> static int mph_send_activate_req(struct gsm_lchan *lchan, struct sapi_cmd *cmd)</span><br><span>@@ -1040,6 +1043,7 @@</span><br><span>        struct msgb *msg = l1p_msgb_alloc();</span><br><span>         int sapi = cmd->sapi;</span><br><span>     int dir = cmd->dir;</span><br><span style="color: hsl(120, 100%, 40%);">+        int rc;</span><br><span>      GsmL1_MphActivateReq_t *act_req;</span><br><span>     GsmL1_LogChParam_t *lch_par;</span><br><span> </span><br><span>@@ -1062,7 +1066,10 @@</span><br><span>            break;</span><br><span>       case GsmL1_Sapi_TchH:</span><br><span>        case GsmL1_Sapi_TchF:</span><br><span style="color: hsl(0, 100%, 40%);">-           lchan2lch_par(lch_par, lchan);</span><br><span style="color: hsl(120, 100%, 40%);">+                if ((rc = lchan2lch_par(lch_par, lchan)) != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                      talloc_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+                     return rc;</span><br><span style="color: hsl(120, 100%, 40%);">+            }</span><br><span>            /*</span><br><span>            * Be sure that every packet is received, even if it</span><br><span>                  * fails. In this case the length might be lower or 0.</span><br><span>@@ -1347,6 +1354,7 @@</span><br><span>       struct msgb *msg = l1p_msgb_alloc();</span><br><span>         GsmL1_MphConfigReq_t *conf_req;</span><br><span>      GsmL1_LogChParam_t *lch_par;</span><br><span style="color: hsl(120, 100%, 40%);">+  int rc;</span><br><span> </span><br><span>  /* channel mode, encryption and/or multirate have changed */</span><br><span> </span><br><span>@@ -1361,7 +1369,10 @@</span><br><span>    conf_req->hLayer3 = l1if_lchan_to_hLayer(lchan);</span><br><span> </span><br><span>      lch_par = &conf_req->cfgParams.setLogChParams.logChParams;</span><br><span style="color: hsl(0, 100%, 40%);">-       lchan2lch_par(lch_par, lchan);</span><br><span style="color: hsl(120, 100%, 40%);">+        if ((rc = lchan2lch_par(lch_par, lchan)) != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+              talloc_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+             return rc;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span> </span><br><span>        /* Update the MS Power Level */</span><br><span>      if (cmd->sapi == GsmL1_Sapi_Sacch && trx_ms_pwr_ctrl_is_osmo(trx))</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bts/+/23820">change 23820</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-bts/+/23820"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bts </div>
<div style="display:none"> Gerrit-Branch: rel-1.3.1 </div>
<div style="display:none"> Gerrit-Change-Id: I557ff8cac6564d22485c101fba9212f5f0e95bb7 </div>
<div style="display:none"> Gerrit-Change-Number: 23820 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>