Re: [OpenWrt-Devel] [PATCH v2] [RFC] Add Kernel 3.4 to AR71xx platform.

2012-10-01 Thread Emmanuel Deloget
Hello,

Le 28/09/2012 21:07, Dave Taht a écrit :
 On Fri, Sep 28, 2012 at 02:29:56PM +0200, Oliver wrote:
 On Friday 28 September 2012 14:30:45 Felix Fietkau wrote:
 3.6 is going to be released soon, I think we should go for that once
 we've taken care of branching for release.

 - Felix
 +1 to that.
 +1 to that too. It seems possible this will be a long-term stable release,
 which 3.3 is not.

Unless I failed to understant the -longterm selection process, it will not
(unless someone other than GKH decide to make it a longterm). GKH took 3.4
to make it a -longterm, and he only peek one version per year. I guess the
next -longterm (the one that will replace v3.0) will be v3.8, not v3.6.

  3.0: -longterm support by GKH; released 07/22/2011
  3.2: -longterm support by BH; released 01/05/2012
  3.4: -longterm support by GHK; released 05/22/2012
  3.6: no -longterm support; released 10/01/2012
  3.8: probable -longterm support by GKH, will be released on 08/??/2013
(roughly ; there is a delay of 4-5 month between two subsequent kernel
versions).

Best regards,

-- Emmanuel Deloget

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] [PATCH 6/8] net-next: respect RA messages better

2012-10-01 Thread Dave Täht
From: Dave Taht dave.t...@bufferbloat.net

---
 ...-RTPROT_RA-markup-of-RA-routes-w-nexthops.patch |   55 
 1 file changed, 55 insertions(+)
 create mode 100644 
target/linux/generic/patches-3.3/051-ipv6-fix-RTPROT_RA-markup-of-RA-routes-w-nexthops.patch

diff --git 
a/target/linux/generic/patches-3.3/051-ipv6-fix-RTPROT_RA-markup-of-RA-routes-w-nexthops.patch
 
b/target/linux/generic/patches-3.3/051-ipv6-fix-RTPROT_RA-markup-of-RA-routes-w-nexthops.patch
new file mode 100644
index 000..73b832a
--- /dev/null
+++ 
b/target/linux/generic/patches-3.3/051-ipv6-fix-RTPROT_RA-markup-of-RA-routes-w-nexthops.patch
@@ -0,0 +1,55 @@
+From patchwork Tue Jul 10 14:45:50 2012
+Content-Type: text/plain; charset=utf-8
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: ipv6: fix RTPROT_RA markup of RA routes w/nexthops
+Date: Tue, 10 Jul 2012 04:45:50 -
+From: Denis Ovsienko infrastat...@yandex.ru
+X-Patchwork-Id: 170201
+Message-Id: 20120710184550.7a5a8d89802473b4c28d0...@yandex.ru
+To: net...@vger.kernel.org
+
+From: Denis Ovsienko infrastat...@yandex.ru
+
+Userspace implementations of network routing protocols sometimes need to
+tell RA-originated IPv6 routes from other kernel routes to make proper
+routing decisions. This makes most sense for RA routes with nexthops,
+namely, default routes and Route Information routes.
+
+The intended mean of preserving RA route origin in a netlink message is
+through indicating RTPROT_RA as protocol code. Function rt6_fill_node()
+tried to do that for default routes, but its test condition was taken
+wrong. This change is modeled after the original mailing list posting
+by Jeff Haran. It fixes the test condition for default route case and
+sets the same behaviour for Route Information case (both types use
+nexthops). Handling of the 3rd RA route type, Prefix Information, is
+left unchanged, as it stands for interface connected routes (without
+nexthops).
+
+Signed-off-by: Denis Ovsienko infrastat...@yandex.ru
+
+---
+net/ipv6/route.c |   10 ++
+ 1 files changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/net/ipv6/route.c b/net/ipv6/route.c
+index 999a982..238b1ee 100644
+--- a/net/ipv6/route.c
 b/net/ipv6/route.c
+@@ -2440,10 +2440,12 @@ static int rt6_fill_node(struct net *net,
+   rtm-rtm_protocol = rt-rt6i_protocol;
+   if (rt-rt6i_flags  RTF_DYNAMIC)
+   rtm-rtm_protocol = RTPROT_REDIRECT;
+-  else if (rt-rt6i_flags  RTF_ADDRCONF)
+-  rtm-rtm_protocol = RTPROT_KERNEL;
+-  else if (rt-rt6i_flags  RTF_DEFAULT)
+-  rtm-rtm_protocol = RTPROT_RA;
++  else if (rt-rt6i_flags  RTF_ADDRCONF) {
++  if (rt-rt6i_flags  (RTF_DEFAULT | RTF_ROUTEINFO))
++  rtm-rtm_protocol = RTPROT_RA;
++  else
++  rtm-rtm_protocol = RTPROT_KERNEL;
++  }
+ 
+   if (rt-rt6i_flags  RTF_CACHE)
+   rtm-rtm_flags |= RTM_F_CLONED;
-- 
1.7.9.5

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] [PATCH 2/8] fq_codel: dont reinit flow state

2012-10-01 Thread Dave Täht
From: Dave Taht dave.t...@bufferbloat.net

Keep fq_codel flow state around after queue empty.
---
 .../052-fq_codel-dont-reinit-flow-state.patch  |   41 
 1 file changed, 41 insertions(+)
 create mode 100644 
target/linux/generic/patches-3.3/052-fq_codel-dont-reinit-flow-state.patch

diff --git 
a/target/linux/generic/patches-3.3/052-fq_codel-dont-reinit-flow-state.patch 
b/target/linux/generic/patches-3.3/052-fq_codel-dont-reinit-flow-state.patch
new file mode 100644
index 000..2e6b219
--- /dev/null
+++ b/target/linux/generic/patches-3.3/052-fq_codel-dont-reinit-flow-state.patch
@@ -0,0 +1,41 @@
+From b379135c40163ae79ba7a54e6928b53983e74ee8 Mon Sep 17 00:00:00 2001
+From: Eric Dumazet eric.duma...@gmail.com
+Date: Sat, 1 Sep 2012 03:19:57 +
+Subject: [PATCH 307/558] fq_codel: dont reinit flow state
+
+When fq_codel builds a new flow, it should not reset codel state.
+
+Codel algo needs to get previous values (lastcount, drop_next) to get
+proper behavior.
+
+Signed-off-by: Dave Taht dave.t...@gmail.com
+Signed-off-by: Eric Dumazet eduma...@google.com
+Acked-by: Dave Taht dave.t...@bufferbloat.net
+Signed-off-by: David S. Miller da...@davemloft.net
+---
+ net/sched/sch_fq_codel.c |2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/net/sched/sch_fq_codel.c b/net/sched/sch_fq_codel.c
+index 9fc1c62..4e606fc 100644
+--- a/net/sched/sch_fq_codel.c
 b/net/sched/sch_fq_codel.c
