mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-14 10:09:48 +00:00
Make LAG LACP fast timeout tunable through IOCTL.
Differential Revision: D3300 Submitted by: LN Sundararajan <lakshmi.n at msystechnologies> Reviewed by: wblock, smh, gnn, hiren, rpokala at panasas MFC after: 2 weeks Sponsored by: Panasas
This commit is contained in:
parent
9a2b4b3599
commit
0e02b43a07
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=286700
@ -28,7 +28,7 @@
|
||||
.\" From: @(#)ifconfig.8 8.3 (Berkeley) 1/5/94
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd May 15, 2015
|
||||
.Dd Aug 12, 2015
|
||||
.Dt IFCONFIG 8
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -2396,6 +2396,10 @@ Disable local hash computation for RSS hash on the interface.
|
||||
Set a shift parameter for RSS local hash computation.
|
||||
Hash is calculated by using flowid bits in a packet header mbuf
|
||||
which are shifted by the number of this parameter.
|
||||
.It Cm lacp_fast_timeout
|
||||
Enable lacp fast-timeout on the interface.
|
||||
.It Cm -lacp_fast_timeout
|
||||
Disable lacp fast-timeout on the interface.
|
||||
.El
|
||||
.Pp
|
||||
The following parameters are specific to IP tunnel interfaces,
|
||||
|
@ -115,6 +115,8 @@ setlaggsetopt(const char *val, int d, int s, const struct afswtch *afp)
|
||||
case -LAGG_OPT_LACP_TXTEST:
|
||||
case LAGG_OPT_LACP_RXTEST:
|
||||
case -LAGG_OPT_LACP_RXTEST:
|
||||
case LAGG_OPT_LACP_TIMEOUT:
|
||||
case -LAGG_OPT_LACP_TIMEOUT:
|
||||
break;
|
||||
default:
|
||||
err(1, "Invalid lagg option");
|
||||
@ -293,6 +295,8 @@ static struct cmd lagg_cmds[] = {
|
||||
DEF_CMD("-lacp_txtest", -LAGG_OPT_LACP_TXTEST, setlaggsetopt),
|
||||
DEF_CMD("lacp_rxtest", LAGG_OPT_LACP_RXTEST, setlaggsetopt),
|
||||
DEF_CMD("-lacp_rxtest", -LAGG_OPT_LACP_RXTEST, setlaggsetopt),
|
||||
DEF_CMD("lacp_fast_timeout", LAGG_OPT_LACP_TIMEOUT, setlaggsetopt),
|
||||
DEF_CMD("-lacp_fast_timeout", -LAGG_OPT_LACP_TIMEOUT, setlaggsetopt),
|
||||
DEF_CMD_ARG("flowid_shift", setlaggflowidshift),
|
||||
};
|
||||
static struct afswtch af_lagg = {
|
||||
|
@ -522,7 +522,7 @@ lacp_port_create(struct lagg_port *lgp)
|
||||
int error;
|
||||
|
||||
boolean_t active = TRUE; /* XXX should be configurable */
|
||||
boolean_t fast = FALSE; /* XXX should be configurable */
|
||||
boolean_t fast = FALSE; /* Configurable via ioctl */
|
||||
|
||||
link_init_sdl(ifp, (struct sockaddr *)&sdl, IFT_ETHER);
|
||||
sdl.sdl_alen = ETHER_ADDR_LEN;
|
||||
|
@ -251,6 +251,7 @@ struct lacp_softc {
|
||||
u_int32_t lsc_tx_test;
|
||||
} lsc_debug;
|
||||
u_int32_t lsc_strict_mode;
|
||||
boolean_t lsc_fast_timeout; /* if set, fast timeout */
|
||||
};
|
||||
|
||||
#define LACP_TYPE_ACTORINFO 1
|
||||
|
@ -1257,6 +1257,8 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
|
||||
ro->ro_opts |= LAGG_OPT_LACP_RXTEST;
|
||||
if (lsc->lsc_strict_mode != 0)
|
||||
ro->ro_opts |= LAGG_OPT_LACP_STRICT;
|
||||
if (lsc->lsc_fast_timeout != 0)
|
||||
ro->ro_opts |= LAGG_OPT_LACP_TIMEOUT;
|
||||
|
||||
ro->ro_active = sc->sc_active;
|
||||
} else {
|
||||
@ -1292,6 +1294,8 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
|
||||
case -LAGG_OPT_LACP_RXTEST:
|
||||
case LAGG_OPT_LACP_STRICT:
|
||||
case -LAGG_OPT_LACP_STRICT:
|
||||
case LAGG_OPT_LACP_TIMEOUT:
|
||||
case -LAGG_OPT_LACP_TIMEOUT:
|
||||
valid = lacp = 1;
|
||||
break;
|
||||
default:
|
||||
@ -1320,6 +1324,7 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
|
||||
sc->sc_opts &= ~ro->ro_opts;
|
||||
} else {
|
||||
struct lacp_softc *lsc;
|
||||
struct lacp_port *lp;
|
||||
|
||||
lsc = (struct lacp_softc *)sc->sc_psc;
|
||||
|
||||
@ -1342,6 +1347,20 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
|
||||
case -LAGG_OPT_LACP_STRICT:
|
||||
lsc->lsc_strict_mode = 0;
|
||||
break;
|
||||
case LAGG_OPT_LACP_TIMEOUT:
|
||||
LACP_LOCK(lsc);
|
||||
LIST_FOREACH(lp, &lsc->lsc_ports, lp_next)
|
||||
lp->lp_state |= LACP_STATE_TIMEOUT;
|
||||
LACP_UNLOCK(lsc);
|
||||
lsc->lsc_fast_timeout = 1;
|
||||
break;
|
||||
case -LAGG_OPT_LACP_TIMEOUT:
|
||||
LACP_LOCK(lsc);
|
||||
LIST_FOREACH(lp, &lsc->lsc_ports, lp_next)
|
||||
lp->lp_state &= ~LACP_STATE_TIMEOUT;
|
||||
LACP_UNLOCK(lsc);
|
||||
lsc->lsc_fast_timeout = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
LAGG_WUNLOCK(sc);
|
||||
|
@ -150,6 +150,7 @@ struct lagg_reqopts {
|
||||
#define LAGG_OPT_LACP_STRICT 0x10 /* LACP strict mode */
|
||||
#define LAGG_OPT_LACP_TXTEST 0x20 /* LACP debug: txtest */
|
||||
#define LAGG_OPT_LACP_RXTEST 0x40 /* LACP debug: rxtest */
|
||||
#define LAGG_OPT_LACP_TIMEOUT 0x80 /* LACP timeout */
|
||||
u_int ro_count; /* number of ports */
|
||||
u_int ro_active; /* active port count */
|
||||
u_int ro_flapping; /* number of flapping */
|
||||
|
Loading…
Reference in New Issue
Block a user