All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vlad Yasevich <vyasevich@gmail.com>
To: zyjzyj2000@gmail.com, nhorman@tuxdriver.com,
	linux-sctp@vger.kernel.org, netdev@vger.kernel.org,
	alexandre.dietsch@windriver.com,
	stefan.costandache@windriver.com
Subject: Re: [PATCH 1/1] net: sctp: dynamically enable or disable pf state
Date: Fri, 11 Dec 2015 18:28:18 +0000	[thread overview]
Message-ID: <566B15C2.3090308@gmail.com> (raw)
In-Reply-To: <1449824732-22362-1-git-send-email-zyjzyj2000@gmail.com>

On 12/11/2015 04:05 AM, zyjzyj2000@gmail.com wrote:
> From: Zhu Yanjun <zyjzyj2000@gmail.com>
> 
> As we all know, the vale of pf_retrans >= max_retrans_path can
> disable pf state. The variables of pf_retrans and max_retrans_path
> can be changed by the user space application.
> 
> Sometimes the user expects to disable pf state while the 2
> variables are changed to enable pf state. So it is necessary to
> introduce a new variable to disable pf state.
> 
> Signed-off-by: Zhu Yanjun <zyjzyj2000@gmail.com>
> ---
>  Documentation/networking/ip-sysctl.txt |   17 +++++++++++++++++
>  include/net/netns/sctp.h               |    7 +++++++
>  net/sctp/sm_sideeffect.c               |    5 ++++-
>  net/sctp/sysctl.c                      |    9 +++++++++
>  4 files changed, 37 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
> index f647900..7195c24 100644
> --- a/Documentation/networking/ip-sysctl.txt
> +++ b/Documentation/networking/ip-sysctl.txt
> @@ -1723,6 +1723,23 @@ addip_enable - BOOLEAN
>  
>  	Default: 0
>  
> +pf_enable - INTEGER
> +	Enable or disable pf state. A value of pf_retrans > path_max_retrans
> +	also disables pf state. That is, one of both pf_enable and
> +	pf_retrans > path_max_retrans can disable pf state. Since pf_retrans
> +	and path_max_retrans can be changed by userspace application, sometimes
> +	user expects to disable pf state by the value of
> +	pf_retrans > path_max_retrans, but ocassionally the value of pf_retrans
> +	or path_max_retrans is changed by the user application, this pf state is
> +	enabled. As such, it is necessary to add this to dynamically enable
> +	and disable pf state.
> +
> +	1: Enable pf.
> +
> +	0: Disable pf.
> +
> +	Default: 1

You never set the default value anywhere in the patch and thus disable PF extension by
default.