+@@ -191,7 +191,6 @@ static int fq_codel_enqueue(struct sk_buff *skb, struct 
Qdisc *sch)
+ 
+   if (list_empty(flow-flowchain)) {
+   list_add_tail(flow-flowchain, q-new_flows);
+-  codel_vars_init(flow-cvars);
+   q-new_flow_count++;
+   flow-deficit = q-quantum;
+   flow-dropped = 0;
+@@ -418,6 +417,7 @@ static int fq_codel_init(struct Qdisc *sch, struct nlattr 
*opt)
+   struct fq_codel_flow *flow = q-flows + i;
+ 
+   INIT_LIST_HEAD(flow-flowchain);
++  codel_vars_init(flow-cvars);
+   }
+   }
+   if (sch-limit = 1)
+-- 
+1.7.9.5
+
-- 
1.7.9.5

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] [PATCH 4/8] fq_codel: dont remove dropped statistic on empty queue

2012-10-01 Thread Dave Täht
From: Dave Taht dave.t...@bufferbloat.net

dropped statistic is useful if retained.
---
 ...56-fq_codel-dont-remove-dropped-statistic.patch |   24 
 1 file changed, 24 insertions(+)
 create mode 100644 
target/linux/generic/patches-3.3/056-fq_codel-dont-remove-dropped-statistic.patch

diff --git 
a/target/linux/generic/patches-3.3/056-fq_codel-dont-remove-dropped-statistic.patch
 
b/target/linux/generic/patches-3.3/056-fq_codel-dont-remove-dropped-statistic.patch
new file mode 100644
index 000..4491a67
--- /dev/null
+++ 
b/target/linux/generic/patches-3.3/056-fq_codel-dont-remove-dropped-statistic.patch
@@ -0,0 +1,24 @@
+From 0bca85ea6c06392e4ca04ebd7270cb567d8ebfb4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Dave=20T=C3=A4ht?= dave.t...@bufferbloat.net
+Date: Mon, 17 Sep 2012 18:03:15 -0700
+Subject: [PATCH 710/712] fq_codel: dont remove dropped statistic
+
+---
+ net/sched/sch_fq_codel.c |1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/net/sched/sch_fq_codel.c b/net/sched/sch_fq_codel.c
+index 4e606fc..ba944bd 100644
+--- a/net/sched/sch_fq_codel.c
 b/net/sched/sch_fq_codel.c
+@@ -193,7 +193,6 @@ static int fq_codel_enqueue(struct sk_buff *skb, struct 
Qdisc *sch)
+   list_add_tail(flow-flowchain, q-new_flows);
+   q-new_flow_count++;
+   flow-deficit = q-quantum;
+-  flow-dropped = 0;
+   }
+   if (++sch-q.qlen  sch-limit)
+   return NET_XMIT_SUCCESS;
+-- 
+1.7.9.5
+
-- 
1.7.9.5

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] Multiple patches Best of Cerowrt

2012-10-01 Thread Dave Täht
The patch set following is the Best of what is in cerowrt.
Of these, the only patch that I think is crucial to the openwrt
freeze is the qos-scripts one...

... and it could use a bit more work!

The remainder have been in cero for a while, and could at the
very least, use some eyeballs on them. The reduce_truesize
patches were suggested by Eric Dumazet, in particular, and
help on multiple SSIDs and larger txqueuelens.

(A core difference
between cero and current openwrt, is that openwrt runs with
a txqueuelen of 30 pfifo_fast, and cero runs fq_codel on everything
with a packet limit of 1000)


___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] [PATCH 5/8] Reduce skb truesize on common qdiscs under load

2012-10-01 Thread Dave Täht
From: Dave Taht dave.t...@bufferbloat.net

After queue lengths start getting out of hand, try to preserve memory
by shortening skbs to their truesize on the common pfifo, codel, and
fq_codel qdiscs.

Arguably (128) should be a configureable param
---
 ..._reduce_truesize-support-to-common-qdiscs.patch |   73 
 1 file changed, 73 insertions(+)
 create mode 100644 
target/linux/generic/patches-3.3/057-net-add-skb_reduce_truesize-support-to-common-qdiscs.patch

diff --git 
a/target/linux/generic/patches-3.3/057-net-add-skb_reduce_truesize-support-to-common-qdiscs.patch
 
b/target/linux/generic/patches-3.3/057-net-add-skb_reduce_truesize-support-to-common-qdiscs.patch
new file mode 100644
index 000..d80e4ac
--- /dev/null
+++ 
b/target/linux/generic/patches-3.3/057-net-add-skb_reduce_truesize-support-to-common-qdiscs.patch
@@ -0,0 +1,73 @@
+From 341cca736cb9a991069d6ad4f819241161936f47 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Dave=20T=C3=A4ht?= dave.t...@bufferbloat.net
+Date: Mon, 17 Sep 2012 19:20:22 -0700
+Subject: [PATCH 711/712] net: add skb_reduce_truesize support to common
+ qdiscs
+
+Reduce skb size under load when queues begin to fill on the
+common qdiscs.
+---
+ net/sched/sch_codel.c|2 ++
+ net/sched/sch_fifo.c |   12 
+ net/sched/sch_fq_codel.c |2 ++
+ 3 files changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/net/sched/sch_codel.c b/net/sched/sch_codel.c
+index 2f9ab17..12d9363c 100644
+--- a/net/sched/sch_codel.c
 b/net/sched/sch_codel.c
