Hello Team,
I recently encountered a *rogue peer delay response* error which seemly
caused by function port_synchronize() reset peer_delay_req pointer.
I'd like to know why port_synchronize() reset p->peer_delay_req to NULL is
needed, can i comment this to avoid the rogue peer delay response error?
Can anyone please help me?
the problematic packet timing is as follows
1. client send pdelay_req
2. client recv follow_up
3. client enter port_synchronize, client clock servo enter jump state
4. port_synchronize reset p->peer_delay_req to NULL
5. client recv pdelay_resp
6. client report rogue peer delay response
7. client reinit port
8. client servo enter lock state,
ptp4l log as follows,
* 202 ptp4l[3.143]: port 1: delay timeout* 203 ptp4l[3.147]: bc_event,
2613, idx(1)
204 ptp4l[3.147]: process msg seq_id(16945)
205 ptp4l[3.147]: bc_event, 2761, process FOLLOW_UP
206 ptp4l[3.147]: port_syfufsm, 1251, sts(1), event(3)
207 ptp4l[3.147]: port_synchronize, 1176, t1(1560257347787048846),
t2(946684803056837859), c1(0), c2(0)
208 ptp4l[3.147]: port_synchronize, 1192, last_state(0), state(1)
* 209 ptp4l[3.147]: port_synchronize, 1212, peer_delay_req cleared*
210 ptp4l[3.147]: bc_event, 2613, idx(0)
211 ptp4l[3.147]: process msg seq_id(2)
212 ptp4l[3.147]: bc_event, 2754, process PDELAY_RESP
* 213 ptp4l[3.147]: port 1: rogue peer delay response*
214 ptp4l[3.147]: bc_event, 2757, process PDELAY_RESP failed
215 ptp4l[3.148]: port 1: clearing fault immediately
*1158 static void port_synchronize(*)
1206 case SERVO_JUMP:
1207 port_dispatch(p, EV_SYNCHRONIZATION_FAULT, 0);
1208 flush_delay_req(p);
*1209 if (p->peer_delay_req) {1210
msg_put(p->peer_delay_req);1211 p->peer_delay_req = NULL;1212
pr_notice("%s, %d, peer_delay_req cleared", __FUNCTION__, __LINE__);1214
}*
Best Regards
Merlin
_______________________________________________
Linuxptp-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxptp-users