Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Dec 2014 16:10:01 -0800
From:      Jack Vogel <jfvogel@gmail.com>
To:        Jack F Vogel <jfv@freebsd.org>
Cc:        "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, "src-committers@freebsd.org" <src-committers@freebsd.org>
Subject:   Re: svn commit: r275431 - in head/sys/dev: e1000 ixgbe
Message-ID:  <CAFOYbcktpW3OGUx3ex6_HvKUmPhn=L6VUrVRiOHDiWmzrYoCHg@mail.gmail.com>
In-Reply-To: <201412022302.sB2N2w9V002617@svn.freebsd.org>
References:  <201412022302.sB2N2w9V002617@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Just to make it clear, I am not opposed to what this code was trying to do,
in
fact I think its a pretty cool idea, but I think it can be implemented more
cleanly.

Eric and myself will be discussing the details.

Jack


On Tue, Dec 2, 2014 at 3:02 PM, Jack F Vogel <jfv@freebsd.org> wrote:

> Author: jfv
> Date: Tue Dec  2 23:02:57 2014
> New Revision: 275431
> URL: https://svnweb.freebsd.org/changeset/base/275431
>
> Log:
>   Revert r275136, it was not approved, it was sloppy, if a feature
>   like this is needed please resubmit for Intel's approval.
>
> Modified:
>   head/sys/dev/e1000/if_igb.c
>   head/sys/dev/ixgbe/ixgbe.c
>
> Modified: head/sys/dev/e1000/if_igb.c
>
> ==============================================================================
> --- head/sys/dev/e1000/if_igb.c Tue Dec  2 22:35:43 2014        (r275430)
> +++ head/sys/dev/e1000/if_igb.c Tue Dec  2 23:02:57 2014        (r275431)
> @@ -188,7 +188,6 @@ static char *igb_strings[] = {
>  /*********************************************************************
>   *  Function prototypes
>   *********************************************************************/
> -static int     igb_per_unit_num_queues(SYSCTL_HANDLER_ARGS);
>  static int     igb_probe(device_t);
>  static int     igb_attach(device_t);
>  static int     igb_detach(device_t);
> @@ -494,11 +493,6 @@ igb_attach(device_t dev)
>             OID_AUTO, "nvm", CTLTYPE_INT|CTLFLAG_RW, adapter, 0,
>             igb_sysctl_nvm_info, "I", "NVM Information");
>
> -        SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev),
> -                        SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
> -                       OID_AUTO, "num_queues", CTLTYPE_INT | CTLFLAG_RD,
> -                       adapter, 0, igb_per_unit_num_queues, "I", "Number
> of Queues");
> -
>         igb_set_sysctl_value(adapter, "enable_aim",
>             "Interrupt Moderation", &adapter->enable_aim,
>             igb_enable_aim);
> @@ -2837,7 +2831,6 @@ igb_setup_msix(struct adapter *adapter)
>  {
>         device_t        dev = adapter->dev;
>         int             bar, want, queues, msgs, maxqueues;
> -       int             n_queues;
>
>         /* tuneable override */
>         if (igb_enable_msix == 0)
> @@ -2865,18 +2858,11 @@ igb_setup_msix(struct adapter *adapter)
>                 goto msi;
>         }
>
> -       n_queues = 0;
> -       /* try more specific tunable, then global, then finally default to
> boot time tunable if set. */
> -       if (device_getenv_int(dev, "num_queues", &n_queues) != 0) {
> -               device_printf(dev, "using specific tunable num_queues=%d",
> n_queues);
> -       } else if (TUNABLE_INT_FETCH("hw.igb.num_queues", &n_queues) != 0)
> {
> -               if (igb_num_queues != n_queues) {
> -                       device_printf(dev, "using global tunable
> hw.igb.num_queues=%d", n_queues);
> -                       igb_num_queues = n_queues;
> -               }
> -       } else {
> -               n_queues = igb_num_queues;
> -       }
> +       queues = (mp_ncpus > (msgs-1)) ? (msgs-1) : mp_ncpus;
> +
> +       /* Override via tuneable */
> +       if (igb_num_queues != 0)
> +               queues = igb_num_queues;
>
>  #ifdef RSS
>         /* If we're doing RSS, clamp at the number of RSS buckets */
> @@ -2884,12 +2870,6 @@ igb_setup_msix(struct adapter *adapter)
>                 queues = rss_getnumbuckets();
>  #endif
>
> -       if (n_queues != 0) {
> -               queues = n_queues;
> -       } else {
> -               /* Figure out a reasonable auto config value */
> -               queues = (mp_ncpus > (msgs-1)) ? (msgs-1) : mp_ncpus;
> -       }
>
>         /* Sanity check based on HW */
>         switch (adapter->hw.mac.type) {
> @@ -2912,17 +2892,10 @@ igb_setup_msix(struct adapter *adapter)
>                         maxqueues = 1;
>                         break;
>         }
> -       if (queues > maxqueues) {
> -               device_printf(adapter->dev, "requested %d queues, but max
> for this adapter is %d\n",
> -                   queues, maxqueues);
> +
> +       /* Final clamp on the actual hardware capability */
> +       if (queues > maxqueues)
>                 queues = maxqueues;
> -       } else if (queues == 0) {
> -               queues = 1;
> -       } else if (queues < 0) {
> -               device_printf(adapter->dev, "requested %d queues, but min
> for this adapter is %d\n",
> -                   queues, 1);
> -               queues = 1;
> -       }
>
>         /*
>         ** One vector (RX/TX pair) per queue
> @@ -6407,14 +6380,3 @@ igb_sysctl_eee(SYSCTL_HANDLER_ARGS)
>         IGB_CORE_UNLOCK(adapter);
>         return (0);
>  }
> -
> -static int
> -igb_per_unit_num_queues(SYSCTL_HANDLER_ARGS)
> -{
> -       struct adapter          *adapter;
> -
> -       adapter = (struct adapter *) arg1;
> -
> -       return sysctl_handle_int(oidp, &adapter->num_queues, 0, req);
> -}
> -
>
> Modified: head/sys/dev/ixgbe/ixgbe.c
>
> ==============================================================================
> --- head/sys/dev/ixgbe/ixgbe.c  Tue Dec  2 22:35:43 2014        (r275430)
> +++ head/sys/dev/ixgbe/ixgbe.c  Tue Dec  2 23:02:57 2014        (r275431)
> @@ -103,7 +103,6 @@ static char    *ixgbe_strings[] = {
>  /*********************************************************************
>   *  Function prototypes
>   *********************************************************************/
> -static int     ixgbe_per_unit_num_queues(SYSCTL_HANDLER_ARGS);
>  static int      ixgbe_probe(device_t);
>  static int      ixgbe_attach(device_t);
>  static int      ixgbe_detach(device_t);
> @@ -476,11 +475,6 @@ ixgbe_attach(device_t dev)
>
>         SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev),
>                         SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
> -                       OID_AUTO, "num_queues", CTLTYPE_INT | CTLFLAG_RD,
> -                       adapter, 0, ixgbe_per_unit_num_queues, "I",
> "Number of Queues");
> -
> -       SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev),
> -                       SYSCTL_CHILDREN(device_get_sysctl_tree(dev)),
>                         OID_AUTO, "ts", CTLTYPE_INT | CTLFLAG_RW, adapter,
>                         0, ixgbe_set_thermal_test, "I", "Thermal Test");
>
> @@ -2522,7 +2516,6 @@ ixgbe_setup_msix(struct adapter *adapter
>  {
>         device_t dev = adapter->dev;
>         int rid, want, queues, msgs;
> -       int n_queues;
>
>         /* Override by tuneable */
>         if (ixgbe_enable_msix == 0)
> @@ -2549,34 +2542,19 @@ ixgbe_setup_msix(struct adapter *adapter
>
>         /* Figure out a reasonable auto config value */
>         queues = (mp_ncpus > (msgs-1)) ? (msgs-1) : mp_ncpus;
> +
> +       /* Override based on tuneable */
> +       if (ixgbe_num_queues != 0)
> +               queues = ixgbe_num_queues;
> +
>  #ifdef RSS
>         /* If we're doing RSS, clamp at the number of RSS buckets */
>         if (queues > rss_getnumbuckets())
>                 queues = rss_getnumbuckets();
>  #endif
>
> -       /* try more specific tunable, then global, then finally default to
> boot time tunable if set. */
> -       if (device_getenv_int(dev, "num_queues", &n_queues) != 0) {
> -               device_printf(dev, "using specific tunable numqueues=%d",
> n_queues);
> -       } else if (TUNABLE_INT_FETCH("hw.ix.num_queues", &n_queues) != 0) {
> -               if (ixgbe_num_queues != n_queues) {
> -                       device_printf(dev, "using global tunable
> num_queues=%d", n_queues);
> -                       ixgbe_num_queues = n_queues;
> -               }
> -       } else {
> -               n_queues = ixgbe_num_queues;
> -       }
> -
> -       if (n_queues < 0) {
> -               device_printf(dev, "tunable < 0, resetting to default");
> -               n_queues = 0;
> -       }
> -
> -       if (n_queues != 0)
> -               queues = n_queues;
> -       /* Set max queues to 8 when autoconfiguring */
> -       else if ((ixgbe_num_queues == 0) && (queues > 8))
> -               queues = 8;
> +       /* reflect correct sysctl value */
> +       ixgbe_num_queues = queues;
>
>         /*
>         ** Want one vector (RX/TX pair) per queue
> @@ -5964,15 +5942,6 @@ ixgbe_set_flowcntl(SYSCTL_HANDLER_ARGS)
>         return error;
>  }
>
> -static int
> -ixgbe_per_unit_num_queues(SYSCTL_HANDLER_ARGS)
> -{
> -       struct adapter          *adapter;
> -
> -       adapter = (struct adapter *) arg1;
> -
> -       return sysctl_handle_int(oidp, &adapter->num_queues, 0, req);
> -}
>
>  /*
>  ** Control link advertise speed:
>
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFOYbcktpW3OGUx3ex6_HvKUmPhn=L6VUrVRiOHDiWmzrYoCHg>