+@@ -96,6 +96,8 @@ static int codel_qdisc_enqueue(struct sk_buff *skb, struct 
Qdisc *sch)
+   struct codel_sched_data *q;
+ 
+   if (likely(qdisc_qlen(sch)  sch-limit)) {
++  if(qdisc_qlen(sch)  128)
++  skb = skb_reduce_truesize(skb);
+   codel_set_enqueue_time(skb);
+   return qdisc_enqueue_tail(skb, sch);
+   }
+diff --git a/net/sched/sch_fifo.c b/net/sched/sch_fifo.c
+index 66effe2..2031a3e 100644
+--- a/net/sched/sch_fifo.c
 b/net/sched/sch_fifo.c
+@@ -29,17 +29,21 @@ static int bfifo_enqueue(struct sk_buff *skb, struct Qdisc 
*sch)
+ 
+ static int pfifo_enqueue(struct sk_buff *skb, struct Qdisc *sch)
+ {
+-  if (likely(skb_queue_len(sch-q)  sch-limit))
++  if (likely(skb_queue_len(sch-q)  sch-limit)) {
++  if (skb_queue_len(sch-q)  128)
++  skb = skb_reduce_truesize(skb);
+   return qdisc_enqueue_tail(skb, sch);
+-
++  }
+   return qdisc_reshape_fail(skb, sch);
+ }
+ 
+ static int pfifo_tail_enqueue(struct sk_buff *skb, struct Qdisc *sch)
+ {
+-  if (likely(skb_queue_len(sch-q)  sch-limit))
++  if (likely(skb_queue_len(sch-q)  sch-limit)) {
++  if (skb_queue_len(sch-q)  128)
++  skb = skb_reduce_truesize(skb);
+   return qdisc_enqueue_tail(skb, sch);
+-
++  }
+   /* queue full, remove one skb to fulfill the limit */
+   __qdisc_queue_drop_head(sch, sch-q);
+   sch-qstats.drops++;
+diff --git a/net/sched/sch_fq_codel.c b/net/sched/sch_fq_codel.c
+index ba944bd..136d2bc 100644
+--- a/net/sched/sch_fq_codel.c
 b/net/sched/sch_fq_codel.c
+@@ -182,6 +182,8 @@ static int fq_codel_enqueue(struct sk_buff *skb, struct 
Qdisc *sch)
+   return ret;
+   }
+   idx--;
++  if (sch-q.qlen  128)
++  skb = skb_reduce_truesize(skb);
+ 
+   codel_set_enqueue_time(skb);
+   flow = q-flows[idx];
+-- 
+1.7.9.5
+
-- 
1.7.9.5

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] [PATCH 7/8] mac80211: add full diffserv support to wireless

2012-10-01 Thread Dave Täht
From: Dave Taht dave.t...@bufferbloat.net

This moves all but EF marked traffic out of the VO queue,
allowing for aggregation of other forms of traffic.

It more aggressively uses the VI queue for interactive-ish
traffic.
---
 ...901-Add-full-diffserv-support-to-wireless.patch |  126 
 1 file changed, 126 insertions(+)
 create mode 100644 
package/mac80211/patches/901-Add-full-diffserv-support-to-wireless.patch

diff --git 
a/package/mac80211/patches/901-Add-full-diffserv-support-to-wireless.patch 
b/package/mac80211/patches/901-Add-full-diffserv-support-to-wireless.patch
new file mode 100644
index 000..7c19e05
--- /dev/null
+++ b/package/mac80211/patches/901-Add-full-diffserv-support-to-wireless.patch
@@ -0,0 +1,126 @@
+From 12b7c8b3cb5750f58e560076b93d3a0af1d70e09 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Dave=20T=C3=A4ht?= dave.t...@bufferbloat.net
+Date: Sun, 8 Jul 2012 14:38:32 -0400
+Subject: [PATCH] Add full diffserv support to wireless
+
+The previous dscp scheme in linux wireless only respected the topmost
+3 diffserv priority bits (e.g. CS0 through CS7). This patch respects
+all the diffserv bits and all the old-style tos bits that make sense.
+
+It moves all but EF marked traffic out of the VO queue, where CS6 and
+CS7 have been going.
+
+The imm bit (set by ssh) now moves to VI
+Background goes to BK
+Most other (obsolete) options move into VI, notably CS6 and CS7 traffic.
+
+Sort of in keeping with the 802.1q spirit, but not along the actual
+performance of 802.1q, the queues are marked with the range 0-7.
+---
+ net/wireless/util.c |   73 +--
+ 1 file changed, 71 insertions(+), 2 deletions(-)
+
+diff --git a/net/wireless/util.c b/net/wireless/util.c
+index 316cfd0..304a6c7 100644
+--- a/net/wireless/util.c
 b/net/wireless/util.c
