From 518d6a92731da987ee5879a02fcef72f3096496a Mon Sep 17 00:00:00 2001
From: Florian Fainelli <florian@openwrt.org>
Date: Tue, 9 Apr 2013 15:47:01 +0000
Subject: [PATCH] kernel: backport switch user API changes after r36283

3.3 and 3.6 kernels do not make use of the UAPI headers, still they need
to provide an up-to-date switch.h copy for swconfig to build.

Signed-off-by: Florian Fainelli <florian@openwrt.org>

SVN-Revision: 36295
---
 ...02-swconfig-revert-portid-snd_portid-usage.patch |  6 +++---
 .../a03-swconfig-revert-UAPI-disintegration.patch   | 13 +++++++++++--
 ...02-swconfig-revert-portid-snd_portid-usage.patch |  6 +++---
 .../a03-swconfig-revert-UAPI-disintegration.patch   | 13 +++++++++++--
 4 files changed, 28 insertions(+), 10 deletions(-)

diff --git a/target/linux/generic/patches-3.3/a02-swconfig-revert-portid-snd_portid-usage.patch b/target/linux/generic/patches-3.3/a02-swconfig-revert-portid-snd_portid-usage.patch
index e465f90e7e..5fca538bea 100644
--- a/target/linux/generic/patches-3.3/a02-swconfig-revert-portid-snd_portid-usage.patch
+++ b/target/linux/generic/patches-3.3/a02-swconfig-revert-portid-snd_portid-usage.patch
@@ -1,7 +1,7 @@
 reverted:
 --- a/drivers/net/phy/swconfig.c
 +++ b/drivers/net/phy/swconfig.c
