svn commit: r286700 - in head: sbin/ifconfig sys/net

Ravi Pokala rpokala at mac.com
Sat Jan 21 02:37:29 UTC 2017


-----Original Message-----
> From: <owner-src-committers at freebsd.org> on behalf of Hiren Panchasara <hiren at freebsd.org>
> Date: 2017-01-18, Wednesday at 14:38
> To: Alan Somers <asomers at freebsd.org>, <lakshmi.n at msystechnologies.com>, <rpokala at FreeBSD.org>, <smh at FreeBSD.org>
> Cc: "src-committers at freebsd.org" <src-committers at freebsd.org>, "svn-src-all at freebsd.org" <svn-src-all at freebsd.org>, "svn-src-head at freebsd.org" <svn-src-head at freebsd.org>
> Subject: Re: svn commit: r286700 - in head: sbin/ifconfig sys/net
> 
> Adding the submitter and other reviewers for their comments.
> 
> On 01/18/17 at 03:03P, Alan Somers wrote:
>> Is the change to lacp_port_create correct?  The comment indicates that
>> fast is configurable, but it's actually constant.  Later on, there's
>> some dead code that depends on the value of fast (it was dead before
>> this commit, too).
>>
>> CID: 1305734
>> CID: 1305692

You're right that in lacp_port_create(), "fast" (and "active") are both constant. I think the comment intended to indicate that "fast" could be changed via ioctl *after create*.

It seems to me that the right thing to do would be to remove both "fast" and "active" from lacp_port_create(), and have it unconditionally set "lp->lp_state" to LACP_STATE_ACTIVITY. That would eliminate the unclear comments and fix both Coverity issues, without changing any behavior.

-Ravi (rpokala@)

>> -Alan
>> 
>> On Wed, Aug 12, 2015 at 2:21 PM, Hiren Panchasara <hiren at freebsd.org> wrote:
>>> Author: hiren
>>> Date: Wed Aug 12 20:21:04 2015
>>> New Revision: 286700
>>> URL: https://svnweb.freebsd.org/changeset/base/286700
>>>
>>> Log:
>>>   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
>>>
>>> Modified:
>>>   head/sbin/ifconfig/ifconfig.8
>>>   head/sbin/ifconfig/iflagg.c
>>>   head/sys/net/ieee8023ad_lacp.c
>>>   head/sys/net/ieee8023ad_lacp.h
>>>   head/sys/net/if_lagg.c
>>>   head/sys/net/if_lagg.h
>>>
>>> Modified: head/sbin/ifconfig/ifconfig.8
>>> ==============================================================================
>>> --- head/sbin/ifconfig/ifconfig.8       Wed Aug 12 20:16:13 2015        (r286699)
>>> +++ head/sbin/ifconfig/ifconfig.8       Wed Aug 12 20:21:04 2015        (r286700)
>>> @@ -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 h
>>>  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,
>>>
>>> Modified: head/sbin/ifconfig/iflagg.c
>>> ==============================================================================
>>> --- head/sbin/ifconfig/iflagg.c Wed Aug 12 20:16:13 2015        (r286699)
>>> +++ head/sbin/ifconfig/iflagg.c Wed Aug 12 20:21:04 2015        (r286700)
>>> @@ -115,6 +115,8 @@ setlaggsetopt(const char *val, int d, in
>>>         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 = {
>>>
>>> Modified: head/sys/net/ieee8023ad_lacp.c
>>> ==============================================================================
>>> --- head/sys/net/ieee8023ad_lacp.c      Wed Aug 12 20:16:13 2015        (r286699)
>>> +++ head/sys/net/ieee8023ad_lacp.c      Wed Aug 12 20:21:04 2015        (r286700)
>>> @@ -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;
>>>
>>> Modified: head/sys/net/ieee8023ad_lacp.h
>>> ==============================================================================
>>> --- head/sys/net/ieee8023ad_lacp.h      Wed Aug 12 20:16:13 2015        (r286699)
>>> +++ head/sys/net/ieee8023ad_lacp.h      Wed Aug 12 20:21:04 2015        (r286700)
>>> @@ -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
>>>
>>> Modified: head/sys/net/if_lagg.c
>>> ==============================================================================
>>> --- head/sys/net/if_lagg.c      Wed Aug 12 20:16:13 2015        (r286699)
>>> +++ head/sys/net/if_lagg.c      Wed Aug 12 20:21:04 2015        (r286700)
>>> @@ -1257,6 +1257,8 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd
>>>                                 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
>>>                 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
>>>                                 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
>>>                         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);
>>>
>>> Modified: head/sys/net/if_lagg.h
>>> ==============================================================================
>>> --- head/sys/net/if_lagg.h      Wed Aug 12 20:16:13 2015        (r286699)
>>> +++ head/sys/net/if_lagg.h      Wed Aug 12 20:21:04 2015        (r286700)
>>> @@ -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 */
>>>





More information about the svn-src-head mailing list