Whenever we have a FSM around, use LOGPFSML instead of LOGP
This provides context in the log lines, so we can see which instance of a given fsm / process is logging information
This commit is contained in:
parent
f6605e1bd0
commit
7709ea0ba2
|
@ -731,7 +731,7 @@ int v52_le_bcc_dl_rcv(struct v5x_interface *v5if, uint16_t l3_addr, uint8_t msg_
|
||||||
|
|
||||||
/* handle AN fault here, so there is no need to create a process */
|
/* handle AN fault here, so there is no need to create a process */
|
||||||
if (msg_type == V52_CTRL_MSGT_AN_FAULT) {
|
if (msg_type == V52_CTRL_MSGT_AN_FAULT) {
|
||||||
LOGP(DV5BCC, LOGL_NOTICE, "Replying to AN FAULT message. No action is taken here.\n");
|
LOGPFSML(bcc->fi, LOGL_NOTICE, "Replying to AN FAULT message. No action is taken here.\n");
|
||||||
/* Send AN FAULT ACK */
|
/* Send AN FAULT ACK */
|
||||||
v5x_dl_snd(v5if, V52_DLADDR_BCC, v52_enc_an_fault_ack(ref, source_id));
|
v5x_dl_snd(v5if, V52_DLADDR_BCC, v52_enc_an_fault_ack(ref, source_id));
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -764,7 +764,7 @@ int v52_le_bcc_dl_rcv(struct v5x_interface *v5if, uint16_t l3_addr, uint8_t msg_
|
||||||
osmo_fsm_inst_dispatch(bcc->fi, V52_BCCFSM_E_PROTOCOL_ERROR, (void *)tp);
|
osmo_fsm_inst_dispatch(bcc->fi, V52_BCCFSM_E_PROTOCOL_ERROR, (void *)tp);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOGP(DV5BCC, LOGL_NOTICE, "Invalid BCC protocol message %d receied from AN.\n", msg_type);
|
LOGPFSML(bcc->fi, LOGL_NOTICE, "Invalid BCC protocol message %d receied from AN.\n", msg_type);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -805,7 +805,7 @@ int v52_le_bcc_mdu_snd(struct v5x_interface *v5if, uint16_t user_port_id, bool i
|
||||||
osmo_fsm_inst_dispatch(bcc->fi, V52_BCCFSM_E_MDU_BCC_audit_req, NULL);
|
osmo_fsm_inst_dispatch(bcc->fi, V52_BCCFSM_E_MDU_BCC_audit_req, NULL);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOGP(DV5BCC, LOGL_NOTICE, "Invalid BCC protocol message %d receied from AN.\n", prim);
|
LOGPFSML(bcc->fi, LOGL_NOTICE, "Invalid BCC protocol message %d receied from AN.\n", prim);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -820,39 +820,39 @@ int v52_le_lcp_mph_rcv(struct v5x_link *v5l, enum v5x_mph_prim prim)
|
||||||
|
|
||||||
switch (prim) {
|
switch (prim) {
|
||||||
case MPH_AI:
|
case MPH_AI:
|
||||||
LOGP(DV5LCP, LOGL_NOTICE, "Received link activation indication from L1 (link ID %d).\n", v5l->id);
|
LOGPFSML(v5l->fi, LOGL_NOTICE, "Received link activation indication from L1 (link ID %d).\n", v5l->id);
|
||||||
event = V52_LCPFSM_E_MPH_AI;
|
event = V52_LCPFSM_E_MPH_AI;
|
||||||
break;
|
break;
|
||||||
case MPH_DI:
|
case MPH_DI:
|
||||||
LOGP(DV5LCP, LOGL_NOTICE, "Received link deactivation indication from L1 (link ID %d).\n", v5l->id);
|
LOGPFSML(v5l->fi, LOGL_NOTICE, "Received link deactivation indication from L1 (link ID %d).\n", v5l->id);
|
||||||
event = V52_LCPFSM_E_MPH_DI;
|
event = V52_LCPFSM_E_MPH_DI;
|
||||||
break;
|
break;
|
||||||
case MPH_EIa:
|
case MPH_EIa:
|
||||||
LOGP(DV5LCP, LOGL_DEBUG, "Received link error indication from L1 (link ID %d): LOS\n", v5l->id);
|
LOGPFSML(v5l->fi, LOGL_DEBUG, "Received link error indication from L1 (link ID %d): LOS\n", v5l->id);
|
||||||
return 0;
|
return 0;
|
||||||
case MPH_EIb:
|
case MPH_EIb:
|
||||||
LOGP(DV5LCP, LOGL_DEBUG, "Received link error indication from L1 (link ID %d): RAI\n", v5l->id);
|
LOGPFSML(v5l->fi, LOGL_DEBUG, "Received link error indication from L1 (link ID %d): RAI\n", v5l->id);
|
||||||
return 0;
|
return 0;
|
||||||
case MPH_EIc:
|
case MPH_EIc:
|
||||||
LOGP(DV5LCP, LOGL_DEBUG, "Received link error indication from L1 (link ID %d): AIS\n", v5l->id);
|
LOGPFSML(v5l->fi, LOGL_DEBUG, "Received link error indication from L1 (link ID %d): AIS\n", v5l->id);
|
||||||
return 0;
|
return 0;
|
||||||
case MPH_EId:
|
case MPH_EId:
|
||||||
LOGP(DV5LCP, LOGL_DEBUG, "Received link error indication from L1 (link ID %d): Internal failure\n",
|
LOGPFSML(v5l->fi, LOGL_DEBUG, "Received link error indication from L1 (link ID %d): Internal failure\n",
|
||||||
v5l->id);
|
v5l->id);
|
||||||
return 0;
|
return 0;
|
||||||
case MPH_EIe:
|
case MPH_EIe:
|
||||||
LOGP(DV5LCP, LOGL_DEBUG, "Received link error indication from L1 (link ID %d): CRC error\n", v5l->id);
|
LOGPFSML(v5l->fi, LOGL_DEBUG, "Received link error indication from L1 (link ID %d): CRC error\n", v5l->id);
|
||||||
return 0;
|
return 0;
|
||||||
case MPH_EIf:
|
case MPH_EIf:
|
||||||
LOGP(DV5LCP, LOGL_DEBUG, "Received link error indication from L1 (link ID %d): "
|
LOGPFSML(v5l->fi, LOGL_DEBUG, "Received link error indication from L1 (link ID %d): "
|
||||||
"Remote CRC error indication\n", v5l->id);
|
"Remote CRC error indication\n", v5l->id);
|
||||||
return 0;
|
return 0;
|
||||||
case MPH_IDI:
|
case MPH_IDI:
|
||||||
LOGP(DV5LCP, LOGL_NOTICE, "Received link identification indication from L1 (link ID %d).\n", v5l->id);
|
LOGPFSML(v5l->fi, LOGL_NOTICE, "Received link identification indication from L1 (link ID %d).\n", v5l->id);
|
||||||
event = V52_LCPFSM_E_MPH_IDI;
|
event = V52_LCPFSM_E_MPH_IDI;
|
||||||
break;
|
break;
|
||||||
case MPH_EIg:
|
case MPH_EIg:
|
||||||
LOGP(DV5LCP, LOGL_NOTICE, "Received link identification failure from L1 (link ID %d).\n", v5l->id);
|
LOGPFSML(v5l->fi, LOGL_NOTICE, "Received link identification failure from L1 (link ID %d).\n", v5l->id);
|
||||||
event = V52_LCPFSM_E_MPH_EIg;
|
event = V52_LCPFSM_E_MPH_EIg;
|
||||||
break;
|
break;
|
||||||
case MPH_EIdr:
|
case MPH_EIdr:
|
||||||
|
@ -860,7 +860,7 @@ int v52_le_lcp_mph_rcv(struct v5x_link *v5l, enum v5x_mph_prim prim)
|
||||||
case MPH_EIbr:
|
case MPH_EIbr:
|
||||||
return 0;
|
return 0;
|
||||||
default:
|
default:
|
||||||
LOGP(DV5LCP, LOGL_NOTICE, "Invalid LCP primitive %d receied from L1/AN (link ID %d).\n", prim, v5l->id);
|
LOGPFSML(v5l->fi, LOGL_NOTICE, "Invalid LCP primitive %d receied from L1/AN (link ID %d).\n", prim, v5l->id);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -901,7 +901,7 @@ int v52_le_lcp_fe_rcv(struct v5x_link *v5l, enum v52_link_ctrl_func lcf)
|
||||||
event = V52_LCPFSM_E_FE306;
|
event = V52_LCPFSM_E_FE306;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOGP(DV5LCP, LOGL_NOTICE, "Invalid link control function primitive %d receied from AN.\n", lcf);
|
LOGPFSML(v5l->fi, LOGL_NOTICE, "Invalid link control function primitive %d receied from AN.\n", lcf);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -931,7 +931,7 @@ int v52_le_lcp_mdu_snd(struct v5x_link *v5l, enum v5x_mgmt_prim prim)
|
||||||
event = V52_LCPFSM_E_MDU_LBI;
|
event = V52_LCPFSM_E_MDU_LBI;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOGP(DV5LCP, LOGL_NOTICE, "Invalid MDU primitive %d receied from management.\n", prim);
|
LOGPFSML(v5l->fi, LOGL_NOTICE, "Invalid MDU primitive %d receied from management.\n", prim);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -257,7 +257,7 @@ static struct msgb *v52_enc_reset_sn_xxx(uint16_t cc_id, uint8_t msg_type)
|
||||||
|
|
||||||
static void stop_timer(struct osmo_fsm_inst *fi)
|
static void stop_timer(struct osmo_fsm_inst *fi)
|
||||||
{
|
{
|
||||||
LOGP(DV5PP, LOGL_DEBUG, "Stop all timers\n");
|
LOGPFSML(fi, LOGL_DEBUG, "Stop all timers\n");
|
||||||
osmo_timer_del(&fi->timer);
|
osmo_timer_del(&fi->timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -295,7 +295,7 @@ static void start_timer(struct osmo_fsm_inst *fi, enum v52_le_pp_fsm_event event
|
||||||
if (info)
|
if (info)
|
||||||
memcpy(&pp->info, info, sizeof(*info));
|
memcpy(&pp->info, info, sizeof(*info));
|
||||||
|
|
||||||
LOGP(DV5PP, LOGL_DEBUG, "Start timer %s (count = %d)\n", timer_name, count);
|
LOGPFSML(fi, LOGL_DEBUG, "Start timer %s (count = %d)\n", timer_name, count);
|
||||||
pp->timeout_event = event;
|
pp->timeout_event = event;
|
||||||
pp->timeout_count = count;
|
pp->timeout_count = count;
|
||||||
osmo_timer_schedule(&fi->timer, timeout / 1000, timeout % 1000);
|
osmo_timer_schedule(&fi->timer, timeout / 1000, timeout % 1000);
|
||||||
|
@ -768,12 +768,12 @@ int v52_le_pp_dl_rcv(struct v5x_link *v5l, uint16_t cc_id, uint8_t msg_type, con
|
||||||
event = V52_PPFSM_E_RESET_SN_ACK;
|
event = V52_PPFSM_E_RESET_SN_ACK;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOGP(DV5PP, LOGL_NOTICE, "Invalid Protection protocol message %d receied from AN.\n", msg_type);
|
LOGPFSML(pp->fi, LOGL_NOTICE, "Invalid Protection protocol message %d receied from AN.\n", msg_type);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cc_id != pp->interface->protection.cc_id) {
|
if (cc_id != pp->interface->protection.cc_id) {
|
||||||
LOGP(DV5PP, LOGL_NOTICE, "Protection protocol of AN uses CC-ID %d, but we use CC-ID %d. Please check provisioning.\n", cc_id, pp->interface->protection.cc_id);
|
LOGPFSML(pp->fi, LOGL_NOTICE, "Protection protocol of AN uses CC-ID %d, but we use CC-ID %d. Please check provisioning.\n", cc_id, pp->interface->protection.cc_id);
|
||||||
dl_send(pp->fi, v52_enc_protocol_error(pp, pp->interface->protection.cc_id, V5X_CAUSE_T_REF_NR_CODING_ERROR, NULL, 0));
|
dl_send(pp->fi, v52_enc_protocol_error(pp, pp->interface->protection.cc_id, V5X_CAUSE_T_REF_NR_CODING_ERROR, NULL, 0));
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
@ -794,7 +794,7 @@ int v52_le_pp_dl_rcv(struct v5x_link *v5l, uint16_t cc_id, uint8_t msg_type, con
|
||||||
diff = (seq_nr - pp->vp_r) & 0x7f;
|
diff = (seq_nr - pp->vp_r) & 0x7f;
|
||||||
/* if VP(R)-5 <= SN <= VP(R)-1 (SN is 1..5 values lower than we want) */
|
/* if VP(R)-5 <= SN <= VP(R)-1 (SN is 1..5 values lower than we want) */
|
||||||
if (diff >= 128 - 5) {
|
if (diff >= 128 - 5) {
|
||||||
LOGP(DV5PP, LOGL_DEBUG, "Receiveds message with sequence %d, while we expect %d. Ignore, because it was already received earlier.\n", seq_nr, pp->vp_r);
|
LOGPFSML(pp->fi, LOGL_DEBUG, "Receiveds message with sequence %d, while we expect %d. Ignore, because it was already received earlier.\n", seq_nr, pp->vp_r);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* if VP(R) <= SN <= VP(R) + 4 (SN is 0..4 higher than we want) */
|
/* if VP(R) <= SN <= VP(R) + 4 (SN is 0..4 higher than we want) */
|
||||||
|
@ -802,7 +802,7 @@ int v52_le_pp_dl_rcv(struct v5x_link *v5l, uint16_t cc_id, uint8_t msg_type, con
|
||||||
/* set received sequence number to the next one expected and deliver message */
|
/* set received sequence number to the next one expected and deliver message */
|
||||||
pp->vp_r = (seq_nr + 1) & 0x7f;
|
pp->vp_r = (seq_nr + 1) & 0x7f;
|
||||||
} else {
|
} else {
|
||||||
LOGP(DV5PP, LOGL_NOTICE, "Receiveds message with sequence %d, while we expect %d. This a a misalignment, perform an SN reset!\n", seq_nr, pp->vp_r);
|
LOGPFSML(pp->fi, LOGL_NOTICE, "Receiveds message with sequence %d, while we expect %d. This a a misalignment, perform an SN reset!\n", seq_nr, pp->vp_r);
|
||||||
event = V52_PPFSM_E_VP_S_VP_R_misalignment_detected;
|
event = V52_PPFSM_E_VP_S_VP_R_misalignment_detected;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -836,7 +836,7 @@ int v52_le_pp_mdu_snd(struct v5x_interface *v5if, enum v5x_mgmt_prim prim, uint8
|
||||||
event = V52_PPFSM_E_MDU_Protection_reset_SN_req;
|
event = V52_PPFSM_E_MDU_Protection_reset_SN_req;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOGP(DV5PP, LOGL_NOTICE, "Invalid MDU primitive %d receied from management.\n", prim);
|
LOGPFSML(v5if->protection.pp->fi, LOGL_NOTICE, "Invalid MDU primitive %d receied from management.\n", prim);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -99,7 +99,7 @@ static void v5x_ctrl_mdu(struct osmo_fsm_inst *fi, const struct tlv_parsed *tp)
|
||||||
rej_cause = 0;
|
rej_cause = 0;
|
||||||
interface_id = 0;
|
interface_id = 0;
|
||||||
|
|
||||||
LOGP(DV5CTRL, LOGL_DEBUG, "MDU-CTRL received.\n");
|
LOGPFSML(fi, LOGL_DEBUG, "MDU-CTRL received.\n");
|
||||||
|
|
||||||
if (TLVP_PRESENT(tp, V5X_CTRL_IEI_VARIANT))
|
if (TLVP_PRESENT(tp, V5X_CTRL_IEI_VARIANT))
|
||||||
variant = *TLVP_VAL(tp, V5X_CTRL_IEI_VARIANT) & 0x7f;
|
variant = *TLVP_VAL(tp, V5X_CTRL_IEI_VARIANT) & 0x7f;
|
||||||
|
@ -113,7 +113,7 @@ static void v5x_ctrl_mdu(struct osmo_fsm_inst *fi, const struct tlv_parsed *tp)
|
||||||
cfe = *TLVP_VAL(tp, V5X_CTRL_IEI_CTRL_F_ELEMENT) & 0x7f;
|
cfe = *TLVP_VAL(tp, V5X_CTRL_IEI_CTRL_F_ELEMENT) & 0x7f;
|
||||||
perf_grading = 0;
|
perf_grading = 0;
|
||||||
|
|
||||||
LOGP(DV5CTRL, LOGL_DEBUG, "FE received for address %d.\n", v5up->nr);
|
LOGPFSML(fi, LOGL_DEBUG, "FE received for address %d.\n", v5up->nr);
|
||||||
|
|
||||||
if (TLVP_PRESENT(tp, V5X_CTRL_IEI_PERFORMANCE_GRADING))
|
if (TLVP_PRESENT(tp, V5X_CTRL_IEI_PERFORMANCE_GRADING))
|
||||||
perf_grading = *TLVP_VAL(tp, V5X_CTRL_IEI_PERFORMANCE_GRADING) & 0x0f;
|
perf_grading = *TLVP_VAL(tp, V5X_CTRL_IEI_PERFORMANCE_GRADING) & 0x0f;
|
||||||
|
@ -129,7 +129,7 @@ static void v5x_ctrl_mdu(struct osmo_fsm_inst *fi, const struct tlv_parsed *tp)
|
||||||
case V5X_CTRL_TYPE_LINK:
|
case V5X_CTRL_TYPE_LINK:
|
||||||
lcf = *TLVP_VAL(tp, V52_CTRL_IEI_LCP_LINK_CTRL_FUNCTION) & 0x7f;
|
lcf = *TLVP_VAL(tp, V52_CTRL_IEI_LCP_LINK_CTRL_FUNCTION) & 0x7f;
|
||||||
|
|
||||||
LOGP(DV5CTRL, LOGL_DEBUG, "FE received for link ID %d.\n", v5l->id);
|
LOGPFSML(fi, LOGL_DEBUG, "FE received for link ID %d.\n", v5l->id);
|
||||||
|
|
||||||
v52_le_lcp_fe_rcv(v5l, lcf);
|
v52_le_lcp_fe_rcv(v5l, lcf);
|
||||||
break;
|
break;
|
||||||
|
@ -137,9 +137,9 @@ static void v5x_ctrl_mdu(struct osmo_fsm_inst *fi, const struct tlv_parsed *tp)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* display MDU-error_indication */
|
/* display MDU-error_indication */
|
||||||
static void v5x_mdu_error(struct osmo_fsm_inst __attribute__((unused)) *fi, const char *error)
|
static void v5x_mdu_error(struct osmo_fsm_inst *fi, const char *error)
|
||||||
{
|
{
|
||||||
LOGP(DV5CTRL, LOGL_NOTICE, "MDU-error_indication: %s\n", error);
|
LOGPFSML(fi, LOGL_NOTICE, "MDU-error_indication: %s\n", error);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* send control towards lower (DL) layer */
|
/* send control towards lower (DL) layer */
|
||||||
|
@ -152,7 +152,7 @@ static void v5x_ctrl_send(struct v5x_ctrl_proto *ctrl, struct msgb *msg)
|
||||||
|
|
||||||
switch (fi->state) {
|
switch (fi->state) {
|
||||||
case V5X_CTRL_ST_IN_SERVICE:
|
case V5X_CTRL_ST_IN_SERVICE:
|
||||||
LOGP(DV5CTRL, LOGL_DEBUG, "We are in service, so we send our message now.\n");
|
LOGPFSML(fi, LOGL_DEBUG, "We are in service, so we send our message now.\n");
|
||||||
/* no message, clone current message and store to be repeated */
|
/* no message, clone current message and store to be repeated */
|
||||||
ctrl->tx_msg = msgb_copy(msg, NULL);
|
ctrl->tx_msg = msgb_copy(msg, NULL);
|
||||||
/* go to AWAIT_PENDING_ACK */
|
/* go to AWAIT_PENDING_ACK */
|
||||||
|
@ -175,7 +175,7 @@ static void v5x_ctrl_send(struct v5x_ctrl_proto *ctrl, struct msgb *msg)
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case V5X_CTRL_ST_AWAIT_ACK:
|
case V5X_CTRL_ST_AWAIT_ACK:
|
||||||
LOGP(DV5CTRL, LOGL_DEBUG, "We are waiting for ack, so we queue our message.\n");
|
LOGPFSML(fi, LOGL_DEBUG, "We are waiting for ack, so we queue our message.\n");
|
||||||
/* pending message, save message in queue */
|
/* pending message, save message in queue */
|
||||||
msgb_enqueue(&ctrl->tx_queue, msg);
|
msgb_enqueue(&ctrl->tx_queue, msg);
|
||||||
break;
|
break;
|
||||||
|
@ -188,7 +188,7 @@ static void v5x_ctrl_ack(struct osmo_fsm_inst *fi, const struct tlv_parsed __att
|
||||||
struct v5x_ctrl_proto *ctrl = fi->priv;
|
struct v5x_ctrl_proto *ctrl = fi->priv;
|
||||||
struct msgb *msg;
|
struct msgb *msg;
|
||||||
|
|
||||||
LOGP(DV5CTRL, LOGL_DEBUG, "Received acknowledge, removing pending message, if any.\n");
|
LOGPFSML(fi, LOGL_DEBUG, "Received acknowledge, removing pending message, if any.\n");
|
||||||
/* free pending copy of message, if acked before retry */
|
/* free pending copy of message, if acked before retry */
|
||||||
if (ctrl->tx_msg) {
|
if (ctrl->tx_msg) {
|
||||||
msgb_free(ctrl->tx_msg);
|
msgb_free(ctrl->tx_msg);
|
||||||
|
@ -199,7 +199,7 @@ static void v5x_ctrl_ack(struct osmo_fsm_inst *fi, const struct tlv_parsed __att
|
||||||
/* sending next pending message in queue */
|
/* sending next pending message in queue */
|
||||||
msg = msgb_dequeue(&ctrl->tx_queue);
|
msg = msgb_dequeue(&ctrl->tx_queue);
|
||||||
if (msg) {
|
if (msg) {
|
||||||
LOGP(DV5CTRL, LOGL_DEBUG, "Found pending message in queue.\n");
|
LOGPFSML(fi, LOGL_DEBUG, "Found pending message in queue.\n");
|
||||||
v5x_ctrl_send(ctrl, msg);
|
v5x_ctrl_send(ctrl, msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -231,7 +231,7 @@ static int v5x_ctrl_fsm_timer_cb(struct osmo_fsm_inst *fi)
|
||||||
struct msgb *msg;
|
struct msgb *msg;
|
||||||
|
|
||||||
if (ctrl->tx_msg) {
|
if (ctrl->tx_msg) {
|
||||||
LOGP(DV5CTRL, LOGL_DEBUG, "Timer fired the first time, resending message.\n");
|
LOGPFSML(fi, LOGL_DEBUG, "Timer fired the first time, resending message.\n");
|
||||||
/* first expiry: repeat CONTROL; re-start T01 */
|
/* first expiry: repeat CONTROL; re-start T01 */
|
||||||
/* send message towards DL */
|
/* send message towards DL */
|
||||||
osmo_timer_schedule(&fi->timer, TIMEOUT, 0);
|
osmo_timer_schedule(&fi->timer, TIMEOUT, 0);
|
||||||
|
@ -249,14 +249,14 @@ static int v5x_ctrl_fsm_timer_cb(struct osmo_fsm_inst *fi)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
LOGP(DV5CTRL, LOGL_DEBUG, "Timer fired the second time, indicate an error.\n");
|
LOGPFSML(fi, LOGL_DEBUG, "Timer fired the second time, indicate an error.\n");
|
||||||
/* second expiry: send MDU-error_ind; go to IN_SERVICE */
|
/* second expiry: send MDU-error_ind; go to IN_SERVICE */
|
||||||
v5x_mdu_error(fi, "Second timeout while waiting for CONTROL ACK.");
|
v5x_mdu_error(fi, "Second timeout while waiting for CONTROL ACK.");
|
||||||
osmo_fsm_inst_state_chg(fi, V5X_CTRL_ST_IN_SERVICE, 0, 0);
|
osmo_fsm_inst_state_chg(fi, V5X_CTRL_ST_IN_SERVICE, 0, 0);
|
||||||
/* sending next pending message in queue */
|
/* sending next pending message in queue */
|
||||||
msg = msgb_dequeue(&ctrl->tx_queue);
|
msg = msgb_dequeue(&ctrl->tx_queue);
|
||||||
if (msg) {
|
if (msg) {
|
||||||
LOGP(DV5CTRL, LOGL_DEBUG, "Found pending message in queue.\n");
|
LOGPFSML(fi, LOGL_DEBUG, "Found pending message in queue.\n");
|
||||||
v5x_ctrl_send(ctrl, msg);
|
v5x_ctrl_send(ctrl, msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -633,11 +633,11 @@ static void system_lesys0_system_startup(struct osmo_fsm_inst *fi, uint32_t even
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case V5X_LE_SYSTEM_E_START:
|
case V5X_LE_SYSTEM_E_START:
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "Perform system startup\n");
|
LOGPFSML(fi, LOGL_INFO, "Perform system startup\n");
|
||||||
system_startup(mgmt);
|
system_startup(mgmt);
|
||||||
break;
|
break;
|
||||||
case V5X_LE_SYSTEM_E_CONTROL_DL_ESTABLISHED:
|
case V5X_LE_SYSTEM_E_CONTROL_DL_ESTABLISHED:
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "Establishment of control DL success.\n");
|
LOGPFSML(fi, LOGL_INFO, "Establishment of control DL success.\n");
|
||||||
/* new state */
|
/* new state */
|
||||||
osmo_fsm_inst_state_chg(fi, V5X_LE_SYSTEM_S_LESYS1_WAIT_VARIANT_AND_ID, 0, 0);
|
osmo_fsm_inst_state_chg(fi, V5X_LE_SYSTEM_S_LESYS1_WAIT_VARIANT_AND_ID, 0, 0);
|
||||||
/* start traffic to CONTROL_COMMON and CONTROL_PORT FSM */
|
/* start traffic to CONTROL_COMMON and CONTROL_PORT FSM */
|
||||||
|
@ -645,11 +645,11 @@ static void system_lesys0_system_startup(struct osmo_fsm_inst *fi, uint32_t even
|
||||||
/* start timer TV1 */
|
/* start timer TV1 */
|
||||||
start_timer_tv1(mgmt);
|
start_timer_tv1(mgmt);
|
||||||
/* request variant and ID */
|
/* request variant and ID */
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "Requesting variant and interface ID.\n");
|
LOGPFSML(fi, LOGL_INFO, "Requesting variant and interface ID.\n");
|
||||||
v5x_le_ctrl_common_snd(v5if, V5X_CTRL_ID_REQUEST_VARIANT_AND_INTERFACE_ID, NULL, NULL, NULL);
|
v5x_le_ctrl_common_snd(v5if, V5X_CTRL_ID_REQUEST_VARIANT_AND_INTERFACE_ID, NULL, NULL, NULL);
|
||||||
break;
|
break;
|
||||||
case V5X_LE_SYSTEM_E_CONTROL_DL_RELEASED:
|
case V5X_LE_SYSTEM_E_CONTROL_DL_RELEASED:
|
||||||
LOGP(DV5MGMT, LOGL_ERROR, "Establishment of control DL failed.\n");
|
LOGPFSML(fi, LOGL_ERROR, "Establishment of control DL failed.\n");
|
||||||
/* re-establish DL */
|
/* re-establish DL */
|
||||||
if (mgmt->do_est)
|
if (mgmt->do_est)
|
||||||
lapv5_dl_est_req(v5if->control.li, V5X_DLADDR_CTRL);
|
lapv5_dl_est_req(v5if->control.li, V5X_DLADDR_CTRL);
|
||||||
|
@ -668,7 +668,7 @@ static void system_lesys1_wait_variant_and_id(struct osmo_fsm_inst *fi, uint32_t
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case V5X_LE_SYSTEM_E_VARIANT_AND_ID:
|
case V5X_LE_SYSTEM_E_VARIANT_AND_ID:
|
||||||
vi = data;
|
vi = data;
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "AN replies variant and interface ID. (variant = %d, interface_id = %d)\n",
|
LOGPFSML(fi, LOGL_INFO, "AN replies variant and interface ID. (variant = %d, interface_id = %d)\n",
|
||||||
vi->variant, vi->interface_id);
|
vi->variant, vi->interface_id);
|
||||||
/* stop timer TV1 */
|
/* stop timer TV1 */
|
||||||
stop_timer_tv1(mgmt);
|
stop_timer_tv1(mgmt);
|
||||||
|
@ -678,17 +678,17 @@ static void system_lesys1_wait_variant_and_id(struct osmo_fsm_inst *fi, uint32_t
|
||||||
v5if->id_remote = vi->interface_id;
|
v5if->id_remote = vi->interface_id;
|
||||||
v5if->id_remote_valid = true;
|
v5if->id_remote_valid = true;
|
||||||
if (v5if->variant_remote != v5if->variant) {
|
if (v5if->variant_remote != v5if->variant) {
|
||||||
LOGP(DV5MGMT, LOGL_ERROR, "Variant does not match: AN(%d) != LE(%d)\n",
|
LOGPFSML(fi, LOGL_ERROR, "Variant does not match: AN(%d) != LE(%d)\n",
|
||||||
v5if->variant_remote, v5if->variant);
|
v5if->variant_remote, v5if->variant);
|
||||||
}
|
}
|
||||||
if (v5if->id_remote != v5if->id) {
|
if (v5if->id_remote != v5if->id) {
|
||||||
LOGP(DV5MGMT, LOGL_ERROR, "Interface ID does not match: AN(%d) != LE(%d)\n",
|
LOGPFSML(fi, LOGL_ERROR, "Interface ID does not match: AN(%d) != LE(%d)\n",
|
||||||
v5if->id_remote, v5if->id);
|
v5if->id_remote, v5if->id);
|
||||||
}
|
}
|
||||||
if (v5if->variant_remote != v5if->variant || v5if->id_remote != v5if->id) {
|
if (v5if->variant_remote != v5if->variant || v5if->id_remote != v5if->id) {
|
||||||
LOGP(DV5MGMT, LOGL_ERROR, "************************************************************\n");
|
LOGPFSML(fi, LOGL_ERROR, "************************************************************\n");
|
||||||
LOGP(DV5MGMT, LOGL_ERROR, "You must set matching Variant and Interface ID at AN and LE!\n");
|
LOGPFSML(fi, LOGL_ERROR, "You must set matching Variant and Interface ID at AN and LE!\n");
|
||||||
LOGP(DV5MGMT, LOGL_ERROR, "************************************************************\n");
|
LOGPFSML(fi, LOGL_ERROR, "************************************************************\n");
|
||||||
/* disable LAPV5 DLs */
|
/* disable LAPV5 DLs */
|
||||||
disable_lapv5(mgmt);
|
disable_lapv5(mgmt);
|
||||||
/* new state */
|
/* new state */
|
||||||
|
@ -723,7 +723,7 @@ static void system_lesys1_wait_variant_and_id(struct osmo_fsm_inst *fi, uint32_t
|
||||||
/* ignore */
|
/* ignore */
|
||||||
break;
|
break;
|
||||||
case V5X_LE_SYSTEM_E_CONTROL_DL_RELEASED:
|
case V5X_LE_SYSTEM_E_CONTROL_DL_RELEASED:
|
||||||
LOGP(DV5MGMT, LOGL_ERROR, "Establishment of control DL failed.\n");
|
LOGPFSML(fi, LOGL_ERROR, "Establishment of control DL failed.\n");
|
||||||
/* stop timer TV1 */
|
/* stop timer TV1 */
|
||||||
stop_timer_tv1(mgmt);
|
stop_timer_tv1(mgmt);
|
||||||
/* new state */
|
/* new state */
|
||||||
|
@ -746,7 +746,7 @@ static void system_lesys2_in_service(struct osmo_fsm_inst *fi, uint32_t event, v
|
||||||
/* ignore */
|
/* ignore */
|
||||||
break;
|
break;
|
||||||
case V5X_LE_SYSTEM_E_CONTROL_DL_RELEASED:
|
case V5X_LE_SYSTEM_E_CONTROL_DL_RELEASED:
|
||||||
LOGP(DV5MGMT, LOGL_ERROR, "Establishment of control DL failed.\n");
|
LOGPFSML(fi, LOGL_ERROR, "Establishment of control DL failed.\n");
|
||||||
/* start timer TC1 */
|
/* start timer TC1 */
|
||||||
start_timer_tc1(mgmt);
|
start_timer_tc1(mgmt);
|
||||||
/* new state */
|
/* new state */
|
||||||
|
@ -768,7 +768,7 @@ static void system_lesys3_control_dl_released_1(struct osmo_fsm_inst *fi, uint32
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case V5X_LE_SYSTEM_E_CONTROL_DL_ESTABLISHED:
|
case V5X_LE_SYSTEM_E_CONTROL_DL_ESTABLISHED:
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "Establishment of control DL success.\n");
|
LOGPFSML(fi, LOGL_INFO, "Establishment of control DL success.\n");
|
||||||
/* stop timer TC1 */
|
/* stop timer TC1 */
|
||||||
stop_timer_tc1(mgmt);
|
stop_timer_tc1(mgmt);
|
||||||
/* new state */
|
/* new state */
|
||||||
|
@ -780,7 +780,7 @@ static void system_lesys3_control_dl_released_1(struct osmo_fsm_inst *fi, uint32
|
||||||
lapv5_dl_est_req(v5if->control.li, V5X_DLADDR_CTRL);
|
lapv5_dl_est_req(v5if->control.li, V5X_DLADDR_CTRL);
|
||||||
break;
|
break;
|
||||||
case V5X_LE_SYSTEM_E_TIMEOUT_TC1:
|
case V5X_LE_SYSTEM_E_TIMEOUT_TC1:
|
||||||
LOGP(DV5MGMT, LOGL_ERROR, "Blocking all ports and wait for establishment of control DL.\n");
|
LOGPFSML(fi, LOGL_ERROR, "Blocking all ports and wait for establishment of control DL.\n");
|
||||||
/* stop traffic to CONTROL_COMMON and CONTROL_PORT FSM */
|
/* stop traffic to CONTROL_COMMON and CONTROL_PORT FSM */
|
||||||
stop_traffic(mgmt);
|
stop_traffic(mgmt);
|
||||||
/* block all ISDN user ports */
|
/* block all ISDN user ports */
|
||||||
|
@ -803,7 +803,7 @@ static void system_lesys4_control_dl_released_2(struct osmo_fsm_inst *fi, uint32
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case V5X_LE_SYSTEM_E_CONTROL_DL_ESTABLISHED:
|
case V5X_LE_SYSTEM_E_CONTROL_DL_ESTABLISHED:
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "Establishment of control DL success.\n");
|
LOGPFSML(fi, LOGL_INFO, "Establishment of control DL success.\n");
|
||||||
/* stop timer TC2 */
|
/* stop timer TC2 */
|
||||||
stop_timer_tc2(mgmt);
|
stop_timer_tc2(mgmt);
|
||||||
/* start traffic to CONTROL_COMMON and CONTROL_PORT FSM */
|
/* start traffic to CONTROL_COMMON and CONTROL_PORT FSM */
|
||||||
|
@ -830,7 +830,7 @@ static void system_lesys4_control_dl_released_2(struct osmo_fsm_inst *fi, uint32
|
||||||
lapv5_dl_est_req(v5if->control.li, V5X_DLADDR_CTRL);
|
lapv5_dl_est_req(v5if->control.li, V5X_DLADDR_CTRL);
|
||||||
break;
|
break;
|
||||||
case V5X_LE_SYSTEM_E_TIMEOUT_TC2:
|
case V5X_LE_SYSTEM_E_TIMEOUT_TC2:
|
||||||
LOGP(DV5MGMT, LOGL_ERROR, "Could not establish control DL, shutting down.\n");
|
LOGPFSML(fi, LOGL_ERROR, "Could not establish control DL, shutting down.\n");
|
||||||
/* disable LAPV5 DLs */
|
/* disable LAPV5 DLs */
|
||||||
disable_lapv5(mgmt);
|
disable_lapv5(mgmt);
|
||||||
/* block all PSTN user ports */
|
/* block all PSTN user ports */
|
||||||
|
@ -899,7 +899,7 @@ static void system_lesys8_system_deactivated(struct osmo_fsm_inst *fi, uint32_t
|
||||||
/* ignore */
|
/* ignore */
|
||||||
break;
|
break;
|
||||||
case V5X_LE_SYSTEM_E_START:
|
case V5X_LE_SYSTEM_E_START:
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "Perform system restart\n");
|
LOGPFSML(fi, LOGL_INFO, "Perform system restart\n");
|
||||||
/* new state */
|
/* new state */
|
||||||
osmo_fsm_inst_state_chg(fi, V5X_LE_SYSTEM_S_LESYS0_SYSTEM_STARTUP, 0, 0);
|
osmo_fsm_inst_state_chg(fi, V5X_LE_SYSTEM_S_LESYS0_SYSTEM_STARTUP, 0, 0);
|
||||||
system_startup(mgmt);
|
system_startup(mgmt);
|
||||||
|
@ -1041,7 +1041,7 @@ static void pstn_lepdl1_active_pstn(struct osmo_fsm_inst *fi, uint32_t event, vo
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case V5X_LE_PSTN_DL_E_PSTN_DL_ESTABLISHED:
|
case V5X_LE_PSTN_DL_E_PSTN_DL_ESTABLISHED:
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "Establishment of PSTN DL success.\n");
|
LOGPFSML(fi, LOGL_INFO, "Establishment of PSTN DL success.\n");
|
||||||
/* new state */
|
/* new state */
|
||||||
osmo_fsm_inst_state_chg(fi, V5X_LE_PSTN_DL_S_LEPDL2_PSTN_IN_SERVICE, 0, 0);
|
osmo_fsm_inst_state_chg(fi, V5X_LE_PSTN_DL_S_LEPDL2_PSTN_IN_SERVICE, 0, 0);
|
||||||
if (mgmt->do_align) {
|
if (mgmt->do_align) {
|
||||||
|
@ -1054,7 +1054,7 @@ static void pstn_lepdl1_active_pstn(struct osmo_fsm_inst *fi, uint32_t event, vo
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case V5X_LE_PSTN_DL_E_PSTN_DL_RELEASED:
|
case V5X_LE_PSTN_DL_E_PSTN_DL_RELEASED:
|
||||||
LOGP(DV5MGMT, LOGL_ERROR, "Establishment of PSTN DL failed.\n");
|
LOGPFSML(fi, LOGL_ERROR, "Establishment of PSTN DL failed.\n");
|
||||||
/* re-establish DL */
|
/* re-establish DL */
|
||||||
if (mgmt->do_est)
|
if (mgmt->do_est)
|
||||||
lapv5_dl_est_req(v5if->pstn.li, V5X_DLADDR_PSTN);
|
lapv5_dl_est_req(v5if->pstn.li, V5X_DLADDR_PSTN);
|
||||||
|
@ -1074,7 +1074,7 @@ static void pstn_lepdl2_pstn_in_service(struct osmo_fsm_inst *fi, uint32_t event
|
||||||
/* ignore */
|
/* ignore */
|
||||||
break;
|
break;
|
||||||
case V5X_LE_PSTN_DL_E_PSTN_DL_RELEASED:
|
case V5X_LE_PSTN_DL_E_PSTN_DL_RELEASED:
|
||||||
LOGP(DV5MGMT, LOGL_ERROR, "Establishment of PSTN DL failed.\n");
|
LOGPFSML(fi, LOGL_ERROR, "Establishment of PSTN DL failed.\n");
|
||||||
/* start timer TC3 */
|
/* start timer TC3 */
|
||||||
start_timer_tc3(mgmt);
|
start_timer_tc3(mgmt);
|
||||||
/* new state */
|
/* new state */
|
||||||
|
@ -1095,7 +1095,7 @@ static void pstn_lepdl3_pstn_dl_released_1(struct osmo_fsm_inst *fi, uint32_t ev
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case V5X_LE_PSTN_DL_E_PSTN_DL_ESTABLISHED:
|
case V5X_LE_PSTN_DL_E_PSTN_DL_ESTABLISHED:
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "Establishment of PSTN DL success.\n");
|
LOGPFSML(fi, LOGL_INFO, "Establishment of PSTN DL success.\n");
|
||||||
/* stop timer TC3 */
|
/* stop timer TC3 */
|
||||||
stop_timer_tc3(mgmt);
|
stop_timer_tc3(mgmt);
|
||||||
/* new state */
|
/* new state */
|
||||||
|
@ -1124,7 +1124,7 @@ static void pstn_lepdl4_pstn_dl_released_2(struct osmo_fsm_inst *fi, uint32_t ev
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case V5X_LE_PSTN_DL_E_PSTN_DL_ESTABLISHED:
|
case V5X_LE_PSTN_DL_E_PSTN_DL_ESTABLISHED:
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "Establishment of PSTN DL success.\n");
|
LOGPFSML(fi, LOGL_INFO, "Establishment of PSTN DL success.\n");
|
||||||
/* new state */
|
/* new state */
|
||||||
osmo_fsm_inst_state_chg(fi, V5X_LE_PSTN_DL_S_LEPDL2_PSTN_IN_SERVICE, 0, 0);
|
osmo_fsm_inst_state_chg(fi, V5X_LE_PSTN_DL_S_LEPDL2_PSTN_IN_SERVICE, 0, 0);
|
||||||
/* start PSTN restart process */
|
/* start PSTN restart process */
|
||||||
|
@ -1225,12 +1225,12 @@ static void pstn_leprs0_restart_null(struct osmo_fsm_inst *fi, uint32_t event, v
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case V5X_LE_PSTN_RS_E_Request_PSTN_Restart:
|
case V5X_LE_PSTN_RS_E_Request_PSTN_Restart:
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "PSTN Restart was requested locally.\n");
|
LOGPFSML(fi, LOGL_INFO, "PSTN Restart was requested locally.\n");
|
||||||
/* send restart request to COMMON_CONTROL */
|
/* send restart request to COMMON_CONTROL */
|
||||||
v5x_le_ctrl_common_snd(v5if, V5X_CTRL_ID_RESTART_REQUEST, NULL, NULL, NULL);
|
v5x_le_ctrl_common_snd(v5if, V5X_CTRL_ID_RESTART_REQUEST, NULL, NULL, NULL);
|
||||||
/* fall through */
|
/* fall through */
|
||||||
case V5X_LE_PSTN_RS_E_MDU_CTRL_restart_request:
|
case V5X_LE_PSTN_RS_E_MDU_CTRL_restart_request:
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "PSTN Restart was requested by remote.\n");
|
LOGPFSML(fi, LOGL_INFO, "PSTN Restart was requested by remote.\n");
|
||||||
/* new state */
|
/* new state */
|
||||||
osmo_fsm_inst_state_chg(fi, V5X_LE_PSTN_RS_S_LEPRS1_RESTART, 0, 0);
|
osmo_fsm_inst_state_chg(fi, V5X_LE_PSTN_RS_S_LEPRS1_RESTART, 0, 0);
|
||||||
/* start TR1 & TR2 */
|
/* start TR1 & TR2 */
|
||||||
|
@ -1295,7 +1295,7 @@ static void pstn_leprs1_restart(struct osmo_fsm_inst *fi, uint32_t event, void _
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case V5X_LE_PSTN_RS_E_TIMEOUT_TR1:
|
case V5X_LE_PSTN_RS_E_TIMEOUT_TR1:
|
||||||
LOGP(DV5MGMT, LOGL_ERROR, "Local PSTN Restart timed out.\n");
|
LOGPFSML(fi, LOGL_ERROR, "Local PSTN Restart timed out.\n");
|
||||||
/* if restart of local PSTN ports is complete (always) */
|
/* if restart of local PSTN ports is complete (always) */
|
||||||
if (1) {
|
if (1) {
|
||||||
/* stop timer TR2 */
|
/* stop timer TR2 */
|
||||||
|
@ -1309,7 +1309,7 @@ static void pstn_leprs1_restart(struct osmo_fsm_inst *fi, uint32_t event, void _
|
||||||
unblock_all_ports(v5if, false, false, true);
|
unblock_all_ports(v5if, false, false, true);
|
||||||
break;
|
break;
|
||||||
case V5X_LE_PSTN_RS_E_TIMEOUT_TR2:
|
case V5X_LE_PSTN_RS_E_TIMEOUT_TR2:
|
||||||
LOGP(DV5MGMT, LOGL_ERROR, "Remote PSTN Restart timed out.\n");
|
LOGPFSML(fi, LOGL_ERROR, "Remote PSTN Restart timed out.\n");
|
||||||
/* new state */
|
/* new state */
|
||||||
osmo_fsm_inst_state_chg(fi, V5X_LE_PSTN_RS_S_LEPRS0_RESTART_NULL, 0, 0);
|
osmo_fsm_inst_state_chg(fi, V5X_LE_PSTN_RS_S_LEPRS0_RESTART_NULL, 0, 0);
|
||||||
/* send restart complete to COMMON_CONTROL */
|
/* send restart complete to COMMON_CONTROL */
|
||||||
|
@ -1324,11 +1324,11 @@ static void pstn_leprs1_restart(struct osmo_fsm_inst *fi, uint32_t event, void _
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case V5X_LE_PSTN_RS_E_Request_PSTN_Restart:
|
case V5X_LE_PSTN_RS_E_Request_PSTN_Restart:
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "PSTN Restart was requested locally.\n");
|
LOGPFSML(fi, LOGL_INFO, "PSTN Restart was requested locally.\n");
|
||||||
/* ignore */
|
/* ignore */
|
||||||
break;
|
break;
|
||||||
case V5X_LE_PSTN_RS_E_MDU_CTRL_restart_request:
|
case V5X_LE_PSTN_RS_E_MDU_CTRL_restart_request:
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "PSTN Restart was requested by remote.\n");
|
LOGPFSML(fi, LOGL_INFO, "PSTN Restart was requested by remote.\n");
|
||||||
/* ignore */
|
/* ignore */
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -1447,13 +1447,13 @@ static void unblk_all_null(struct osmo_fsm_inst *fi, uint32_t event, void *data)
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case V5X_LE_UNBLK_ALL_E_REQUEST:
|
case V5X_LE_UNBLK_ALL_E_REQUEST:
|
||||||
if (!mgmt->acc_align) {
|
if (!mgmt->acc_align) {
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "Rejecting multiple port (un)blocking, It is not enabled!\n");
|
LOGPFSML(fi, LOGL_INFO, "Rejecting multiple port (un)blocking, It is not enabled!\n");
|
||||||
v5x_le_ctrl_common_snd(v5if, V5X_CTRL_ID_UNBLK_ALL_REL_PSTN_ISDN_REJECTED + ins*4,
|
v5x_le_ctrl_common_snd(v5if, V5X_CTRL_ID_UNBLK_ALL_REL_PSTN_ISDN_REJECTED + ins*4,
|
||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* sending accepted */
|
/* sending accepted */
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "Accepting multiple port (un)blocking, sending 'ACCEPTED' and perform it.\n");
|
LOGPFSML(fi, LOGL_INFO, "Accepting multiple port (un)blocking, sending 'ACCEPTED' and perform it.\n");
|
||||||
v5x_le_ctrl_common_snd(v5if, V5X_CTRL_ID_UNBLK_ALL_REL_PSTN_ISDN_ACCEPTED + ins*4,
|
v5x_le_ctrl_common_snd(v5if, V5X_CTRL_ID_UNBLK_ALL_REL_PSTN_ISDN_ACCEPTED + ins*4,
|
||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
/* start timer 2 and change state */
|
/* start timer 2 and change state */
|
||||||
|
@ -1461,7 +1461,7 @@ static void unblk_all_null(struct osmo_fsm_inst *fi, uint32_t event, void *data)
|
||||||
/* silently align user ports */
|
/* silently align user ports */
|
||||||
do_accelerated_alignment(v5if, ins);
|
do_accelerated_alignment(v5if, ins);
|
||||||
/* sending completed */
|
/* sending completed */
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "Completed multiple port (un)blocking, sending 'COMPLETED'.\n");
|
LOGPFSML(fi, LOGL_INFO, "Completed multiple port (un)blocking, sending 'COMPLETED'.\n");
|
||||||
v5x_le_ctrl_common_snd(v5if, V5X_CTRL_ID_UNBLK_ALL_REL_PSTN_ISDN_COMPLETED + ins*4,
|
v5x_le_ctrl_common_snd(v5if, V5X_CTRL_ID_UNBLK_ALL_REL_PSTN_ISDN_COMPLETED + ins*4,
|
||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
break;
|
break;
|
||||||
|
@ -1469,7 +1469,7 @@ static void unblk_all_null(struct osmo_fsm_inst *fi, uint32_t event, void *data)
|
||||||
/* start timer 1 and change state */
|
/* start timer 1 and change state */
|
||||||
osmo_fsm_inst_state_chg(fi, V5X_LE_UNBLK_ALL_S_REQUESTED, TIMEOUT_TU1, 1);
|
osmo_fsm_inst_state_chg(fi, V5X_LE_UNBLK_ALL_S_REQUESTED, TIMEOUT_TU1, 1);
|
||||||
/* sending request */
|
/* sending request */
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "Requesting multiple port (un)blocking, sending 'REQUEST'.\n");
|
LOGPFSML(fi, LOGL_INFO, "Requesting multiple port (un)blocking, sending 'REQUEST'.\n");
|
||||||
v5x_le_ctrl_common_snd(v5if, V5X_CTRL_ID_UNBLK_ALL_REL_PSTN_ISDN_REQUEST + ins*4,
|
v5x_le_ctrl_common_snd(v5if, V5X_CTRL_ID_UNBLK_ALL_REL_PSTN_ISDN_REQUEST + ins*4,
|
||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
break;
|
break;
|
||||||
|
@ -1488,28 +1488,28 @@ static void unblk_all_requested(struct osmo_fsm_inst *fi, uint32_t event, void *
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case V5X_LE_UNBLK_ALL_E_REQUEST:
|
case V5X_LE_UNBLK_ALL_E_REQUEST:
|
||||||
/* sending accepted */
|
/* sending accepted */
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "Collision of multiple port (un)blocking, sending 'ACCEPTED'.\n");
|
LOGPFSML(fi, LOGL_INFO, "Collision of multiple port (un)blocking, sending 'ACCEPTED'.\n");
|
||||||
v5x_le_ctrl_common_snd(v5if, V5X_CTRL_ID_UNBLK_ALL_REL_PSTN_ISDN_ACCEPTED + ins*4,
|
v5x_le_ctrl_common_snd(v5if, V5X_CTRL_ID_UNBLK_ALL_REL_PSTN_ISDN_ACCEPTED + ins*4,
|
||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
break;
|
break;
|
||||||
case V5X_LE_UNBLK_ALL_E_ACCEPTED:
|
case V5X_LE_UNBLK_ALL_E_ACCEPTED:
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "Remote accepted multiple port (un)blocking, perform it.\n");
|
LOGPFSML(fi, LOGL_INFO, "Remote accepted multiple port (un)blocking, perform it.\n");
|
||||||
/* start timer 2 and change state */
|
/* start timer 2 and change state */
|
||||||
osmo_fsm_inst_state_chg(fi, V5X_LE_UNBLK_ALL_S_COMPLETED, TIMEOUT_TU2, 2);
|
osmo_fsm_inst_state_chg(fi, V5X_LE_UNBLK_ALL_S_COMPLETED, TIMEOUT_TU2, 2);
|
||||||
/* silently align user ports */
|
/* silently align user ports */
|
||||||
do_accelerated_alignment(v5if, ins);
|
do_accelerated_alignment(v5if, ins);
|
||||||
/* sending completed */
|
/* sending completed */
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "Completed multiple port (un)blocking, sending 'COMPLETED'.\n");
|
LOGPFSML(fi, LOGL_INFO, "Completed multiple port (un)blocking, sending 'COMPLETED'.\n");
|
||||||
v5x_le_ctrl_common_snd(v5if, V5X_CTRL_ID_UNBLK_ALL_REL_PSTN_ISDN_COMPLETED + ins*4,
|
v5x_le_ctrl_common_snd(v5if, V5X_CTRL_ID_UNBLK_ALL_REL_PSTN_ISDN_COMPLETED + ins*4,
|
||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
break;
|
break;
|
||||||
case V5X_LE_UNBLK_ALL_E_REJECTED:
|
case V5X_LE_UNBLK_ALL_E_REJECTED:
|
||||||
LOGP(DV5MGMT, LOGL_ERROR, "Multiple port (un)blocking was rejected, aborting.\n");
|
LOGPFSML(fi, LOGL_ERROR, "Multiple port (un)blocking was rejected, aborting.\n");
|
||||||
/* strop timer 1 and change state */
|
/* strop timer 1 and change state */
|
||||||
osmo_fsm_inst_state_chg(fi, V5X_LE_UNBLK_ALL_S_NULL, 0, 0);
|
osmo_fsm_inst_state_chg(fi, V5X_LE_UNBLK_ALL_S_NULL, 0, 0);
|
||||||
break;
|
break;
|
||||||
case V5X_LE_UNBLK_ALL_E_TIMEOUT_TU1:
|
case V5X_LE_UNBLK_ALL_E_TIMEOUT_TU1:
|
||||||
LOGP(DV5MGMT, LOGL_ERROR, "Multiple port (un)blocking timed out, aborting.\n");
|
LOGPFSML(fi, LOGL_ERROR, "Multiple port (un)blocking timed out, aborting.\n");
|
||||||
/* change state */
|
/* change state */
|
||||||
osmo_fsm_inst_state_chg(fi, V5X_LE_UNBLK_ALL_S_NULL, 0, 0);
|
osmo_fsm_inst_state_chg(fi, V5X_LE_UNBLK_ALL_S_NULL, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
@ -1527,14 +1527,14 @@ static void unblk_all_completed(struct osmo_fsm_inst *fi, uint32_t event, void *
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case V5X_LE_UNBLK_ALL_E_COMPLETED:
|
case V5X_LE_UNBLK_ALL_E_COMPLETED:
|
||||||
LOGP(DV5MGMT, LOGL_INFO, "Multiple port (un)blocking completed by remote.\n");
|
LOGPFSML(fi, LOGL_INFO, "Multiple port (un)blocking completed by remote.\n");
|
||||||
/* stop timer 2 and change state */
|
/* stop timer 2 and change state */
|
||||||
osmo_fsm_inst_state_chg(fi, V5X_LE_UNBLK_ALL_S_NULL, 0, 0);
|
osmo_fsm_inst_state_chg(fi, V5X_LE_UNBLK_ALL_S_NULL, 0, 0);
|
||||||
/* send MPH-UBR/BI to align individual ports */
|
/* send MPH-UBR/BI to align individual ports */
|
||||||
complete_accelerated_alignment(v5if, ins);
|
complete_accelerated_alignment(v5if, ins);
|
||||||
break;
|
break;
|
||||||
case V5X_LE_UNBLK_ALL_E_TIMEOUT_TU2:
|
case V5X_LE_UNBLK_ALL_E_TIMEOUT_TU2:
|
||||||
LOGP(DV5MGMT, LOGL_NOTICE, "Multiple port (un)blocking completed due to timeout.\n");
|
LOGPFSML(fi, LOGL_NOTICE, "Multiple port (un)blocking completed due to timeout.\n");
|
||||||
/* change state */
|
/* change state */
|
||||||
osmo_fsm_inst_state_chg(fi, V5X_LE_UNBLK_ALL_S_NULL, 0, 0);
|
osmo_fsm_inst_state_chg(fi, V5X_LE_UNBLK_ALL_S_NULL, 0, 0);
|
||||||
/* send MPH-UBR/BI to align individual ports */
|
/* send MPH-UBR/BI to align individual ports */
|
||||||
|
|
|
@ -565,13 +565,13 @@ bool v5x_le_port_isdn_is_operational(struct osmo_fsm_inst *fi)
|
||||||
|
|
||||||
void v5x_le_port_isdn_block(struct osmo_fsm_inst *fi)
|
void v5x_le_port_isdn_block(struct osmo_fsm_inst *fi)
|
||||||
{
|
{
|
||||||
LOGP(DV5PORT, LOGL_DEBUG, "Put ISDN port into blocked state\n");
|
LOGPFSML(fi, LOGL_DEBUG, "Put ISDN port into blocked state\n");
|
||||||
fi->state = V5X_LE_UP_I_S_LE10_NOP_BLOCKED;
|
fi->state = V5X_LE_UP_I_S_LE10_NOP_BLOCKED;
|
||||||
}
|
}
|
||||||
|
|
||||||
void v5x_le_port_isdn_unblock(struct osmo_fsm_inst *fi)
|
void v5x_le_port_isdn_unblock(struct osmo_fsm_inst *fi)
|
||||||
{
|
{
|
||||||
LOGP(DV5PORT, LOGL_DEBUG, "Put ISDN port into unblocked state\n");
|
LOGPFSML(fi, LOGL_DEBUG, "Put ISDN port into unblocked state\n");
|
||||||
fi->state = V5X_LE_UP_I_S_LE20_OP_OPERATIONAL_DEACTIVTED;
|
fi->state = V5X_LE_UP_I_S_LE20_OP_OPERATIONAL_DEACTIVTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -794,13 +794,13 @@ bool v5x_le_port_pstn_is_operational(struct osmo_fsm_inst *fi)
|
||||||
|
|
||||||
void v5x_le_port_pstn_block(struct osmo_fsm_inst *fi)
|
void v5x_le_port_pstn_block(struct osmo_fsm_inst *fi)
|
||||||
{
|
{
|
||||||
LOGP(DV5PORT, LOGL_DEBUG, "Put PSTN port into blocked state\n");
|
LOGPFSML(fi, LOGL_DEBUG, "Put PSTN port into blocked state\n");
|
||||||
fi->state = V5X_LE_UP_P_S_LE10_NOP_BLOCKED;
|
fi->state = V5X_LE_UP_P_S_LE10_NOP_BLOCKED;
|
||||||
}
|
}
|
||||||
|
|
||||||
void v5x_le_port_pstn_unblock(struct osmo_fsm_inst *fi)
|
void v5x_le_port_pstn_unblock(struct osmo_fsm_inst *fi)
|
||||||
{
|
{
|
||||||
LOGP(DV5PORT, LOGL_DEBUG, "Put PSTN port into unblocked state\n");
|
LOGPFSML(fi, LOGL_DEBUG, "Put PSTN port into unblocked state\n");
|
||||||
fi->state = V5X_LE_UP_P_S_LE20_OPERATIONAL;
|
fi->state = V5X_LE_UP_P_S_LE20_OPERATIONAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -830,7 +830,7 @@ void v5x_le_port_pstn_fe_rcv(struct v5x_user_port *v5up, uint8_t cfe)
|
||||||
event = V5X_CUP_LE_FE205_BLOCK_REQ;
|
event = V5X_CUP_LE_FE205_BLOCK_REQ;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOGP(DV5PORT, LOGL_NOTICE, "Received cfe %d not valid at this protocol\n", cfe);
|
LOGPFSML(fi, LOGL_NOTICE, "Received cfe %d not valid at this protocol\n", cfe);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* send event to FSM */
|
/* send event to FSM */
|
||||||
|
|
|
@ -382,7 +382,7 @@ void v5x_le_pstn_fe_snd(struct v5x_user_port *v5up, enum v5x_fe_prim prim, struc
|
||||||
event = V5x_PSTN_LE_FE_disconnect_compl_req;
|
event = V5x_PSTN_LE_FE_disconnect_compl_req;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOGP(DV5PSTN, LOGL_NOTICE, "Got invalid prim %d at this protocol\n", prim);
|
LOGPFSML(v5up->port_fi, LOGL_NOTICE, "Got invalid prim %d at this protocol\n", prim);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -412,7 +412,7 @@ void v5x_le_pstn_mdu_snd(struct v5x_user_port *v5up, enum v5x_mgmt_prim prim)
|
||||||
event = V5x_PSTN_LE_MDU_CTRL_restart_compl_req;
|
event = V5x_PSTN_LE_MDU_CTRL_restart_compl_req;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOGP(DV5PSTN, LOGL_NOTICE, "Got invalid prim %d at this protocol\n", prim);
|
LOGPFSML(v5up->port_fi, LOGL_NOTICE, "Got invalid prim %d at this protocol\n", prim);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -437,20 +437,20 @@ static void dl_send(struct osmo_fsm_inst *fi, struct msgb *msg)
|
||||||
|
|
||||||
static void start_timer_Tr(struct v5x_pstn_proto *pstn)
|
static void start_timer_Tr(struct v5x_pstn_proto *pstn)
|
||||||
{
|
{
|
||||||
LOGP(DV5PSTN, LOGL_DEBUG, "Start timer Tr\n");
|
LOGPFSML(pstn->fi, LOGL_DEBUG, "Start timer Tr\n");
|
||||||
osmo_timer_schedule(&pstn->timer_Tr, TIMEOUT_Tr, 0);
|
osmo_timer_schedule(&pstn->timer_Tr, TIMEOUT_Tr, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void start_timer_Tt(struct v5x_pstn_proto *pstn)
|
static void start_timer_Tt(struct v5x_pstn_proto *pstn)
|
||||||
{
|
{
|
||||||
LOGP(DV5PSTN, LOGL_DEBUG, "Start timer Tt\n");
|
LOGPFSML(pstn->fi, LOGL_DEBUG, "Start timer Tt\n");
|
||||||
osmo_timer_schedule(&pstn->timer_Tt, TIMEOUT_Tt, 0);
|
osmo_timer_schedule(&pstn->timer_Tt, TIMEOUT_Tt, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void stop_timer_Tr(struct v5x_pstn_proto *pstn)
|
static void stop_timer_Tr(struct v5x_pstn_proto *pstn)
|
||||||
{
|
{
|
||||||
if (osmo_timer_pending(&pstn->timer_Tr)) {
|
if (osmo_timer_pending(&pstn->timer_Tr)) {
|
||||||
LOGP(DV5PSTN, LOGL_DEBUG, "Stop timer Tr\n");
|
LOGPFSML(pstn->fi, LOGL_DEBUG, "Stop timer Tr\n");
|
||||||
osmo_timer_del(&pstn->timer_Tr);
|
osmo_timer_del(&pstn->timer_Tr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -458,7 +458,7 @@ static void stop_timer_Tr(struct v5x_pstn_proto *pstn)
|
||||||
static void stop_timer_Tt(struct v5x_pstn_proto *pstn)
|
static void stop_timer_Tt(struct v5x_pstn_proto *pstn)
|
||||||
{
|
{
|
||||||
if (osmo_timer_pending(&pstn->timer_Tt)) {
|
if (osmo_timer_pending(&pstn->timer_Tt)) {
|
||||||
LOGP(DV5PSTN, LOGL_DEBUG, "Stop timer Tt\n");
|
LOGPFSML(pstn->fi, LOGL_DEBUG, "Stop timer Tt\n");
|
||||||
osmo_timer_del(&pstn->timer_Tt);
|
osmo_timer_del(&pstn->timer_Tt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -467,7 +467,7 @@ static void stop_timer(struct osmo_fsm_inst *fi)
|
||||||
{
|
{
|
||||||
struct v5x_pstn_proto *pstn = fi->priv;
|
struct v5x_pstn_proto *pstn = fi->priv;
|
||||||
|
|
||||||
LOGP(DV5PSTN, LOGL_DEBUG, "Stop all timers\n");
|
LOGPFSML(fi, LOGL_DEBUG, "Stop all timers\n");
|
||||||
osmo_timer_del(&fi->timer);
|
osmo_timer_del(&fi->timer);
|
||||||
stop_timer_Tr(pstn);
|
stop_timer_Tr(pstn);
|
||||||
stop_timer_Tt(pstn);
|
stop_timer_Tt(pstn);
|
||||||
|
@ -499,7 +499,7 @@ static void start_timer(struct osmo_fsm_inst *fi, enum v5x_le_pstn_fsm_event eve
|
||||||
OSMO_ASSERT(0);
|
OSMO_ASSERT(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
LOGP(DV5PSTN, LOGL_DEBUG, "Start timer %s (count = %d)\n", timer_name, count);
|
LOGPFSML(fi, LOGL_DEBUG, "Start timer %s (count = %d)\n", timer_name, count);
|
||||||
pstn->timeout_event = event;
|
pstn->timeout_event = event;
|
||||||
pstn->timeout_count = count;
|
pstn->timeout_count = count;
|
||||||
osmo_timer_schedule(&fi->timer, timeout, 0);
|
osmo_timer_schedule(&fi->timer, timeout, 0);
|
||||||
|
@ -532,7 +532,7 @@ static void do_status_enquiry(struct osmo_fsm_inst *fi)
|
||||||
{
|
{
|
||||||
struct v5x_pstn_proto *pstn = fi->priv;
|
struct v5x_pstn_proto *pstn = fi->priv;
|
||||||
|
|
||||||
LOGP(DV5PSTN, LOGL_NOTICE, "Received message not allowed in current state, sending status enquiry.\n");
|
LOGPFSML(fi, LOGL_NOTICE, "Received message not allowed in current state, sending status enquiry.\n");
|
||||||
|
|
||||||
/* start T4 */
|
/* start T4 */
|
||||||
start_timer(fi, V5x_PSTN_LE_TIMEOUT_T4, 1);
|
start_timer(fi, V5x_PSTN_LE_TIMEOUT_T4, 1);
|
||||||
|
@ -1036,7 +1036,7 @@ static void pstn_le4_path_active(struct osmo_fsm_inst *fi, uint32_t event, void
|
||||||
/* get sequence number and check if msg is in sequence */
|
/* get sequence number and check if msg is in sequence */
|
||||||
seq_nr = *TLVP_VAL(tp, V5X_CTRL_IEI_SEQUENCE_NR) & 0x7f;
|
seq_nr = *TLVP_VAL(tp, V5X_CTRL_IEI_SEQUENCE_NR) & 0x7f;
|
||||||
if (pstn->S_r == seq_nr) {
|
if (pstn->S_r == seq_nr) {
|
||||||
LOGP(DV5PSTN, LOGL_DEBUG, "Received expected 'receive' sequence number: S(R)=%d == M(R)=%d\n",
|
LOGPFSML(fi, LOGL_DEBUG, "Received expected 'receive' sequence number: S(R)=%d == M(R)=%d\n",
|
||||||
pstn->S_r, seq_nr);
|
pstn->S_r, seq_nr);
|
||||||
/* start Tr, if not pending */
|
/* start Tr, if not pending */
|
||||||
if (!osmo_timer_pending(&pstn->timer_Tr))
|
if (!osmo_timer_pending(&pstn->timer_Tr))
|
||||||
|
@ -1046,7 +1046,7 @@ static void pstn_le4_path_active(struct osmo_fsm_inst *fi, uint32_t event, void
|
||||||
/* send FE-signal_indication */
|
/* send FE-signal_indication */
|
||||||
rcv_fe(fi, FE_line_signal_ind, tp);
|
rcv_fe(fi, FE_line_signal_ind, tp);
|
||||||
} else {
|
} else {
|
||||||
LOGP(DV5PSTN, LOGL_ERROR, "Invalid 'receive' sequence number: S(R)=%d != M(R)=%d\n",
|
LOGPFSML(fi, LOGL_ERROR, "Invalid 'receive' sequence number: S(R)=%d != M(R)=%d\n",
|
||||||
pstn->S_r, seq_nr);
|
pstn->S_r, seq_nr);
|
||||||
/* send FE-signal_indication */
|
/* send FE-signal_indication */
|
||||||
rcv_fe(fi, FE_line_signal_ind, tp);
|
rcv_fe(fi, FE_line_signal_ind, tp);
|
||||||
|
@ -1059,22 +1059,22 @@ static void pstn_le4_path_active(struct osmo_fsm_inst *fi, uint32_t event, void
|
||||||
unacked = (pstn->S_s - pstn->S_a) & 127;
|
unacked = (pstn->S_s - pstn->S_a) & 127;
|
||||||
acked = (pstn->S_s - seq_nr) & 127;
|
acked = (pstn->S_s - seq_nr) & 127;
|
||||||
if (acked <= unacked) {
|
if (acked <= unacked) {
|
||||||
LOGP(DV5PSTN, LOGL_DEBUG, "Received expected 'transmit' sequence number: M(R)=%d is inside "
|
LOGPFSML(fi, LOGL_DEBUG, "Received expected 'transmit' sequence number: M(R)=%d is inside "
|
||||||
"S(A)=%d...S(S)=%d range\n", seq_nr, pstn->S_a, pstn->S_s);
|
"S(A)=%d...S(S)=%d range\n", seq_nr, pstn->S_a, pstn->S_s);
|
||||||
LOGP(DV5PSTN, LOGL_DEBUG, "We had %d unacked messages, now we have %d acked messages.\n", unacked, acked);
|
LOGPFSML(fi, LOGL_DEBUG, "We had %d unacked messages, now we have %d acked messages.\n", unacked, acked);
|
||||||
/* update acknowledge sequence number */
|
/* update acknowledge sequence number */
|
||||||
pstn->S_a = seq_nr;
|
pstn->S_a = seq_nr;
|
||||||
if (pstn->S_a == pstn->S_s) {
|
if (pstn->S_a == pstn->S_s) {
|
||||||
LOGP(DV5PSTN, LOGL_DEBUG, "No more outstanding message, so we don't need Tt anymore.\n");
|
LOGPFSML(fi, LOGL_DEBUG, "No more outstanding message, so we don't need Tt anymore.\n");
|
||||||
/* stop Tt */
|
/* stop Tt */
|
||||||
stop_timer_Tt(pstn);
|
stop_timer_Tt(pstn);
|
||||||
} else {
|
} else {
|
||||||
LOGP(DV5PSTN, LOGL_DEBUG, "There are still outstanding message, we still need Tt.\n");
|
LOGPFSML(fi, LOGL_DEBUG, "There are still outstanding message, we still need Tt.\n");
|
||||||
/* start Tt */
|
/* start Tt */
|
||||||
start_timer_Tt(pstn);
|
start_timer_Tt(pstn);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
LOGP(DV5PSTN, LOGL_ERROR, "Invalid 'transmit' sequence number: M(R)=%d not inside "
|
LOGPFSML(fi, LOGL_ERROR, "Invalid 'transmit' sequence number: M(R)=%d not inside "
|
||||||
"S(A)=%d...S(S)=%d range\n", seq_nr, pstn->S_a, pstn->S_s);
|
"S(A)=%d...S(S)=%d range\n", seq_nr, pstn->S_a, pstn->S_s);
|
||||||
/* do several thing here */
|
/* do several thing here */
|
||||||
do_disconnect_with_error(fi);
|
do_disconnect_with_error(fi);
|
||||||
|
@ -1180,13 +1180,13 @@ static void pstn_le4_path_active(struct osmo_fsm_inst *fi, uint32_t event, void
|
||||||
break;
|
break;
|
||||||
case V5x_PSTN_LE_TIMEOUT_Tr:
|
case V5x_PSTN_LE_TIMEOUT_Tr:
|
||||||
/* send SIGNAL ACK */
|
/* send SIGNAL ACK */
|
||||||
LOGP(DV5PSTN, LOGL_DEBUG, "Sending recent 'receive' sequence number: S(R)=%d as acknowledge.\n",
|
LOGPFSML(fi, LOGL_DEBUG, "Sending recent 'receive' sequence number: S(R)=%d as acknowledge.\n",
|
||||||
pstn->S_r);
|
pstn->S_r);
|
||||||
dl_send(fi, v5x_enc_signal_ack(pstn->v5up, pstn->S_r));
|
dl_send(fi, v5x_enc_signal_ack(pstn->v5up, pstn->S_r));
|
||||||
break;
|
break;
|
||||||
case V5x_PSTN_LE_TIMEOUT_Tt:
|
case V5x_PSTN_LE_TIMEOUT_Tt:
|
||||||
/* do several thing here */
|
/* do several thing here */
|
||||||
LOGP(DV5PSTN, LOGL_ERROR, "Aborting, because of missing acknowledge of outstanding 'transmit' sequence number: S(A)=%d...S(S)=%d\n", pstn->S_a, pstn->S_s);
|
LOGPFSML(fi, LOGL_ERROR, "Aborting, because of missing acknowledge of outstanding 'transmit' sequence number: S(A)=%d...S(S)=%d\n", pstn->S_a, pstn->S_s);
|
||||||
do_disconnect_with_error(fi);
|
do_disconnect_with_error(fi);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -1592,7 +1592,7 @@ int v5x_le_pstn_dl_rcv(struct v5x_user_port *v5up, uint8_t msg_type, const struc
|
||||||
event = V5x_PSTN_LE_STATUS;
|
event = V5x_PSTN_LE_STATUS;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LOGP(DV5PSTN, LOGL_NOTICE, "Invalid PSTN protocol message %d receied from AN.\n", msg_type);
|
LOGPFSML(v5up->port_fi, LOGL_NOTICE, "Invalid PSTN protocol message %d receied from AN.\n", msg_type);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue