This patch will remove all delay requests in queue that is older than the 
latest processed. Connected responses to these are either much more delayed or 
lost. Any received response derived from an obsolete request will be neglected.

Signed-off-by: Anders Selhammer <anders.selham...@est.tech>
---
 port.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/port.c b/port.c
index 65620a2..2edfb26 100644
--- a/port.c
+++ b/port.c
@@ -1830,7 +1830,7 @@ out:
 static void process_delay_resp(struct port *p, struct ptp_message *m)
 {
        struct delay_resp_msg *rsp = &m->delay_resp;
-       struct ptp_message *req;
+       struct ptp_message *req, *obs;
        struct PortIdentity master;
        tmv_t c3, t3, t4, t4c;
 
@@ -1858,6 +1858,10 @@ static void process_delay_resp(struct port *p, struct 
ptp_message *m)
 
        clock_path_delay(p->clock, t3, t4c);
 
+       while ((obs = TAILQ_NEXT(req, list)) != NULL) {
+               TAILQ_REMOVE(&p->delay_req, obs, list);
+               msg_put(obs);
+       }
        TAILQ_REMOVE(&p->delay_req, req, list);
        msg_put(req);
 
-- 
1.8.3.1


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to