Merge remote-tracking branch 'origin/prevent-p7-msg-after-stop-indication' into integration_2026_w05 (!3880)
Prevent the PNF from sending P7 messages after sending a STOP.indication Upon stopping the PNF, when sending the STOP.indication to the VNF, set pnf_p7->terminate to 1. Add a check on the PNF P7 send functions to not send a message after pnf_p7->terminate is set. This prevents the PNF from sending SLOT.indications after stopping, which sometimes was causing the VNF to process a SLOT.indication after it had received the indication to STOP. Also, this MR adds a sanity check on the VNF P7 message handler to ignore any P7 messages it receives after having it's own terminate flag set to 1 This MR closes issue #1045
This commit is contained in:
@@ -1800,6 +1800,9 @@ int nr_stop_request(nfapi_pnf_config_t *config, nfapi_pnf_phy_config_t *phy, nfa
|
||||
.header.phy_id = req->header.phy_id};
|
||||
nfapi_nr_stop_indication(config, &resp);
|
||||
has_sent_stop_ind = true;
|
||||
// Upon sending the STOP.indication mark P7 PNF to terminate, to not send any further messages to the VNF
|
||||
pnf_p7_t *pnf_p7 = (pnf_p7_t *)(p7_config_g);
|
||||
pnf_p7->terminate = 1;
|
||||
#ifdef ENABLE_WLS
|
||||
wls_pnf_close(pnf_p5_init_and_receive_pthread);
|
||||
#endif
|
||||
|
||||
@@ -78,6 +78,10 @@ static int send_p7_msg(pnf_p7_t *pnf_p7, uint8_t *msg, uint32_t len)
|
||||
|
||||
bool pnf_nr_send_p7_message(pnf_p7_t *pnf_p7, nfapi_nr_p7_message_header_t *header, uint32_t msg_len)
|
||||
{
|
||||
if (pnf_p7->terminate) {
|
||||
//don't send any further P7 messages after terminating
|
||||
return false;
|
||||
}
|
||||
header->m_segment_sequence = NFAPI_NR_P7_SET_MSS(0, 0, pnf_p7->sequence_number);
|
||||
|
||||
// Need to guard against different threads calling the encode function at the same time
|
||||
|
||||
@@ -201,7 +201,10 @@ bool wls_pnf_nr_send_p5_message(pnf_t *pnf, nfapi_nr_p4_p5_message_header_t *msg
|
||||
bool wls_pnf_nr_send_p7_message(pnf_p7_t *pnf_p7, nfapi_nr_p7_message_header_t *msg, uint32_t msg_len)
|
||||
{
|
||||
UNUSED_VARIABLE(msg_len);
|
||||
|
||||
if (pnf_p7->terminate) {
|
||||
// don't send any further P7 messages after terminating
|
||||
return false;
|
||||
}
|
||||
if (!isFAPIMessageIDValid(msg->message_id)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2130,6 +2130,10 @@ void vnf_dispatch_p7_message(void *pRecvMsg, int recvMsgLen, vnf_p7_t* vnf_p7)
|
||||
|
||||
void vnf_nr_handle_p7_message(void *pRecvMsg, int recvMsgLen, vnf_p7_t* vnf_p7)
|
||||
{
|
||||
if (vnf_p7->terminate) {
|
||||
// VNF already terminated, ignore messages ( shouldn't get here, since the PNF doesn't send further messages after terminating as well )
|
||||
return;
|
||||
}
|
||||
nfapi_nr_p7_message_header_t header;
|
||||
|
||||
// validate the input params
|
||||
|
||||
Reference in New Issue
Block a user