* Re: [PATCH v2 net-next] tcp: fix ABC in tcp_slow_start()
From: Neal Cardwell @ 2012-07-20 16:50 UTC (permalink / raw)
To: Eric Dumazet
Cc: Yuchung Cheng, David Miller, netdev, Tom Herbert,
Stephen Hemminger, John Heffner, Nandita Dukkipati
In-Reply-To: <1342800536.2626.7670.camel@edumazet-glaptop>
On Fri, Jul 20, 2012 at 9:08 AM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> So to address your point, maybe we should clear snd_cwnd_cnt
> when leaving slow start for congestion avoidance phase ?
Sounds good. That can be a separate commit to add the new logic to the
end of tcp_slow_start() to check to see if we've bumped into ssthresh
and reset snd_cwnd_cnt.
neal
^ permalink raw reply
* Re: [PATCH] sunrpc: clnt: Add missing braces
From: Joe Perches @ 2012-07-20 16:50 UTC (permalink / raw)
To: David S. Miller
Cc: Trond Myklebust, J. Bruce Fields, Chuck Lever,
linux-nfs-u79uwXL29TY76Z2rM5mHXA, netdev-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <1342635431.9551.41.camel@joe2Laptop>
On Wed, 2012-07-18 at 11:17 -0700, Joe Perches wrote:
> Add a missing set of braces that commit 4e0038b6b24
> ("SUNRPC: Move clnt->cl_server into struct rpc_xprt")
> forgot.
>
> Signed-off-by: Joe Perches <joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>
> ---
> net/sunrpc/clnt.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
> index f56f045..aaf70aa 100644
> --- a/net/sunrpc/clnt.c
> +++ b/net/sunrpc/clnt.c
> @@ -1844,12 +1844,13 @@ call_timeout(struct rpc_task *task)
> return;
> }
> if (RPC_IS_SOFT(task)) {
> - if (clnt->cl_chatty)
> + if (clnt->cl_chatty) {
> rcu_read_lock();
> printk(KERN_NOTICE "%s: server %s not responding, timed out\n",
> clnt->cl_protname,
> rcu_dereference(clnt->cl_xprt)->servername);
> rcu_read_unlock();
> + }
> if (task->tk_flags & RPC_TASK_TIMEOUT)
> rpc_exit(task, -ETIMEDOUT);
> else
Hi David.
I think it'd be good to get this into 3.6 as a bug fix.
This is marked in netdev patchwork as "not applicable".
Do you need the sunrpc maintainers to apply or ack it
and then push it to you?
Trond? Bruce?
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* Re: [PATCH v3] sctp: Implement quick failover draft from tsvwg
From: Flavio Leitner @ 2012-07-20 16:51 UTC (permalink / raw)
To: Neil Horman
Cc: netdev, Vlad Yasevich, Sridhar Samudrala, David S. Miller,
linux-sctp, joe
In-Reply-To: <1342716704-6532-1-git-send-email-nhorman@tuxdriver.com>
On Thu, 19 Jul 2012 12:51:44 -0400
Neil Horman <nhorman@tuxdriver.com> wrote:
[...]
>
> +pf_retrans - INTEGER
> + The number of retransmissions that will be attempted on a given path
> + before traffic is redirected to an alternate transport (should one
> + exist). Note this is distinct from path_max_retrans, as a path that
> + passes the pf_retrans threshold can still be used. Its only
> + deprioritized when a transmission path is selected by the stack. This
> + setting is primarily used to enable fast failover mechanisms without
> + having to reduce path_max_retrans to a very low value. See:
> + http://www.ietf.org/id/draft-nishida-tsvwg-sctp-failover-05.txt
> + for details. Note also that a value of pf_retrans > path_max_retrans
> + disables this feature
> +
> + Default: 0
> +
> rto_initial - INTEGER
[...]
> diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
> index e4652fe..f70726c 100644
> --- a/include/net/sctp/structs.h
> +++ b/include/net/sctp/structs.h
> @@ -160,6 +160,7 @@ extern struct sctp_globals {
> int max_retrans_association;
> int max_retrans_path;
> int max_retrans_init;
> + int pf_retrans;
[...]
>
> + /* This is the partially failed retrans value for the transport
> + * and will be initialized from the assocs value. This can be changed
> + * using the SCTP_PEER_ADDR_THLDS socket option
> + */
> + int pf_retrans;
> /* PMTU : The current known path MTU. */
> __u32 pathmtu;
>
> @@ -1660,6 +1667,8 @@ struct sctp_association {
> */
> int max_retrans;
>
> + int pf_retrans;
> +
You've documented in one place, but not in the others. I suggest to include
references like this
/* See the description in struct sctp_transport */
at the two missing places.
Nice feature,
fbl
^ permalink raw reply
* [PATCH v4] sctp: Implement quick failover draft from tsvwg
From: Neil Horman @ 2012-07-20 17:19 UTC (permalink / raw)
To: netdev
Cc: Neil Horman, Vlad Yasevich, Sridhar Samudrala, David S. Miller,
linux-sctp, joe
In-Reply-To: <1342203998-24037-1-git-send-email-nhorman@tuxdriver.com>
I've seen several attempts recently made to do quick failover of sctp transports
by reducing various retransmit timers and counters. While its possible to
implement a faster failover on multihomed sctp associations, its not
particularly robust, in that it can lead to unneeded retransmits, as well as
false connection failures due to intermittent latency on a network.
Instead, lets implement the new ietf quick failover draft found here:
http://tools.ietf.org/html/draft-nishida-tsvwg-sctp-failover-05
This will let the sctp stack identify transports that have had a small number of
errors, and avoid using them quickly until their reliability can be
re-established. I've tested this out on two virt guests connected via multiple
isolated virt networks and believe its in compliance with the above draft and
works well.
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
CC: Vlad Yasevich <vyasevich@gmail.com>
CC: Sridhar Samudrala <sri@us.ibm.com>
CC: "David S. Miller" <davem@davemloft.net>
CC: linux-sctp@vger.kernel.org
CC: joe@perches.com
---
Change notes:
V2)
- Added socket option API from section 6.1 of the specification, as per
request from Vlad. Adding this socket option allows us to alter both the path
maximum retransmit value and the path partial failure threshold for each
transport and the association as a whole.
- Added a per transport pf_retrans value, and initialized it from the
association value. This makes each transport independently configurable as per
the socket option above, and prevents changes in the sysctl from bleeding into
an already created association.
V3)
- Cleaned up some line spacing (Joe Perches)
- Fixed some socket option user data sanitization (Vlad Yasevich)
V4)
- Added additional documentation (Flavio Leitner)
---
Documentation/networking/ip-sysctl.txt | 14 +++++
include/net/sctp/constants.h | 1 +
include/net/sctp/structs.h | 20 ++++++-
include/net/sctp/user.h | 11 ++++
net/sctp/associola.c | 37 ++++++++++--
net/sctp/outqueue.c | 6 +-
net/sctp/sm_sideeffect.c | 33 +++++++++-
net/sctp/socket.c | 100 ++++++++++++++++++++++++++++++++
net/sctp/sysctl.c | 9 +++
net/sctp/transport.c | 4 +-
10 files changed, 220 insertions(+), 15 deletions(-)
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index 47b6c79..c636f9c 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -1408,6 +1408,20 @@ path_max_retrans - INTEGER
Default: 5
+pf_retrans - INTEGER
+ The number of retransmissions that will be attempted on a given path
+ before traffic is redirected to an alternate transport (should one
+ exist). Note this is distinct from path_max_retrans, as a path that
+ passes the pf_retrans threshold can still be used. Its only
+ deprioritized when a transmission path is selected by the stack. This
+ setting is primarily used to enable fast failover mechanisms without
+ having to reduce path_max_retrans to a very low value. See:
+ http://www.ietf.org/id/draft-nishida-tsvwg-sctp-failover-05.txt
+ for details. Note also that a value of pf_retrans > path_max_retrans
+ disables this feature
+
+ Default: 0
+
rto_initial - INTEGER
The initial round trip timeout value in milliseconds that will be used
in calculating round trip times. This is the initial time interval
diff --git a/include/net/sctp/constants.h b/include/net/sctp/constants.h
index 942b864..d053d2e 100644
--- a/include/net/sctp/constants.h
+++ b/include/net/sctp/constants.h
@@ -334,6 +334,7 @@ typedef enum {
typedef enum {
SCTP_TRANSPORT_UP,
SCTP_TRANSPORT_DOWN,
+ SCTP_TRANSPORT_PF,
} sctp_transport_cmd_t;
/* These are the address scopes defined mainly for IPv4 addresses
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
index e4652fe..cee0678 100644
--- a/include/net/sctp/structs.h
+++ b/include/net/sctp/structs.h
@@ -161,6 +161,12 @@ extern struct sctp_globals {
int max_retrans_path;
int max_retrans_init;
+ /* Potentially-Failed.Max.Retrans sysctl value
+ * taken from:
+ * http://tools.ietf.org/html/draft-nishida-tsvwg-sctp-failover-05
+ */
+ int pf_retrans;
+
/*
* Policy for preforming sctp/socket accounting
* 0 - do socket level accounting, all assocs share sk_sndbuf
@@ -258,6 +264,7 @@ extern struct sctp_globals {
#define sctp_sndbuf_policy (sctp_globals.sndbuf_policy)
#define sctp_rcvbuf_policy (sctp_globals.rcvbuf_policy)
#define sctp_max_retrans_path (sctp_globals.max_retrans_path)
+#define sctp_pf_retrans (sctp_globals.pf_retrans)
#define sctp_max_retrans_init (sctp_globals.max_retrans_init)
#define sctp_sack_timeout (sctp_globals.sack_timeout)
#define sctp_hb_interval (sctp_globals.hb_interval)
@@ -987,10 +994,15 @@ struct sctp_transport {
/* This is the max_retrans value for the transport and will
* be initialized from the assocs value. This can be changed
- * using SCTP_SET_PEER_ADDR_PARAMS socket option.
+ * using the SCTP_SET_PEER_ADDR_PARAMS socket option.
*/
__u16 pathmaxrxt;
+ /* This is the partially failed retrans value for the transport
+ * and will be initialized from the assocs value. This can be changed
+ * using the SCTP_PEER_ADDR_THLDS socket option
+ */
+ int pf_retrans;
/* PMTU : The current known path MTU. */
__u32 pathmtu;
@@ -1660,6 +1672,12 @@ struct sctp_association {
*/
int max_retrans;
+ /* This is the partially failed retrans value for the transport
+ * and will be initialized from the assocs value. This can be
+ * changed using the SCTP_PEER_ADDR_THLDS socket option
+ */
+ int pf_retrans;
+
/* Maximum number of times the endpoint will retransmit INIT */
__u16 max_init_attempts;
diff --git a/include/net/sctp/user.h b/include/net/sctp/user.h
index 0842ef0..1b02d7a 100644
--- a/include/net/sctp/user.h
+++ b/include/net/sctp/user.h
@@ -93,6 +93,7 @@ typedef __s32 sctp_assoc_t;
#define SCTP_GET_ASSOC_NUMBER 28 /* Read only */
#define SCTP_GET_ASSOC_ID_LIST 29 /* Read only */
#define SCTP_AUTO_ASCONF 30
+#define SCTP_PEER_ADDR_THLDS 31
/* Internal Socket Options. Some of the sctp library functions are
* implemented using these socket options.
@@ -649,6 +650,7 @@ struct sctp_paddrinfo {
*/
enum sctp_spinfo_state {
SCTP_INACTIVE,
+ SCTP_PF,
SCTP_ACTIVE,
SCTP_UNCONFIRMED,
SCTP_UNKNOWN = 0xffff /* Value used for transport state unknown */
@@ -741,4 +743,13 @@ typedef struct {
int sd;
} sctp_peeloff_arg_t;
+/*
+ * Peer Address Thresholds socket option
+ */
+struct sctp_paddrthlds {
+ sctp_assoc_t spt_assoc_id;
+ struct sockaddr_storage spt_address;
+ __u16 spt_pathmaxrxt;
+ __u16 spt_pathpfthld;
+};
#endif /* __net_sctp_user_h__ */
diff --git a/net/sctp/associola.c b/net/sctp/associola.c
index 5bc9ab1..90fe36b 100644
--- a/net/sctp/associola.c
+++ b/net/sctp/associola.c
@@ -124,6 +124,8 @@ static struct sctp_association *sctp_association_init(struct sctp_association *a
* socket values.
*/
asoc->max_retrans = sp->assocparams.sasoc_asocmaxrxt;
+ asoc->pf_retrans = sctp_pf_retrans;
+
asoc->rto_initial = msecs_to_jiffies(sp->rtoinfo.srto_initial);
asoc->rto_max = msecs_to_jiffies(sp->rtoinfo.srto_max);
asoc->rto_min = msecs_to_jiffies(sp->rtoinfo.srto_min);
@@ -685,6 +687,9 @@ struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc,
/* Set the path max_retrans. */
peer->pathmaxrxt = asoc->pathmaxrxt;
+ /* And the partial failure retrnas threshold */
+ peer->pf_retrans = asoc->pf_retrans;
+
/* Initialize the peer's SACK delay timeout based on the
* association configured value.
*/
@@ -840,6 +845,7 @@ void sctp_assoc_control_transport(struct sctp_association *asoc,
struct sctp_ulpevent *event;
struct sockaddr_storage addr;
int spc_state = 0;
+ bool ulp_notify = true;
/* Record the transition on the transport. */
switch (command) {
@@ -853,6 +859,14 @@ void sctp_assoc_control_transport(struct sctp_association *asoc,
spc_state = SCTP_ADDR_CONFIRMED;
else
spc_state = SCTP_ADDR_AVAILABLE;
+ /* Don't inform ULP about transition from PF to
+ * active state and set cwnd to 1, see SCTP
+ * Quick failover draft section 5.1, point 5
+ */
+ if (transport->state == SCTP_PF) {
+ ulp_notify = false;
+ transport->cwnd = 1;
+ }
transport->state = SCTP_ACTIVE;
break;
@@ -871,6 +885,11 @@ void sctp_assoc_control_transport(struct sctp_association *asoc,
spc_state = SCTP_ADDR_UNREACHABLE;
break;
+ case SCTP_TRANSPORT_PF:
+ transport->state = SCTP_PF;
+ ulp_notify = false;
+ break;
+
default:
return;
}
@@ -878,12 +897,15 @@ void sctp_assoc_control_transport(struct sctp_association *asoc,
/* Generate and send a SCTP_PEER_ADDR_CHANGE notification to the
* user.
*/
- memset(&addr, 0, sizeof(struct sockaddr_storage));
- memcpy(&addr, &transport->ipaddr, transport->af_specific->sockaddr_len);
- event = sctp_ulpevent_make_peer_addr_change(asoc, &addr,
- 0, spc_state, error, GFP_ATOMIC);
- if (event)
- sctp_ulpq_tail_event(&asoc->ulpq, event);
+ if (ulp_notify) {
+ memset(&addr, 0, sizeof(struct sockaddr_storage));
+ memcpy(&addr, &transport->ipaddr,
+ transport->af_specific->sockaddr_len);
+ event = sctp_ulpevent_make_peer_addr_change(asoc, &addr,
+ 0, spc_state, error, GFP_ATOMIC);
+ if (event)
+ sctp_ulpq_tail_event(&asoc->ulpq, event);
+ }
/* Select new active and retran paths. */
@@ -899,7 +921,8 @@ void sctp_assoc_control_transport(struct sctp_association *asoc,
transports) {
if ((t->state == SCTP_INACTIVE) ||
- (t->state == SCTP_UNCONFIRMED))
+ (t->state == SCTP_UNCONFIRMED) ||
+ (t->state == SCTP_PF))
continue;
if (!first || t->last_time_heard > first->last_time_heard) {
second = first;
diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c
index a0fa19f..e7aa177c 100644
--- a/net/sctp/outqueue.c
+++ b/net/sctp/outqueue.c
@@ -792,7 +792,8 @@ static int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout)
if (!new_transport)
new_transport = asoc->peer.active_path;
} else if ((new_transport->state == SCTP_INACTIVE) ||
- (new_transport->state == SCTP_UNCONFIRMED)) {
+ (new_transport->state == SCTP_UNCONFIRMED) ||
+ (new_transport->state == SCTP_PF)) {
/* If the chunk is Heartbeat or Heartbeat Ack,
* send it to chunk->transport, even if it's
* inactive.
@@ -987,7 +988,8 @@ static int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout)
new_transport = chunk->transport;
if (!new_transport ||
((new_transport->state == SCTP_INACTIVE) ||
- (new_transport->state == SCTP_UNCONFIRMED)))
+ (new_transport->state == SCTP_UNCONFIRMED) ||
+ (new_transport->state == SCTP_PF)))
new_transport = asoc->peer.active_path;
if (new_transport->state == SCTP_UNCONFIRMED)
continue;
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
index c96d1a8..285e26a 100644
--- a/net/sctp/sm_sideeffect.c
+++ b/net/sctp/sm_sideeffect.c
@@ -76,6 +76,8 @@ static int sctp_side_effects(sctp_event_t event_type, sctp_subtype_t subtype,
sctp_cmd_seq_t *commands,
gfp_t gfp);
+static void sctp_cmd_hb_timer_update(sctp_cmd_seq_t *cmds,
+ struct sctp_transport *t);
/********************************************************************
* Helper functions
********************************************************************/
@@ -470,7 +472,8 @@ sctp_timer_event_t *sctp_timer_events[SCTP_NUM_TIMEOUT_TYPES] = {
* notification SHOULD be sent to the upper layer.
*
*/
-static void sctp_do_8_2_transport_strike(struct sctp_association *asoc,
+static void sctp_do_8_2_transport_strike(sctp_cmd_seq_t *commands,
+ struct sctp_association *asoc,
struct sctp_transport *transport,
int is_hb)
{
@@ -495,6 +498,23 @@ static void sctp_do_8_2_transport_strike(struct sctp_association *asoc,
transport->error_count++;
}
+ /* If the transport error count is greater than the pf_retrans
+ * threshold, and less than pathmaxrtx, then mark this transport
+ * as Partially Failed, ee SCTP Quick Failover Draft, secon 5.1,
+ * point 1
+ */
+ if ((transport->state != SCTP_PF) &&
+ (asoc->pf_retrans < transport->pathmaxrxt) &&
+ (transport->error_count > asoc->pf_retrans)) {
+
+ sctp_assoc_control_transport(asoc, transport,
+ SCTP_TRANSPORT_PF,
+ 0);
+
+ /* Update the hb timer to resend a heartbeat every rto */
+ sctp_cmd_hb_timer_update(commands, transport);
+ }
+
if (transport->state != SCTP_INACTIVE &&
(transport->error_count > transport->pathmaxrxt)) {
SCTP_DEBUG_PRINTK_IPADDR("transport_strike:association %p",
@@ -699,6 +719,10 @@ static void sctp_cmd_transport_on(sctp_cmd_seq_t *cmds,
SCTP_HEARTBEAT_SUCCESS);
}
+ if (t->state == SCTP_PF)
+ sctp_assoc_control_transport(asoc, t, SCTP_TRANSPORT_UP,
+ SCTP_HEARTBEAT_SUCCESS);
+
/* The receiver of the HEARTBEAT ACK should also perform an
* RTT measurement for that destination transport address
* using the time value carried in the HEARTBEAT ACK chunk.
@@ -1565,8 +1589,8 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
case SCTP_CMD_STRIKE:
/* Mark one strike against a transport. */
- sctp_do_8_2_transport_strike(asoc, cmd->obj.transport,
- 0);
+ sctp_do_8_2_transport_strike(commands, asoc,
+ cmd->obj.transport, 0);
break;
case SCTP_CMD_TRANSPORT_IDLE:
@@ -1576,7 +1600,8 @@ static int sctp_cmd_interpreter(sctp_event_t event_type,
case SCTP_CMD_TRANSPORT_HB_SENT:
t = cmd->obj.transport;
- sctp_do_8_2_transport_strike(asoc, t, 1);
+ sctp_do_8_2_transport_strike(commands, asoc,
+ t, 1);
t->hb_sent = 1;
break;
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index b3b8a8d..fef9bfa 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -3470,6 +3470,56 @@ static int sctp_setsockopt_auto_asconf(struct sock *sk, char __user *optval,
}
+/*
+ * SCTP_PEER_ADDR_THLDS
+ *
+ * This option allows us to alter the partially failed threshold for one or all
+ * transports in an association. See Section 6.1 of:
+ * http://www.ietf.org/id/draft-nishida-tsvwg-sctp-failover-05.txt
+ */
+static int sctp_setsockopt_paddr_thresholds(struct sock *sk,
+ char __user *optval,
+ unsigned int optlen)
+{
+ struct sctp_paddrthlds val;
+ struct sctp_transport *trans;
+ struct sctp_association *asoc;
+
+ if (optlen < sizeof(struct sctp_paddrthlds))
+ return -EINVAL;
+ if (copy_from_user(&val, (struct sctp_paddrthlds __user *)optval,
+ sizeof(struct sctp_paddrthlds)))
+ return -EFAULT;
+
+ /* path_max_retrans shouldn't ever be zero */
+ if (!val.spt_pathmaxrxt)
+ return -EINVAL;
+
+ if (sctp_is_any(sk, (const union sctp_addr *)&val.spt_address)) {
+ asoc = sctp_id2assoc(sk, val.spt_assoc_id);
+ if (!asoc)
+ return -ENOENT;
+ list_for_each_entry(trans, &asoc->peer.transport_addr_list,
+ transports) {
+ trans->pathmaxrxt = val.spt_pathmaxrxt;
+ trans->pf_retrans = val.spt_pathpfthld;
+ }
+
+ asoc->pf_retrans = val.spt_pathpfthld;
+ asoc->pathmaxrxt = val.spt_pathmaxrxt;
+ } else {
+ trans = sctp_addr_id2transport(sk, &val.spt_address,
+ val.spt_assoc_id);
+ if (!trans)
+ return -ENOENT;
+
+ trans->pathmaxrxt = val.spt_pathmaxrxt;
+ trans->pf_retrans = val.spt_pathpfthld;
+ }
+
+ return 0;
+}
+
/* API 6.2 setsockopt(), getsockopt()
*
* Applications use setsockopt() and getsockopt() to set or retrieve
@@ -3619,6 +3669,9 @@ SCTP_STATIC int sctp_setsockopt(struct sock *sk, int level, int optname,
case SCTP_AUTO_ASCONF:
retval = sctp_setsockopt_auto_asconf(sk, optval, optlen);
break;
+ case SCTP_PEER_ADDR_THLDS:
+ retval = sctp_setsockopt_paddr_thresholds(sk, optval, optlen);
+ break;
default:
retval = -ENOPROTOOPT;
break;
@@ -5490,6 +5543,50 @@ static int sctp_getsockopt_assoc_ids(struct sock *sk, int len,
return 0;
}
+/*
+ * SCTP_PEER_ADDR_THLDS
+ *
+ * This option allows us to fetch the partially failed threshold for one or all
+ * transports in an association. See Section 6.1 of:
+ * http://www.ietf.org/id/draft-nishida-tsvwg-sctp-failover-05.txt
+ */
+static int sctp_getsockopt_paddr_thresholds(struct sock *sk,
+ char __user *optval,
+ int optlen)
+{
+ struct sctp_paddrthlds val;
+ struct sctp_transport *trans;
+ struct sctp_association *asoc;
+
+ if (optlen < sizeof(struct sctp_paddrthlds))
+ return -EINVAL;
+ optlen = sizeof(struct sctp_paddrthlds);
+ if (copy_from_user(&val, (struct sctp_paddrthlds __user *)optval, optlen))
+ return -EFAULT;
+
+ if (sctp_is_any(sk, (const union sctp_addr *)&val.spt_address)) {
+ asoc = sctp_id2assoc(sk, val.spt_assoc_id);
+ if (!asoc)
+ return -ENOENT;
+
+ val.spt_pathpfthld = asoc->pf_retrans;
+ val.spt_pathmaxrxt = asoc->pathmaxrxt;
+ } else {
+ trans = sctp_addr_id2transport(sk, &val.spt_address,
+ val.spt_assoc_id);
+ if (!trans)
+ return -ENOENT;
+
+ val.spt_pathmaxrxt = trans->pathmaxrxt;
+ val.spt_pathpfthld = trans->pf_retrans;
+ }
+
+ if (copy_to_user(optval, &val, optlen))
+ return -EFAULT;
+
+ return 0;
+}
+
SCTP_STATIC int sctp_getsockopt(struct sock *sk, int level, int optname,
char __user *optval, int __user *optlen)
{
@@ -5628,6 +5725,9 @@ SCTP_STATIC int sctp_getsockopt(struct sock *sk, int level, int optname,
case SCTP_AUTO_ASCONF:
retval = sctp_getsockopt_auto_asconf(sk, len, optval, optlen);
break;
+ case SCTP_PEER_ADDR_THLDS:
+ retval = sctp_getsockopt_paddr_thresholds(sk, optval, len);
+ break;
default:
retval = -ENOPROTOOPT;
break;
diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c
index e5fe639..2b2bfe9 100644
--- a/net/sctp/sysctl.c
+++ b/net/sctp/sysctl.c
@@ -141,6 +141,15 @@ static ctl_table sctp_table[] = {
.extra2 = &int_max
},
{
+ .procname = "pf_retrans",
+ .data = &sctp_pf_retrans,
+ .maxlen = sizeof(int),
+ .mode = 0644,
+ .proc_handler = proc_dointvec_minmax,
+ .extra1 = &zero,
+ .extra2 = &int_max
+ },
+ {
.procname = "max_init_retransmits",
.data = &sctp_max_retrans_init,
.maxlen = sizeof(int),
diff --git a/net/sctp/transport.c b/net/sctp/transport.c
index b026ba0..194d0f3 100644
--- a/net/sctp/transport.c
+++ b/net/sctp/transport.c
@@ -85,6 +85,7 @@ static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer,
/* Initialize the default path max_retrans. */
peer->pathmaxrxt = sctp_max_retrans_path;
+ peer->pf_retrans = sctp_pf_retrans;
INIT_LIST_HEAD(&peer->transmitted);
INIT_LIST_HEAD(&peer->send_ready);
@@ -585,7 +586,8 @@ unsigned long sctp_transport_timeout(struct sctp_transport *t)
{
unsigned long timeout;
timeout = t->rto + sctp_jitter(t->rto);
- if (t->state != SCTP_UNCONFIRMED)
+ if ((t->state != SCTP_UNCONFIRMED) &&
+ (t->state != SCTP_PF))
timeout += t->hbinterval;
timeout += jiffies;
return timeout;
--
1.7.7.6
^ permalink raw reply related
* Re: [PATCH 00/16]: Kill the ipv4 routing cache.
From: Ben Hutchings @ 2012-07-20 17:22 UTC (permalink / raw)
To: David Miller; +Cc: netdev
In-Reply-To: <20120720.092614.1285553995467252576.davem@davemloft.net>
On Fri, 2012-07-20 at 09:26 -0700, David Miller wrote:
> From: Ben Hutchings <bhutchings@solarflare.com>
> Date: Fri, 20 Jul 2012 16:09:29 +0100
>
> > On Thu, 2012-07-19 at 14:34 -0700, David Miller wrote:
> >> The ipv4 routing cache is non-deterministic, performance wise, and is
> >> subject to reasonably easy to launch denial of service attacks.
> > [...]
> >
> > This is a great explanation, but it still doesn't appear to be going
> > into the commit log...
>
> What in the world do you mean?
>
> When I actually commit this stuff, I'll have it all in a branch and
> merge it into net-next's master using "git merge --no-ff" and then use
> the merge commit to add this commit message test.
>
> Every damn set of changes I've commited over the past few weeks have
> used this technique, are you simply not paying attention?
Sorry, I get it now.
Ben.
--
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply
* Re: [PATCH] sunrpc: clnt: Add missing braces
From: Myklebust, Trond @ 2012-07-20 17:25 UTC (permalink / raw)
To: Joe Perches
Cc: David S. Miller, Myklebust, Trond, J. Bruce Fields, Chuck Lever,
<linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
<netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
In-Reply-To: <1342803059.21447.45.camel@joe2Laptop>
No. It should go through the NFS client tree.
I can queue it up.
--
Trond Myklebust
Linux NFS client maintainer
NetApp
Trond.Myklebust-HgOvQuBEEgTQT0dZR+AlfA@public.gmane.org
www.netapp.com
On Jul 20, 2012, at 6:50 PM, Joe Perches wrote:
> On Wed, 2012-07-18 at 11:17 -0700, Joe Perches wrote:
>> Add a missing set of braces that commit 4e0038b6b24
>> ("SUNRPC: Move clnt->cl_server into struct rpc_xprt")
>> forgot.
>>
>> Signed-off-by: Joe Perches <joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>
>> ---
>> net/sunrpc/clnt.c | 3 ++-
>> 1 files changed, 2 insertions(+), 1 deletions(-)
>>
>> diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
>> index f56f045..aaf70aa 100644
>> --- a/net/sunrpc/clnt.c
>> +++ b/net/sunrpc/clnt.c
>> @@ -1844,12 +1844,13 @@ call_timeout(struct rpc_task *task)
>> return;
>> }
>> if (RPC_IS_SOFT(task)) {
>> - if (clnt->cl_chatty)
>> + if (clnt->cl_chatty) {
>> rcu_read_lock();
>> printk(KERN_NOTICE "%s: server %s not responding, timed out\n",
>> clnt->cl_protname,
>> rcu_dereference(clnt->cl_xprt)->servername);
>> rcu_read_unlock();
>> + }
>> if (task->tk_flags & RPC_TASK_TIMEOUT)
>> rpc_exit(task, -ETIMEDOUT);
>> else
>
> Hi David.
>
> I think it'd be good to get this into 3.6 as a bug fix.
>
> This is marked in netdev patchwork as "not applicable".
>
> Do you need the sunrpc maintainers to apply or ack it
> and then push it to you?
>
> Trond? Bruce?
>
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
* pull request: wireless-next 2012-07-20
From: John W. Linville @ 2012-07-20 17:20 UTC (permalink / raw)
To: davem; +Cc: linux-wireless, netdev
[-- Attachment #1: Type: text/plain, Size: 23676 bytes --]
commit 90b90f60c4f8e3a8525dfeb4aec46a9c7a29c857
Dave,
Here is what I hope to be the last non-fix pull request for wireless
bits going into 3.6. It's mostly normal stuff, including driver
updates to ath9k, mwifiex, libertas, iwlwifi, and a few other bits.
Also included is a bluetooth pull. Gustavo says:
"This is my last pull towards 3.6, the biggest thing here is
the new 3-wire UART Bluetooth driver by Johan Hedberg. The
rest is just fixes and clean ups."
Finally, there is a pull of the wireless tree to pick-up a few minor
fixes I had queued that were not really worthy for this late in the
3.5 cycle.
Please let me know if there are problems!
Thanks,
John
---
The following changes since commit 769162e38b91e1d300752e666260fa6c7b203fbc:
Merge branch 'net' of git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile (2012-07-19 13:39:27 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next.git for-davem
for you to fetch changes up to 90b90f60c4f8e3a8525dfeb4aec46a9c7a29c857:
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem (2012-07-20 12:30:48 -0400)
----------------------------------------------------------------
Alan Cox (1):
mac80211: fix use after free
Amitkumar Karwar (5):
mwifiex: correction in mcs index check
mwifiex: remove redundant code in set channel path
mwifiex: remove unnecessary code in data rate configuration
mwifiex: add support to use basic rates in ibss join request
mwifiex: improvement in cfg80211 set_bitrate_mask handler
Andre Guedes (4):
Bluetooth: Remove magic value in disconnect mgmt handler
Bluetooth: Use GFP_KERNEL in mgmt_handlers
Bluetooth: Use GFP_KERNEL in mgmt_pending_add
Bluetooth: Use GFP_KERNEL in mgmt events functions
Andrei Emeltchenko (20):
Bluetooth: Use standard HCI cmd timeout for RESET
Bluetooth: Update HCI timeouts constants to use msecs_to_jiffies
Bluetooth: Add opcode to error message
Bluetooth: Correct debug print specifier for u16 objects
Bluetooth: Fix not setting HCI_RESET flag for AMP
Bluetooth: Fix compile warnings in mgmt
Bluetooth: Use AUTO_OFF constant in jiffies
Bluetooth: Improve debugging messages for hci_conn
Bluetooth: Fix warning: using int as NULL pointer
Bluetooth: Route traffic only through BR/EDR controller
Bluetooth: bluecard_cs: Shorten scope for iobase
Bluetooth: Do not auto off AMP controller
Bluetooth: btmrvl: trivial style fixes
Bluetooth: debug: Add printing num of cmds queued
Bluetooth: debug: Correct types specifiers for L2CAP
Bluetooth: debug: Print CID and PSM in hex format
Bluetooth: debug: Add debug to l2cap_security_cfm
Bluetooth: debug: Use standard hex object specifiers in hci_event
Bluetooth: debug: Print l2cap_chan refcount
Bluetooth: debug: Print amp_mgr refcnt
Andy Shevchenko (1):
wireless: brcm80211: use %pM to print BSSID
Arik Nemtsov (5):
mac80211: fix invalid band deref building preq IEs
wl18xx: alloc conf.phy memory to ensure alignemnt
wl18xx: fix bogus compile warning on cc config option
wlcore: don't issue SLEEP_AUTH command during recovery
wl18xx: enable MIMO rates when connected as a MIMO STA
Christian Lamparter (2):
mac80211: request TX status for BlockAck Requests
mac80211: fix read outside array bounds
Chun-Yeow Yeoh (1):
mac80211: Fix the Problem of Unreachable Mesh STA from DS
Daniel Drake (3):
libertas: Update 11d info only when interface is active
libertas: handle command failure immediately
libertas USB: don't set surpriseremoved flag
Dave Jones (1):
NFC: NCI module license 'unspecified' taints kernel
Devendra Naga (1):
Bluetooth: cleanup dtl1_config
Duan Jiong (1):
libertas: firmware.c: remove duplicated include
Eliad Peller (3):
mac80211: go out of PS before sending disassoc
wlcore: use basic rates for non-data packets
mac80211: flush stations before stop beaconing
Emmanuel Grumbach (1):
iwlwifi: REPLY_RX doesn't exist any more
Eric Lapuyade (1):
NFC: Set target nfcid1 for all HCI reader A targets
Eyal Shapira (1):
wlcore: don't re-configure wakeup conditions if not needed
Felix Fietkau (15):
cfg80211: ignore channel state for stopped AP/mesh interfaces
ath9k_hw: fix 5 GHz frequency selection on AR934x/AR955x with 25 MHz refclock
ath9k_hw: fall back to OTP ROM when platform data has no valid eeprom data
ath9k: validate rx antenna settings
ath9k_hw: enable ANI on AR934x
ath9k_hw: fix tx gain tables for AR934x
ath9k_hw: remove redundant arguments to INIT_INI_ARRAY
ath9k/ath9k_htc: fix txop limit handling
ath9k: make per-WMM-AC queue sizes configurable via debugfs
ath9k: fix aggregate size limit based on queue TXOP limit
ath9k_hw: apply XPA timing control values from EEPROM
ath9k_hw: clean up AR9003 EEPROM code
ath9k_hw: apply XLNA bias settings from EEPROM
ath9k_hw: fix SREV checks for applying tuning caps from EEPROM
ath5k: fix txop limit handling
Forest Bond (1):
rtlwifi: rtl8192de: Fix phy-based version calculation
Gustavo Padovan (2):
Merge branch 'for-upstream' of git://git.kernel.org/.../bluetooth/bluetooth
Merge branch 'for-upstream' of git://git.kernel.org/.../bluetooth/bluetooth
Igal Chernobelsky (1):
wlcore: send EAPOLs using minimum basic rate for all roles
Jaganath Kanakkassery (1):
Bluetooth: Refactor PIN code rejection to use user_pairing_resp()
Jefferson Delfes (1):
Bluetooth: Fix flags of mgmt_device_found event
Johan Hedberg (19):
Bluetooth: Change page scan interval in fast connectable mode
Bluetooth: Initial skeleton for Three-wire UART (H5) support
Bluetooth: Add basic state tracking to Three-wire UART driver
Bluetooth: Add initial reliable packet support for Three-wire UART
Bluetooth: Add basic packet parsing to Three-wire UART driver
Bluetooth: Add initial packet sending support to Three-wire UART
Bluetooth: Add Three-wire header value convenience macros
Bluetooth: Fix/implement Three-wire reliable packet sending
Bluetooth: Add support for Three-wire Link Control packets
Bluetooth: Simplify hci_uart_tty_close logic
Bluetooth: Add delayed init sequence support for UART controllers
Bluetooth: Use delayed init for Three-wire UART
Bluetooth: Improve rx debug logs for Three-wire UART
Bluetooth: Add initial sleep support to Three-wire UART
Bluetooth: Add initialization tracking to HCI Three-wire driver
Bluetooth: Implement proper low-power support for Three-wire UART
Bluetooth: Remove unnecessary h5_build_pkt function
Bluetooth: Improve Three-wire UART configuration handling
Bluetooth: Introduce a flags variable to Three-wire UART state
Johannes Berg (27):
mac80211: update BSS info on AC parameters change
mac80211: remove unused assignment
mac80211: remove ieee80211_key_removed
nl80211: prepare for non-netdev wireless devs
nl80211: add NL80211_FLAG_NEED_WDEV
nl80211: retrieve interface data by wdev
nl80211: don't assume wdev->netdev exists
cfg80211: use wdev in mgmt-tx/ROC APIs
cfg80211: use wireless_dev for interface management
nl80211: send interface after creation
nl80211: move scan API to wdev
mac80211: make scan_sdata pointer usable with RCU
mac80211: track scheduled scan virtual interface
mac80211: redesign scan RX
mac80211: optimize ieee80211_rx_status struct layout
mac80211: add time synchronisation with BSS for assoc
mac80211: restructure key selection
cfg80211: fix locking and lockdep complaints
mac80211: iterate the virtual monitor interface
iwlwifi: don't use stack memory for kmem cache name
nl80211: allow enabling WoWLAN without triggers
Revert "mac80211: refactor virtual monitor code"
cfg80211/mac80211: re-add get_channel operation
cfg80211: reduce monitor interface tracking
nl80211: add wdev ID as u64 as it should
b43: use temporary rate_index for error checking
b43: fix crash with OpenFWWF
John W. Linville (7):
Merge branch 'for-john' of git://git.kernel.org/.../jberg/mac80211-next
Merge branch 'for-john' of git://git.kernel.org/.../iwlwifi/iwlwifi-next
Merge branch 'for-john' of git://git.kernel.org/.../jberg/mac80211-next
Merge branch 'master' of git://git.kernel.org/.../linville/wireless
Merge branch 'master' of git://git.kernel.org/.../bluetooth/bluetooth-next
Merge branch 'for-john' of git://git.kernel.org/.../jberg/mac80211-next
Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next into for-davem
Kalle Valo (1):
cfg80211: fix set_regdom() to cancel requests with same alpha2
Larry Finger (2):
rtlwifi: Remove extra argument from queue setup routine
rtlwifi: rtl8192cu: Change buffer allocation for synchronous reads
Luciano Coelho (2):
wlcore: wait for command completion event when sending CMD_ROLE_STOP
wlcore: increase command completion timeout
Luis R. Rodriguez (6):
cfg80211: add CONFIG_CFG80211_CERTIFICATION_ONUS
cfg80211: add cellular base station regulatory hint support
cfg80211: rename reg_device_remove() to wiphy_regulatory_deregister()
cfg80211: make regulatory_update() static
cfg80211: remove regulatory_update()
ath9k: make CONFIG_ATH9K_DFS_CERTIFIED depend on CFG80211_CERTIFICATION_ONUS
Mat Martineau (1):
Bluetooth: Use tx window from config response for ack timing
Mathias Jeppsson (2):
NFC: Fix empty HCI message list check
NFC: Fix order of arguments to list_add_tail() when queueing HCP frames
Mohammed Shafi Shajakhan (11):
ath9k_hw: Add register definitions for WoW support
ath9k: Add definitions and structures to support WoW
ath9k_hw: Add WoW hardware capability flags
ath9k_hw: advertise WoW support for capable chipsets
ath9k: advertise supported WoW flags to upper layer
ath9k_hw: INI changes for WoW for AR9002 chipsets
ath9k_hw: Add hardware code for WoW
ath: Add Wake-on-Wireless debug mask
ath9k: Add WoW related mac80211 callbacks
ath9k: do not disable hardware while wow is enabled
cfg80211: Fix mutex locking in reg_last_request_cell_base
Nicolas Cavallari (2):
mac80211: tx: do not drop non-robust mgmt to non-MFP stas.
mac80211: fix tx-mgmt cookie value being left uninitialized
Rafał Miłecki (6):
bcma: support alternative (BCM4706) ChipCommon core id
bcma: fix typo - reading number of slave wrappers
bcma: add trivial GBIT MAC COMMON driver
bcma: add new cores at the end of list
bcma: cc: update defines
bcma: add place for flash memory support
Rajkumar Manoharan (1):
ath9k: Fix race in reset-work usage
Sujith Manoharan (11):
ath9k: Fix beacon setup
ath9k_hw: Cleanup ath9k_hw_set_tsfadjust
ath9k: Cleanup interface handling
ath9k: Simplify ASSOC handling
ath9k: Cleanup beacon logic
ath9k: Remove is_bslot_active
ath9k: Cleanup beacon queue configuration
ath9k: Set the TSF adjust value properly
ath9k: Cleanup the beacon tasklet
ath9k: Fix ANI management
ath9k: Reconfigure VIF state properly
Sylvain Roger Rieunier (1):
minstrel_ht: enable frame aggregation for fixed rate
Thomas Huehn (3):
mwl8k: fix possible race condition in info->control.sta use
brcmsmac: restructure info->control.sta handling as it is goning to be removed soon.
mac80211_hwsim: fix race condition with sta/vif pointers
Thomas Pedersen (1):
cfg80211: support TX error rate CQM
Vladimir Kondratiev (1):
cfg80211: fix oops due to unassigned set_monitor_enabled callback
Wey-Yi Guy (1):
iwlwifi: set correct 32 bit boost register value
Yair Shapira (5):
wl18xx: add support for ht_mode in conf.h
wlcore: add plt_mode including new PLT_FEM_DETECT
wl18xx: disable calibrator based fem detect
wlcore/wl12xx: calibrator fem detect implementation
wlcore: make usage of nla_put clearer
Documentation/DocBook/80211.tmpl | 1 -
drivers/bcma/Kconfig | 19 +
drivers/bcma/Makefile | 3 +
drivers/bcma/bcma_private.h | 22 +
drivers/bcma/driver_chipcommon_nflash.c | 19 +
drivers/bcma/driver_chipcommon_sflash.c | 19 +
drivers/bcma/driver_gmac_cmn.c | 14 +
drivers/bcma/driver_mips.c | 15 +-
drivers/bcma/main.c | 25 +-
drivers/bcma/scan.c | 20 +-
drivers/bcma/scan.h | 2 +-
drivers/bluetooth/Kconfig | 12 +
drivers/bluetooth/Makefile | 1 +
drivers/bluetooth/bluecard_cs.c | 6 +-
drivers/bluetooth/bt3c_cs.c | 2 +-
drivers/bluetooth/btmrvl_main.c | 8 +-
drivers/bluetooth/btmrvl_sdio.c | 3 +-
drivers/bluetooth/btuart_cs.c | 2 +-
drivers/bluetooth/dtl1_cs.c | 18 +-
drivers/bluetooth/hci_h5.c | 747 ++++++++++++++++++++
drivers/bluetooth/hci_ldisc.c | 66 +-
drivers/bluetooth/hci_uart.h | 10 +
drivers/net/wireless/ath/ath.h | 2 +
drivers/net/wireless/ath/ath5k/mac80211-ops.c | 2 +-
drivers/net/wireless/ath/ath6kl/cfg80211.c | 58 +-
drivers/net/wireless/ath/ath6kl/cfg80211.h | 6 +-
drivers/net/wireless/ath/ath6kl/core.c | 8 +-
drivers/net/wireless/ath/ath6kl/core.h | 5 +
drivers/net/wireless/ath/ath6kl/wmi.c | 10 +-
drivers/net/wireless/ath/ath9k/Kconfig | 2 +-
drivers/net/wireless/ath/ath9k/Makefile | 1 +
drivers/net/wireless/ath/ath9k/ar9002_hw.c | 160 ++---
drivers/net/wireless/ath/ath9k/ar9002_initvals.h | 14 +
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 198 +++---
drivers/net/wireless/ath/ath9k/ar9003_eeprom.h | 3 +-
drivers/net/wireless/ath/ath9k/ar9003_hw.c | 546 ++++----------
drivers/net/wireless/ath/ath9k/ar9003_phy.c | 4 +-
drivers/net/wireless/ath/ath9k/ar9003_phy.h | 5 +
drivers/net/wireless/ath/ath9k/ath9k.h | 40 +-
drivers/net/wireless/ath/ath9k/beacon.c | 523 ++++++--------
drivers/net/wireless/ath/ath9k/calib.h | 6 +-
drivers/net/wireless/ath/ath9k/debug.c | 13 +-
drivers/net/wireless/ath/ath9k/debug.h | 24 +-
drivers/net/wireless/ath/ath9k/eeprom.h | 4 -
drivers/net/wireless/ath/ath9k/htc_drv_main.c | 4 +-
drivers/net/wireless/ath/ath9k/hw.c | 16 +-
drivers/net/wireless/ath/ath9k/hw.h | 84 ++-
drivers/net/wireless/ath/ath9k/init.c | 21 +-
drivers/net/wireless/ath/ath9k/link.c | 73 +-
drivers/net/wireless/ath/ath9k/main.c | 691 +++++++++++++-----
drivers/net/wireless/ath/ath9k/mci.c | 2 +-
drivers/net/wireless/ath/ath9k/pci.c | 3 +
drivers/net/wireless/ath/ath9k/recv.c | 2 +-
drivers/net/wireless/ath/ath9k/reg.h | 145 +++-
drivers/net/wireless/ath/ath9k/wow.c | 532 ++++++++++++++
drivers/net/wireless/ath/ath9k/xmit.c | 102 +--
drivers/net/wireless/b43/b43.h | 7 -
drivers/net/wireless/b43/main.c | 32 +-
drivers/net/wireless/b43/xmit.c | 9 +-
.../net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 7 +-
drivers/net/wireless/brcm80211/brcmsmac/ampdu.c | 11 +-
.../net/wireless/brcm80211/brcmsmac/mac80211_if.c | 2 +
drivers/net/wireless/brcm80211/brcmsmac/main.c | 2 +-
drivers/net/wireless/iwlegacy/common.c | 2 +-
drivers/net/wireless/iwlwifi/dvm/commands.h | 1 +
drivers/net/wireless/iwlwifi/dvm/lib.c | 2 +
drivers/net/wireless/iwlwifi/dvm/main.c | 1 -
drivers/net/wireless/iwlwifi/dvm/rx.c | 44 +-
drivers/net/wireless/iwlwifi/dvm/rxon.c | 2 +-
drivers/net/wireless/iwlwifi/iwl-config.h | 2 +-
drivers/net/wireless/iwlwifi/iwl-trans.h | 1 +
drivers/net/wireless/iwlwifi/pcie/2000.c | 2 +-
drivers/net/wireless/iwlwifi/pcie/trans.c | 7 +-
drivers/net/wireless/libertas/cfg.c | 7 +-
drivers/net/wireless/libertas/cmd.c | 25 +-
drivers/net/wireless/libertas/cmd.h | 4 +-
drivers/net/wireless/libertas/dev.h | 1 +
drivers/net/wireless/libertas/firmware.c | 2 -
drivers/net/wireless/libertas/if_usb.c | 1 -
drivers/net/wireless/libertas/main.c | 6 +
drivers/net/wireless/mac80211_hwsim.c | 5 -
drivers/net/wireless/mwifiex/cfg80211.c | 287 ++++----
drivers/net/wireless/mwifiex/cfp.c | 31 -
drivers/net/wireless/mwifiex/decl.h | 9 -
drivers/net/wireless/mwifiex/fw.h | 10 -
drivers/net/wireless/mwifiex/init.c | 1 -
drivers/net/wireless/mwifiex/ioctl.h | 6 -
drivers/net/wireless/mwifiex/main.c | 4 +-
drivers/net/wireless/mwifiex/main.h | 20 +-
drivers/net/wireless/mwifiex/sta_cmd.c | 38 -
drivers/net/wireless/mwifiex/sta_cmdresp.c | 70 +-
drivers/net/wireless/mwifiex/sta_ioctl.c | 287 +-------
drivers/net/wireless/mwl8k.c | 5 +-
drivers/net/wireless/orinoco/cfg.c | 2 +-
drivers/net/wireless/rndis_wlan.c | 5 +-
drivers/net/wireless/rt2x00/rt2x00config.c | 2 +-
drivers/net/wireless/rtlwifi/base.c | 2 +-
drivers/net/wireless/rtlwifi/base.h | 2 +-
drivers/net/wireless/rtlwifi/pci.c | 2 +-
drivers/net/wireless/rtlwifi/rtl8192de/phy.c | 6 +-
drivers/net/wireless/rtlwifi/usb.c | 14 +-
drivers/net/wireless/rtlwifi/wifi.h | 1 +
drivers/net/wireless/ti/wl12xx/cmd.c | 34 +-
drivers/net/wireless/ti/wl12xx/main.c | 23 +
drivers/net/wireless/ti/wl18xx/conf.h | 21 +-
drivers/net/wireless/ti/wl18xx/io.c | 2 +-
drivers/net/wireless/ti/wl18xx/main.c | 117 ++-
drivers/net/wireless/ti/wlcore/cmd.c | 12 +
drivers/net/wireless/ti/wlcore/cmd.h | 2 +-
drivers/net/wireless/ti/wlcore/main.c | 44 +-
drivers/net/wireless/ti/wlcore/testmode.c | 85 ++-
drivers/net/wireless/ti/wlcore/tx.c | 14 +-
drivers/net/wireless/ti/wlcore/wlcore.h | 2 +
drivers/net/wireless/ti/wlcore/wlcore_i.h | 8 +-
include/linux/bcma/bcma.h | 2 +
include/linux/bcma/bcma_driver_chipcommon.h | 51 +-
include/linux/bcma/bcma_driver_gmac_cmn.h | 100 +++
include/linux/nl80211.h | 53 ++
include/net/bluetooth/hci.h | 11 +-
include/net/bluetooth/hci_core.h | 8 +-
include/net/bluetooth/l2cap.h | 5 +
include/net/bluetooth/mgmt.h | 2 +-
include/net/cfg80211.h | 107 ++-
include/net/mac80211.h | 40 +-
include/net/regulatory.h | 5 +
net/bluetooth/a2mp.c | 4 +-
net/bluetooth/hci_conn.c | 47 +-
net/bluetooth/hci_core.c | 77 +-
net/bluetooth/hci_event.c | 170 ++---
net/bluetooth/l2cap_core.c | 151 ++--
net/bluetooth/mgmt.c | 60 +-
net/mac80211/agg-tx.c | 3 +-
net/mac80211/cfg.c | 62 +-
net/mac80211/debugfs.c | 2 -
net/mac80211/ieee80211_i.h | 24 +-
net/mac80211/iface.c | 60 +-
net/mac80211/key.c | 20 -
net/mac80211/main.c | 3 +-
net/mac80211/mlme.c | 62 +-
net/mac80211/offchannel.c | 12 +-
net/mac80211/rc80211_minstrel_ht.c | 8 +-
net/mac80211/rx.c | 49 +-
net/mac80211/scan.c | 116 +--
net/mac80211/status.c | 9 +-
net/mac80211/trace.h | 6 +-
net/mac80211/tx.c | 30 +-
net/mac80211/util.c | 11 +
net/nfc/hci/core.c | 20 +-
net/nfc/hci/hcp.c | 2 +-
net/nfc/nci/core.c | 3 +
net/wireless/Kconfig | 21 +
net/wireless/chan.c | 24 +-
net/wireless/core.c | 79 +--
net/wireless/core.h | 14 +-
net/wireless/mlme.c | 47 +-
net/wireless/nl80211.c | 537 ++++++++++----
net/wireless/nl80211.h | 21 +-
net/wireless/reg.c | 132 +++-
net/wireless/reg.h | 8 +-
net/wireless/scan.c | 24 +-
net/wireless/sme.c | 10 +-
net/wireless/util.c | 17 +-
net/wireless/wext-compat.c | 9 +-
163 files changed, 5129 insertions(+), 2905 deletions(-)
create mode 100644 drivers/bcma/driver_chipcommon_nflash.c
create mode 100644 drivers/bcma/driver_chipcommon_sflash.c
create mode 100644 drivers/bcma/driver_gmac_cmn.c
create mode 100644 drivers/bluetooth/hci_h5.c
create mode 100644 drivers/net/wireless/ath/ath9k/wow.c
create mode 100644 include/linux/bcma/bcma_driver_gmac_cmn.h
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply
* Re: [PATCH 00/16]: Kill the ipv4 routing cache.
From: David Miller @ 2012-07-20 17:42 UTC (permalink / raw)
To: eric.dumazet; +Cc: bhutchings, netdev
In-Reply-To: <1342802634.2626.7718.camel@edumazet-glaptop>
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Fri, 20 Jul 2012 18:43:54 +0200
> It would be nice if you can copy the changelog of 00/16 to 01/16
I can crib the first few paragraphs that describe the justification,
sure.
^ permalink raw reply
* Re: New commands to configure IOV features
From: Ben Hutchings @ 2012-07-20 17:42 UTC (permalink / raw)
To: Don Dutile
Cc: Chris Friesen, David Miller, yuvalmin, gregory.v.rose, netdev,
linux-pci
In-Reply-To: <50097FBD.9080202@redhat.com>
On Fri, 2012-07-20 at 11:56 -0400, Don Dutile wrote:
> On 07/20/2012 11:27 AM, Chris Friesen wrote:
> > On 07/17/2012 03:11 PM, David Miller wrote:
> >> From: Chris Friesen<chris.friesen@genband.com>
> >> Date: Tue, 17 Jul 2012 15:08:45 -0600
> >>
> >>> From that perspective a sysfs-based interface is ideal since it is
> >>> directly scriptable.
> >>
> >> As is anything ethtool or netlink based, since we have 'ethtool'
> >> and 'ip' for scripting.
> >
> > I'm not picky...whatever works.
> >
> > To me the act of creating virtual functions seems generic enough (I'm aware of SR-IOV capable storage controllers, I'm sure there is other hardware as well) that ethtool/ip don't really seem like the most appropriate tools for the job.
> >
> Yes, and then there are 'other network' controllers too ... IB which
> I don't know if it adheres to ethtool, since it's not an Ethernet
> device ... isn't that why they call it Infiniband ... ;-) )
> In the telecom space, they use NTBs and PCI as a 'network' ... I know,
> not common in Linux space, and VFs in that space aren't being
> discussed (that I've ever heard), but another example where
> 'network' != Ethernet, so ethtool doesn't solve PCI-level
> configuration/use.
[...]
The ethtool API is typically used for net device operations that can be
largely devolved to individual drivers, and which the network stack can
mostly ignore (though offload features are an historical exception to
this). It started with Ethernet link settings, but many operations are
applicable (and implemented by) other types of network device.
Ben.
--
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply
* Re: [PATCH v4] sctp: Implement quick failover draft from tsvwg
From: Vlad Yasevich @ 2012-07-20 17:55 UTC (permalink / raw)
To: Neil Horman; +Cc: netdev, Sridhar Samudrala, David S. Miller, linux-sctp, joe
In-Reply-To: <1342804752-17044-1-git-send-email-nhorman@tuxdriver.com>
On 07/20/2012 01:19 PM, Neil Horman wrote:
> I've seen several attempts recently made to do quick failover of sctp transports
> by reducing various retransmit timers and counters. While its possible to
> implement a faster failover on multihomed sctp associations, its not
> particularly robust, in that it can lead to unneeded retransmits, as well as
> false connection failures due to intermittent latency on a network.
>
> Instead, lets implement the new ietf quick failover draft found here:
> http://tools.ietf.org/html/draft-nishida-tsvwg-sctp-failover-05
>
> This will let the sctp stack identify transports that have had a small number of
> errors, and avoid using them quickly until their reliability can be
> re-established. I've tested this out on two virt guests connected via multiple
> isolated virt networks and believe its in compliance with the above draft and
> works well.
>
> Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
> CC: Vlad Yasevich <vyasevich@gmail.com>
> CC: Sridhar Samudrala <sri@us.ibm.com>
> CC: "David S. Miller" <davem@davemloft.net>
> CC: linux-sctp@vger.kernel.org
> CC: joe@perches.com
>
> ---
> Change notes:
>
> V2)
> - Added socket option API from section 6.1 of the specification, as per
> request from Vlad. Adding this socket option allows us to alter both the path
> maximum retransmit value and the path partial failure threshold for each
> transport and the association as a whole.
>
> - Added a per transport pf_retrans value, and initialized it from the
> association value. This makes each transport independently configurable as per
> the socket option above, and prevents changes in the sysctl from bleeding into
> an already created association.
>
> V3)
> - Cleaned up some line spacing (Joe Perches)
> - Fixed some socket option user data sanitization (Vlad Yasevich)
>
> V4)
> - Added additional documentation (Flavio Leitner)
> ---
> Documentation/networking/ip-sysctl.txt | 14 +++++
> include/net/sctp/constants.h | 1 +
> include/net/sctp/structs.h | 20 ++++++-
> include/net/sctp/user.h | 11 ++++
> net/sctp/associola.c | 37 ++++++++++--
> net/sctp/outqueue.c | 6 +-
> net/sctp/sm_sideeffect.c | 33 +++++++++-
> net/sctp/socket.c | 100 ++++++++++++++++++++++++++++++++
> net/sctp/sysctl.c | 9 +++
> net/sctp/transport.c | 4 +-
> 10 files changed, 220 insertions(+), 15 deletions(-)
>
[ snip ]
>
> diff --git a/net/sctp/socket.c b/net/sctp/socket.c
> index b3b8a8d..fef9bfa 100644
> --- a/net/sctp/socket.c
> +++ b/net/sctp/socket.c
> @@ -3470,6 +3470,56 @@ static int sctp_setsockopt_auto_asconf(struct sock *sk, char __user *optval,
> }
>
>
> +/*
> + * SCTP_PEER_ADDR_THLDS
> + *
> + * This option allows us to alter the partially failed threshold for one or all
> + * transports in an association. See Section 6.1 of:
> + * http://www.ietf.org/id/draft-nishida-tsvwg-sctp-failover-05.txt
> + */
> +static int sctp_setsockopt_paddr_thresholds(struct sock *sk,
> + char __user *optval,
> + unsigned int optlen)
> +{
> + struct sctp_paddrthlds val;
> + struct sctp_transport *trans;
> + struct sctp_association *asoc;
> +
> + if (optlen < sizeof(struct sctp_paddrthlds))
> + return -EINVAL;
> + if (copy_from_user(&val, (struct sctp_paddrthlds __user *)optval,
> + sizeof(struct sctp_paddrthlds)))
> + return -EFAULT;
> +
> + /* path_max_retrans shouldn't ever be zero */
> + if (!val.spt_pathmaxrxt)
> + return -EINVAL;
I am not sure I like this solution. This means that the application
must fetch the pathmaxrx and then write the same value back here.
Why not simply ignore the patthmaxrxt if it's 0? That way someone can
just tweak the pf value without changing the pathmaxrxt.
> +
> + if (sctp_is_any(sk, (const union sctp_addr *)&val.spt_address)) {
> + asoc = sctp_id2assoc(sk, val.spt_assoc_id);
> + if (!asoc)
> + return -ENOENT;
> + list_for_each_entry(trans, &asoc->peer.transport_addr_list,
> + transports) {
> + trans->pathmaxrxt = val.spt_pathmaxrxt;
> + trans->pf_retrans = val.spt_pathpfthld;
> + }
> +
> + asoc->pf_retrans = val.spt_pathpfthld;
> + asoc->pathmaxrxt = val.spt_pathmaxrxt;
> + } else {
> + trans = sctp_addr_id2transport(sk, &val.spt_address,
> + val.spt_assoc_id);
> + if (!trans)
> + return -ENOENT;
> +
> + trans->pathmaxrxt = val.spt_pathmaxrxt;
> + trans->pf_retrans = val.spt_pathpfthld;
> + }
> +
> + return 0;
> +}
> +
> /* API 6.2 setsockopt(), getsockopt()
> *
> * Applications use setsockopt() and getsockopt() to set or retrieve
> @@ -3619,6 +3669,9 @@ SCTP_STATIC int sctp_setsockopt(struct sock *sk, int level, int optname,
> case SCTP_AUTO_ASCONF:
> retval = sctp_setsockopt_auto_asconf(sk, optval, optlen);
> break;
> + case SCTP_PEER_ADDR_THLDS:
> + retval = sctp_setsockopt_paddr_thresholds(sk, optval, optlen);
> + break;
> default:
> retval = -ENOPROTOOPT;
> break;
> @@ -5490,6 +5543,50 @@ static int sctp_getsockopt_assoc_ids(struct sock *sk, int len,
> return 0;
> }
>
> +/*
> + * SCTP_PEER_ADDR_THLDS
> + *
> + * This option allows us to fetch the partially failed threshold for one or all
> + * transports in an association. See Section 6.1 of:
> + * http://www.ietf.org/id/draft-nishida-tsvwg-sctp-failover-05.txt
> + */
> +static int sctp_getsockopt_paddr_thresholds(struct sock *sk,
> + char __user *optval,
> + int optlen)
> +{
> + struct sctp_paddrthlds val;
> + struct sctp_transport *trans;
> + struct sctp_association *asoc;
> +
> + if (optlen < sizeof(struct sctp_paddrthlds))
> + return -EINVAL;
> + optlen = sizeof(struct sctp_paddrthlds);
> + if (copy_from_user(&val, (struct sctp_paddrthlds __user *)optval, optlen))
> + return -EFAULT;
> +
> + if (sctp_is_any(sk, (const union sctp_addr *)&val.spt_address)) {
> + asoc = sctp_id2assoc(sk, val.spt_assoc_id);
> + if (!asoc)
> + return -ENOENT;
> +
> + val.spt_pathpfthld = asoc->pf_retrans;
> + val.spt_pathmaxrxt = asoc->pathmaxrxt;
> + } else {
> + trans = sctp_addr_id2transport(sk, &val.spt_address,
> + val.spt_assoc_id);
> + if (!trans)
> + return -ENOENT;
> +
> + val.spt_pathmaxrxt = trans->pathmaxrxt;
> + val.spt_pathpfthld = trans->pf_retrans;
> + }
> +
> + if (copy_to_user(optval, &val, optlen))
> + return -EFAULT;
> +
getsockopt typically returns the length of the option data that was
written to the user.
> + return 0;
> +}
> +
> SCTP_STATIC int sctp_getsockopt(struct sock *sk, int level, int optname,
> char __user *optval, int __user *optlen)
> {
> @@ -5628,6 +5725,9 @@ SCTP_STATIC int sctp_getsockopt(struct sock *sk, int level, int optname,
> case SCTP_AUTO_ASCONF:
> retval = sctp_getsockopt_auto_asconf(sk, len, optval, optlen);
> break;
> + case SCTP_PEER_ADDR_THLDS:
> + retval = sctp_getsockopt_paddr_thresholds(sk, optval, len);
> + break;
You are passing the len. The user may have passed in a bigger buffer
and is expecting back the length of the option.
-vlad
> default:
> retval = -ENOPROTOOPT;
> break;
> diff --git a/net/sctp/sysctl.c b/net/sctp/sysctl.c
> index e5fe639..2b2bfe9 100644
> --- a/net/sctp/sysctl.c
> +++ b/net/sctp/sysctl.c
> @@ -141,6 +141,15 @@ static ctl_table sctp_table[] = {
> .extra2 = &int_max
> },
> {
> + .procname = "pf_retrans",
> + .data = &sctp_pf_retrans,
> + .maxlen = sizeof(int),
> + .mode = 0644,
> + .proc_handler = proc_dointvec_minmax,
> + .extra1 = &zero,
> + .extra2 = &int_max
> + },
> + {
> .procname = "max_init_retransmits",
> .data = &sctp_max_retrans_init,
> .maxlen = sizeof(int),
> diff --git a/net/sctp/transport.c b/net/sctp/transport.c
> index b026ba0..194d0f3 100644
> --- a/net/sctp/transport.c
> +++ b/net/sctp/transport.c
> @@ -85,6 +85,7 @@ static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer,
>
> /* Initialize the default path max_retrans. */
> peer->pathmaxrxt = sctp_max_retrans_path;
> + peer->pf_retrans = sctp_pf_retrans;
>
> INIT_LIST_HEAD(&peer->transmitted);
> INIT_LIST_HEAD(&peer->send_ready);
> @@ -585,7 +586,8 @@ unsigned long sctp_transport_timeout(struct sctp_transport *t)
> {
> unsigned long timeout;
> timeout = t->rto + sctp_jitter(t->rto);
> - if (t->state != SCTP_UNCONFIRMED)
> + if ((t->state != SCTP_UNCONFIRMED) &&
> + (t->state != SCTP_PF))
> timeout += t->hbinterval;
> timeout += jiffies;
> return timeout;
>
^ permalink raw reply
* Re: [PATCH v2 net-next] tcp: fix ABC in tcp_slow_start()
From: Neal Cardwell @ 2012-07-20 17:58 UTC (permalink / raw)
To: Yuchung Cheng
Cc: Eric Dumazet, David Miller, netdev, Tom Herbert,
Stephen Hemminger, John Heffner, Nandita Dukkipati
In-Reply-To: <CAK6E8=dkwruGMtW2uQ--xZ_so9aZQt-KcmHsy2yE5GApKphrJQ@mail.gmail.com>
On Fri, Jul 20, 2012 at 8:07 AM, Yuchung Cheng <ycheng@google.com> wrote:
> On Fri, Jul 20, 2012 at 8:02 AM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
>> From: Eric Dumazet <edumazet@google.com>
>>
>> When/if sysctl_tcp_abc > 1, we expect to increase cwnd by 2 if the
>> received ACK acknowledges more than 2*MSS bytes, in tcp_slow_start()
>>
>> Problem is this RFC 3465 statement is not correctly coded, as
>> the while () loop increases snd_cwnd one by one.
>>
>> Add a new variable to avoid this off-by one error.
>>
>> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Acked-by: Yuchung Cheng <ycheng@google.com>
Acked-by: Neal Cardwell <ncardwell@google.com>
neal
^ permalink raw reply
* Re: [PATCH] myri10ge: update MAINTAINERS
From: David Miller @ 2012-07-20 17:59 UTC (permalink / raw)
To: jdmason; +Cc: netdev
In-Reply-To: <1342764673-16671-1-git-send-email-jdmason@kudzu.us>
From: Jon Mason <jdmason@kudzu.us>
Date: Thu, 19 Jul 2012 23:11:13 -0700
> Remove myself from myri10ge MAINTAINERS list
>
> Signed-off-by: Jon Mason <jdmason@kudzu.us>
Applied to net-next
^ permalink raw reply
* Re: [trivial PATCH resend 1/2] ixgb: use PCI_VENDOR_ID_INTEL
From: David Miller @ 2012-07-20 18:00 UTC (permalink / raw)
To: jeffrey.t.kirsher
Cc: jdmason, trivial, netdev, linux-kernel, jesse.brandeburg,
bruce.w.allan, carolyn.wyborny, donald.c.skidmore, gregory.v.rose,
peter.p.waskiewicz.jr, alexander.h.duyck, john.ronciak
In-Reply-To: <1342768277.2616.22.camel@jtkirshe-mobl>
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Fri, 20 Jul 2012 00:11:17 -0700
> On Fri, 2012-07-20 at 00:02 -0700, Jon Mason wrote:
>> Use PCI_VENDOR_ID_INTEL from pci_ids.h instead of creating its own
>> vendor ID #define.
>>
>> Signed-off-by: Jon Mason <jdmason@kudzu.us>
...
> Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Applied.
^ permalink raw reply
* Re: [trivial PATCH resend 2/2] ixgbe: use PCI_VENDOR_ID_INTEL
From: David Miller @ 2012-07-20 18:00 UTC (permalink / raw)
To: jeffrey.t.kirsher
Cc: jdmason, trivial, netdev, linux-kernel, jesse.brandeburg,
bruce.w.allan, carolyn.wyborny, donald.c.skidmore, gregory.v.rose,
peter.p.waskiewicz.jr, alexander.h.duyck, john.ronciak
In-Reply-To: <1342768629.2616.27.camel@jtkirshe-mobl>
From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Fri, 20 Jul 2012 00:17:09 -0700
> On Fri, 2012-07-20 at 00:02 -0700, Jon Mason wrote:
>> Use PCI_VENDOR_ID_INTEL from pci_ids.h instead of creating its own
>> vendor ID #define.
>>
>> Signed-off-by: Jon Mason <jdmason@kudzu.us>
...
> Acked-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Applied.
^ permalink raw reply
* Re: [PATCH net-next] tcp: Return bool instead of int where appropriate
From: David Miller @ 2012-07-20 18:00 UTC (permalink / raw)
To: eric.dumazet; +Cc: subramanian.vijay, netdev
In-Reply-To: <1342771377.2626.6102.camel@edumazet-glaptop>
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Fri, 20 Jul 2012 10:02:57 +0200
> On Fri, 2012-07-20 at 00:32 -0700, Vijay Subramanian wrote:
>> Applied to a set of static inline functions in tcp_input.c
>>
>> Signed-off-by: Vijay Subramanian <subramanian.vijay@gmail.com>
>> ---
>> net/ipv4/tcp_input.c | 16 ++++++++--------
>> 1 files changed, 8 insertions(+), 8 deletions(-)
>
> Acked-by: Eric Dumazet <edumazet@google.com>
Applied.
^ permalink raw reply
* Re: [PATCH net-next] tcp: use hash_32() in tcp_metrics
From: David Miller @ 2012-07-20 18:00 UTC (permalink / raw)
To: eric.dumazet; +Cc: netdev
In-Reply-To: <1342774954.2626.6290.camel@edumazet-glaptop>
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Fri, 20 Jul 2012 11:02:34 +0200
> From: Eric Dumazet <edumazet@google.com>
>
> Fix a missing roundup_pow_of_two(), since tcpmhash_entries is not
> guaranteed to be a power of two.
>
> Uses hash_32() instead of custom hash.
>
> tcpmhash_entries should be an unsigned int.
>
> Signed-off-by: Eric Dumazet <edumazet@google.com>
Applied.
^ permalink raw reply
* Re: [RFC PATCH] net: Add support for virtual machine device queues (VMDQ)
From: Ben Hutchings @ 2012-07-20 18:01 UTC (permalink / raw)
To: John Fastabend
Cc: Jiri Pirko, or.gerlitz, davem, roland, netdev, ali, sean.hefty,
shlomop, Ronciak, John
In-Reply-To: <500987B7.2030705@intel.com>
On Fri, 2012-07-20 at 09:30 -0700, John Fastabend wrote:
> On 7/18/2012 11:42 PM, Jiri Pirko wrote:
> > Thu, Jul 19, 2012 at 12:05:44AM CEST, john.r.fastabend@intel.com wrote:
> >> This adds support to allow virtual net devices to be created. These
> >> devices can be managed independtly of the physical function but
> >> use the same physical link.
>
> [...]
>
> >> +
> >> +size_t vmdq_getpriv_size(struct net *src_net, struct nlattr *tb[])
> >> +{
> >> + struct net_device *lowerdev;
> >> +
> >> + if (!tb[IFLA_LINK])
> >> + return -EINVAL;
> >> +
> >> + lowerdev = __dev_get_by_index(src_net, nla_get_u32(tb[IFLA_LINK]));
> >> + if (!lowerdev)
> >> + return -ENODEV;
> >> +
> >> + return sizeof(netdev_priv(lowerdev));
> >> +}
> >
> > Why exactly do you need to have the priv of same size as lowerdev? I do
> > not see you use that anywhere...
> >
>
> When we add a child device the hardware/sw may have some private data
> it needs to manage this device.
>
> I made an assumption here that the priv space for child devices is the
> same as the lowerdev but this might be a bad assumption.
The code assumes that it is the size of a single pointer...
Ben.
--
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.
^ permalink raw reply
* Re: [PATCH net-next] tcp: improve latencies of timer triggered events
From: David Miller @ 2012-07-20 18:01 UTC (permalink / raw)
To: eric.dumazet
Cc: netdev, therbert, ycheng, ncardwell, nanditad, johnwheffner,
hkchu
In-Reply-To: <1342799150.2626.7574.camel@edumazet-glaptop>
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Fri, 20 Jul 2012 17:45:50 +0200
> From: Eric Dumazet <edumazet@google.com>
>
> Modern TCP stack highly depends on tcp_write_timer() having a small
> latency, but current implementation doesn't exactly meet the
> expectations.
>
> When a timer fires but finds the socket is owned by the user, it rearms
> itself for an additional delay hoping next run will be more
> successful.
>
> tcp_write_timer() for example uses a 50ms delay for next try, and it
> defeats many attempts to get predictable TCP behavior in term of
> latencies.
>
> Use the recently introduced tcp_release_cb(), so that the user owning
> the socket will call various handlers right before socket release.
>
> This will permit us to post a followup patch to address the
> tcp_tso_should_defer() syndrome (some deferred packets have to wait
> RTO timer to be transmitted, while cwnd should allow us to send them
> sooner)
>
> Signed-off-by: Eric Dumazet <edumazet@google.com>
I like this a lot, applied, thanks Eric.
^ permalink raw reply
* Re: [PATCH v2 net-next] tcp: fix ABC in tcp_slow_start()
From: Stephen Hemminger @ 2012-07-20 18:01 UTC (permalink / raw)
To: Neal Cardwell
Cc: Yuchung Cheng, Eric Dumazet, David Miller, netdev, Tom Herbert,
Stephen Hemminger, John Heffner, Nandita Dukkipati
TCP ABC was an experiment that failed. It solves a problem that does not exist on Linux. I did the implementation mostly to prove that.
Perhaps it abc should just be removed?
^ permalink raw reply
* Re: [PATCH v2 net-next] tcp: fix ABC in tcp_slow_start()
From: David Miller @ 2012-07-20 18:01 UTC (permalink / raw)
To: ncardwell
Cc: ycheng, eric.dumazet, netdev, therbert, shemminger, johnwheffner,
nanditad
In-Reply-To: <CADVnQymoWQmdtTEv_KOvHbQvC6oC0EsJvhda5oAf7CVithS3Pg@mail.gmail.com>
From: Neal Cardwell <ncardwell@google.com>
Date: Fri, 20 Jul 2012 10:58:27 -0700
> On Fri, Jul 20, 2012 at 8:07 AM, Yuchung Cheng <ycheng@google.com> wrote:
>> On Fri, Jul 20, 2012 at 8:02 AM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
>>> From: Eric Dumazet <edumazet@google.com>
>>>
>>> When/if sysctl_tcp_abc > 1, we expect to increase cwnd by 2 if the
>>> received ACK acknowledges more than 2*MSS bytes, in tcp_slow_start()
>>>
>>> Problem is this RFC 3465 statement is not correctly coded, as
>>> the while () loop increases snd_cwnd one by one.
>>>
>>> Add a new variable to avoid this off-by one error.
>>>
>>> Signed-off-by: Eric Dumazet <edumazet@google.com>
>> Acked-by: Yuchung Cheng <ycheng@google.com>
>
> Acked-by: Neal Cardwell <ncardwell@google.com>
Applied.
^ permalink raw reply
* Re: pull request: wireless-next 2012-07-20
From: David Miller @ 2012-07-20 18:02 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, netdev
In-Reply-To: <20120720172014.GB23254@tuxdriver.com>
From: "John W. Linville" <linville@tuxdriver.com>
Date: Fri, 20 Jul 2012 13:20:15 -0400
> commit 90b90f60c4f8e3a8525dfeb4aec46a9c7a29c857
>
> Dave,
>
> Here is what I hope to be the last non-fix pull request for wireless
> bits going into 3.6. It's mostly normal stuff, including driver
> updates to ath9k, mwifiex, libertas, iwlwifi, and a few other bits.
>
> Also included is a bluetooth pull. Gustavo says:
>
> "This is my last pull towards 3.6, the biggest thing here is
> the new 3-wire UART Bluetooth driver by Johan Hedberg. The
> rest is just fixes and clean ups."
>
> Finally, there is a pull of the wireless tree to pick-up a few minor
> fixes I had queued that were not really worthy for this late in the
> 3.5 cycle.
>
> Please let me know if there are problems!
Pulled, thanks John.
^ permalink raw reply
* Re: pull-request: can-next 2012-07-20
From: David Miller @ 2012-07-20 18:02 UTC (permalink / raw)
To: mkl; +Cc: netdev, linux-can
In-Reply-To: <50098706.2080509@pengutronix.de>
From: Marc Kleine-Budde <mkl@pengutronix.de>
Date: Fri, 20 Jul 2012 18:27:50 +0200
> Hello David,
>
> the fifth pull request for upcoming v3.6 net-next cleans up and
> improves the janz-ican3 driver (6 patches by Ira W. Snyder, one by me).
> A patch by Steffen Trumtrar adds imx53 support to the flexcan driver.
> And another patch by me, which marks the bit timing constant in the CAN
> drivers as "const".
Pulled, thanks Marc.
^ permalink raw reply
* Re: [PATCH v2 net-next] tcp: fix ABC in tcp_slow_start()
From: David Miller @ 2012-07-20 18:02 UTC (permalink / raw)
To: stephen.hemminger
Cc: ncardwell, ycheng, eric.dumazet, netdev, therbert, shemminger,
johnwheffner, nanditad
In-Reply-To: <wwxik81fhb83pkj3alus6j68.1342807303829@email.android.com>
From: Stephen Hemminger <stephen.hemminger@vyatta.com>
Date: Fri, 20 Jul 2012 11:01:43 -0700
> TCP ABC was an experiment that failed. It solves a problem that does
> not exist on Linux. I did the implementation mostly to prove that.
>
> Perhaps it abc should just be removed?
This is my impression as well.
^ permalink raw reply
* Re: [patch net-next 5/6] bond_sysfs: use ream_num_tx_queues rather than params.tx_queue
From: David Miller @ 2012-07-20 18:04 UTC (permalink / raw)
To: bhutchings; +Cc: jiri, netdev, edumazet, shemminger, fubar, andy
In-Reply-To: <1342796580.2678.10.camel@bwh-desktop.uk.solarflarecom.com>
From: Ben Hutchings <bhutchings@solarflare.com>
Date: Fri, 20 Jul 2012 16:03:00 +0100
> Typo in the subject line. :-)
I'll fix this up when I apply it :-)
^ permalink raw reply
* Re: [patch iproute2] iplink: add support for num[tr]xqueues
From: Jiri Pirko @ 2012-07-20 18:08 UTC (permalink / raw)
To: Stephen Hemminger; +Cc: netdev, David Miller, edumazet, shemminger
In-Reply-To: <lh9v01i5y1bg7t9j24kof0f8.1342799538355@email.android.com>
Fri, Jul 20, 2012 at 05:52:18PM CEST, stephen.hemminger@vyatta.com wrote:
>I like the option, but numtxqueue is too verbose for the syntax model
>of iproute. Why not use txq and rxq?
There is "txqueuelen" present already in iplink. I tried to be uniform here.
Isn't "txq" and "rxq" rather too short? And afterall, these parameters
are not supposed to be used on daily basis by anyone :)
Jirka
>
>Sent from my ASUS Pad
>
>Jiri Pirko <jiri@resnulli.us> wrote:
>
>>Signed-off-by: Jiri Pirko <jiri@resnulli.us>
>>---
>> include/linux/if_link.h | 2 ++
>> ip/iplink.c | 20 ++++++++++++++++++++
>> man/man8/ip-link.8.in | 13 +++++++++++++
>> 3 files changed, 35 insertions(+)
>>
>>diff --git a/include/linux/if_link.h b/include/linux/if_link.h
>>index 00e5868..46f03db 100644
>>--- a/include/linux/if_link.h
>>+++ b/include/linux/if_link.h
>>@@ -140,6 +140,8 @@ enum {
>> IFLA_EXT_MASK, /* Extended info mask, VFs, etc */
>> IFLA_PROMISCUITY, /* Promiscuity count: > 0 means acts PROMISC */
>> #define IFLA_PROMISCUITY IFLA_PROMISCUITY
>>+ IFLA_NUM_TX_QUEUES,
>>+ IFLA_NUM_RX_QUEUES,
>> __IFLA_MAX
>> };
>>
>>diff --git a/ip/iplink.c b/ip/iplink.c
>>index 679091e..0baa128 100644
>>--- a/ip/iplink.c
>>+++ b/ip/iplink.c
>>@@ -48,6 +48,8 @@ void iplink_usage(void)
>> fprintf(stderr, " [ address LLADDR ]\n");
>> fprintf(stderr, " [ broadcast LLADDR ]\n");
>> fprintf(stderr, " [ mtu MTU ]\n");
>>+ fprintf(stderr, " [ numtxqueues QUEUE_COUNT ]\n");
>>+ fprintf(stderr, " [ numrxqueues QUEUE_COUNT ]\n");
>> fprintf(stderr, " type TYPE [ ARGS ]\n");
>> fprintf(stderr, " ip link delete DEV type TYPE [ ARGS ]\n");
>> fprintf(stderr, "\n");
>>@@ -279,6 +281,8 @@ int iplink_parse(int argc, char **argv, struct iplink_req *req,
>> int mtu = -1;
>> int netns = -1;
>> int vf = -1;
>>+ int numtxqueues = -1;
>>+ int numrxqueues = -1;
>>
>> *group = -1;
>> ret = argc;
>>@@ -445,6 +449,22 @@ int iplink_parse(int argc, char **argv, struct iplink_req *req,
>> invarg("Invalid operstate\n", *argv);
>>
>> addattr8(&req->n, sizeof(*req), IFLA_OPERSTATE, state);
>>+ } else if (strcmp(*argv, "numtxqueues") == 0) {
>>+ NEXT_ARG();
>>+ if (numtxqueues != -1)
>>+ duparg("numtxqueues", *argv);
>>+ if (get_integer(&numtxqueues, *argv, 0))
>>+ invarg("Invalid \"numtxqueues\" value\n", *argv);
>>+ addattr_l(&req->n, sizeof(*req), IFLA_NUM_TX_QUEUES,
>>+ &numtxqueues, 4);
>>+ } else if (strcmp(*argv, "numrxqueues") == 0) {
>>+ NEXT_ARG();
>>+ if (numrxqueues != -1)
>>+ duparg("numrxqueues", *argv);
>>+ if (get_integer(&numrxqueues, *argv, 0))
>>+ invarg("Invalid \"numrxqueues\" value\n", *argv);
>>+ addattr_l(&req->n, sizeof(*req), IFLA_NUM_RX_QUEUES,
>>+ &numrxqueues, 4);
>> } else {
>> if (strcmp(*argv, "dev") == 0) {
>> NEXT_ARG();
>>diff --git a/man/man8/ip-link.8.in b/man/man8/ip-link.8.in
>>index 9386cc6..8a24e51 100644
>>--- a/man/man8/ip-link.8.in
>>+++ b/man/man8/ip-link.8.in
>>@@ -40,6 +40,11 @@ ip-link \- network device configuration
>> .RB "[ " mtu
>> .IR MTU " ]"
>> .br
>>+.RB "[ " numtxqueues
>>+.IR QUEUE_COUNT " ]"
>>+.RB "[ " numrxqueues
>>+.IR QUEUE_COUNT " ]"
>>+.br
>> .BR type " TYPE"
>> .RI "[ " ARGS " ]"
>>
>>@@ -156,6 +161,14 @@ Link types:
>> - Ethernet Bridge device
>> .in -8
>>
>>+.TP
>>+.BI numtxqueues " QUEUE_COUNT "
>>+specifies the number of transmit queues for new device.
>>+
>>+.TP
>>+.BI numrxqueues " QUEUE_COUNT "
>>+specifies the number of receive queues for new device.
>>+
>> .SS ip link delete - delete virtual link
>> .I DEVICE
>> specifies the virtual device to act operate on.
>>--
>>1.7.10.4
>>
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox