Retry receiving an EoE set IP parameter response.
This commit is contained in:
parent
cbadc30d15
commit
972337444b
|
|
@ -61,6 +61,7 @@ void ec_fsm_eoe_init(
|
|||
fsm->datagram = NULL;
|
||||
fsm->jiffies_start = 0;
|
||||
fsm->request = NULL;
|
||||
fsm->frame_type_retries = 0;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -313,6 +314,7 @@ void ec_fsm_eoe_set_ip_request(
|
|||
ec_slave_mbox_prepare_check(slave, datagram); // can not fail.
|
||||
fsm->retries = EC_FSM_RETRIES;
|
||||
fsm->state = ec_fsm_eoe_set_ip_check;
|
||||
fsm->frame_type_retries = 10;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -431,12 +433,26 @@ void ec_fsm_eoe_set_ip_response(
|
|||
frame_type = EC_READ_U8(data) & 0x0f;
|
||||
|
||||
if (frame_type != EC_EOE_FRAMETYPE_SET_IP_RES) {
|
||||
EC_SLAVE_ERR(slave, "Received no set IP parameter response"
|
||||
if (master->debug_level) {
|
||||
EC_SLAVE_DBG(slave, 0, "Received no set IP parameter response"
|
||||
" (frame type %x).\n", frame_type);
|
||||
ec_print_data(data, rec_size);
|
||||
}
|
||||
if (fsm->frame_type_retries--) {
|
||||
// there may be an EoE segment left in the mailbox.
|
||||
// discard it and receive again.
|
||||
fsm->jiffies_start = fsm->datagram->jiffies_sent;
|
||||
ec_slave_mbox_prepare_check(slave, datagram); // can not fail.
|
||||
fsm->retries = EC_FSM_RETRIES;
|
||||
fsm->state = ec_fsm_eoe_set_ip_check;
|
||||
return;
|
||||
}
|
||||
else {
|
||||
EC_SLAVE_ERR(slave, "Received no set IP parameter response.\n");
|
||||
fsm->state = ec_fsm_eoe_error;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
req->result = EC_READ_U16(data + 2);
|
||||
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ struct ec_fsm_eoe {
|
|||
ec_datagram_t *datagram; /**< Datagram used in the previous step. */
|
||||
unsigned long jiffies_start; /**< Timestamp. */
|
||||
ec_eoe_request_t *request; /**< EoE request */
|
||||
unsigned int frame_type_retries; /**< retries upon wrong frame type. */
|
||||
};
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
|
|||
Loading…
Reference in New Issue