+@@ -12,6 +12,8 @@
+ #include net/dsfield.h
+ #include core.h
+ 
++/* VI, VO, BE, BK */
++
+ struct ieee80211_rate *
+ ieee80211_get_response_rate(struct ieee80211_supported_band *sband,
+   u32 basic_rates, int bitrate)
+@@ -635,10 +637,77 @@ void ieee80211_amsdu_to_8023s(struct sk_buff *skb, 
struct sk_buff_head *list,
+ }
+ EXPORT_SYMBOL(ieee80211_amsdu_to_8023s);
+ 
++static u8 dscp_table[] = {
++   0, /* BE = 0x0 */
++   0, /* Max-Reliability = 0x1 */
++   3, /* Max-Throughput = 0x2 */
++   0, /* 0x3 Undefined */
++   5, /* Min-Delay = 0x4 */
++   0, /* 0x5 Undefined */
++   0, /* 0x6 Undefined */
++   0, /* 0x7 Undefined */
++   1, /* CS1 = 0x8 */
++   0, /* 0x9 Undefined */
++   3, /* AF11 = 0xa */
++   0, /* 0xb Undefined */
++   3, /* AF12 = 0xc */
++   0, /* 0xd Undefined */
++   3, /* AF13 = 0xe */
++   0, /* 0xf Undefined */
++   2, /* CS2 = 0x10 */
++   0, /* 0x11 Undefined */
++   3, /* AF21 = 0x12 */
++   0, /* 0x13 Undefined */
++   3, /* AF22 = 0x14 */
++   0, /* 0x15 Undefined */
++   3, /* AF23 = 0x16 */
++   0, /* 0x17 Undefined */
++   4, /* CS3 = 0x18 */
++   0, /* 0x19 Undefined */
++   3, /* AF31 = 0x1a */
++   0, /* 0x1b Undefined */
++   3, /* AF32 = 0x1c */
++   0, /* 0x1d Undefined */
++   3, /* AF33 = 0x1e */
++   0, /* 0x1f Undefined */
++   5, /* CS4 = 0x20 */
++   0, /* 0x21 Undefined */
++   5, /* AF41 = 0x22 */
++   0, /* 0x23 Undefined */
++   5, /* AF42 = 0x24 */
++   0, /* 0x25 Undefined */
++   4, /* AF43 = 0x26 */
++   0, /* 0x27 Undefined */
++   5, /* CS5 = 0x28 */
++   0, /* 0x29 Undefined */
++   0, /* 0x2a Undefined */
++   0, /* 0x2b Undefined */
++   4, /* VA = 0x2c */
++   0, /* 0x2d Undefined */
++   6, /* EF = 0x2e */
++   0, /* 0x2f Undefined */
++   5, /* CS6 = 0x30 */
++   0, /* 0x31 Undefined */
++   0, /* 0x32 Undefined */
++   0, /* 0x33 Undefined */
++   0, /* 0x34 Undefined */
++   0, /* 0x35 Undefined */
++   0, /* 0x36 Undefined */
++   0, /* 0x37 Undefined */
++   5, /* CS7 = 0x38 */
++   0, /* 0x39 Undefined */
++   0, /* 0x3a Undefined */
++   0, /* 0x3b Undefined */
++   0, /* 0x3c Undefined */
++   0, /* 0x3d Undefined */
++   0, /* 0x3e Undefined */
++   0, /* 0x3f Undefined */
++};
++
+ /* Given a data frame determine the 802.1p/1d tag to use. */
+ unsigned int cfg80211_classify8021d(struct sk_buff *skb)
+ {
+-  unsigned int dscp;
++  unsigned char dscp;
+ 
+   /* skb-priority values from 256-263 are magic values to
+* directly indicate a specific 802.1d priority.  This is used
+@@ -659,7 +728,7 @@ unsigned int cfg80211_classify8021d(struct sk_buff *skb)
+   return 0;
+   }
+ 
+-  return dscp  5;
++  return (dscp_table[dscp2]);
+ }
+ EXPORT_SYMBOL(cfg80211_classify8021d);
+ 
+-- 
+1.7.9.5
+
-- 
1.7.9.5

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org

[OpenWrt-Devel] [PATCH 1/8] net-next: dont delay acks after ECN CE

2012-10-01 Thread Dave Täht
From: Dave Taht dave.t...@bufferbloat.net

Bugfix from linux head - don't delay acks from ECN congestion
experienced in some situations.
---
 ...net-next-tcp-ecn-dont-delay-ACKS-after-CE.patch |   63 
 1 file changed, 63 insertions(+)
 create mode 100644 
target/linux/generic/patches-3.3/050-net-next-tcp-ecn-dont-delay-ACKS-after-CE.patch

diff --git 
a/target/linux/generic/patches-3.3/050-net-next-tcp-ecn-dont-delay-ACKS-after-CE.patch
 
b/target/linux/generic/patches-3.3/050-net-next-tcp-ecn-dont-delay-ACKS-after-CE.patch
new file mode 100644
index 000..547e4fa
--- /dev/null
+++ 
b/target/linux/generic/patches-3.3/050-net-next-tcp-ecn-dont-delay-ACKS-after-CE.patch
@@ -0,0 +1,63 @@
+From patchwork Mon Aug  6 21:04:43 2012
+Content-Type: text/plain; charset=utf-8
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [net-next] tcp: ecn: dont delay ACKS after CE
+Date: Mon, 06 Aug 2012 11:04:43 -
+From: Eric Dumazet eric.duma...@gmail.com
+X-Patchwork-Id: 175453
+Message-Id: 1344287083.26674.83.camel@edumazet-glaptop
+To: David Miller da...@davemloft.net
+Cc: netdev net...@vger.kernel.org,
+   Neal Cardwell ncardw...@google.com
+
+From: Eric Dumazet eduma...@google.com
+
+While playing with CoDel and ECN marking, I discovered a
+non optimal behavior of receiver of CE (Congestion Encountered)
+segments.
+
+In pathological cases, sender has reduced its cwnd to low values,
+and receiver delays its ACK (by 40 ms).
+
+While RFC 3168 6.1.3 (The TCP Receiver) doesn't explicitly recommend
+to send immediate ACKS, we believe its better to not delay ACKS, because
+a CE segment should give same signal than a dropped segment, and its
+quite important to reduce RTT to give ECE/CWR signals as fast as
+possible.
+
+Note we already call tcp_enter_quickack_mode() from TCP_ECN_check_ce()
+if we receive a retransmit, for the same reason.
+
+Signed-off-by: Eric Dumazet eduma...@google.com
+Cc: Neal Cardwell ncardw...@google.com
+Acked-by: Neal Cardwell ncardw...@google.com
+
+---
+net/ipv4/tcp_input.c |6 +-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+
+
+--
+To unsubscribe from this list: send the line unsubscribe netdev in
+the body of a message to majord...@vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+
+diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
+index 2fd2bc9..fa2c2c2 100644
+--- a/net/ipv4/tcp_input.c
 b/net/ipv4/tcp_input.c
+@@ -237,7 +237,11 @@ static inline void TCP_ECN_check_ce(struct tcp_sock *tp, 
const struct sk_buff *s
+   tcp_enter_quickack_mode((struct sock *)tp);
+   break;
+   case INET_ECN_CE:
+-  tp-ecn_flags |= TCP_ECN_DEMAND_CWR;
++  if (!(tp-ecn_flags  TCP_ECN_DEMAND_CWR)) {
++  /* Better not delay acks, sender can have a very low 
cwnd */
++  tcp_enter_quickack_mode((struct sock *)tp);
++  tp-ecn_flags |= TCP_ECN_DEMAND_CWR;
++  }
+   /* fallinto */
+   default:
+   tp-ecn_flags |= TCP_ECN_SEEN;
-- 
1.7.9.5

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] [PATCH 3/8] net: add skb_reduce_truesize to reduce skbs when needed

2012-10-01 Thread Dave Täht
From: Dave Taht dave.t...@bufferbloat.net

