Fix some typos
Fix typos and common misspellings in code comments and in the manual. Change-Id: I46fc9d424620c77ae9ccf78b58081bd303386d7c
This commit is contained in:
parent
41eafec3f6
commit
a29affda98
|
@ -8,7 +8,7 @@ A BTS is connected to the BSC by some physical link. It could be an actual
|
|||
E1 link, but it could also be abis-over-IP with a mixture of TCP and RTP/UDP.
|
||||
|
||||
To further complicate the fact, multiple BTS can share one such pysical
|
||||
link. On a single E1 line, we can easily accomodate up to three BTS with
|
||||
link. On a single E1 line, we can easily accommodate up to three BTS with
|
||||
two TRX each.
|
||||
|
||||
Thus, it is best for OpenBSC to have some kind of abstraction layer. The BSC's
|
||||
|
|
|
@ -38,7 +38,7 @@ Chapter 8, Section 2.2, Table 24:
|
|||
|
||||
Window RXLEV averaging: 10 SACCH frames (no weighting)
|
||||
Window RXQUAL averaging: 1 SACCH frame (no averaging)
|
||||
Level Threashold: 1 of the last 1 AV-RXLEV values < -110dBm
|
||||
Level Threshold: 1 of the last 1 AV-RXLEV values < -110dBm
|
||||
Quality Threshold: 3 of the last 4 AV-RXQUAL values >= 5
|
||||
Interference Threshold: 1 of the last AV-RXLEV > -85 dBm &
|
||||
3 of the last 4 AV-RXQUAL values >= 5
|
||||
|
|
|
@ -54,7 +54,7 @@ interoperable A-over-IP (AoIP) interface shall look like.
|
|||
|
||||
As more modern MSCs at operators tend to favor implementing 3GPP AoIP
|
||||
rather than the proprietary SCCPlite based A interface, it becomes
|
||||
neccessary for OsmoBSC to support this.
|
||||
necessary for OsmoBSC to support this.
|
||||
|
||||
At the same time, for compatibility reasons, the classic SCCPlite
|
||||
support shall be kept, if possible with reasonable effort.
|
||||
|
|
|
@ -22,7 +22,7 @@ These counters and their description based on OsmoBSC 1.4.0.84-3f1f8 (OsmoBSC).
|
|||
| codec:fr | <<bts_codec:fr>> | Count the usage of FR codec by channel mode requested.
|
||||
| codec:hr | <<bts_codec:hr>> | Count the usage of HR codec by channel mode requested.
|
||||
| paging:attempted | <<bts_paging:attempted>> | Paging attempts for a subscriber.
|
||||
| paging:already | <<bts_paging:already>> | Paging attempts ignored as subsciber was already being paged.
|
||||
| paging:already | <<bts_paging:already>> | Paging attempts ignored as subscriber was already being paged.
|
||||
| paging:responded | <<bts_paging:responded>> | Paging attempts with successful paging response.
|
||||
| paging:expired | <<bts_paging:expired>> | Paging Request expired because of timeout T3113.
|
||||
| chan_act:total | <<bts_chan_act:total>> | Total number of Channel Activations.
|
||||
|
@ -48,7 +48,7 @@ These counters and their description based on OsmoBSC 1.4.0.84-3f1f8 (OsmoBSC).
|
|||
| codec:fr | <<bts_codec:fr>> | Count the usage of FR codec by channel mode requested.
|
||||
| codec:hr | <<bts_codec:hr>> | Count the usage of HR codec by channel mode requested.
|
||||
| paging:attempted | <<bts_paging:attempted>> | Paging attempts for a subscriber.
|
||||
| paging:already | <<bts_paging:already>> | Paging attempts ignored as subsciber was already being paged.
|
||||
| paging:already | <<bts_paging:already>> | Paging attempts ignored as subscriber was already being paged.
|
||||
| paging:responded | <<bts_paging:responded>> | Paging attempts with successful paging response.
|
||||
| paging:expired | <<bts_paging:expired>> | Paging Request expired because of timeout T3113.
|
||||
| chan_act:total | <<bts_chan_act:total>> | Total number of Channel Activations.
|
||||
|
@ -74,7 +74,7 @@ These counters and their description based on OsmoBSC 1.4.0.84-3f1f8 (OsmoBSC).
|
|||
| codec:fr | <<bts_codec:fr>> | Count the usage of FR codec by channel mode requested.
|
||||
| codec:hr | <<bts_codec:hr>> | Count the usage of HR codec by channel mode requested.
|
||||
| paging:attempted | <<bts_paging:attempted>> | Paging attempts for a subscriber.
|
||||
| paging:already | <<bts_paging:already>> | Paging attempts ignored as subsciber was already being paged.
|
||||
| paging:already | <<bts_paging:already>> | Paging attempts ignored as subscriber was already being paged.
|
||||
| paging:responded | <<bts_paging:responded>> | Paging attempts with successful paging response.
|
||||
| paging:expired | <<bts_paging:expired>> | Paging Request expired because of timeout T3113.
|
||||
| chan_act:total | <<bts_chan_act:total>> | Total number of Channel Activations.
|
||||
|
@ -105,14 +105,14 @@ These counters and their description based on OsmoBSC 1.4.0.84-3f1f8 (OsmoBSC).
|
|||
| assignment:no_channel | <<bsc_assignment:no_channel>> | Failure to allocate lchan for Assignment.
|
||||
| assignment:timeout | <<bsc_assignment:timeout>> | Assignment timed out.
|
||||
| assignment:failed | <<bsc_assignment:failed>> | Received Assignment Failure message.
|
||||
| assignment:error | <<bsc_assignment:error>> | Assigment failed for other reason.
|
||||
| assignment:error | <<bsc_assignment:error>> | Assignment failed for other reason.
|
||||
| handover:attempted | <<bsc_handover:attempted>> | Intra-BSC handover attempts.
|
||||
| handover:completed | <<bsc_handover:completed>> | Intra-BSC handover completed.
|
||||
| handover:stopped | <<bsc_handover:stopped>> | Connection ended during HO.
|
||||
| handover:no_channel | <<bsc_handover:no_channel>> | Failure to allocate lchan for HO.
|
||||
| handover:timeout | <<bsc_handover:timeout>> | Handover timed out.
|
||||
| handover:failed | <<bsc_handover:failed>> | Received Handover Fail messages.
|
||||
| handover:error | <<bsc_handover:error>> | Re-assigment failed for other reason.
|
||||
| handover:error | <<bsc_handover:error>> | Re-assignment failed for other reason.
|
||||
| interbsc_ho_out:attempted | <<bsc_interbsc_ho_out:attempted>> | Attempts to handover to remote BSS.
|
||||
| interbsc_ho_out:completed | <<bsc_interbsc_ho_out:completed>> | Handover to remote BSS completed.
|
||||
| interbsc_ho_out:stopped | <<bsc_interbsc_ho_out:stopped>> | Connection ended during HO.
|
||||
|
|
|
@ -61,7 +61,7 @@ specific BSIC that it reported measurements for.
|
|||
|
||||
The BSC is the point of decision whether to do handover or not. This can be a
|
||||
hugely complex combination of heuristics, knowledge of cell load and codec
|
||||
capabilites. The most important indicator for handover though is: does an MS
|
||||
capabilities. The most important indicator for handover though is: does an MS
|
||||
report a neighbor with a better signal than the current cell? See
|
||||
<<intra_bsc_ho_dot>>.
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ command presented above:
|
|||
up. If _BSSMAP Assign Request_ from MSC contains _Osmux CID_ IE,
|
||||
{program-name} will instruct its MGW to set up an Osmux connection on the
|
||||
CN-side of the MGCP endpoint, and will provide the MSC with its _recvCID_
|
||||
through the extension IE _Osmux CID_ appened to the _BSSMAP Assign Complete_
|
||||
through the extension IE _Osmux CID_ appended to the _BSSMAP Assign Complete_
|
||||
message. On the other hand, if _BSSMAP Assign Request_ doesn't contain an
|
||||
_Osmux CID_ IE, {program-name} will instruct its MGW to set up a regular RTP
|
||||
connection on the CN-side of the MGCP endpoint.
|
||||
|
|
|
@ -107,7 +107,7 @@ linecolor="green"];
|
|||
...;
|
||||
bsc <- m_sc [label="SCCP DT1 (BSSMAP CLEAR CMD)"];
|
||||
bsc -> bsc [label="GSCON_EV_A_CLEAR_CMD", textcolor="red", linecolor="red"];
|
||||
--- [label="BSC must release terrestrial resoures before reporting CLEAR COMPLETE"];
|
||||
--- [label="BSC must release terrestrial resources before reporting CLEAR COMPLETE"];
|
||||
mgw <- bsc [label="MGCP DLCX rtpbridge/2@mgw", textcolor="blue", linecolor="blue"];
|
||||
mgw box mgw [label="Release MSC-facing local RTP port (3000)", textcolor="blue", linecolor="blue"];
|
||||
mgw -> bsc [label="MGCP DLCX rtpbridge/2@mgw OK", textcolor="blue", linecolor="blue"];
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# MO Call on a classic E1 Abis BTS with classic E1 A BSC
|
||||
# not actually supported by OsmoBSC (nor planned), for refrence only
|
||||
# not actually supported by OsmoBSC (nor planned), for reference only
|
||||
msc {
|
||||
hscale=2;
|
||||
ms [label="MS"], bts [label="E1 BTS"], bsc[label="OsmoBSC"], trau[label="TRAU"], m_sc[label="MSC"];
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
In case of satellite based GSM systems, the transmission cost on the back-haul
|
||||
is relatively expensive. The billing for such SAT uplink is usually done in a
|
||||
pay-per-byte basis. Thus, reducing the amount of bytes transfered would
|
||||
pay-per-byte basis. Thus, reducing the amount of bytes transferred would
|
||||
significantly reduce the cost of such uplinks. In such environment, even
|
||||
seemingly small protocol optimizations, eg. message batching and trunking, can
|
||||
result in significant cost reduction.
|
||||
|
@ -93,7 +93,7 @@ layer 4 protocols are suitable for this application. We detail the reasons
|
|||
why:
|
||||
|
||||
* TCP is a streaming protocol aimed at maximizing the throughput of a stream
|
||||
withing the constraints of the underlying transport layer. This feature is
|
||||
within the constraints of the underlying transport layer. This feature is
|
||||
not really required for the low-bandwidth and low-pps GSM signalling.
|
||||
Moreover, TCP is stream oriented and does not conserve message boundaries.
|
||||
As such, the IPA header has to serve as a boundary between messages in the
|
||||
|
@ -114,7 +114,7 @@ good as TCP does) packet loss and copes with packet re-ordering.
|
|||
|
||||
LAPD has a very small header (3-5 octets) compared to TCPs 20 bytes. Even if
|
||||
LAPD is put inside UDP, the combination of 11 to 13 octets still saves a
|
||||
noticable number of bytes per packet. Moreover, LAPD has been modified for less
|
||||
noticeable number of bytes per packet. Moreover, LAPD has been modified for less
|
||||
reliable interfaces such as the GSM Um interface (LAPDm), as well as for the
|
||||
use in satellite systems (LAPsat in ETSI GMR).
|
||||
|
||||
|
@ -136,7 +136,7 @@ The following FT values are assigned:
|
|||
* FT == 2: Dummy
|
||||
* FT == 3: Reserved for Fture Use
|
||||
|
||||
There can be any number of OSmux messages batched up in one underlaying packet.
|
||||
There can be any number of OSmux messages batched up in one underlying packet.
|
||||
In this case, the multiple OSmux messages are simply concatenated, i.e. the
|
||||
OSmux header control octet directly follows the last octet of the payload of the
|
||||
previous OSmux message.
|
||||
|
@ -224,7 +224,7 @@ need to have independent timestamp and sequence numbers (related to a 8kHz
|
|||
clock) as specified in AMR-RTP.
|
||||
|
||||
AMR Codec Mode Request (AMR-FT): 4 bits::
|
||||
This is a mapping from te AMR FT field (Frame type index) in RFC3267 Section
|
||||
This is a mapping from the AMR FT field (Frame type index) in RFC3267 Section
|
||||
4.3.2. The length of each codec frame needs to be determined from this field. It
|
||||
is thus guaranteed that all frames for a specific stream in an OSmux batch are
|
||||
of the same AMR type.
|
||||
|
@ -356,7 +356,7 @@ msc {
|
|||
|
||||
=== Batching
|
||||
|
||||
Following chart shows how batching with a factor of 3 works. To easilly
|
||||
Following chart shows how batching with a factor of 3 works. To easily
|
||||
illustrate batching, only uplink and one concurrent call is considered.
|
||||
|
||||
It can be seen how 3 RTP packets from MSa arrive to the BSC from the BTS. The
|
||||
|
@ -559,7 +559,7 @@ more concurrent calls.
|
|||
|
||||
A batching factor of 8 provides very little improvement with regards to batching
|
||||
4 messages. Still, we risk to degrade user experience. Thus, we consider a
|
||||
batching factor of 3 and 4 is adecuate.
|
||||
batching factor of 3 and 4 is adequate.
|
||||
|
||||
== Other proposed follow-up works
|
||||
|
||||
|
|
|
@ -1336,7 +1336,7 @@
|
|||
<param name='<0-255>' doc='BTS Number' />
|
||||
<param name='smscb-command' doc='SMS Cell Broadcast' />
|
||||
<param name='normal' doc='Normal (one-shot) SMSCB Message; sent once over Abis+Um' />
|
||||
<param name='schedule' doc='Schedule (one-shot) SMSCB Messag; sent once over Abis+Um' />
|
||||
<param name='schedule' doc='Schedule (one-shot) SMSCB Message; sent once over Abis+Um' />
|
||||
<param name='default' doc='Default (repeating) SMSCB Message; sent once over Abis, unlimited ovrer Um' />
|
||||
<param name='<1-4>' doc='Last Valid Block' />
|
||||
<param name='HEXSTRING' doc='Hex Encoded SMSCB message (up to 88 octets)' />
|
||||
|
|
|
@ -118,7 +118,7 @@
|
|||
<description>
|
||||
The periodic location updating interval determines how often
|
||||
the MS will periodically perform a LOCATION UPDATE procedure,
|
||||
despite not having actuall changed location. The value is
|
||||
despite not having actually changed location. The value is
|
||||
specified in minutes.
|
||||
</description>
|
||||
</command>
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
#define MISDN_RELEASE 20
|
||||
|
||||
/* primitives for information exchange
|
||||
* generell format
|
||||
* general format
|
||||
* <16 bit 0 >
|
||||
* <8 bit command>
|
||||
* BIT 8 = 1 LAYER private
|
||||
|
@ -65,7 +65,7 @@
|
|||
#define MISDN_CMDMASK 0xff00
|
||||
#define MISDN_LAYERMASK 0x00ff
|
||||
|
||||
/* generell commands */
|
||||
/* general commands */
|
||||
#define OPEN_CHANNEL 0x0100
|
||||
#define CLOSE_CHANNEL 0x0200
|
||||
#define CONTROL_CHANNEL 0x0300
|
||||
|
@ -110,7 +110,7 @@
|
|||
#define DL_UNITDATA_IND 0x3108
|
||||
#define DL_INFORMATION_IND 0x0008
|
||||
|
||||
/* intern layer 2 managment */
|
||||
/* intern layer 2 management */
|
||||
#define MDL_ASSIGN_REQ 0x1804
|
||||
#define MDL_ASSIGN_IND 0x1904
|
||||
#define MDL_REMOVE_REQ 0x1A04
|
||||
|
|
|
@ -25,7 +25,7 @@ struct bsc_msc_data;
|
|||
/* Create and start state machine which handles the reset/reset-ack procedure */
|
||||
void a_reset_alloc(struct bsc_msc_data *msc, const char *name, void *cb);
|
||||
|
||||
/* Confirm that we sucessfully received a reset acknowlege message */
|
||||
/* Confirm that we successfully received a reset acknowledge message */
|
||||
void a_reset_ack_confirm(struct bsc_msc_data *msc);
|
||||
|
||||
/* Report a failed connection */
|
||||
|
|
|
@ -60,7 +60,7 @@ int rsl_ericsson_imm_assign_cmd(struct gsm_bts *bts, uint32_t tlli, uint8_t len,
|
|||
/* Siemens vendor-specific RSL extensions */
|
||||
int rsl_siemens_mrpci(struct gsm_lchan *lchan, struct rsl_mrpci *mrpci);
|
||||
|
||||
/* ip.access specfic RSL extensions */
|
||||
/* ip.access specific RSL extensions */
|
||||
struct msgb *rsl_make_ipacc_mdcx(const struct gsm_lchan *lchan, uint32_t dest_ip, uint16_t dest_port);
|
||||
int rsl_tx_ipacc_crcx(const struct gsm_lchan *lchan);
|
||||
int rsl_tx_ipacc_mdcx(const struct gsm_lchan *lchan);
|
||||
|
|
|
@ -71,7 +71,7 @@ struct acc_ramp {
|
|||
/*!
|
||||
* Ramping step interval in seconds.
|
||||
* This value depends on the current BTS channel load average, unless
|
||||
* it has been overriden by VTY configuration.
|
||||
* it has been overridden by VTY configuration.
|
||||
*/
|
||||
unsigned int step_interval_sec;
|
||||
bool step_interval_is_fixed;
|
||||
|
|
|
@ -273,7 +273,7 @@ struct gsm_subscriber_connection {
|
|||
/* for advanced ping/pong */
|
||||
int send_ping;
|
||||
|
||||
/* SCCP connection realted */
|
||||
/* SCCP connection related */
|
||||
struct bsc_msc_data *msc;
|
||||
|
||||
/* Sigtran connection ID */
|
||||
|
@ -1010,7 +1010,7 @@ struct gsm_bts {
|
|||
/* Geographical location of the BTS */
|
||||
struct llist_head loc_list;
|
||||
|
||||
/* number of ths BTS in network */
|
||||
/* number of this BTS in network */
|
||||
uint8_t nr;
|
||||
/* human readable name / description */
|
||||
char *description;
|
||||
|
@ -1084,7 +1084,7 @@ struct gsm_bts {
|
|||
* receival of empty SI disabling unsupported SI. see OS#3707. */
|
||||
bool si_unused_send_empty;
|
||||
|
||||
/* ip.accesss Unit ID's have Site/BTS/TRX layout */
|
||||
/* ip.access Unit ID's have Site/BTS/TRX layout */
|
||||
union {
|
||||
struct {
|
||||
uint16_t site_id;
|
||||
|
@ -1251,7 +1251,7 @@ struct gsm_bts {
|
|||
struct llist_head local_neighbors;
|
||||
|
||||
/* BTS-specific overrides for timer values from struct gsm_network. */
|
||||
uint8_t T3122; /* ASSIGMENT REJECT wait indication */
|
||||
uint8_t T3122; /* ASSIGNMENT REJECT wait indication */
|
||||
bool T3113_dynamic; /* Calculate T3113 timeout dynamically based on BTS channel config and load */
|
||||
|
||||
/* Periodic channel load measurements are used to maintain T3122. */
|
||||
|
@ -1411,7 +1411,7 @@ static const struct rate_ctr_desc bts_ctr_description[] = {
|
|||
[BTS_CTR_CODEC_V1_HR] = {"codec:hr", "Count the usage of HR codec by channel mode requested."},
|
||||
|
||||
[BTS_CTR_PAGING_ATTEMPTED] = {"paging:attempted", "Paging attempts for a subscriber."},
|
||||
[BTS_CTR_PAGING_ALREADY] = {"paging:already", "Paging attempts ignored as subsciber was already being paged."},
|
||||
[BTS_CTR_PAGING_ALREADY] = {"paging:already", "Paging attempts ignored as subscriber was already being paged."},
|
||||
[BTS_CTR_PAGING_RESPONDED] = {"paging:responded", "Paging attempts with successful paging response."},
|
||||
[BTS_CTR_PAGING_EXPIRED] = {"paging:expired", "Paging Request expired because of timeout T3113."},
|
||||
[BTS_CTR_CHAN_ACT_TOTAL] = {"chan_act:total", "Total number of Channel Activations."},
|
||||
|
@ -1476,7 +1476,7 @@ static const struct rate_ctr_desc bsc_ctr_description[] = {
|
|||
[BSC_CTR_ASSIGNMENT_NO_CHANNEL] = {"assignment:no_channel", "Failure to allocate lchan for Assignment."},
|
||||
[BSC_CTR_ASSIGNMENT_TIMEOUT] = {"assignment:timeout", "Assignment timed out."},
|
||||
[BSC_CTR_ASSIGNMENT_FAILED] = {"assignment:failed", "Received Assignment Failure message."},
|
||||
[BSC_CTR_ASSIGNMENT_ERROR] = {"assignment:error", "Assigment failed for other reason."},
|
||||
[BSC_CTR_ASSIGNMENT_ERROR] = {"assignment:error", "Assignment failed for other reason."},
|
||||
|
||||
[BSC_CTR_HANDOVER_ATTEMPTED] = {"handover:attempted", "Intra-BSC handover attempts."},
|
||||
[BSC_CTR_HANDOVER_COMPLETED] = {"handover:completed", "Intra-BSC handover completed."},
|
||||
|
@ -1484,7 +1484,7 @@ static const struct rate_ctr_desc bsc_ctr_description[] = {
|
|||
[BSC_CTR_HANDOVER_NO_CHANNEL] = {"handover:no_channel", "Failure to allocate lchan for HO."},
|
||||
[BSC_CTR_HANDOVER_TIMEOUT] = {"handover:timeout", "Handover timed out."},
|
||||
[BSC_CTR_HANDOVER_FAILED] = {"handover:failed", "Received Handover Fail messages."},
|
||||
[BSC_CTR_HANDOVER_ERROR] = {"handover:error", "Re-assigment failed for other reason."},
|
||||
[BSC_CTR_HANDOVER_ERROR] = {"handover:error", "Re-assignment failed for other reason."},
|
||||
|
||||
[BSC_CTR_INTER_BSC_HO_OUT_ATTEMPTED] = {"interbsc_ho_out:attempted",
|
||||
"Attempts to handover to remote BSS."},
|
||||
|
@ -1630,7 +1630,7 @@ struct gsm_bts *gsm_bts_by_lac(struct gsm_network *net, unsigned int lac,
|
|||
|
||||
extern void *tall_bsc_ctx;
|
||||
|
||||
/* this actaully refers to the IPA transport, not the BTS model */
|
||||
/* this actually refers to the IPA transport, not the BTS model */
|
||||
static inline int is_ipaccess_bts(struct gsm_bts *bts)
|
||||
{
|
||||
switch (bts->type) {
|
||||
|
|
|
@ -20,7 +20,7 @@ struct meas_feed_meas {
|
|||
uint8_t lchan_type;
|
||||
/* The physical channel type, enum gsm_phys_chan_config */
|
||||
uint8_t pchan_type;
|
||||
/* number of ths BTS in network */
|
||||
/* number of this BTS in network */
|
||||
uint8_t bts_nr;
|
||||
/* number of this TRX in the BTS */
|
||||
uint8_t trx_nr;
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
/* Create and start state machine which handles the reset/reset-ack procedure */
|
||||
void start_reset_fsm(struct bsc_msc_data *msc);
|
||||
|
||||
/* Confirm that we sucessfully received a reset acknowlege message */
|
||||
/* Confirm that we successfully received a reset acknowledge message */
|
||||
void reset_ack_confirm(struct bsc_msc_data *msc);
|
||||
|
||||
/* Report a failed connection */
|
||||
|
|
|
@ -33,7 +33,7 @@ int osmo_bsc_sigtran_open_conn(struct gsm_subscriber_connection *conn, struct ms
|
|||
/* Send data to MSC */
|
||||
int osmo_bsc_sigtran_send(struct gsm_subscriber_connection *conn, struct msgb *msg);
|
||||
|
||||
/* Initalize osmo sigtran backhaul */
|
||||
/* Initialize osmo sigtran backhaul */
|
||||
int osmo_bsc_sigtran_init(struct llist_head *mscs);
|
||||
|
||||
/* Close all open sigtran connections and channels */
|
||||
|
|
|
@ -10,7 +10,7 @@ struct penalty_timers;
|
|||
* returns an empty struct penalty_timers. */
|
||||
struct penalty_timers *penalty_timers_init(void *ctx);
|
||||
|
||||
/* Add a penalty timer for an arbitary object.
|
||||
/* Add a penalty timer for an arbitrary object.
|
||||
* Note: the ownership of for_object remains with the caller; it is handled as a mere void* value, so
|
||||
* invalid pointers can be handled without problems, while common sense dictates that invalidated
|
||||
* pointers (freed objects) should probably be removed from this list. More importantly, the pointer must
|
||||
|
|
|
@ -192,7 +192,7 @@ static void check_restart_or_exit(struct gsm_bts_trx *trx)
|
|||
static int ipacc_msg_ack(uint8_t mt, struct gsm_bts_trx *trx)
|
||||
{
|
||||
if (sw_load_state == 1) {
|
||||
fprintf(stderr, "The new software is activaed.\n");
|
||||
fprintf(stderr, "The new software is activated.\n");
|
||||
check_restart_or_exit(trx);
|
||||
} else if (oml_state == 1) {
|
||||
fprintf(stderr, "Set the NV Attributes.\n");
|
||||
|
@ -238,7 +238,7 @@ static int nwl_sig_cb(unsigned int subsys, unsigned int signal,
|
|||
/* Create whitelist from results */
|
||||
physconf_len = build_physconf(physconf_buf,
|
||||
&trx->ipaccess.rxlev_stat);
|
||||
/* Start next test abbout BCCH channel usage */
|
||||
/* Start next test about BCCH channel usage */
|
||||
ipac_nwl_test_start(trx, NM_IPACC_TESTNO_BCCH_CHAN_USAGE,
|
||||
physconf_buf, physconf_len);
|
||||
break;
|
||||
|
|
|
@ -581,7 +581,7 @@ struct msgb *ipaccess_proxy_read_msg(struct osmo_fd *bfd, int *error)
|
|||
|
||||
msgb_put(msg, ret);
|
||||
|
||||
/* then read te length as specified in header */
|
||||
/* then read the length as specified in header */
|
||||
msg->l2h = msg->data + sizeof(*hh);
|
||||
len = ntohs(hh->len);
|
||||
ret = recv(bfd->fd, msg->l2h, len, 0);
|
||||
|
|
|
@ -163,11 +163,11 @@ void a_reset_alloc(struct bsc_msc_data *msc, const char *name, void *cb)
|
|||
OSMO_ASSERT(reset_fsm);
|
||||
msc->a.reset_fsm = reset_fsm;
|
||||
|
||||
/* Immediatelly (1ms) kick off reset sending mechanism */
|
||||
/* Immediately (1ms) kick off reset sending mechanism */
|
||||
osmo_fsm_inst_state_chg_ms(reset_fsm, ST_DISC, 1, RESET_RESEND_TIMER_NO);
|
||||
}
|
||||
|
||||
/* Confirm that we sucessfully received a reset acknowlege message */
|
||||
/* Confirm that we successfully received a reset acknowledge message */
|
||||
void a_reset_ack_confirm(struct bsc_msc_data *msc)
|
||||
{
|
||||
if (!msc)
|
||||
|
|
|
@ -2105,7 +2105,7 @@ int abis_nm_perform_test(struct gsm_bts *bts, uint8_t obj_class,
|
|||
{
|
||||
struct abis_om_hdr *oh;
|
||||
|
||||
DEBUGP(DNM, "PEFORM TEST %s\n", abis_nm_test_name(test_nr));
|
||||
DEBUGP(DNM, "PERFORM TEST %s\n", abis_nm_test_name(test_nr));
|
||||
|
||||
if (!msg)
|
||||
msg = nm_msgb_alloc();
|
||||
|
@ -2851,7 +2851,7 @@ static void rsl_connect_timeout(void *data)
|
|||
|
||||
LOG_TRX(trx, DRSL, LOGL_NOTICE, "RSL connection request timed out\n");
|
||||
|
||||
/* Fake an RSL CONECT NACK message from the BTS. */
|
||||
/* Fake an RSL CONNECT NACK message from the BTS. */
|
||||
signal.trx = trx;
|
||||
signal.msg_type = NM_MT_IPACC_RSL_CONNECT_NACK;
|
||||
osmo_signal_dispatch(SS_NM, S_NM_IPACC_NACK, &signal);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* VTY interface for A-bis OML (Netowrk Management) */
|
||||
/* VTY interface for A-bis OML (Network Management) */
|
||||
|
||||
/* (C) 2009-2018 by Harald Welte <laforge@gnumonks.org>
|
||||
*
|
||||
|
|
|
@ -1578,7 +1578,7 @@ static void om2k_mo_st_wait_start_res(struct osmo_fsm_inst *fi, uint32_t event,
|
|||
abis_om2k_tx_op_info(omfp->trx->bts, &omfp->mo->addr, 1);
|
||||
return;
|
||||
case OM2K_MO_CLS_DP:
|
||||
/* Transition directoy to WAIT_ENABLE_ACCEPT */
|
||||
/* Transition directory to WAIT_ENABLE_ACCEPT */
|
||||
osmo_fsm_inst_state_chg(fi, OM2K_ST_WAIT_ENABLE_ACCEPT,
|
||||
OM2K_TIMEOUT, 0);
|
||||
abis_om2k_tx_enable_req(omfp->trx->bts, &omfp->mo->addr);
|
||||
|
|
|
@ -1391,7 +1391,7 @@ static int rsl_rx_chan_rqd(struct msgb *msg)
|
|||
/* check availability / allocate channel
|
||||
*
|
||||
* - First try to allocate SDCCH.
|
||||
* - If SDCCH is not available, try a TCH/H (less bandwith).
|
||||
* - If SDCCH is not available, try a TCH/H (less bandwidth).
|
||||
* - If there is still no channel available, try a TCH/F.
|
||||
*
|
||||
*/
|
||||
|
@ -1438,7 +1438,7 @@ int rsl_tx_imm_assignment(struct gsm_lchan *lchan)
|
|||
uint8_t buf[GSM_MACBLOCK_LEN];
|
||||
struct gsm48_imm_ass *ia = (struct gsm48_imm_ass *) buf;
|
||||
|
||||
/* create IMMEDIATE ASSIGN 04.08 messge */
|
||||
/* create IMMEDIATE ASSIGN 04.08 message */
|
||||
memset(ia, 0, sizeof(*ia));
|
||||
/* we set ia->l2_plen once we know the length of the MA below */
|
||||
ia->proto_discr = GSM48_PDISC_RR;
|
||||
|
|
|
@ -434,7 +434,7 @@ void assignment_fsm_start(struct gsm_subscriber_connection *conn, struct gsm_bts
|
|||
conn->assignment.req = *req;
|
||||
req = &conn->assignment.req;
|
||||
|
||||
/* Check if we need a voice stream. If yes, set the approriate struct
|
||||
/* Check if we need a voice stream. If yes, set the appropriate struct
|
||||
* members in conn */
|
||||
if (check_requires_voice_stream(conn) < 0)
|
||||
return;
|
||||
|
|
|
@ -543,7 +543,7 @@ bool gscon_connect_mgw_to_msc(struct gsm_subscriber_connection *conn,
|
|||
const struct mgcp_conn_peer *prev_crcx_info = osmo_mgcpc_ep_ci_get_rtp_info(ci);
|
||||
|
||||
if (!conn->user_plane.mgw_endpoint) {
|
||||
LOGPFSML(conn->fi, LOGL_ERROR, "Internal error: conn has a CI but no endoint\n");
|
||||
LOGPFSML(conn->fi, LOGL_ERROR, "Internal error: conn has a CI but no endpoint\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -2013,7 +2013,7 @@ DEFUN(cfg_bts,
|
|||
bts = bsc_bts_alloc_register(gsmnet, GSM_BTS_TYPE_UNKNOWN,
|
||||
HARDCODED_BSIC);
|
||||
/*
|
||||
* Initalize bts->acc_ramp here. Else we could segfault while
|
||||
* Initialize bts->acc_ramp here. Else we could segfault while
|
||||
* processing a configuration file with ACC ramping settings.
|
||||
*/
|
||||
acc_ramp_init(&bts->acc_ramp, bts);
|
||||
|
@ -3816,7 +3816,7 @@ static void get_amr_start_from_arg(struct vty *vty, const char *argv[], int full
|
|||
}
|
||||
}
|
||||
|
||||
/* Give the current amr configuration a final consistency chack by feeding the
|
||||
/* Give the current amr configuration a final consistency check by feeding the
|
||||
* the configuration into the gsm48 multirate IE generator function */
|
||||
static int check_amr_config(struct vty *vty)
|
||||
{
|
||||
|
@ -4610,7 +4610,7 @@ DEFUN(smscb_cmd, smscb_cmd_cmd,
|
|||
"BTS related commands\n" BTS_NR_STR
|
||||
"SMS Cell Broadcast\n"
|
||||
"Normal (one-shot) SMSCB Message; sent once over Abis+Um\n"
|
||||
"Schedule (one-shot) SMSCB Messag; sent once over Abis+Um\n"
|
||||
"Schedule (one-shot) SMSCB Message; sent once over Abis+Um\n"
|
||||
"Default (repeating) SMSCB Message; sent once over Abis, unlimited ovrer Um\n"
|
||||
"Last Valid Block\n"
|
||||
"Hex Encoded SMSCB message (up to 88 octets)\n")
|
||||
|
|
|
@ -330,7 +330,7 @@ unsigned char msg_4[] =
|
|||
/*
|
||||
Object Class: Transceiver
|
||||
BTS relat. Number: 0
|
||||
Tranceiver number: 0
|
||||
Transceiver number: 0
|
||||
Instance 3: FF
|
||||
SET TRX ATTRIBUTES
|
||||
aRFCNList (HEX): 0001
|
||||
|
|
|
@ -189,7 +189,7 @@ static bool test_codec_support_bts(const struct gsm_bts *bts, uint8_t perm_spch)
|
|||
bool rate_match = false;
|
||||
|
||||
/* Check if the BTS provides a physical channel that matches the
|
||||
* bandwith of the desired codec. */
|
||||
* bandwidth of the desired codec. */
|
||||
rc = full_rate_from_perm_spch(&full_rate, perm_spch);
|
||||
if (rc < 0)
|
||||
return false;
|
||||
|
@ -286,13 +286,13 @@ static int match_amr_s15_s0(struct channel_mode_and_rate *ch_mode_rate, const st
|
|||
* However, only AoIP based networks will include a speech codec list
|
||||
* into the ASSIGNMENT COMMAND. For non AoIP based networks, no speech
|
||||
* codec (sc_match) will be available, so we will fully rely on the
|
||||
* local configuration for thoses cases. */
|
||||
* local configuration for those cases. */
|
||||
if (sc_match)
|
||||
ch_mode_rate->s15_s0 = sc_match->cfg & amr_s15_s0_supported;
|
||||
else
|
||||
ch_mode_rate->s15_s0 = amr_s15_s0_supported;
|
||||
|
||||
/* Prefer "Config-NB-Code = 1" (S1) over all other AMR rates setttings.
|
||||
/* Prefer "Config-NB-Code = 1" (S1) over all other AMR rates settings.
|
||||
* When S1 is set, the active set will automatically include 12.2k, 7.4k,
|
||||
* 5.9k, 4.75k, in case of HR 12,2k is left out. */
|
||||
if (ch_mode_rate->s15_s0 & GSM0808_SC_CFG_AMR_4_75_5_90_7_40_12_20) {
|
||||
|
|
|
@ -405,12 +405,12 @@ int gsm48_multirate_config(uint8_t *lv,
|
|||
for (i = 0; i < num_modes; i++) {
|
||||
if (i > 0 && modes[i - 1].mode > modes[i].mode) {
|
||||
LOGP(DRR, LOGL_ERROR,
|
||||
"BUG: Multirate codec with inconsistant config (mode order).\n");
|
||||
"BUG: Multirate codec with inconsistent config (mode order).\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
if (i > 0 && modes[i - 1].mode == modes[i].mode) {
|
||||
LOGP(DRR, LOGL_ERROR,
|
||||
"BUG: Multirate codec with inconsistant config (duplicate modes).\n");
|
||||
"BUG: Multirate codec with inconsistent config (duplicate modes).\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
@ -460,7 +460,7 @@ int gsm48_multirate_config(uint8_t *lv,
|
|||
}
|
||||
if (!mode_valid) {
|
||||
LOGP(DRR, LOGL_ERROR,
|
||||
"BUG: Multirate codec with inconsistant config (no mode defined).\n");
|
||||
"BUG: Multirate codec with inconsistent config (no mode defined).\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -838,7 +838,7 @@ struct gsm_bts *gsm_bts_alloc(struct gsm_network *net, uint8_t bts_num)
|
|||
bts->chan_load_avg = 0;
|
||||
|
||||
/* timer overrides */
|
||||
bts->T3122 = 0; /* not overriden by default */
|
||||
bts->T3122 = 0; /* not overridden by default */
|
||||
bts->T3113_dynamic = true; /* dynamic by default */
|
||||
|
||||
bts->dtxu = GSM48_DTX_SHALL_NOT_BE_USED;
|
||||
|
|
|
@ -180,7 +180,7 @@ static void attempt_handover(struct gsm_meas_rep *mr)
|
|||
if (nmp->arfcn == 0)
|
||||
continue;
|
||||
|
||||
/* caculate average rxlev for this cell over the window */
|
||||
/* calculate average rxlev for this cell over the window */
|
||||
avg = neigh_meas_avg(nmp, ho_get_hodec1_rxlev_neigh_avg_win(bts->ho));
|
||||
|
||||
/* check if hysteresis is fulfilled */
|
||||
|
|
|
@ -982,7 +982,7 @@ static void collect_candidates_for_lchan(struct gsm_lchan *lchan,
|
|||
|
||||
OSMO_ASSERT(candidates);
|
||||
|
||||
/* caculate average rxlev for this cell over the window */
|
||||
/* calculate average rxlev for this cell over the window */
|
||||
av_rxlev = get_meas_rep_avg(lchan,
|
||||
ho_get_hodec2_full_tdma(bts->ho) ?
|
||||
MEAS_REP_DL_RXLEV_FULL : MEAS_REP_DL_RXLEV_SUB,
|
||||
|
@ -990,7 +990,7 @@ static void collect_candidates_for_lchan(struct gsm_lchan *lchan,
|
|||
if (_av_rxlev)
|
||||
*_av_rxlev = av_rxlev;
|
||||
|
||||
/* in case there is no measurment report (yet) */
|
||||
/* in case there is no measurement report (yet) */
|
||||
if (av_rxlev < 0) {
|
||||
LOGPHOLCHAN(lchan, LOGL_DEBUG, "Not collecting candidates, not enough measurements"
|
||||
" (got %d, want %u)\n",
|
||||
|
@ -1023,7 +1023,7 @@ static void collect_candidates_for_lchan(struct gsm_lchan *lchan,
|
|||
* Do not perform this process, if handover and assignment are disabled for
|
||||
* the current cell.
|
||||
* Do not perform handover, if the minimum acceptable RX level
|
||||
* is not reched for this cell.
|
||||
* is not reached for this cell.
|
||||
*
|
||||
* If one or more 'better cells' are available, check the current and neighbor
|
||||
* cell measurements in descending order of their RX levels (down-link):
|
||||
|
@ -1263,7 +1263,7 @@ static void on_measurement_report(struct gsm_meas_rep *mr)
|
|||
return;
|
||||
}
|
||||
|
||||
/* get average levels. if not enought measurements yet, value is < 0 */
|
||||
/* get average levels. if not enough measurements yet, value is < 0 */
|
||||
av_rxlev = get_meas_rep_avg(lchan,
|
||||
ho_get_hodec2_full_tdma(bts->ho) ?
|
||||
MEAS_REP_DL_RXLEV_FULL : MEAS_REP_DL_RXLEV_SUB,
|
||||
|
@ -1366,7 +1366,7 @@ static void on_measurement_report(struct gsm_meas_rep *mr)
|
|||
* Do not perform this process, if handover and assignment are disabled for
|
||||
* the current cell.
|
||||
* Do not perform handover, if the minimum acceptable RX level
|
||||
* is not reched for this cell.
|
||||
* is not reached for this cell.
|
||||
* Only check candidates that will solve/reduce congestion.
|
||||
*
|
||||
* If a cell is congested, all slots are checked for all their RX levels
|
||||
|
|
|
@ -848,7 +848,7 @@ void handover_end(struct gsm_subscriber_connection *conn, enum handover_result r
|
|||
if (result == HO_RESULT_OK)
|
||||
conn->ho.created_ci_for_msc = NULL;
|
||||
|
||||
/* If the performed handover was an INTRA BSC HANDOVER, inform the MSC that a handover has happend */
|
||||
/* If the performed handover was an INTRA BSC HANDOVER, inform the MSC that a handover has happened */
|
||||
if (result == HO_RESULT_OK && ((ho->scope & HO_INTRA_CELL) || (ho->scope & HO_INTRA_BSC)))
|
||||
send_handover_performed(conn);
|
||||
|
||||
|
|
|
@ -446,7 +446,7 @@ static void lchan_rtp_fsm_wait_mgw_endpoint_configured_onenter(struct osmo_fsm_i
|
|||
|
||||
/* At this point, we are taking over an old lchan's MGW endpoint (if any). */
|
||||
if (!lchan->mgw_endpoint_ci_bts && old_lchan) {
|
||||
/* The old lchan shall forget the enpoint now. We might put it back upon ROLLBACK */
|
||||
/* The old lchan shall forget the endpoint now. We might put it back upon ROLLBACK */
|
||||
lchan->mgw_endpoint_ci_bts = old_lchan->mgw_endpoint_ci_bts;
|
||||
old_lchan->mgw_endpoint_ci_bts = NULL;
|
||||
}
|
||||
|
|
|
@ -425,7 +425,7 @@ static int neighbor_del_all(struct vty *vty)
|
|||
bts->nr, neigh_bts->nr, VTY_NEWLINE);
|
||||
removed += rc;
|
||||
} else {
|
||||
vty_out(vty, "%% Error while removing local neigbor bts %u to bts %u, aborted%s",
|
||||
vty_out(vty, "%% Error while removing local neighbor bts %u to bts %u, aborted%s",
|
||||
bts->nr, neigh_bts->nr, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
|
|
@ -641,13 +641,13 @@ static int bssmap_handle_lcls_connect_ctrl(struct gsm_subscriber_connection *con
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* Select a prefered and an alternative codec rate depending on the available
|
||||
/* Select a preferred and an alternative codec rate depending on the available
|
||||
* capabilities. This decision does not include the actual channel load yet,
|
||||
* this is also the reason why the result is a prefered and an alternate
|
||||
* this is also the reason why the result is a preferred and an alternate
|
||||
* setting. The final decision is made in assignment_fsm.c when the actual
|
||||
* lchan is requested. The preferred lchan will be requested first. If we
|
||||
* find an alternate setting here, this one will be tried secondly if our
|
||||
* primary coice fails. */
|
||||
* primary choice fails. */
|
||||
static int select_codecs(struct assignment_request *req, struct gsm0808_channel_type *ct,
|
||||
struct gsm_subscriber_connection *conn)
|
||||
{
|
||||
|
|
|
@ -743,7 +743,7 @@ static void lcls_fsm_cleanup(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause
|
|||
struct gsm_subscriber_connection *conn = fi->priv;
|
||||
|
||||
if (conn->lcls.other) {
|
||||
/* inform the "other" side that we're dead, so it can disabe LS and send NOTIFY */
|
||||
/* inform the "other" side that we're dead, so it can disable LS and send NOTIFY */
|
||||
if (conn->lcls.other->fi)
|
||||
osmo_fsm_inst_dispatch(conn->lcls.other->lcls.fi, LCLS_EV_OTHER_DEAD, conn);
|
||||
conn->lcls.other = NULL;
|
||||
|
|
|
@ -844,7 +844,7 @@ int main(int argc, char **argv)
|
|||
logging_vty_add_deprecated_subsys(tall_bsc_ctx, "cc");
|
||||
logging_vty_add_deprecated_subsys(tall_bsc_ctx, "mgcp");
|
||||
|
||||
/* Initalize SS7 */
|
||||
/* Initialize SS7 */
|
||||
osmo_ss7_init();
|
||||
osmo_ss7_vty_init_asp(tall_bsc_ctx);
|
||||
osmo_sccp_vty_init();
|
||||
|
|
|
@ -475,7 +475,7 @@ static void osmo_bsc_sigtran_reset_cb(const void *priv)
|
|||
|
||||
static int asp_rx_unknown(struct osmo_ss7_asp *asp, int ppid_mux, struct msgb *msg);
|
||||
|
||||
/* Initalize osmo sigtran backhaul */
|
||||
/* Initialize osmo sigtran backhaul */
|
||||
int osmo_bsc_sigtran_init(struct llist_head *mscs)
|
||||
{
|
||||
bool free_attempt_used = false;
|
||||
|
@ -567,7 +567,7 @@ int osmo_bsc_sigtran_init(struct llist_head *mscs)
|
|||
|
||||
/* If we have detected that the SS7 configuration of the MSC we have just initialized
|
||||
* was incomplete or completely missing, we can not tolerate another incomplete
|
||||
* configuration. The reson for this is that we do only specify exactly one default
|
||||
* configuration. The reason for this is that we do only specify exactly one default
|
||||
* pointcode pair. We also specify localhost as default IP-Address. If we have wanted
|
||||
* to support multiple MSCs with automatic configuration we would be forced to invent
|
||||
* a complex ruleset how to allocate the pointcodes and respective IP-Addresses.
|
||||
|
|
|
@ -306,7 +306,7 @@ static unsigned int calculate_timer_3113(struct gsm_bts *bts)
|
|||
/* TODO: take into account load of paging group for req->bsub */
|
||||
|
||||
/* MFRMS defines repeat interval of paging messages for MSs that belong
|
||||
* to same paging group accross multiple 51 frame multiframes.
|
||||
* to same paging group across multiple 51 frame multiframes.
|
||||
* MAXTRANS defines maximum number of RACH retransmissions.
|
||||
*/
|
||||
to_us = GSM51_MFRAME_DURATION_us * (bts->si_common.chan_desc.bs_pa_mfrms + 2) *
|
||||
|
|
|
@ -282,7 +282,7 @@ int pcu_tx_imm_ass_sent(struct gsm_bts *bts, uint32_t tlli)
|
|||
return pcu_sock_send(bts, msg);
|
||||
}
|
||||
|
||||
/* we need to decode the raw RR paging messsage (see PCU code
|
||||
/* we need to decode the raw RR paging message (see PCU code
|
||||
* Encoding::write_paging_request) and extract the mobile identity
|
||||
* (P-TMSI) from it */
|
||||
static int pcu_rx_rr_paging(struct gsm_bts *bts, uint8_t paging_group,
|
||||
|
@ -607,7 +607,7 @@ static int pcu_sock_cb(struct osmo_fd *bfd, unsigned int flags)
|
|||
return rc;
|
||||
}
|
||||
|
||||
/* accept connection comming from PCU */
|
||||
/* accept connection coming from PCU */
|
||||
static int pcu_sock_accept(struct osmo_fd *bfd, unsigned int flags)
|
||||
{
|
||||
struct pcu_sock_state *state = (struct pcu_sock_state *)bfd->data;
|
||||
|
|
|
@ -248,7 +248,7 @@ int bts_earfcn_add(struct gsm_bts *bts, uint16_t earfcn, uint8_t thresh_hi, uint
|
|||
return r;
|
||||
}
|
||||
|
||||
/* Scrambling Code as defined in 3GPP TS 25.213 is 9 bit long so number below is unreacheable upper bound */
|
||||
/* Scrambling Code as defined in 3GPP TS 25.213 is 9 bit long so number below is unreachable upper bound */
|
||||
#define SC_BOUND 600
|
||||
|
||||
/* Find position for a given UARFCN (take SC into consideration if it's available) in a sorted list
|
||||
|
@ -518,7 +518,7 @@ static int bitvec2freq_list(uint8_t *chan_list, struct bitvec *bv,
|
|||
|
||||
for (i = 0; i < bv->data_len*8; i++) {
|
||||
/* in case of SI2 or SI5 allow all neighbours in same band
|
||||
* in case of SI*bis, allow neighbours in same band ouside pgsm
|
||||
* in case of SI*bis, allow neighbours in same band outside pgsm
|
||||
* in case of SI*ter, allow neighbours in different bands
|
||||
*/
|
||||
if (!bitvec_get_bit_pos(bv, i))
|
||||
|
|
|
@ -325,7 +325,7 @@ static void make_bts_config(struct gsm_bts *bts, uint8_t config_no)
|
|||
cfg->m10_2 = 0;
|
||||
cfg->m12_2 = 0;
|
||||
|
||||
/* Initalize TRX with a TCH/F and a TCH/H channel */
|
||||
/* Initialize TRX with a TCH/F and a TCH/H channel */
|
||||
memset(&trx, 0, sizeof(trx));
|
||||
INIT_LLIST_HEAD(&bts->trx_list);
|
||||
llist_add(&trx.list, &bts->trx_list);
|
||||
|
|
|
@ -696,7 +696,7 @@ static char *test_case_10[] = {
|
|||
|
||||
"Hysteresis\n\n"
|
||||
"If neighbor cell is better, handover is only performed if the\n"
|
||||
"ammount of improvement is greater or equal hyteresis\n",
|
||||
"amount of improvement is greater or equal hyteresis\n",
|
||||
|
||||
"create-bts", "2",
|
||||
"create-ms", "0", "TCH/F", "AMR",
|
||||
|
@ -817,7 +817,7 @@ static char *test_case_15[] = {
|
|||
"reports are received, before RXQUAL is checked.\n",
|
||||
/* (See also test 28, which tests for RXQUAL triggering HO to congested cell.) */
|
||||
/* TODO: bad RXQUAL may want to prefer assignment within the same cell to avoid interference.
|
||||
* See Performence Enhancements in a Frequency Hopping GSM Network (Nielsen Wigard 2002), Chapter
|
||||
* See Performance Enhancements in a Frequency Hopping GSM Network (Nielsen Wigard 2002), Chapter
|
||||
* 2.1.1, "Interference" in the list of triggers on p.157. */
|
||||
|
||||
"create-bts", "2",
|
||||
|
@ -1142,7 +1142,7 @@ static char *test_case_24[] = {
|
|||
"2",
|
||||
"No (or not enough) measurements for handover\n\n"
|
||||
"Do not solve congestion in cell, because there is no measurement.\n"
|
||||
"As soon as enough measurments available (1 in our case), perform\n"
|
||||
"As soon as enough measurements available (1 in our case), perform\n"
|
||||
"handover. Afterwards the old cell becomes congested and the new\n"
|
||||
"cell is not. Do not perform handover until new measurements are\n"
|
||||
"received.\n",
|
||||
|
|
Loading…
Reference in New Issue