> +
>  addip_noauth_enable - BOOLEAN
>  	Dynamic Address Reconfiguration (ADD-IP) requires the use of
>  	authentication to protect the operations of adding or removing new
> diff --git a/include/net/netns/sctp.h b/include/net/netns/sctp.h
> index 8ba379f..c501d67 100644
> --- a/include/net/netns/sctp.h
> +++ b/include/net/netns/sctp.h
> @@ -89,6 +89,13 @@ struct netns_sctp {
>  	int pf_retrans;
>  
>  	/*
> +	 * Disable Potentially-Failed feature, the feature is enabled by default
> +	 * pf_enable	-  0  : disable pf
> +	 *		- >0  : enable pf
> +	 */
> +	int pf_enable;
> +
> +	/*
>  	 * Policy for preforming sctp/socket accounting
>  	 * 0   - do socket level accounting, all assocs share sk_sndbuf
>  	 * 1   - do sctp accounting, each asoc may use sk_sndbuf bytes
> diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
> index 6098d4c..50309ed 100644
> --- a/net/sctp/sm_sideeffect.c
> +++ b/net/sctp/sm_sideeffect.c
> @@ -477,6 +477,8 @@ static void sctp_do_8_2_transport_strike(sctp_cmd_seq_t *commands,
>  					 struct sctp_transport *transport,
>  					 int is_hb)
>  {
> +	struct net *net = sock_net(asoc->base.sk);
> +
>  	/* The check for association's overall error counter exceeding the
>  	 * threshold is done in the state function.
>  	 */
> @@ -503,7 +505,8 @@ static void sctp_do_8_2_transport_strike(sctp_cmd_seq_t *commands,
>  	 * is SCTP_ACTIVE, then mark this transport as Partially Failed,
>  	 * see SCTP Quick Failover Draft, section 5.1
>  	 */
> -	if ((transport->state = SCTP_ACTIVE) &&
> +	if (net->sctp.pf_enable &&
> +	   (transport->state = SCTP_ACTIVE) &&
>  	   (asoc->pf_retrans < transport->pathmaxrxt) &&
>  	   (transport->error_count > asoc->pf_retrans)) {
>  
> diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c
> index 26d50c5..0a4f402 100644
> --- a/net/sctp/sysctl.c
> +++ b/net/sctp/sysctl.c
> @@ -308,6 +308,15 @@ static struct ctl_table sctp_net_table[] = {
>  		.extra1		= &max_autoclose_min,
>  		.extra2		= &max_autoclose_max,
>  	},
> +	{
> +		.procname	= "pf_enable",
> +		.data		= &init_net.sctp.pf_enable,
> +		.maxlen		= sizeof(int),
> +		.mode		= 0644,
> +		.proc_handler	= proc_dointvec,
> +		.extra1		= &one,
> +		.extra2		= &int_max
> +	},

extra1 and extra2 above are ignored in proc_dointvec.  Don't include them.

-vlad

>  
>  	{ /* sentinel */ }
>  };
> 


WARNING: multiple messages have this Message-ID (diff)
From: Vlad Yasevich <vyasevich@gmail.com>
To: zyjzyj2000@gmail.com, nhorman@tuxdriver.com,
	linux-sctp@vger.kernel.org, netdev@vger.kernel.org,
	alexandre.dietsch@windriver.com,
	stefan.costandache@windriver.com
Subject: Re: [PATCH 1/1] net: sctp: dynamically enable or disable pf state
Date: Fri, 11 Dec 2015 13:28:18 -0500	[thread overview]
Message-ID: <566B15C2.3090308@gmail.com> (raw)
In-Reply-To: <1449824732-22362-1-git-send-email-zyjzyj2000@gmail.com>

On 12/11/2015 04:05 AM, zyjzyj2000@gmail.com wrote:
> From: Zhu Yanjun <zyjzyj2000@gmail.com>
> 
> As we all know, the vale of pf_retrans >= max_retrans_path can
> disable pf state. The variables of pf_retrans and max_retrans_path
> can be changed by the user space application.
> 
> Sometimes the user expects to disable pf state while the 2
> variables are changed to enable pf state. So it is necessary to
> introduce a new variable to disable pf state.
> 
> Signed-off-by: Zhu Yanjun <zyjzyj2000@gmail.com>
> ---
>  Documentation/networking/ip-sysctl.txt |   17 +++++++++++++++++
>  include/net/netns/sctp.h               |    7 +++++++
>  net/sctp/sm_sideeffect.c               |    5 ++++-
>  net/sctp/sysctl.c                      |    9 +++++++++
>  4 files changed, 37 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
> index f647900..7195c24 100644
> --- a/Documentation/networking/ip-sysctl.txt
> +++ b/Documentation/networking/ip-sysctl.txt
> @@ -1723,6 +1723,23 @@ addip_enable - BOOLEAN
>  
>  	Default: 0
>  
> +pf_enable - INTEGER
> +	Enable or disable pf state. A value of pf_retrans > path_max_retrans
> +	also disables pf state. That is, one of both pf_enable and
> +	pf_retrans > path_max_retrans can disable pf state. Since pf_retrans
> +	and path_max_retrans can be changed by userspace application, sometimes
> +	user expects to disable pf state by the value of
> +	pf_retrans > path_max_retrans, but ocassionally the value of pf_retrans
> +	or path_max_retrans is changed by the user application, this pf state is
> +	enabled. As such, it is necessary to add this to dynamically enable
> +	and disable pf state.
> +
> +	1: Enable pf.
> +
> +	0: Disable pf.
> +
> +	Default: 1

You never set the default value anywhere in the patch and thus disable PF extension by
default.

> +
>  addip_noauth_enable - BOOLEAN
>  	Dynamic Address Reconfiguration (ADD-IP) requires the use of
>  	authentication to protect the operations of adding or removing new
> diff --git a/include/net/netns/sctp.h b/include/net/netns/sctp.h
> index 8ba379f..c501d67 100644
> --- a/include/net/netns/sctp.h
> +++ b/include/net/netns/sctp.h
> @@ -89,6 +89,13 @@ struct netns_sctp {
>  	int pf_retrans;
>  
>  	/*
> +	 * Disable Potentially-Failed feature, the feature is enabled by default
> +	 * pf_enable	-  0  : disable pf
> +	 *		- >0  : enable pf
> +	 */
> +	int pf_enable;
> +
> +	/*
>  	 * Policy for preforming sctp/socket accounting
>  	 * 0   - do socket level accounting, all assocs share sk_sndbuf
>  	 * 1   - do sctp accounting, each asoc may use sk_sndbuf bytes
> diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
> index 6098d4c..50309ed 100644
> --- a/net/sctp/sm_sideeffect.c
> +++ b/net/sctp/sm_sideeffect.c
> @@ -477,6 +477,8 @@ static void sctp_do_8_2_transport_strike(sctp_cmd_seq_t *commands,
>  					 struct sctp_transport *transport,
>  					 int is_hb)
>  {
> +	struct net *net = sock_net(asoc->base.sk);
> +
>  	/* The check for association's overall error counter exceeding the
>  	 * threshold is done in the state function.
>  	 */
> @@ -503,7 +505,8 @@ static void sctp_do_8_2_transport_strike(sctp_cmd_seq_t *commands,
>  	 * is SCTP_ACTIVE, then mark this transport as Partially Failed,
>  	 * see SCTP Quick Failover Draft, section 5.1
>  	 */
> -	if ((transport->state == SCTP_ACTIVE) &&
> +	if (net->sctp.pf_enable &&
> +	   (transport->state == SCTP_ACTIVE) &&
>  	   (asoc->pf_retrans < transport->pathmaxrxt) &&
>  	   (transport->error_count > asoc->pf_retrans)) {
>  
> diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c
> index 26d50c5..0a4f402 100644
> --- a/net/sctp/sysctl.c
> +++ b/net/sctp/sysctl.c
> @@ -308,6 +308,15 @@ static struct ctl_table sctp_net_table[] = {
>  		.extra1		= &max_autoclose_min,
>  		.extra2		= &max_autoclose_max,
>  	},
> +	{
> +		.procname	= "pf_enable",
> +		.data		= &init_net.sctp.pf_enable,
> +		.maxlen		= sizeof(int),
> +		.mode		= 0644,
> +		.proc_handler	= proc_dointvec,
> +		.extra1		= &one,
> +		.extra2		= &int_max
> +	},

extra1 and extra2 above are ignored in proc_dointvec.  Don't include them.

-vlad

>  
>  	{ /* sentinel */ }
>  };
> 

  reply	other threads:[~2015-12-11 18:28 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-11  9:05 [PATCH 1/1] net: sctp: dynamically enable or disable pf state zyjzyj2000
2015-12-11  9:05 ` zyjzyj2000
2015-12-11 18:28 ` Vlad Yasevich [this message]
2015-12-11 18:28   ` Vlad Yasevich
2015-12-14  9:53 ` David Laight
  -- strict thread matches above, loose matches on Subject: below --
2015-12-14 14:23 [V2 PATCH " Vlad Yasevich
2015-12-16  5:39 ` [V3 " zyjzyj2000
2015-12-16  5:39   ` [PATCH " zyjzyj2000
2015-12-16  5:39     ` zyjzyj2000
2015-12-16  5:55 ` [V4 PATCH " zyjzyj2000
2015-12-16  5:55   ` [PATCH " zyjzyj2000
2015-12-16  5:55     ` zyjzyj2000
2015-12-16 11:18     ` Marcelo Ricardo Leitner
2015-12-16 11:18       ` Marcelo Ricardo Leitner
2015-12-16 15:57     ` David Miller
2015-12-16 15:57       ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=566B15C2.3090308@gmail.com \
    --to=vyasevich@gmail.com \
    --cc=alexandre.dietsch@windriver.com \
    --cc=linux-sctp@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=nhorman@tuxdriver.com \
    --cc=stefan.costandache@windriver.com \
    --cc=zyjzyj2000@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.