[Linuxptp-devel] [PATCH 4/4] Reset pdr_missing early in port_nrate_calculate(), implement ratio_val
PTP IEEE 1588 stack for Linux
Brought to you by:
rcochran
|
From: Delio B. <dbr...@au...> - 2013-11-19 13:43:45
|
Signed-off-by: Delio Brignoli <dbr...@au...>
---
port.c | 21 ++++++++++++++++-----
1 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/port.c b/port.c
index 63b922e..cca0f68 100644
--- a/port.c
+++ b/port.c
@@ -57,6 +57,7 @@ struct nrate_estimator {
tmv_t ingress1;
unsigned int max_count;
unsigned int count;
+ int ratio_valid;
};
struct port {
@@ -474,6 +475,13 @@ static int port_capable(struct port *p)
goto not_capable;
}
+ if (!p->nrate.ratio_valid) {
+ if (p->asCapable)
+ pr_debug("port %hu: invalid nrate, "
+ "resetting asCapable", portnum(p));
+ goto not_capable;
+ }
+
capable:
if (!p->asCapable)
pr_debug("port %hu: setting asCapable", portnum(p));
@@ -733,6 +741,12 @@ static void port_nrate_calculate(struct port *p, tmv_t t3, tmv_t t4, tmv_t c)
tmv_t origin2;
struct nrate_estimator *n = &p->nrate;
+ /*
+ * We experienced a successful exchanges of peer delay request
+ * and response, reset pdr_missing for this port.
+ */
+ p->pdr_missing = 0;
+
if (!n->ingress1) {
n->ingress1 = t4;
n->origin1 = tmv_add(t3, c);
@@ -753,11 +767,7 @@ static void port_nrate_calculate(struct port *p, tmv_t t3, tmv_t t4, tmv_t c)
n->ingress1 = t4;
n->origin1 = origin2;
n->count = 0;
- /*
- * We experienced a successful series of exchanges of peer
- * delay request and response, and so the port is now capable.
- */
- p->pdr_missing = 0;
+ n->ratio_valid = 1;
}
static void port_nrate_initialize(struct port *p)
@@ -781,6 +791,7 @@ static void port_nrate_initialize(struct port *p)
p->nrate.ingress1 = tmv_zero();
p->nrate.max_count = (1 << shift);
p->nrate.count = 0;
+ p->nrate.ratio_valid = 0;
}
static int port_set_announce_tmo(struct port *p)
--
1.7.0.4
|