fd: Introduce a unicast request timer.
This patch adds a new timer to be used by the client side unicast negotiation logic. Signed-off-by: Richard Cochran <richardcochran@gmail.com>master
parent
1ccc55ef07
commit
ffdb3f7192
1
e2e_tc.c
1
e2e_tc.c
|
@ -116,6 +116,7 @@ enum fsm_event e2e_event(struct port *p, int fd_index)
|
||||||
|
|
||||||
case FD_MANNO_TIMER:
|
case FD_MANNO_TIMER:
|
||||||
case FD_SYNC_TX_TIMER:
|
case FD_SYNC_TX_TIMER:
|
||||||
|
case FD_UNICAST_REQ_TIMER:
|
||||||
pr_err("unexpected timer expiration");
|
pr_err("unexpected timer expiration");
|
||||||
return EV_NONE;
|
return EV_NONE;
|
||||||
|
|
||||||
|
|
3
fd.h
3
fd.h
|
@ -20,7 +20,7 @@
|
||||||
#ifndef HAVE_FD_H
|
#ifndef HAVE_FD_H
|
||||||
#define HAVE_FD_H
|
#define HAVE_FD_H
|
||||||
|
|
||||||
#define N_TIMER_FDS 6
|
#define N_TIMER_FDS 7
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The order matters here. The DELAY timer must appear before the
|
* The order matters here. The DELAY timer must appear before the
|
||||||
|
@ -37,6 +37,7 @@ enum {
|
||||||
FD_QUALIFICATION_TIMER,
|
FD_QUALIFICATION_TIMER,
|
||||||
FD_MANNO_TIMER,
|
FD_MANNO_TIMER,
|
||||||
FD_SYNC_TX_TIMER,
|
FD_SYNC_TX_TIMER,
|
||||||
|
FD_UNICAST_REQ_TIMER,
|
||||||
FD_RTNL,
|
FD_RTNL,
|
||||||
N_POLLFD,
|
N_POLLFD,
|
||||||
};
|
};
|
||||||
|
|
1
p2p_tc.c
1
p2p_tc.c
|
@ -119,6 +119,7 @@ enum fsm_event p2p_event(struct port *p, int fd_index)
|
||||||
|
|
||||||
case FD_MANNO_TIMER:
|
case FD_MANNO_TIMER:
|
||||||
case FD_SYNC_TX_TIMER:
|
case FD_SYNC_TX_TIMER:
|
||||||
|
case FD_UNICAST_REQ_TIMER:
|
||||||
pr_err("unexpected timer expiration");
|
pr_err("unexpected timer expiration");
|
||||||
return EV_NONE;
|
return EV_NONE;
|
||||||
|
|
||||||
|
|
6
port.c
6
port.c
|
@ -2239,6 +2239,7 @@ static void port_e2e_transition(struct port *p, enum port_state next)
|
||||||
port_clr_tmo(p->fda.fd[FD_QUALIFICATION_TIMER]);
|
port_clr_tmo(p->fda.fd[FD_QUALIFICATION_TIMER]);
|
||||||
port_clr_tmo(p->fda.fd[FD_MANNO_TIMER]);
|
port_clr_tmo(p->fda.fd[FD_MANNO_TIMER]);
|
||||||
port_clr_tmo(p->fda.fd[FD_SYNC_TX_TIMER]);
|
port_clr_tmo(p->fda.fd[FD_SYNC_TX_TIMER]);
|
||||||
|
/* Leave FD_UNICAST_REQ_TIMER running. */
|
||||||
|
|
||||||
switch (next) {
|
switch (next) {
|
||||||
case PS_INITIALIZING:
|
case PS_INITIALIZING:
|
||||||
|
@ -2280,6 +2281,7 @@ static void port_p2p_transition(struct port *p, enum port_state next)
|
||||||
port_clr_tmo(p->fda.fd[FD_QUALIFICATION_TIMER]);
|
port_clr_tmo(p->fda.fd[FD_QUALIFICATION_TIMER]);
|
||||||
port_clr_tmo(p->fda.fd[FD_MANNO_TIMER]);
|
port_clr_tmo(p->fda.fd[FD_MANNO_TIMER]);
|
||||||
port_clr_tmo(p->fda.fd[FD_SYNC_TX_TIMER]);
|
port_clr_tmo(p->fda.fd[FD_SYNC_TX_TIMER]);
|
||||||
|
/* Leave FD_UNICAST_REQ_TIMER running. */
|
||||||
|
|
||||||
switch (next) {
|
switch (next) {
|
||||||
case PS_INITIALIZING:
|
case PS_INITIALIZING:
|
||||||
|
@ -2448,6 +2450,10 @@ static enum fsm_event bc_event(struct port *p, int fd_index)
|
||||||
port_set_sync_tx_tmo(p);
|
port_set_sync_tx_tmo(p);
|
||||||
return port_tx_sync(p, NULL) ? EV_FAULT_DETECTED : EV_NONE;
|
return port_tx_sync(p, NULL) ? EV_FAULT_DETECTED : EV_NONE;
|
||||||
|
|
||||||
|
case FD_UNICAST_REQ_TIMER:
|
||||||
|
pr_debug("port %hu: unicast request timeout", portnum(p));
|
||||||
|
return EV_NONE;
|
||||||
|
|
||||||
case FD_RTNL:
|
case FD_RTNL:
|
||||||
pr_debug("port %hu: received link status notification", portnum(p));
|
pr_debug("port %hu: received link status notification", portnum(p));
|
||||||
rtnl_link_status(fd, p->name, port_link_status, p);
|
rtnl_link_status(fd, p->name, port_link_status, p);
|
||||||
|
|
Loading…
Reference in New Issue