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/gerrit-log@lists.osmocom.org/.
Max gerrit-no-reply at lists.osmocom.orgHello Harald Welte, Jenkins Builder,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/1046
to look at the new patch set (#5).
Remove duplicated code
* Having duplicated code to fill in fn & tn values makes it harder to read
and modify static gsmtap_p* functions. Fix this by removing the
duplication and moving the common code one level up.
* Remove lchan activation/deactivation related code duplication to
facilitate future use for dynamic CCCH re-activation.
Change-Id: Id0d3b19dbfaa16d1734321a07a6eb0355bfd77c9
---
M include/osmo-bts/oml.h
M src/common/l1sap.c
M src/common/oml.c
M src/osmo-bts-litecell15/lc15bts_vty.c
M src/osmo-bts-litecell15/oml.c
M src/osmo-bts-octphy/l1_oml.c
M src/osmo-bts-sysmo/oml.c
M src/osmo-bts-sysmo/sysmobts_vty.c
M tests/handover/handover_test.c
M tests/stubs.c
10 files changed, 51 insertions(+), 73 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/46/1046/5
diff --git a/include/osmo-bts/oml.h b/include/osmo-bts/oml.h
index 9f49444..1a47cde 100644
--- a/include/osmo-bts/oml.h
+++ b/include/osmo-bts/oml.h
@@ -18,6 +18,12 @@
int oml_mo_statechg_ack(struct gsm_abis_mo *mo);
int oml_mo_statechg_nack(struct gsm_abis_mo *mo, uint8_t nack_cause);
+void enqueue_rel_marker(struct gsm_lchan *lchan);
+void enqueue_sacch_rel_marker(struct gsm_lchan *lchan);
+int lchan_activate(struct gsm_lchan *lchan);
+int lchan_deactivate(struct gsm_lchan *lchan);
+int lchan_deactivate_sacch(struct gsm_lchan *lchan);
+
/* Change the state and send STATE CHG REP */
int oml_mo_state_chg(struct gsm_abis_mo *mo, int op_state, int avail_state);
diff --git a/src/common/l1sap.c b/src/common/l1sap.c
index f3e620e..0b9930e 100644
--- a/src/common/l1sap.c
+++ b/src/common/l1sap.c
@@ -205,15 +205,13 @@
/* send primitive as gsmtap */
static int gsmtap_ph_data(struct osmo_phsap_prim *l1sap, uint8_t *chan_type,
- uint8_t *tn, uint8_t *ss, uint32_t *fn, uint8_t **data, int *len)
+ uint8_t *ss, uint32_t fn, uint8_t **data, int *len)
{
struct msgb *msg = l1sap->oph.msg;
uint8_t chan_nr, link_id;
*data = msg->data + sizeof(struct osmo_phsap_prim);
*len = msg->len - sizeof(struct osmo_phsap_prim);
- *fn = l1sap->u.data.fn;
- *tn = L1SAP_CHAN2TS(l1sap->u.data.chan_nr);
chan_nr = l1sap->u.data.chan_nr;
link_id = l1sap->u.data.link_id;
@@ -234,7 +232,7 @@
#warning Set BS_AG_BLKS_RES
/* The sapi depends on DSP configuration, not
* on the actual SYSTEM INFORMATION 3. */
- if (L1SAP_FN2CCCHBLOCK(*fn) >= 1)
+ if (L1SAP_FN2CCCHBLOCK(fn) >= 1)
*chan_type = GSMTAP_CHANNEL_PCH;
else
*chan_type = GSMTAP_CHANNEL_AGCH;
@@ -246,18 +244,16 @@
}
static int gsmtap_pdch(struct osmo_phsap_prim *l1sap, uint8_t *chan_type,
- uint8_t *tn, uint8_t *ss, uint32_t *fn, uint8_t **data, int *len)
+ uint8_t *ss, uint32_t fn, uint8_t **data, int *len)
{
struct msgb *msg = l1sap->oph.msg;
*data = msg->data + sizeof(struct osmo_phsap_prim);
*len = msg->len - sizeof(struct osmo_phsap_prim);
- *fn = l1sap->u.data.fn;
- *tn = L1SAP_CHAN2TS(l1sap->u.data.chan_nr);
- if (L1SAP_IS_PTCCH(*fn)) {
+ if (L1SAP_IS_PTCCH(fn)) {
*chan_type = GSMTAP_CHANNEL_PTCCH;
- *ss = L1SAP_FN2PTCCHBLOCK(*fn);
+ *ss = L1SAP_FN2PTCCHBLOCK(fn);
if (l1sap->oph.primitive
== PRIM_OP_INDICATION) {
if ((*data[0]) == 7)
@@ -309,12 +305,14 @@
uplink = 0;
/* fall through */
case OSMO_PRIM(PRIM_PH_DATA, PRIM_OP_INDICATION):
+ fn = l1sap->u.data.fn;
+ tn = L1SAP_CHAN2TS(l1sap->u.data.chan_nr);
if (ts_is_pdch(&trx->ts[tn]))
- rc = gsmtap_pdch(l1sap, &chan_type, &tn, &ss, &fn, &data,
- &len);
+ rc = gsmtap_pdch(l1sap, &chan_type, &ss, fn, &data,
+ &len);
else
- rc = gsmtap_ph_data(l1sap, &chan_type, &tn, &ss, &fn,
- &data, &len);
+ rc = gsmtap_ph_data(l1sap, &chan_type, &ss, fn, &data,
+ &len);
break;
case OSMO_PRIM(PRIM_PH_RACH, PRIM_OP_INDICATION):
rc = gsmtap_ph_rach(l1sap, &chan_type, &tn, &ss, &fn, &data,
diff --git a/src/common/oml.c b/src/common/oml.c
index 690a81d..6c42f10 100644
--- a/src/common/oml.c
+++ b/src/common/oml.c
@@ -453,6 +453,20 @@
return 0;
}
+int lchan_deactivate(struct gsm_lchan *lchan)
+{
+ lchan_set_state(lchan, LCHAN_S_REL_REQ);
+ lchan->ciph_state = 0;
+ enqueue_rel_marker(lchan);
+ return 0;
+}
+
+int lchan_deactivate_sacch(struct gsm_lchan *lchan)
+{
+ enqueue_sacch_rel_marker(lchan);
+ return 0;
+}
+
/* 8.6.1 Set BTS Attributes has been received */
static int oml_rx_set_bts_attr(struct gsm_bts *bts, struct msgb *msg)
{
diff --git a/src/osmo-bts-litecell15/lc15bts_vty.c b/src/osmo-bts-litecell15/lc15bts_vty.c
index c5d404c..e4773b4 100644
--- a/src/osmo-bts-litecell15/lc15bts_vty.c
+++ b/src/osmo-bts-litecell15/lc15bts_vty.c
@@ -46,15 +46,12 @@
#include <osmo-bts/gsm_data.h>
#include <osmo-bts/phy_link.h>
#include <osmo-bts/logging.h>
+#include <osmo-bts/oml.h>
#include <osmo-bts/vty.h>
#include "lc15bts.h"
#include "l1_if.h"
#include "utils.h"
-
-
-extern int lchan_activate(struct gsm_lchan *lchan);
-extern int lchan_deactivate(struct gsm_lchan *lchan);
#define TRX_STR "Transceiver related commands\n" "TRX number\n"
diff --git a/src/osmo-bts-litecell15/oml.c b/src/osmo-bts-litecell15/oml.c
index 634c236..5a5d452 100644
--- a/src/osmo-bts-litecell15/oml.c
+++ b/src/osmo-bts-litecell15/oml.c
@@ -262,8 +262,6 @@
}
#endif
-int lchan_activate(struct gsm_lchan *lchan);
-
static int opstart_compl(struct gsm_abis_mo *mo, struct msgb *l1_msg)
{
GsmL1_Prim_t *l1p = msgb_l1prim(l1_msg);
@@ -1645,7 +1643,7 @@
return res;
}
-static void enqueue_rel_marker(struct gsm_lchan *lchan)
+void enqueue_rel_marker(struct gsm_lchan *lchan)
{
struct sapi_cmd *cmd;
@@ -1655,15 +1653,7 @@
queue_sapi_command(lchan, cmd);
}
-int lchan_deactivate(struct gsm_lchan *lchan)
-{
- lchan_set_state(lchan, LCHAN_S_REL_REQ);
- lchan->ciph_state = 0; /* FIXME: do this in common/\*.c */
- enqueue_rel_marker(lchan);
- return 0;
-}
-
-static void enqueue_sacch_rel_marker(struct gsm_lchan *lchan)
+void enqueue_sacch_rel_marker(struct gsm_lchan *lchan)
{
struct sapi_cmd *cmd;
@@ -1671,12 +1661,6 @@
cmd = talloc_zero(lchan->ts->trx, struct sapi_cmd);
cmd->type = SAPI_CMD_SACCH_REL_MARKER;
queue_sapi_command(lchan, cmd);
-}
-
-static int lchan_deactivate_sacch(struct gsm_lchan *lchan)
-{
- enqueue_sacch_rel_marker(lchan);
- return 0;
}
/* callback from OML */
diff --git a/src/osmo-bts-octphy/l1_oml.c b/src/osmo-bts-octphy/l1_oml.c
index 74853bf..e7626e8 100644
--- a/src/osmo-bts-octphy/l1_oml.c
+++ b/src/osmo-bts-octphy/l1_oml.c
@@ -873,7 +873,7 @@
* RSL DEACTIVATE SACCH
***********************************************************************/
-static void enqueue_sacch_rel_marker(struct gsm_lchan *lchan)
+void enqueue_sacch_rel_marker(struct gsm_lchan *lchan)
{
struct sapi_cmd *cmd;
@@ -881,12 +881,6 @@
cmd = talloc_zero(lchan->ts->trx, struct sapi_cmd);
cmd->type = SAPI_CMD_SACCH_REL_MARKER;
queue_sapi_command(lchan, cmd);
-}
-
-static int lchan_deactivate_sacch(struct gsm_lchan *lchan)
-{
- enqueue_sacch_rel_marker(lchan);
- return 0;
}
int l1if_rsl_deact_sacch(struct gsm_lchan *lchan)
@@ -902,7 +896,7 @@
* RSL CHANNEL RELEASE
***********************************************************************/
-static void enqueue_rel_marker(struct gsm_lchan *lchan)
+void enqueue_rel_marker(struct gsm_lchan *lchan)
{
struct sapi_cmd *cmd;
@@ -910,14 +904,6 @@
cmd = talloc_zero(lchan->ts->trx, struct sapi_cmd);
cmd->type = SAPI_CMD_REL_MARKER;
queue_sapi_command(lchan, cmd);
-}
-
-static int lchan_deactivate(struct gsm_lchan *lchan)
-{
- lchan_set_state(lchan, LCHAN_S_REL_REQ);
- lchan->ciph_state = 0; /* FIXME: do this in common *.c */
- enqueue_rel_marker(lchan);
- return 0;
}
int l1if_rsl_chan_rel(struct gsm_lchan *lchan)
diff --git a/src/osmo-bts-sysmo/oml.c b/src/osmo-bts-sysmo/oml.c
index c1f1e0b..7a07ad1 100644
--- a/src/osmo-bts-sysmo/oml.c
+++ b/src/osmo-bts-sysmo/oml.c
@@ -261,8 +261,6 @@
}
#endif
-int lchan_activate(struct gsm_lchan *lchan);
-
static int opstart_compl(struct gsm_abis_mo *mo, struct msgb *l1_msg)
{
GsmL1_Prim_t *l1p = msgb_l1prim(l1_msg);
@@ -1665,7 +1663,7 @@
return res;
}
-static void enqueue_rel_marker(struct gsm_lchan *lchan)
+void enqueue_rel_marker(struct gsm_lchan *lchan)
{
struct sapi_cmd *cmd;
@@ -1675,15 +1673,7 @@
queue_sapi_command(lchan, cmd);
}
-int lchan_deactivate(struct gsm_lchan *lchan)
-{
- lchan_set_state(lchan, LCHAN_S_REL_REQ);
- lchan->ciph_state = 0; /* FIXME: do this in common/\*.c */
- enqueue_rel_marker(lchan);
- return 0;
-}
-
-static void enqueue_sacch_rel_marker(struct gsm_lchan *lchan)
+void enqueue_sacch_rel_marker(struct gsm_lchan *lchan)
{
struct sapi_cmd *cmd;
@@ -1691,12 +1681,6 @@
cmd = talloc_zero(lchan->ts->trx, struct sapi_cmd);
cmd->type = SAPI_CMD_SACCH_REL_MARKER;
queue_sapi_command(lchan, cmd);
-}
-
-static int lchan_deactivate_sacch(struct gsm_lchan *lchan)
-{
- enqueue_sacch_rel_marker(lchan);
- return 0;
}
/* callback from OML */
diff --git a/src/osmo-bts-sysmo/sysmobts_vty.c b/src/osmo-bts-sysmo/sysmobts_vty.c
index c829c49..8140090 100644
--- a/src/osmo-bts-sysmo/sysmobts_vty.c
+++ b/src/osmo-bts-sysmo/sysmobts_vty.c
@@ -42,15 +42,12 @@
#include <osmo-bts/gsm_data.h>
#include <osmo-bts/phy_link.h>
#include <osmo-bts/logging.h>
+#include <osmo-bts/oml.h>
#include <osmo-bts/vty.h>
#include "femtobts.h"
#include "l1_if.h"
#include "utils.h"
-
-
-extern int lchan_activate(struct gsm_lchan *lchan);
-extern int lchan_deactivate(struct gsm_lchan *lchan);
#define TRX_STR "Transceiver related commands\n" "TRX number\n"
diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c
index d1dc34a..2b11cac 100644
--- a/tests/handover/handover_test.c
+++ b/tests/handover/handover_test.c
@@ -275,3 +275,9 @@
int bts_model_adjst_ms_pwr(struct gsm_lchan *lchan) { return 0; }
int bts_model_ts_disconnect(struct gsm_bts_trx_ts *ts) { return 0; }
int bts_model_ts_connect(struct gsm_bts_trx_ts *ts, enum gsm_phys_chan_config as_pchan) { return 0; }
+void enqueue_rel_marker(struct gsm_lchan *lchan)
+{ return; }
+void enqueue_sacch_rel_marker(struct gsm_lchan *lchan)
+{ return; }
+int lchan_activate(struct gsm_lchan *lchan)
+{ return 0; }
diff --git a/tests/stubs.c b/tests/stubs.c
index c680db0..e406923 100644
--- a/tests/stubs.c
+++ b/tests/stubs.c
@@ -40,6 +40,12 @@
int l1if_set_txpower(struct femtol1_hdl *fl1h, float tx_power)
{ return 0; }
+void enqueue_rel_marker(struct gsm_lchan *lchan)
+{ return; }
+void enqueue_sacch_rel_marker(struct gsm_lchan *lchan)
+{ return; }
+int lchan_activate(struct gsm_lchan *lchan)
+{ return 0; }
int bts_model_adjst_ms_pwr(struct gsm_lchan *lchan)
{ return 0; }
--
To view, visit https://gerrit.osmocom.org/1046
To unsubscribe, visit https://gerrit.osmocom.org/settings
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Id0d3b19dbfaa16d1734321a07a6eb0355bfd77c9
Gerrit-PatchSet: 5
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Max <msuraev at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max <msuraev at sysmocom.de>