skb_reduce_truesize is an inline function to reduce large skbs
when needed.

The API may change before inclusion with Linux 3.7...
---
 .../054-net-add-skb_reduce_truesize.patch  |   45 
 1 file changed, 45 insertions(+)
 create mode 100644 
target/linux/generic/patches-3.3/054-net-add-skb_reduce_truesize.patch

diff --git 
a/target/linux/generic/patches-3.3/054-net-add-skb_reduce_truesize.patch 
b/target/linux/generic/patches-3.3/054-net-add-skb_reduce_truesize.patch
new file mode 100644
index 000..73d0270
--- /dev/null
+++ b/target/linux/generic/patches-3.3/054-net-add-skb_reduce_truesize.patch
@@ -0,0 +1,45 @@
+From 7cdeef22fb3164bbb52d9fcec9186c6eda877eef Mon Sep 17 00:00:00 2001
+From: Dave Taht dave.t...@bufferbloat.net
+Date: Mon, 27 Aug 2012 10:55:45 -0700
+Subject: [PATCH 2/4] net: add skb_reduce_truesize
+
+skb_reduce_truesize is a helper function for shrinking skbs whenever
+needed.
+---
+ include/linux/skbuff.h |   21 +
+ 1 file changed, 21 insertions(+)
+
+diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
+index 42854ce..38f7bb8 100644
+--- a/include/linux/skbuff.h
 b/include/linux/skbuff.h
+@@ -2531,5 +2531,26 @@ static inline bool skb_is_recycleable(const struct 
sk_buff *skb, int skb_size)
+ 
+   return true;
+ }
++
++/*
++ * Caller wants to reduce memory needs before queueing skb
++ * The (expensive) copy should not be be done in fast path.
++ */
++
++static inline struct sk_buff *skb_reduce_truesize(struct sk_buff *skb)
++{
++   if (skb-truesize  2 * SKB_TRUESIZE(skb-len)) {
++   struct sk_buff *nskb;
++
++   nskb = skb_copy_expand(skb, skb_headroom(skb), 0,
++  GFP_ATOMIC | __GFP_NOWARN);
++   if (nskb) {
++   __kfree_skb(skb);
++   skb = nskb;
++   }
++   }
++   return skb;
++}
++
+ #endif/* __KERNEL__ */
+ #endif/* _LINUX_SKBUFF_H */
+-- 
+1.7.9.5
+
-- 
1.7.9.5

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] [PATCH] [usb] Add support for new Option modules

2012-10-01 Thread Tim Harvey

Add support for new Option modules (GTM66xxWFS/GTM67xxWFS)

Add new device ID's for the hso driver as well as usb storage
 
Signed-off-by: Tim Harvey thar...@gateworks.com

 target/linux/generic/patches-3.3/060-hso_devices.patch |   36 +
 1 file changed, 36 insertions(+)

Index: trunk/target/linux/generic/patches-3.3/060-hso_devices.patch
===
--- trunk/target/linux/generic/patches-3.3/060-hso_devices.patch
(revision 0)
+++ trunk/target/linux/generic/patches-3.3/060-hso_devices.patch
(working copy)
@@ -0,0 +1,36 @@
+--- a/drivers/net/usb/hso.c
 b/drivers/net/usb/hso.c
+@@ -476,8 +476,10 @@ static const struct usb_device_id hso_id
+   {USB_DEVICE(0x0af0, 0x8400)},
+   {USB_DEVICE(0x0af0, 0x8600)},
+   {USB_DEVICE(0x0af0, 0x8800)},
+-  {USB_DEVICE(0x0af0, 0x8900)},
+-  {USB_DEVICE(0x0af0, 0x9000)},
++  {USB_DEVICE(0x0af0, 0x8900)},  /* GTM 67xx */
++  {USB_DEVICE(0x0af0, 0x9000)},  /* GTM 66xx */
++  {USB_DEVICE(0x0af0, 0x9200)},  /* GTM 67xxWFS */
++  {USB_DEVICE(0x0af0, 0x9300)},  /* GTM 66xxWFS */
+   {USB_DEVICE(0x0af0, 0xd035)},
+   {USB_DEVICE(0x0af0, 0xd055)},
+   {USB_DEVICE(0x0af0, 0xd155)},
+--- a/drivers/usb/storage/unusual_devs.h
 b/drivers/usb/storage/unusual_devs.h
+@@ -1231,6 +1231,18 @@ UNUSUAL_DEV( 0x0af0, 0x8304, 0x, 0x0
+   USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+   0 ),
+ 
++UNUSUAL_DEV( 0x0af0, 0x9200, 0x, 0x,
++  Option,
++  Globetrotter 67xxWFS SD-Card,
++  USB_SC_DEVICE, USB_PR_DEVICE, NULL,
++  0 ),
++
++UNUSUAL_DEV( 0x0af0, 0x9300, 0x, 0x,
++  Option,
++  Globetrotter 66xxWFS SD-Card,
++  USB_SC_DEVICE, USB_PR_DEVICE, NULL,
++  0 ),
++
+ UNUSUAL_DEV( 0x0af0, 0xc100, 0x, 0x,
+   Option,
+   GI 070x SD-Card,
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] [PATCH 5/8] Reduce skb truesize on common qdiscs under load

2012-10-01 Thread Felix Fietkau
On 2012-10-01 6:49 PM, Dave Täht wrote:
 From: Dave Taht dave.t...@bufferbloat.net
 
 After queue lengths start getting out of hand, try to preserve memory
 by shortening skbs to their truesize on the common pfifo, codel, and
 fq_codel qdiscs.
 
 Arguably (128) should be a configureable param
I think this is a bad idea, at least on routers. 'Preserving memory'
here involves copying buffer data, which is really horrible for
performance. The memory bus is a tough bottleneck when routing at high
speed...

- Felix

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] [PATCH 7/8] mac80211: add full diffserv support to wireless

2012-10-01 Thread Felix Fietkau
On 2012-10-01 6:49 PM, Dave Täht wrote:
 From: Dave Taht dave.t...@bufferbloat.net
 
 This moves all but EF marked traffic out of the VO queue,
 allowing for aggregation of other forms of traffic.
 
 It more aggressively uses the VI queue for interactive-ish
 traffic.
Please propose this for upstream inclusion on linux-wireless@. I'd like
to see the feedback there before I consider merging it to OpenWrt.

