diff mbox

[net] xen-netback: respect user provided max_queues

Message ID 1441793395-25537-1-git-send-email-wei.liu2@citrix.com
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

Wei Liu Sept. 9, 2015, 10:09 a.m. UTC
Originally that parameter was always reset to num_online_cpus during
module initialisation, which renders it useless.

The fix is to only set max_queues to num_online_cpus when user has not
provided a value.

Reported-by: Johnny Strom <johnny.strom@linuxsolutions.fi>
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Cc: Ian Campbell <ian.campbell@citrix.com>
---
Cc: Johnny Strom <johnny.strom@linuxsolutions.fi>
Cc: David Vrabel <david.vrabel@citrix.com>
---
 drivers/net/xen-netback/netback.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Comments

David Vrabel Sept. 9, 2015, 10:12 a.m. UTC | #1
On 09/09/15 11:09, Wei Liu wrote:
> Originally that parameter was always reset to num_online_cpus during
> module initialisation, which renders it useless.
> 
> The fix is to only set max_queues to num_online_cpus when user has not
> provided a value.
[...]
> --- a/drivers/net/xen-netback/netback.c
> +++ b/drivers/net/xen-netback/netback.c
> @@ -67,7 +67,7 @@ module_param(rx_drain_timeout_msecs, uint, 0444);
>  unsigned int rx_stall_timeout_msecs = 60000;
>  module_param(rx_stall_timeout_msecs, uint, 0444);
>  
> -unsigned int xenvif_max_queues;
> +unsigned int xenvif_max_queues = 0;

You don't need this.

Otherwise,

Reviewed-by: David Vrabel <david.vrabel@citrix.com>

Is an equivalent fix needed in netfront?

David

>  module_param_named(max_queues, xenvif_max_queues, uint, 0644);
>  MODULE_PARM_DESC(max_queues,
>  		 "Maximum number of queues per virtual interface");
> @@ -2105,8 +2105,11 @@ static int __init netback_init(void)
>  	if (!xen_domain())
>  		return -ENODEV;
>  
> -	/* Allow as many queues as there are CPUs, by default */
> -	xenvif_max_queues = num_online_cpus();
> +	/* Allow as many queues as there are CPUs if user has not
> +	 * specified a value.
> +	 */
> +	if (xenvif_max_queues == 0)
> +		xenvif_max_queues = num_online_cpus();
>  
>  	if (fatal_skb_slots < XEN_NETBK_LEGACY_SLOTS_MAX) {
>  		pr_info("fatal_skb_slots too small (%d), bump it to XEN_NETBK_LEGACY_SLOTS_MAX (%d)\n",
> 

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Wei Liu Sept. 9, 2015, 10:16 a.m. UTC | #2
On Wed, Sep 09, 2015 at 11:12:44AM +0100, David Vrabel wrote:
> On 09/09/15 11:09, Wei Liu wrote:
> > Originally that parameter was always reset to num_online_cpus during
> > module initialisation, which renders it useless.
> > 
> > The fix is to only set max_queues to num_online_cpus when user has not
> > provided a value.
> [...]
> > --- a/drivers/net/xen-netback/netback.c
> > +++ b/drivers/net/xen-netback/netback.c
> > @@ -67,7 +67,7 @@ module_param(rx_drain_timeout_msecs, uint, 0444);
> >  unsigned int rx_stall_timeout_msecs = 60000;
> >  module_param(rx_stall_timeout_msecs, uint, 0444);
> >  
> > -unsigned int xenvif_max_queues;
> > +unsigned int xenvif_max_queues = 0;
> 
> You don't need this.
> 
> Otherwise,
> 
> Reviewed-by: David Vrabel <david.vrabel@citrix.com>
> 
> Is an equivalent fix needed in netfront?
> 

I think so.

I will address your comment and send both fixes (front and back) in a
series.

Wei.

> David
> 
> >  module_param_named(max_queues, xenvif_max_queues, uint, 0644);
> >  MODULE_PARM_DESC(max_queues,
> >  		 "Maximum number of queues per virtual interface");
> > @@ -2105,8 +2105,11 @@ static int __init netback_init(void)
> >  	if (!xen_domain())
> >  		return -ENODEV;
> >  
> > -	/* Allow as many queues as there are CPUs, by default */
> > -	xenvif_max_queues = num_online_cpus();
> > +	/* Allow as many queues as there are CPUs if user has not
> > +	 * specified a value.
> > +	 */
> > +	if (xenvif_max_queues == 0)
> > +		xenvif_max_queues = num_online_cpus();
> >  
> >  	if (fatal_skb_slots < XEN_NETBK_LEGACY_SLOTS_MAX) {
> >  		pr_info("fatal_skb_slots too small (%d), bump it to XEN_NETBK_LEGACY_SLOTS_MAX (%d)\n",
> > 
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ian Campbell Sept. 9, 2015, 10:29 a.m. UTC | #3
On Wed, 2015-09-09 at 11:16 +0100, Wei Liu wrote:
> On Wed, Sep 09, 2015 at 11:12:44AM +0100, David Vrabel wrote:
> > On 09/09/15 11:09, Wei Liu wrote:
> > > Originally that parameter was always reset to num_online_cpus during
> > > module initialisation, which renders it useless.
> > > 
> > > The fix is to only set max_queues to num_online_cpus when user has
> > > not
> > > provided a value.
> > [...]
> > > --- a/drivers/net/xen-netback/netback.c
> > > +++ b/drivers/net/xen-netback/netback.c
> > > @@ -67,7 +67,7 @@ module_param(rx_drain_timeout_msecs, uint, 0444);
> > >  unsigned int rx_stall_timeout_msecs = 60000;
> > >  module_param(rx_stall_timeout_msecs, uint, 0444);
> > >  
> > > -unsigned int xenvif_max_queues;
> > > +unsigned int xenvif_max_queues = 0;
> > 
> > You don't need this.
> > 
> > Otherwise,
> > 
> > Reviewed-by: David Vrabel <david.vrabel@citrix.com>
> > 
> > Is an equivalent fix needed in netfront?
> > 
> 
> I think so.
> 
> I will address your comment

With that: Acked-by: Ian Campbell <ian.campbell@citrix.com>



>  and send both fixes (front and back) in a
> series.
> 
> Wei.
> 
> > David
> > 
> > >  module_param_named(max_queues, xenvif_max_queues, uint, 0644);
> > >  MODULE_PARM_DESC(max_queues,
> > >  		 "Maximum number of queues per virtual interface");
> > > @@ -2105,8 +2105,11 @@ static int __init netback_init(void)
> > >  	if (!xen_domain())
> > >  		return -ENODEV;
> > >  
> > > -	/* Allow as many queues as there are CPUs, by default */
> > > -	xenvif_max_queues = num_online_cpus();
> > > +	/* Allow as many queues as there are CPUs if user has not
> > > +	 * specified a value.
> > > +	 */
> > > +	if (xenvif_max_queues == 0)
> > > +		xenvif_max_queues = num_online_cpus();
> > >  
> > >  	if (fatal_skb_slots < XEN_NETBK_LEGACY_SLOTS_MAX) {
> > >  		pr_info("fatal_skb_slots too small (%d), bump it to
> > > XEN_NETBK_LEGACY_SLOTS_MAX (%d)\n",
> > > 
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c
index 42569b9..b219a80 100644
--- a/drivers/net/xen-netback/netback.c
+++ b/drivers/net/xen-netback/netback.c
@@ -67,7 +67,7 @@  module_param(rx_drain_timeout_msecs, uint, 0444);
 unsigned int rx_stall_timeout_msecs = 60000;
 module_param(rx_stall_timeout_msecs, uint, 0444);
 
-unsigned int xenvif_max_queues;
+unsigned int xenvif_max_queues = 0;
 module_param_named(max_queues, xenvif_max_queues, uint, 0644);
 MODULE_PARM_DESC(max_queues,
 		 "Maximum number of queues per virtual interface");
@@ -2105,8 +2105,11 @@  static int __init netback_init(void)
 	if (!xen_domain())
 		return -ENODEV;
 
-	/* Allow as many queues as there are CPUs, by default */
-	xenvif_max_queues = num_online_cpus();
+	/* Allow as many queues as there are CPUs if user has not
+	 * specified a value.
+	 */
+	if (xenvif_max_queues == 0)
+		xenvif_max_queues = num_online_cpus();
 
 	if (fatal_skb_slots < XEN_NETBK_LEGACY_SLOTS_MAX) {
 		pr_info("fatal_skb_slots too small (%d), bump it to XEN_NETBK_LEGACY_SLOTS_MAX (%d)\n",