-@@ -376,7 +376,7 @@ swconfig_dump_attr(struct swconfig_callb
+@@ -377,7 +377,7 @@ swconfig_dump_attr(struct swconfig_callb
  	int id = cb->args[0];
  	void *hdr;
  
@@ -10,7 +10,7 @@ reverted:
  			NLM_F_MULTI, SWITCH_CMD_NEW_ATTR);
  	if (IS_ERR(hdr))
  		return -1;
-@@ -798,7 +798,7 @@ swconfig_get_attr(struct sk_buff *skb, s
+@@ -799,7 +799,7 @@ swconfig_get_attr(struct sk_buff *skb, s
  	if (!msg)
  		goto error;
  
@@ -19,7 +19,7 @@ reverted:
  			0, cmd);
  	if (IS_ERR(hdr))
  		goto nla_put_failure;
-@@ -883,7 +883,7 @@ static int swconfig_dump_switches(struct
+@@ -902,7 +902,7 @@ static int swconfig_dump_switches(struct
  	list_for_each_entry(dev, &swdevs, dev_list) {
  		if (++idx <= start)
  			continue;
diff --git a/target/linux/generic/patches-3.3/a03-swconfig-revert-UAPI-disintegration.patch b/target/linux/generic/patches-3.3/a03-swconfig-revert-UAPI-disintegration.patch
index 569fd0c7b9..a214c15002 100644
--- a/target/linux/generic/patches-3.3/a03-swconfig-revert-UAPI-disintegration.patch
+++ b/target/linux/generic/patches-3.3/a03-swconfig-revert-UAPI-disintegration.patch
@@ -1,6 +1,6 @@
 --- a/include/linux/switch.h
 +++ b/include/linux/switch.h
-@@ -13,11 +13,86 @@
+@@ -13,11 +13,95 @@
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
   */
@@ -35,6 +35,7 @@
 +	SWITCH_ATTR_NAME,
 +	SWITCH_ATTR_VLANS,
 +	SWITCH_ATTR_PORTS,
++	SWITCH_ATTR_PORTMAP,
 +	SWITCH_ATTR_CPU_PORT,
 +	/* attributes */
 +	SWITCH_ATTR_OP_ID,
@@ -51,6 +52,14 @@
 +	SWITCH_ATTR_MAX
 +};
 +
++enum {
++	/* port map */
++	SWITCH_PORTMAP_PORTS,
++	SWITCH_PORTMAP_SEGMENT,
++	SWITCH_PORTMAP_VIRT,
++	SWITCH_PORTMAP_MAX
++};
++
 +/* commands */
 +enum {
 +	SWITCH_CMD_UNSPEC,
@@ -90,7 +99,7 @@
  
  struct switch_dev;
  struct switch_op;
-@@ -157,4 +232,6 @@ struct switch_attr {
+@@ -164,4 +248,6 @@ struct switch_attr {
  	int max;
  };
  
diff --git a/target/linux/generic/patches-3.6/a02-swconfig-revert-portid-snd_portid-usage.patch b/target/linux/generic/patches-3.6/a02-swconfig-revert-portid-snd_portid-usage.patch
index e465f90e7e..5fca538bea 100644
--- a/target/linux/generic/patches-3.6/a02-swconfig-revert-portid-snd_portid-usage.patch
+++ b/target/linux/generic/patches-3.6/a02-swconfig-revert-portid-snd_portid-usage.patch
@@ -1,7 +1,7 @@
 reverted:
 --- a/drivers/net/phy/swconfig.c
 +++ b/drivers/net/phy/swconfig.c
-@@ -376,7 +376,7 @@ swconfig_dump_attr(struct swconfig_callb
+@@ -377,7 +377,7 @@ swconfig_dump_attr(struct swconfig_callb
  	int id = cb->args[0];
  	void *hdr;
  
@@ -10,7 +10,7 @@ reverted:
  			NLM_F_MULTI, SWITCH_CMD_NEW_ATTR);
  	if (IS_ERR(hdr))
  		return -1;
-@@ -798,7 +798,7 @@ swconfig_get_attr(struct sk_buff *skb, s
+@@ -799,7 +799,7 @@ swconfig_get_attr(struct sk_buff *skb, s
  	if (!msg)
  		goto error;
  
@@ -19,7 +19,7 @@ reverted:
  			0, cmd);
  	if (IS_ERR(hdr))
  		goto nla_put_failure;
-@@ -883,7 +883,7 @@ static int swconfig_dump_switches(struct
+@@ -902,7 +902,7 @@ static int swconfig_dump_switches(struct
  	list_for_each_entry(dev, &swdevs, dev_list) {
  		if (++idx <= start)
  			continue;
diff --git a/target/linux/generic/patches-3.6/a03-swconfig-revert-UAPI-disintegration.patch b/target/linux/generic/patches-3.6/a03-swconfig-revert-UAPI-disintegration.patch
index 569fd0c7b9..a214c15002 100644
--- a/target/linux/generic/patches-3.6/a03-swconfig-revert-UAPI-disintegration.patch
+++ b/target/linux/generic/patches-3.6/a03-swconfig-revert-UAPI-disintegration.patch
@@ -1,6 +1,6 @@
 --- a/include/linux/switch.h
 +++ b/include/linux/switch.h
-@@ -13,11 +13,86 @@
+@@ -13,11 +13,95 @@
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
   */
@@ -35,6 +35,7 @@
 +	SWITCH_ATTR_NAME,
 +	SWITCH_ATTR_VLANS,
 +	SWITCH_ATTR_PORTS,
++	SWITCH_ATTR_PORTMAP,
 +	SWITCH_ATTR_CPU_PORT,
 +	/* attributes */
 +	SWITCH_ATTR_OP_ID,
@@ -51,6 +52,14 @@
 +	SWITCH_ATTR_MAX
 +};
 +
++enum {
++	/* port map */
++	SWITCH_PORTMAP_PORTS,
++	SWITCH_PORTMAP_SEGMENT,
++	SWITCH_PORTMAP_VIRT,
++	SWITCH_PORTMAP_MAX
++};
++
 +/* commands */
 +enum {
 +	SWITCH_CMD_UNSPEC,
@@ -90,7 +99,7 @@
  
  struct switch_dev;
  struct switch_op;
-@@ -157,4 +232,6 @@ struct switch_attr {
+@@ -164,4 +248,6 @@ struct switch_attr {
  	int max;
  };
  
-- 
2.30.2