- Felix
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] [PATCH] [video] gspca: JPEG improvements for sn9c20x

2012-10-01 Thread Tim Harvey

SN9C20x/GSPCA JPEG improvements

This increases the JPEG buffersize and adds JPEG quality set/get methods.
The largest framesize I've encountered was 230KB resulting from quality=95
(and a complex/blury image).  This also fixes a bug in the mode selection.

Signed-off-by: Tim Harvey thar...@gateworks.com

 target/linux/generic/patches-3.3/065-gspca_bufsize.patch |  144 +++
 1 file changed, 144 insertions(+)

Index: trunk/target/linux/generic/patches-3.3/065-gspca_bufsize.patch
===
--- trunk/target/linux/generic/patches-3.3/065-gspca_bufsize.patch  
(revision 0)
+++ trunk/target/linux/generic/patches-3.3/065-gspca_bufsize.patch  
(working copy)
@@ -0,0 +1,144 @@
+--- a/drivers/media/video/gspca/gspca.c
 b/drivers/media/video/gspca/gspca.c
+@@ -1044,11 +1044,13 @@ static int gspca_get_mode(struct gspca_d
+   == pixfmt)
+   return modeD;
+   }
++/*
+   if (++modeU  gspca_dev-cam.nmodes) {
+   if (gspca_dev-cam.cam_mode[modeU].pixelformat
+   == pixfmt)
+   return modeU;
+   }
++*/
+   }
+   return -EINVAL;
+ }
+--- a/drivers/media/video/gspca/sn9c20x.c
 b/drivers/media/video/gspca/sn9c20x.c
+@@ -35,6 +35,14 @@ MODULE_LICENSE(GPL);
+ 
+ #define MODULE_NAME sn9c20x
+ 
++#define QUALITY_MIN 20
++#define QUALITY_DEF 85
++#define QUALITY_MAX 95
++
++static int jpeg_quality = QUALITY_DEF;
++module_param(jpeg_quality, int, 0644);
++MODULE_PARM_DESC(jpeg_quality, JPEG Quality);
++
+ /*
+  * Pixel format private data
+  */
+@@ -363,7 +371,7 @@ static const struct ctrl sd_ctrls[] = {
+ static const struct v4l2_pix_format vga_mode[] = {
+   {160, 120, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
+   .bytesperline = 160,
+-  .sizeimage = 160 * 120 * 4 / 8 + 590,
++  .sizeimage = 160 * 120 * 7 / 8 + 590,
+   .colorspace = V4L2_COLORSPACE_JPEG,
+   .priv = SCALE_160x120 | MODE_JPEG},
+   {160, 120, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE,
+@@ -378,7 +386,7 @@ static const struct v4l2_pix_format vga_
+   .priv = SCALE_160x120},
+   {320, 240, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
+   .bytesperline = 320,
+-  .sizeimage = 320 * 240 * 4 / 8 + 590,
++  .sizeimage = 320 * 240 * 7 / 8 + 590,
+   .colorspace = V4L2_COLORSPACE_JPEG,
+   .priv = SCALE_320x240 | MODE_JPEG},
+   {320, 240, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE,
+@@ -393,7 +401,7 @@ static const struct v4l2_pix_format vga_
+   .priv = SCALE_320x240},
+   {640, 480, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
+   .bytesperline = 640,
+-  .sizeimage = 640 * 480 * 4 / 8 + 590,
++  .sizeimage = 640 * 480 * 7 / 8 + 590,
+   .colorspace = V4L2_COLORSPACE_JPEG,
+   .priv = SCALE_640x480 | MODE_JPEG},
+   {640, 480, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE,
+@@ -411,7 +419,7 @@ static const struct v4l2_pix_format vga_
+ static const struct v4l2_pix_format sxga_mode[] = {
+   {160, 120, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
+   .bytesperline = 160,
+-  .sizeimage = 160 * 120 * 4 / 8 + 590,
++  .sizeimage = 160 * 120 * 7 / 8 + 590,
+   .colorspace = V4L2_COLORSPACE_JPEG,
+   .priv = SCALE_160x120 | MODE_JPEG},
+   {160, 120, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE,
+@@ -426,7 +434,7 @@ static const struct v4l2_pix_format sxga
+   .priv = SCALE_160x120},
+   {320, 240, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
+   .bytesperline = 320,
+-  .sizeimage = 320 * 240 * 4 / 8 + 590,
++  .sizeimage = 320 * 240 * 7 / 8 + 590,
+   .colorspace = V4L2_COLORSPACE_JPEG,
+   .priv = SCALE_320x240 | MODE_JPEG},
+   {320, 240, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE,
+@@ -441,7 +449,7 @@ static const struct v4l2_pix_format sxga
+   .priv = SCALE_320x240},
+   {640, 480, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
+   .bytesperline = 640,
+-  .sizeimage = 640 * 480 * 4 / 8 + 590,
++  .sizeimage = 640 * 480 * 7 / 8 + 590,
+   .colorspace = V4L2_COLORSPACE_JPEG,
+   .priv = SCALE_640x480 | MODE_JPEG},
+   {640, 480, V4L2_PIX_FMT_SBGGR8, V4L2_FIELD_NONE,
+@@ -2090,7 +2098,7 @@ static int sd_config(struct gspca_dev *g
+   sd-gain = GAIN_DEFAULT;
+   sd-auto_exposure = AUTO_EXPOSURE_DEFAULT;
+ 
+-  sd-quality = 95;
++  sd-quality = jpeg_quality;
+ 
+   return 0;
+ }
+@@ -2503,6 +2511,38 @@ static void sd_pkt_scan(struct gspca_dev
+   }
+ }
+ 
++static int sd_set_jcomp(struct gspca_dev *gspca_dev,
++  struct v4l2_jpegcompression 

Re: [OpenWrt-Devel] [PATCH] [video] gspca: JPEG improvements for sn9c20x

2012-10-01 Thread John Crispin

On 01/10/12 19:50, Tim Harvey wrote:


SN9C20x/GSPCA JPEG improvements

This increases the JPEG buffersize and adds JPEG quality set/get methods.
The largest framesize I've encountered was 230KB resulting from quality=95
(and a complex/blury image).  This also fixes a bug in the mode selection.

Signed-off-by: Tim Harveythar...@gateworks.com


Hi

did yu also send this patch upstream to the v4l2 guys ?

John
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] [PATCH 7/8] mac80211: add full diffserv support to wireless

2012-10-01 Thread Dave Taht
On Mon, Oct 01, 2012 at 07:28:11PM +0200, Felix Fietkau wrote:
 On 2012-10-01 6:49 PM, Dave Täht wrote:
  From: Dave Taht dave.t...@bufferbloat.net
  
  This moves all but EF marked traffic out of the VO queue,
  allowing for aggregation of other forms of traffic.
  
  It more aggressively uses the VI queue for interactive-ish
  traffic.
 Please propose this for upstream inclusion on linux-wireless@. I'd like
 to see the feedback there before I consider merging it to OpenWrt.

OK. Honestly I wanted feedback from openwrt first because this patch
originally exposed several problems in the VI queue handling on the ath9k,
and I suspect that other chipsets (like iwl) have hidden problems in VI
queue handling as well.

 
 - Felix
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] [PATCH 5/8] Reduce skb truesize on common qdiscs under load

2012-10-01 Thread Dave Taht
On Mon, Oct 01, 2012 at 10:44:56AM -0700, Sebastian Moeller wrote:
 Hi Felix,
 
 
 On Oct 1, 2012, at 10:26 , Felix Fietkau wrote:
 
  On 2012-10-01 6:49 PM, Dave Täht wrote:
  From: Dave Taht dave.t...@bufferbloat.net
  
  After queue lengths start getting out of hand, try to preserve memory
  by shortening skbs to their truesize on the common pfifo, codel, and
  fq_codel qdiscs.
  
  Arguably (128) should be a configureable param
  I think this is a bad idea, at least on routers. 'Preserving memory'
  here involves copying buffer data, which is really horrible for
  performance. The memory bus is a tough bottleneck when routing at high
  speed…
 
   But the in severe situations the alternative is OOM - watchdog based 
 reboot; under these circumstances limping along and recover later once the 
 memory pressure is over sounds better than rebooting? (At least in cerowrt 
 the OOM reboot cycle could be easily initiated by a simple UDP flood through 
 the router. Now, while this is abusive, it is way better if the router 
 survives this and recovers with out a reboot, IMHO). This change along with a 
 few others Dave made turned cerowrt robust against UDP flooding which I think 
 is the right thing to do. Since this only triggers once memory gets scarce, 
 think of this as a defense mechanism in a situation where performance will 
 suffer anyway...
 
 best
   Sebastian

As I noted, openwrt's workaround of a txqueuelen of 30 on wifi means this 
check will never be hit. It also means that fq_codel can't be applied at
all to the openwrt wifi queues, as 30 is not deep enough to do any good.

(cerowrt is presently using a latency/bandwidth compromise of a shortened
 driver queue and a longer fq_codel based txqueue - and we're painfully 
aware that far more work is needed to make wireless-n stop being so
darn bloated and unresponsive: 

http://www.bufferbloat.net/projects/cerowrt/wiki/Fq_Codel_on_Wireless )

So, it IS possible to run a box with tons of SSIDs easily out of memory
with the larger txqueuelens cero is using, and this patch helped that.

Other devices (such as ethernet and qos'd devices)
have longer queues by default, where this memory saving optimization
*might* help

It would be interesting if more folk would abuse their openwrt routers
heavily using the current (2.6) version of netperf, to fully exercise
the 4 hardware wifi queues, or the multiple qos queues. 

Tests like this showed up a hw queue bug in ath9k (long since
fixed) and appears to mess up iwl (on a laptop) somewhat, and it would
be good to blow up more drivers and devices... in addition to running
older versions of openwrt out of memory.

What I typically do is a bunch of udp flooding and tcp flooding,
along the lines of this, using the netperf 2.6 distro, and exercising
each hw queue thusly. 

# netserver runs here
SERVER1=somewhere
SERVER2=somewhere.else

DUR=120

# on clients connected through the router via
# wifi, etc

(
# Flood BE with tcp in both directions
netperf -l$DIR -H$SERVER1 -tTCP_MAERTS 
netperf -l$DIR -H$SERVER2 -tTCP_MAERTS 
netperf -l$DIR -H$SERVER1 -tTCP_STREAM 
netperf -l$DIR -H$SERVER2 -tTCP_STREAM 
# Beat up on the BK, BE, VO, VI hw queues
netperf -l$DIR -Y CS1,CS1 -H$SERVER2 -tUDP_STREAM 
netperf -l$DIR -Y CS0,CS0 -H$SERVER2 -tUDP_STREAM 
netperf -l$DIR -Y EF,EF -H$SERVER2 -tUDP_STREAM 
netperf -l$DIR -Y CS5,CS5 -H$SERVER2 -tUDP_STREAM 
) 

 
 
  
  - Felix
  
  ___
  openwrt-devel mailing list
  openwrt-devel@lists.openwrt.org
  https://lists.openwrt.org/mailman/listinfo/openwrt-devel
 
 ___
 openwrt-devel mailing list
 openwrt-devel@lists.openwrt.org
 https://lists.openwrt.org/mailman/listinfo/openwrt-devel
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] [PATCH 1/4] [package] hostapd: revamped WPS support

2012-10-01 Thread Lorenzo Cappelletti
Moved  WPS code to new function

The WPS implementation is going to have a bigger code base which
justifies a dedicated function with less indentation levels.

Signed-off-by: Lorenzo Cappelletti lorenzo.cappelle...@gmail.com

---

Hi everyone,

I'm a senior embedded C programmer and I'd like to contribute with my
2 cents to this great project.

My final goal consists in implementing a WPS
(http://en.wikipedia.org/wiki/Wi-Fi_Protected_Setup) based guest
network which my friends coming by can connect to and have access to
my entire network resources.  Of course, without compromising on
security.

I already started documenting the code on the wiki last month.  My
next step was preparing the ground for a couple of new WPS methods,
label and keypad.  What I'm submitting here is the result of this
first effort.  I hope you'll accept it in the trunk.

Next, I'll move on to implement the keypad method which requires user
inputs.  I think I'll create a dynamic web page here.  Not sure
because I'm new to this.

diff --git a/hostapd/files/hostapd.sh b/hostapd/files/hostapd.sh
--- a/hostapd/files/hostapd.sh
+++ b/hostapd/files/hostapd.sh
@@ -1,3 +1,29 @@
+hostapd_set_wps_options() {
+   local config_methods device_name device_type manufacturer\
+ wps_label wps_pbc
+
+   config_get_bool wps_pbc $vif wps_pushbutton 0
+   config_get_bool wps_label $vif wps_label 0
+
+   config_get config_methods $vif wps_config
+   [ $wps_pbc -gt 0 ]  append config_methods push_button
+
+   [ -z $config_methods ]  return
+
+   # common options
+   config_get device_type $vif wps_device_type 6-0050F204-1
+   config_get device_name $vif wps_device_name OpenWrt AP
+   config_get manufacturer $vif wps_manufacturer openwrt.org
+
+   append $var eap_server=1 $N
+   append $var wps_state=2 $N
+   append $var ap_setup_locked=1 $N
+   append $var device_type=$device_type $N
+   append $var device_name=$device_name $N
+   append $var manufacturer=$manufacturer $N
+   append $var config_methods=$config_methods $N
+}
+
 hostapd_set_bss_options() {
local var=$1
local vif=$2
@@ -159,25 +185,7 @@
config_get ieee80211d $vif ieee80211d
config_get iapp_interface $vif iapp_interface

-   config_get_bool wps_pbc $vif wps_pushbutton 0
-   config_get_bool wps_label $vif wps_label 0
-
-   config_get config_methods $vif wps_config
-   [ $wps_pbc -gt 0 ]  append config_methods push_button
-
-   [ -n $wps_possible -a -n $config_methods ]  {
-   config_get device_type $vif wps_device_type 6-0050F204-1
-   config_get device_name $vif wps_device_name OpenWrt AP
-   config_get manufacturer $vif wps_manufacturer openwrt.org
-
-   append $var eap_server=1 $N
-   append $var wps_state=2 $N
-   append $var ap_setup_locked=1 $N
-   append $var device_type=$device_type $N
-   append $var device_name=$device_name $N
-   append $var manufacturer=$manufacturer $N
-   append $var config_methods=$config_methods $N
-   }
+   [ -n $wps_possible ]  hostapd_set_wps_options

append $var ssid=$ssid $N
[ -n $bridge ]  append $var bridge=$bridge $N
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] [PATCH 2/4] [package] hostapd: revamped WPS support

2012-10-01 Thread Lorenzo Cappelletti
Deprecated config options 'wps_label' and 'wps_pbc'

The use of a list option 'wps_pushbutton' is more scalable.

Signed-off-by: Lorenzo Cappelletti lorenzo.cappelle...@gmail.com

---

diff --git a/hostapd/files/hostapd.sh b/hostapd/files/hostapd.sh
--- a/hostapd/files/hostapd.sh
+++ b/hostapd/files/hostapd.sh
@@ -1,12 +1,14 @@
 hostapd_set_wps_options() {
-   local config_methods device_name device_type manufacturer\
- wps_label wps_pbc
+   local config_methods device_name device_type manufacturer

+   config_get config_methods $vif wps_config_methods
+   
+   # deprecated options
+   local wps_label wps_pbc
config_get_bool wps_pbc $vif wps_pushbutton 0
+   [ $wps_pbc -gt 0 ]  append config_methods push_button
config_get_bool wps_label $vif wps_label 0
-
-   config_get config_methods $vif wps_config
-   [ $wps_pbc -gt 0 ]  append config_methods push_button
+   $wps_label -gt 0 ]  append config_methods label

[ -z $config_methods ]  return

@@ -22,6 +24,18 @@
append $var device_name=$device_name $N
append $var manufacturer=$manufacturer $N
append $var config_methods=$config_methods $N
+
+   # per-method options
+   list_contains config_methods label  {
+   list_remove config_methods label
+   }
+
+   list_contains config_methods push_button  {
+   list_remove config_methods push_button
+   }
+
+   [ -z $config_methods ] ||\
+   logger -t $vif WPS config methods not supported: 
$config_methods
 }

 hostapd_set_bss_options() {
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] [PATCH 4/4] [package] hostapd: revamped WPS support

2012-10-01 Thread Lorenzo Cappelletti
Added 'wps_ap_pin' option along with a default pin for 'label' method

Signed-off-by: Lorenzo Cappelletti lorenzo.cappelle...@gmail.com

---

diff --git a/hostapd/files/hostapd.sh b/hostapd/files/hostapd.sh
--- a/hostapd/files/hostapd.sh
+++ b/hostapd/files/hostapd.sh
@@ -35,7 +35,11 @@

# per-method options
list_contains config_methods label  {
+   local ap_pin
+
list_remove config_methods label
+
+   config_get ap_pin $vif wps_ap_pin 12345670
}

list_contains config_methods push_button  {
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] [PATCH 3/4] [package] hostapd: revamped WPS support

2012-10-01 Thread Lorenzo Cappelletti
Enabled random per-device PSK generation for WPS clients

Signed-off-by: Lorenzo Cappelletti lorenzo.cappelle...@gmail.com

---

diff --git a/hostapd/files/hostapd.sh b/hostapd/files/hostapd.sh
--- a/hostapd/files/hostapd.sh
+++ b/hostapd/files/hostapd.sh
@@ -1,5 +1,6 @@
 hostapd_set_wps_options() {
-   local config_methods device_name device_type manufacturer
+   local config_methods device_name device_type manufacturer\
+ wpa_psk_file

config_get config_methods $vif wps_config_methods

@@ -13,6 +14,7 @@
[ -z $config_methods ]  return

# common options
+   config_get ifname $vif ifname
config_get device_type $vif wps_device_type 6-0050F204-1
config_get device_name $vif wps_device_name OpenWrt AP
config_get manufacturer $vif wps_manufacturer openwrt.org
@@ -25,6 +27,12 @@
append $var manufacturer=$manufacturer $N
append $var config_methods=$config_methods $N

+   # enable random per-device PSK generation for WPS clients
+   # (file has to exists for hostapd to start)
+   wpa_psk_file=/var/run/hostapd-$ifname.psk
+   append $var wpa_psk_file=$wpa_psk_file $N
+   [ ! -e $wpa_psk_file ]  : $wpa_psk_file
+
# per-method options
list_contains config_methods label  {
list_remove config_methods label
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel