Netdev List
 help / color / mirror / Atom feed
* Re: [PATCH v4 3/3] netdev/of/phy: Add MDIO bus multiplexer driven by GPIO lines.
From: David Miller @ 2012-04-18 17:45 UTC (permalink / raw)
  To: david.daney
  Cc: ddaney.cavm, grant.likely, rob.herring, devicetree-discuss,
	netdev, linux-kernel, linux-mips, afleming, galak
In-Reply-To: <4F8EEAD8.8050205@cavium.com>

From: David Daney <david.daney@cavium.com>
Date: Wed, 18 Apr 2012 09:24:56 -0700

> B) Regenerate the entire set with said patch rolled in?

Already regenerate patch sets with fixes incorporated into the
original patches.

^ permalink raw reply

* Re: [PATCH v3 5/8] i2c-pnx.c: Fix suspend
From: Wolfram Sang @ 2012-04-18 17:57 UTC (permalink / raw)
  To: Roland Stigge
  Cc: arm-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-i2c-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, srinivas.bakki-3arQi8VN3Tc,
	kevin.wells-3arQi8VN3Tc, gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
	netdev-u79uwXL29TY76Z2rM5mHXA, rtc-linux-/JYPxA39Uh5TLH3MbocFFw,
	a.zummo-BfzFCNDTiLLj+vYz1yj4TQ,
	linux-watchdog-u79uwXL29TY76Z2rM5mHXA, wim-IQzOog9fTRqzQB+pC5nmwQ,
	jonsmirl-Re5JQEeQqe8AvxtiuMwx3w, stable-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <1333528480-17134-6-git-send-email-stigge-uj/7R2tJ6VmzQB+pC5nmwQ@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 702 bytes --]

On Wed, Apr 04, 2012 at 10:34:37AM +0200, Roland Stigge wrote:
> In the driver's suspend function, clk_enable() was used instead of
> clk_disable(). This is corrected with this patch.
> 
> Signed-off-by: Roland Stigge <stigge-uj/7R2tJ6VmzQB+pC5nmwQ@public.gmane.org>
> Reviewed-by: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
> CC: stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org

Picked up for 3.4, reworded the message header to "i2c: pnx: Disable
clk in suspend" since "fix suspend" was too generic.

Thanks,

   Wolfram

-- 
Pengutronix e.K.                           | Wolfram Sang                |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply

* [PATCH net-next] bonding,vlan: propagate MAC failover changes to VLANs
From: Jay Vosburgh @ 2012-04-18 18:02 UTC (permalink / raw)
  To: netdev; +Cc: David S. Miller, Patrick McHardy, Andy Gospodarek


	With bonding's fail_over_mac=active, during failover the MAC
address of the bond itself changes to match that of the slave.

	This patch adds a notifier call to cause VLANs stacked atop the
bonding to also change their MAC addresses to the new address when a
failover occurs.

	While it is legal for a VLAN to have a MAC address that differs
from the underlying device, at least one device (qeth) that requires the
use of fail_over_mac for bonding cannot handle the VLAN's MAC differing
from that of the bond; thus, it needs the MAC change to propagate up
to any VLANs when fail_over_mac is set to active.

Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>

---
 drivers/net/bonding/bond_main.c |    2 ++
 include/linux/netdevice.h       |    1 +
 net/8021q/vlan.c                |    7 +++++++
 3 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 44e6a64..7a92e35 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -896,6 +896,8 @@ static void bond_do_fail_over_mac(struct bonding *bond,
 			       new_active->dev->addr_len);
 			write_unlock_bh(&bond->curr_slave_lock);
 			read_unlock(&bond->lock);
+			call_netdevice_notifiers(NETDEV_PROPAGATE_ADDR,
+						 bond->dev);
 			call_netdevice_notifiers(NETDEV_CHANGEADDR, bond->dev);
 			read_lock(&bond->lock);
 			write_lock_bh(&bond->curr_slave_lock);
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index e0b70e9..2fe9697 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1559,6 +1559,7 @@ struct packet_type {
 #define NETDEV_RELEASE		0x0012
 #define NETDEV_NOTIFY_PEERS	0x0013
 #define NETDEV_JOIN		0x0014
+#define NETDEV_PROPAGATE_ADDR	0x0015
 
 extern int register_netdevice_notifier(struct notifier_block *nb);
 extern int unregister_netdevice_notifier(struct notifier_block *nb);
diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
index efea35b..29da25f 100644
--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -303,6 +303,8 @@ static void vlan_transfer_features(struct net_device *dev,
 
 static void __vlan_device_event(struct net_device *dev, unsigned long event)
 {
+	struct net_device *realdev;
+
 	switch (event) {
 	case NETDEV_CHANGENAME:
 		vlan_proc_rem_dev(dev);
@@ -317,6 +319,10 @@ static void __vlan_device_event(struct net_device *dev, unsigned long event)
 	case NETDEV_UNREGISTER:
 		vlan_proc_rem_dev(dev);
 		break;
+	case NETDEV_PROPAGATE_ADDR:
+		realdev = vlan_dev_priv(dev)->real_dev;
+		memcpy(dev->dev_addr, realdev->dev_addr, ETH_ALEN);
+		break;
 	}
 }
 
@@ -464,6 +470,7 @@ static int vlan_device_event(struct notifier_block *unused, unsigned long event,
 
 	case NETDEV_NOTIFY_PEERS:
 	case NETDEV_BONDING_FAILOVER:
+	case NETDEV_PROPAGATE_ADDR:
 		/* Propagate to vlan devices */
 		for (i = 0; i < VLAN_N_VID; i++) {
 			vlandev = vlan_group_get_device(grp, i);
-- 
1.7.7

^ permalink raw reply related

* Re: [PATCH v3 6/8] i2c-pnx.c: Use resources in platforms
From: Wolfram Sang @ 2012-04-18 18:03 UTC (permalink / raw)
  To: Roland Stigge
  Cc: arm-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-i2c-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, srinivas.bakki-3arQi8VN3Tc,
	kevin.wells-3arQi8VN3Tc, gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
	netdev-u79uwXL29TY76Z2rM5mHXA, rtc-linux-/JYPxA39Uh5TLH3MbocFFw,
	a.zummo-BfzFCNDTiLLj+vYz1yj4TQ,
	linux-watchdog-u79uwXL29TY76Z2rM5mHXA, wim-IQzOog9fTRqzQB+pC5nmwQ,
	jonsmirl-Re5JQEeQqe8AvxtiuMwx3w
In-Reply-To: <1333528480-17134-7-git-send-email-stigge-uj/7R2tJ6VmzQB+pC5nmwQ@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 646 bytes --]

On Wed, Apr 04, 2012 at 10:34:38AM +0200, Roland Stigge wrote:
> As a precondition for device tree conversion, the platforms using i2c-pnx.c are
> converted to using mem and irq resources instead of platform data.
> 
> Signed-off-by: Roland Stigge <stigge-uj/7R2tJ6VmzQB+pC5nmwQ@public.gmane.org>
> Reviewed-by: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>

I trust you and Arnd on the mach stuff. i2c looked okay, devm_*
could have been used, but well... Applied to next.

-- 
Pengutronix e.K.                           | Wolfram Sang                |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply

* Re: [PATCH v3 7/8] i2c-pnx.c: Remove duplicated i2c.h
From: Wolfram Sang @ 2012-04-18 18:04 UTC (permalink / raw)
  To: Roland Stigge
  Cc: arm-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-i2c-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, srinivas.bakki-3arQi8VN3Tc,
	kevin.wells-3arQi8VN3Tc, gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
	netdev-u79uwXL29TY76Z2rM5mHXA, rtc-linux-/JYPxA39Uh5TLH3MbocFFw,
	a.zummo-BfzFCNDTiLLj+vYz1yj4TQ,
	linux-watchdog-u79uwXL29TY76Z2rM5mHXA, wim-IQzOog9fTRqzQB+pC5nmwQ,
	jonsmirl-Re5JQEeQqe8AvxtiuMwx3w
In-Reply-To: <1333528480-17134-8-git-send-email-stigge-uj/7R2tJ6VmzQB+pC5nmwQ@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 571 bytes --]

On Wed, Apr 04, 2012 at 10:34:39AM +0200, Roland Stigge wrote:
> The platforms using i2c-pnx.c both defined a duplicated i2c.h (used nowhere
> else). This patch removes those and integrates the contents into the driver
> itself.
> 
> Signed-off-by: Roland Stigge <stigge-uj/7R2tJ6VmzQB+pC5nmwQ@public.gmane.org>
> Reviewed-by: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>

Applied to next, thanks.

-- 
Pengutronix e.K.                           | Wolfram Sang                |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply

* 3-way handshake timeout
From: Chir0n @ 2012-04-18 18:07 UTC (permalink / raw)
  To: netdev

Hello,

Can someone tell me where I can discover the timeout of a 3-way
handshake on linux?

Thak you!

Regards,

Chiron

^ permalink raw reply

* Re: pull request: batman-adv 2012-04-18
From: Al Viro @ 2012-04-18 18:08 UTC (permalink / raw)
  To: Antonio Quartulli
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
	b.a.t.m.a.n-ZwoEplunGu2X36UT3dwllkB+6BGkLq7r,
	davem-fT/PcQaiUtIeIZ0/mPfg9Q
In-Reply-To: <1334743210-12338-1-git-send-email-ordex-GaUfNO9RBHfsrOwW+9ziJQ@public.gmane.org>

On Wed, Apr 18, 2012 at 11:59:57AM +0200, Antonio Quartulli wrote:
> Hello David,
> 
> this is the fixed version of my previous pull request (issued on 2012-04-17).
> In this patchset the issues you reported have been fixed; moreover I'm
> also including two new patches (1/13 and 2/13) which are respectively:
> 
> 1/13) a fix for Al Viro's report about the missing htons()

Speaking of endianness stuff: here's a series of 4 patches on top of
your merge.git/master, hopefully getting all that stuff endian-clean,
at least from the sparse POV.  And AFAICS all on-the-wire stuff is
correctly annotated...

^ permalink raw reply

* Re: [PATCH v3 8/8] i2c: Add device tree support to i2c-pnx.c
From: Wolfram Sang @ 2012-04-18 18:09 UTC (permalink / raw)
  To: Roland Stigge
  Cc: arm-DgEjT+Ai2ygdnm+yROfE0A,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-i2c-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, srinivas.bakki-3arQi8VN3Tc,
	kevin.wells-3arQi8VN3Tc, gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
	netdev-u79uwXL29TY76Z2rM5mHXA, rtc-linux-/JYPxA39Uh5TLH3MbocFFw,
	a.zummo-BfzFCNDTiLLj+vYz1yj4TQ,
	linux-watchdog-u79uwXL29TY76Z2rM5mHXA, wim-IQzOog9fTRqzQB+pC5nmwQ,
	jonsmirl-Re5JQEeQqe8AvxtiuMwx3w,
	devicetree-discuss-mnsaURCQ41sdnm+yROfE0A
In-Reply-To: <1333528480-17134-9-git-send-email-stigge-uj/7R2tJ6VmzQB+pC5nmwQ@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 2337 bytes --]

On Wed, Apr 04, 2012 at 10:34:40AM +0200, Roland Stigge wrote:
> This patch adds device tree support to the pnx-i2c driver by using platform
> resources for memory region and irq and removing dependency on mach includes.
> 
> The following platforms are affected:
> 
> * PNX
> * LPC31xx (WIP)
> * LPC32xx
> 
> The patch is based on a patch by Jon Smirl, working on lpc31xx integration
> 
> Signed-off-by: Roland Stigge <stigge-uj/7R2tJ6VmzQB+pC5nmwQ@public.gmane.org>
> Reviewed-by: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>

I added devicetree-discuss to the (quite long) CC list. I am not sure
about all of the bindings.

> 
> ---
> 
>  Applies to v3.4-rc1
> 
>  Documentation/devicetree/bindings/i2c/pnx.txt |   40 ++++++++++++++++
>  drivers/i2c/busses/i2c-pnx.c                  |   65 +++++++++++++++++++-------
>  include/linux/i2c-pnx.h                       |    1 
>  3 files changed, 89 insertions(+), 17 deletions(-)
> 
> --- /dev/null
> +++ linux-2.6/Documentation/devicetree/bindings/i2c/pnx.txt
> @@ -0,0 +1,40 @@
> +* NXP PNX I2C Controller
> +
> +Required properties:
> +
> + - reg: Offset and length of the register set for the device
> + - compatible: should be "nxp,pnx-i2c"
> + - interrupts: configure one interrupt line
> + - #address-cells: always 1 (for i2c addresses)
> + - #size-cells: always 0
> +
> +Optional properties:
> +
> + - interrupt-parent: the phandle for the interrupt controller that
> +   services interrupts for this device.

That one is not optional, or? You always need it but in most cases it
gets inherited as I understand.

> + - clock-frequency: desired I2C bus clock frequency in Hz, Default: 100000 Hz
> + - pnx,timeout: I2C bus timeout in milliseconds, Default: 10 ms

To devicetree-folks: Can we argue this is a hardware property of the
bus? Then we could introduce a generic "timeout" property? I see, there
is already "fsl,timeout", and it won't make sense to have that per
vendor?

> + - slave-addr: Address used by the controller, Hardware default: 110

I'd prefer the hex value here, I2C addresses are mostly specified in
hex.

Regards,

   Wolfram

-- 
Pengutronix e.K.                           | Wolfram Sang                |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply

* [PATCH 1/4] batman: don't bother flipping ->tt_data
From: Al Viro @ 2012-04-18 18:09 UTC (permalink / raw)
  To: Antonio Quartulli
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
	b.a.t.m.a.n-ZwoEplunGu2X36UT3dwllkB+6BGkLq7r,
	davem-fT/PcQaiUtIeIZ0/mPfg9Q
In-Reply-To: <20120418180837.GB6589-3bDd1+5oDREiFSDQTTA3OLVCufUGDwFn@public.gmane.org>

just keep it net-endian all along

Signed-off-by: Al Viro <viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org>
---
 net/batman-adv/packet.h            |    2 +-
 net/batman-adv/routing.c           |    6 +-----
 net/batman-adv/translation-table.c |    8 ++++----
 3 files changed, 6 insertions(+), 10 deletions(-)

diff --git a/net/batman-adv/packet.h b/net/batman-adv/packet.h
index 307dbb3..9157f7c 100644
--- a/net/batman-adv/packet.h
+++ b/net/batman-adv/packet.h
@@ -220,7 +220,7 @@ struct tt_query_packet {
 	 * if TT_REQUEST: crc associated with the
 	 *		  ttvn
 	 * if TT_RESPONSE: table_size */
-	uint16_t tt_data;
+	__be16   tt_data;
 } __packed;
 
 struct roam_adv_packet {
diff --git a/net/batman-adv/routing.c b/net/batman-adv/routing.c
index 2181a91..4310cfe 100644
--- a/net/batman-adv/routing.c
+++ b/net/batman-adv/routing.c
@@ -596,8 +596,6 @@ int recv_tt_query(struct sk_buff *skb, struct hard_iface *recv_if)
 
 	tt_query = (struct tt_query_packet *)skb->data;
 
-	tt_query->tt_data = ntohs(tt_query->tt_data);
-
 	switch (tt_query->flags & TT_QUERY_TYPE_MASK) {
 	case TT_REQUEST:
 		/* If we cannot provide an answer the tt_request is
@@ -607,7 +605,6 @@ int recv_tt_query(struct sk_buff *skb, struct hard_iface *recv_if)
 				"Routing TT_REQUEST to %pM [%c]\n",
 				tt_query->dst,
 				(tt_query->flags & TT_FULL_TABLE ? 'F' : '.'));
-			tt_query->tt_data = htons(tt_query->tt_data);
 			return route_unicast_packet(skb, recv_if);
 		}
 		break;
@@ -618,7 +615,7 @@ int recv_tt_query(struct sk_buff *skb, struct hard_iface *recv_if)
 			if (skb_linearize(skb) < 0)
 				goto out;
 
-			tt_len = tt_query->tt_data * sizeof(struct tt_change);
+			tt_len = ntohs(tt_query->tt_data) * sizeof(struct tt_change);
 
 			/* Ensure we have all the claimed data */
 			if (unlikely(skb_headlen(skb) <
@@ -631,7 +628,6 @@ int recv_tt_query(struct sk_buff *skb, struct hard_iface *recv_if)
 				"Routing TT_RESPONSE to %pM [%c]\n",
 				tt_query->dst,
 				(tt_query->flags & TT_FULL_TABLE ? 'F' : '.'));
-			tt_query->tt_data = htons(tt_query->tt_data);
 			return route_unicast_packet(skb, recv_if);
 		}
 		break;
diff --git a/net/batman-adv/translation-table.c b/net/batman-adv/translation-table.c
index 88e4c8e..a9c2b59 100644
--- a/net/batman-adv/translation-table.c
+++ b/net/batman-adv/translation-table.c
@@ -1416,7 +1416,7 @@ static bool send_other_tt_response(struct bat_priv *bat_priv,
 
 	/* I don't have the requested data */
 	if (orig_ttvn != req_ttvn ||
-	    tt_request->tt_data != req_dst_orig_node->tt_crc)
+	    tt_request->tt_data != htons(req_dst_orig_node->tt_crc))
 		goto out;
 
 	/* If the full table has been explicitly requested */
@@ -1672,7 +1672,7 @@ static void tt_fill_gtable(struct bat_priv *bat_priv,
 
 	_tt_update_changes(bat_priv, orig_node,
 			   (struct tt_change *)(tt_response + 1),
-			   tt_response->tt_data, tt_response->ttvn);
+			   ntohs(tt_response->tt_data), tt_response->ttvn);
 
 	spin_lock_bh(&orig_node->tt_buff_lock);
 	kfree(orig_node->tt_buff);
@@ -1727,7 +1727,7 @@ void handle_tt_response(struct bat_priv *bat_priv,
 
 	bat_dbg(DBG_TT, bat_priv,
 		"Received TT_RESPONSE from %pM for ttvn %d t_size: %d [%c]\n",
-		tt_response->src, tt_response->ttvn, tt_response->tt_data,
+		tt_response->src, tt_response->ttvn, ntohs(tt_response->tt_data),
 		(tt_response->flags & TT_FULL_TABLE ? 'F' : '.'));
 
 	/* we should have never asked a backbone gw */
@@ -1741,7 +1741,7 @@ void handle_tt_response(struct bat_priv *bat_priv,
 	if (tt_response->flags & TT_FULL_TABLE)
 		tt_fill_gtable(bat_priv, tt_response);
 	else
-		tt_update_changes(bat_priv, orig_node, tt_response->tt_data,
+		tt_update_changes(bat_priv, orig_node, ntohs(tt_response->tt_data),
 				  tt_response->ttvn,
 				  (struct tt_change *)(tt_response + 1));
 
-- 
1.7.2.5

^ permalink raw reply related

* [PATCH 2/4] batman: don't bother flipping ->tt_crc
From: Al Viro @ 2012-04-18 18:10 UTC (permalink / raw)
  To: Antonio Quartulli; +Cc: davem, netdev, b.a.t.m.a.n
In-Reply-To: <20120418180837.GB6589@ZenIV.linux.org.uk>

Again, keep ->tt_crc in batman_ogv_packet net-endian

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
---
 net/batman-adv/bat_iv_ogm.c |    6 ++----
 net/batman-adv/packet.h     |    2 +-
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c
index ab2085c..5aa8861 100644
--- a/net/batman-adv/bat_iv_ogm.c
+++ b/net/batman-adv/bat_iv_ogm.c
@@ -544,7 +544,6 @@ static void bat_iv_ogm_forward(struct orig_node *orig_node,
 		batman_ogm_packet->tq, batman_ogm_packet->header.ttl);
 
 	batman_ogm_packet->seqno = htonl(batman_ogm_packet->seqno);
-	batman_ogm_packet->tt_crc = htons(batman_ogm_packet->tt_crc);
 
 	/* switch of primaries first hop flag when forwarding */
 	batman_ogm_packet->flags &= ~PRIMARIES_FIRST_HOP;
@@ -722,7 +721,7 @@ update_tt:
 		tt_update_orig(bat_priv, orig_node, tt_buff,
 			       batman_ogm_packet->tt_num_changes,
 			       batman_ogm_packet->ttvn,
-			       batman_ogm_packet->tt_crc);
+			       ntohs(batman_ogm_packet->tt_crc));
 
 	if (orig_node->gw_flags != batman_ogm_packet->gw_flags)
 		gw_node_update(bat_priv, orig_node,
@@ -969,7 +968,7 @@ static void bat_iv_ogm_process(const struct ethhdr *ethhdr,
 		ethhdr->h_source, if_incoming->net_dev->name,
 		if_incoming->net_dev->dev_addr, batman_ogm_packet->orig,
 		batman_ogm_packet->prev_sender, batman_ogm_packet->seqno,
-		batman_ogm_packet->ttvn, batman_ogm_packet->tt_crc,
+		batman_ogm_packet->ttvn, ntohs(batman_ogm_packet->tt_crc),
 		batman_ogm_packet->tt_num_changes, batman_ogm_packet->tq,
 		batman_ogm_packet->header.ttl,
 		batman_ogm_packet->header.version, has_directlink_flag);
@@ -1214,7 +1213,6 @@ static int bat_iv_ogm_receive(struct sk_buff *skb,
 		/* network to host order for our 32bit seqno and the
 		   orig_interval */
 		batman_ogm_packet->seqno = ntohl(batman_ogm_packet->seqno);
-		batman_ogm_packet->tt_crc = ntohs(batman_ogm_packet->tt_crc);
 
 		tt_buff = packet_buff + buff_pos + BATMAN_OGM_HLEN;
 
diff --git a/net/batman-adv/packet.h b/net/batman-adv/packet.h
index 9157f7c..61a7fe0 100644
--- a/net/batman-adv/packet.h
+++ b/net/batman-adv/packet.h
@@ -132,7 +132,7 @@ struct batman_ogm_packet {
 	uint8_t  tq;
 	uint8_t  tt_num_changes;
 	uint8_t  ttvn; /* translation table version number */
-	uint16_t tt_crc;
+	__be16   tt_crc;
 } __packed;
 
 #define BATMAN_OGM_HLEN sizeof(struct batman_ogm_packet)
-- 
1.7.2.5

^ permalink raw reply related

* batman: keep batman_ogm_packet ->seqno net-endian all along
From: Al Viro @ 2012-04-18 18:11 UTC (permalink / raw)
  To: Antonio Quartulli
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
	b.a.t.m.a.n-ZwoEplunGu2X36UT3dwllkB+6BGkLq7r,
	davem-fT/PcQaiUtIeIZ0/mPfg9Q
In-Reply-To: <20120418180837.GB6589-3bDd1+5oDREiFSDQTTA3OLVCufUGDwFn@public.gmane.org>

Ditto for its ->seqno...

Signed-off-by: Al Viro <viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org>
---
 net/batman-adv/bat_iv_ogm.c |   25 ++++++++++---------------
 net/batman-adv/packet.h     |    2 +-
 2 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c
index 5aa8861..cc6d4c3 100644
--- a/net/batman-adv/bat_iv_ogm.c
+++ b/net/batman-adv/bat_iv_ogm.c
@@ -34,11 +34,11 @@ static struct neigh_node *bat_iv_ogm_neigh_new(struct hard_iface *hard_iface,
 					       const uint8_t *neigh_addr,
 					       struct orig_node *orig_node,
 					       struct orig_node *orig_neigh,
-					       uint32_t seqno)
+					       __be32 seqno)
 {
 	struct neigh_node *neigh_node;
 
-	neigh_node = neigh_node_new(hard_iface, neigh_addr, seqno);
+	neigh_node = neigh_node_new(hard_iface, neigh_addr, ntohl(seqno));
 	if (!neigh_node)
 		goto out;
 
@@ -543,8 +543,6 @@ static void bat_iv_ogm_forward(struct orig_node *orig_node,
 		"Forwarding packet: tq: %i, ttl: %i\n",
 		batman_ogm_packet->tq, batman_ogm_packet->header.ttl);
 
-	batman_ogm_packet->seqno = htonl(batman_ogm_packet->seqno);
-
 	/* switch of primaries first hop flag when forwarding */
 	batman_ogm_packet->flags &= ~PRIMARIES_FIRST_HOP;
 	if (is_single_hop_neigh)
@@ -868,13 +866,14 @@ static int bat_iv_ogm_update_seqnos(const struct ethhdr *ethhdr,
 	int32_t seq_diff;
 	int need_update = 0;
 	int set_mark, ret = -1;
+	uint32_t seqno = ntohl(batman_ogm_packet->seqno);
 
 	orig_node = get_orig_node(bat_priv, batman_ogm_packet->orig);
 	if (!orig_node)
 		return 0;
 
 	spin_lock_bh(&orig_node->ogm_cnt_lock);
-	seq_diff = batman_ogm_packet->seqno - orig_node->last_real_seqno;
+	seq_diff = seqno - orig_node->last_real_seqno;
 
 	/* signalize caller that the packet is to be dropped. */
 	if (!hlist_empty(&orig_node->neigh_list) &&
@@ -888,7 +887,7 @@ static int bat_iv_ogm_update_seqnos(const struct ethhdr *ethhdr,
 
 		is_duplicate |= bat_test_bit(tmp_neigh_node->real_bits,
 					     orig_node->last_real_seqno,
-					     batman_ogm_packet->seqno);
+					     seqno);
 
 		if (compare_eth(tmp_neigh_node->addr, ethhdr->h_source) &&
 		    (tmp_neigh_node->if_incoming == if_incoming))
@@ -910,8 +909,8 @@ static int bat_iv_ogm_update_seqnos(const struct ethhdr *ethhdr,
 	if (need_update) {
 		bat_dbg(DBG_BATMAN, bat_priv,
 			"updating last_seqno: old %u, new %u\n",
-			orig_node->last_real_seqno, batman_ogm_packet->seqno);
-		orig_node->last_real_seqno = batman_ogm_packet->seqno;
+			orig_node->last_real_seqno, seqno);
+		orig_node->last_real_seqno = seqno;
 	}
 
 	ret = is_duplicate;
@@ -967,7 +966,7 @@ static void bat_iv_ogm_process(const struct ethhdr *ethhdr,
 		"Received BATMAN packet via NB: %pM, IF: %s [%pM] (from OG: %pM, via prev OG: %pM, seqno %u, ttvn %u, crc %u, changes %u, td %d, TTL %d, V %d, IDF %d)\n",
 		ethhdr->h_source, if_incoming->net_dev->name,
 		if_incoming->net_dev->dev_addr, batman_ogm_packet->orig,
-		batman_ogm_packet->prev_sender, batman_ogm_packet->seqno,
+		batman_ogm_packet->prev_sender, ntohl(batman_ogm_packet->seqno),
 		batman_ogm_packet->ttvn, ntohs(batman_ogm_packet->tt_crc),
 		batman_ogm_packet->tt_num_changes, batman_ogm_packet->tq,
 		batman_ogm_packet->header.ttl,
@@ -1039,7 +1038,7 @@ static void bat_iv_ogm_process(const struct ethhdr *ethhdr,
 			word = &(orig_neigh_node->bcast_own[offset]);
 			bat_set_bit(word,
 				    if_incoming_seqno -
-						batman_ogm_packet->seqno - 2);
+					ntohl(batman_ogm_packet->seqno) - 2);
 			orig_neigh_node->bcast_own_sum[if_incoming->if_num] =
 				bitmap_weight(word, TQ_LOCAL_WINDOW_SIZE);
 			spin_unlock_bh(&orig_neigh_node->ogm_cnt_lock);
@@ -1132,7 +1131,7 @@ static void bat_iv_ogm_process(const struct ethhdr *ethhdr,
 	 * seqno and similar ttl as the non-duplicate */
 	if (is_bidirectional &&
 	    (!is_duplicate ||
-	     ((orig_node->last_real_seqno == batman_ogm_packet->seqno) &&
+	     ((orig_node->last_real_seqno == ntohl(batman_ogm_packet->seqno)) &&
 	      (orig_node->last_ttl - 3 <= batman_ogm_packet->header.ttl))))
 		bat_iv_ogm_orig_update(bat_priv, orig_node, ethhdr,
 				       batman_ogm_packet, if_incoming,
@@ -1210,10 +1209,6 @@ static int bat_iv_ogm_receive(struct sk_buff *skb,
 
 	/* unpack the aggregated packets and process them one by one */
 	do {
-		/* network to host order for our 32bit seqno and the
-		   orig_interval */
-		batman_ogm_packet->seqno = ntohl(batman_ogm_packet->seqno);
-
 		tt_buff = packet_buff + buff_pos + BATMAN_OGM_HLEN;
 
 		bat_iv_ogm_process(ethhdr, batman_ogm_packet,
diff --git a/net/batman-adv/packet.h b/net/batman-adv/packet.h
index 61a7fe0..ad39938 100644
--- a/net/batman-adv/packet.h
+++ b/net/batman-adv/packet.h
@@ -125,7 +125,7 @@ struct batman_header {
 struct batman_ogm_packet {
 	struct batman_header header;
 	uint8_t  flags;    /* 0x40: DIRECTLINK flag, 0x20 VIS_SERVER flag... */
-	uint32_t seqno;
+	__be32   seqno;
 	uint8_t  orig[ETH_ALEN];
 	uint8_t  prev_sender[ETH_ALEN];
 	uint8_t  gw_flags;  /* flags related to gateway class */
-- 
1.7.2.5

^ permalink raw reply related

* batman: trivial endianness annotations
From: Al Viro @ 2012-04-18 18:14 UTC (permalink / raw)
  To: Antonio Quartulli
  Cc: netdev-u79uwXL29TY76Z2rM5mHXA,
	b.a.t.m.a.n-ZwoEplunGu2X36UT3dwllkB+6BGkLq7r,
	davem-fT/PcQaiUtIeIZ0/mPfg9Q
In-Reply-To: <20120418180837.GB6589-3bDd1+5oDREiFSDQTTA3OLVCufUGDwFn@public.gmane.org>

Missing endianness annotations - on-the-wire data and ip addresses.
BTW, casting memcpy() arguments to (uint8_t *) is cargo-cult programming -
they are void *, which is precisely "take any pointer to object"...

Signed-off-by: Al Viro <viro-RmSDqhL/yNMiFSDQTTA3OLVCufUGDwFn@public.gmane.org>
---
 net/batman-adv/bridge_loop_avoidance.c |    8 ++++----
 net/batman-adv/distributed-arp-table.c |   16 ++++++++--------
 net/batman-adv/distributed-arp-table.h |    4 ++--
 net/batman-adv/packet.h                |   12 ++++++------
 4 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/net/batman-adv/bridge_loop_avoidance.c b/net/batman-adv/bridge_loop_avoidance.c
index 8bf9751..d51288b 100644
--- a/net/batman-adv/bridge_loop_avoidance.c
+++ b/net/batman-adv/bridge_loop_avoidance.c
@@ -258,7 +258,7 @@ static void bla_send_claim(struct bat_priv *bat_priv, uint8_t *mac,
 	struct net_device *soft_iface;
 	uint8_t *hw_src;
 	struct bla_claim_dst local_claim_dest;
-	uint32_t zeroip = 0;
+	__be32 zeroip = 0;
 
 	primary_if = primary_if_get_selected(bat_priv);
 	if (!primary_if)
@@ -506,11 +506,11 @@ static void bla_send_announce(struct bat_priv *bat_priv,
 			      struct backbone_gw *backbone_gw)
 {
 	uint8_t mac[ETH_ALEN];
-	uint16_t crc;
+	__be16 crc;
 
 	memcpy(mac, announce_mac, 4);
 	crc = htons(backbone_gw->crc);
-	memcpy(&mac[4], (uint8_t *)&crc, 2);
+	memcpy(&mac[4], &crc, 2);
 
 	bla_send_claim(bat_priv, mac, backbone_gw->vid, CLAIM_TYPE_ANNOUNCE);
 
@@ -627,7 +627,7 @@ static int handle_announce(struct bat_priv *bat_priv,
 
 	/* handle as ANNOUNCE frame */
 	backbone_gw->lasttime = jiffies;
-	crc = ntohs(*((uint16_t *)(&an_addr[4])));
+	crc = ntohs(*((__be16 *)(&an_addr[4])));
 
 	bat_dbg(DBG_BLA, bat_priv,
 		"handle_announce(): ANNOUNCE vid %d (sent by %pM)... CRC = %04x\n",
diff --git a/net/batman-adv/distributed-arp-table.c b/net/batman-adv/distributed-arp-table.c
index b43bece..d87f914 100644
--- a/net/batman-adv/distributed-arp-table.c
+++ b/net/batman-adv/distributed-arp-table.c
@@ -192,7 +192,7 @@ static void choose_next_candidate(struct bat_priv *bat_priv,
  *
  * return an array of size DHT_CANDIDATES_NUM */
 static struct dht_candidate *dht_select_candidates(struct bat_priv *bat_priv,
-						   uint32_t ip_dst)
+						   __be32 ip_dst)
 {
 	int select;
 	dat_addr_t last_max = DAT_ADDR_MAX, ip_key;
@@ -224,7 +224,7 @@ static struct dht_candidate *dht_select_candidates(struct bat_priv *bat_priv,
  * If the packet is successfully sent to at least one candidate, then this
  * function returns true */
 static bool dht_send_data(struct bat_priv *bat_priv, struct sk_buff *skb,
-			  uint32_t ip, int packet_subtype)
+			  __be32 ip, int packet_subtype)
 {
 	int i;
 	bool ret = false;
@@ -270,7 +270,7 @@ out:
 /* Update the neighbour entry corresponding to the IP passed as parameter with
  * the hw address hw. If the neighbour entry doesn't exists, then it will be
  * created */
-static void arp_neigh_update(struct bat_priv *bat_priv, uint32_t ip,
+static void arp_neigh_update(struct bat_priv *bat_priv, __be32 ip,
 			     uint8_t *hw)
 {
 	struct neighbour *n = NULL;
@@ -299,7 +299,7 @@ static uint16_t arp_get_type(struct bat_priv *bat_priv, struct sk_buff *skb,
 {
 	struct arphdr *arphdr;
 	struct ethhdr *ethhdr;
-	uint32_t ip_src, ip_dst;
+	__be32 ip_src, ip_dst;
 	uint16_t type = 0;
 
 	/* pull the ethernet header */
@@ -352,7 +352,7 @@ bool dat_snoop_outgoing_arp_request(struct bat_priv *bat_priv,
 				    struct sk_buff *skb)
 {
 	uint16_t type = 0;
-	uint32_t ip_dst, ip_src;
+	__be32 ip_dst, ip_src;
 	uint8_t *hw_src;
 	bool ret = false;
 	struct neighbour *n = NULL;
@@ -414,7 +414,7 @@ bool dat_snoop_incoming_arp_request(struct bat_priv *bat_priv,
 				    struct sk_buff *skb, int hdr_size)
 {
 	uint16_t type;
-	uint32_t ip_src, ip_dst;
+	__be32 ip_src, ip_dst;
 	uint8_t *hw_src;
 	struct hard_iface *primary_if = NULL;
 	struct sk_buff *skb_new;
@@ -470,7 +470,7 @@ bool dat_snoop_outgoing_arp_reply(struct bat_priv *bat_priv,
 				  struct sk_buff *skb)
 {
 	uint16_t type;
-	uint32_t ip_src, ip_dst;
+	__be32 ip_src, ip_dst;
 	uint8_t *hw_src, *hw_dst;
 	bool ret = false;
 
@@ -503,7 +503,7 @@ bool dat_snoop_incoming_arp_reply(struct bat_priv *bat_priv,
 				  struct sk_buff *skb, int hdr_size)
 {
 	uint16_t type;
-	uint32_t ip_src, ip_dst;
+	__be32 ip_src, ip_dst;
 	uint8_t *hw_src, *hw_dst;
 	bool ret = false;
 
diff --git a/net/batman-adv/distributed-arp-table.h b/net/batman-adv/distributed-arp-table.h
index fcf6c15..01d5b4f 100644
--- a/net/batman-adv/distributed-arp-table.h
+++ b/net/batman-adv/distributed-arp-table.h
@@ -33,10 +33,10 @@
 
 #define ARP_HW_SRC(skb, hdr_size) ((uint8_t *)(skb->data + hdr_size) + \
 				   ETH_HLEN + sizeof(struct arphdr))
-#define ARP_IP_SRC(skb, hdr_size) (*(uint32_t *)(ARP_HW_SRC(skb, hdr_size) + \
+#define ARP_IP_SRC(skb, hdr_size) (*(__be32 *)(ARP_HW_SRC(skb, hdr_size) + \
 				   ETH_ALEN))
 #define ARP_HW_DST(skb, hdr_size) (ARP_HW_SRC(skb, hdr_size) + ETH_ALEN + 4)
-#define ARP_IP_DST(skb, hdr_size) (*(uint32_t *)(ARP_HW_SRC(skb, hdr_size) + \
+#define ARP_IP_DST(skb, hdr_size) (*(__be32 *)(ARP_HW_SRC(skb, hdr_size) + \
 				   ETH_ALEN * 2 + 4))
 
 bool dat_snoop_outgoing_arp_request(struct bat_priv *bat_priv,
diff --git a/net/batman-adv/packet.h b/net/batman-adv/packet.h
index ad39938..eb4fdf6 100644
--- a/net/batman-adv/packet.h
+++ b/net/batman-adv/packet.h
@@ -113,7 +113,7 @@ enum bla_claimframe {
 struct bla_claim_dst {
 	uint8_t magic[3];	/* FF:43:05 */
 	uint8_t type;		/* bla_claimframe */
-	uint16_t group;		/* group id */
+	__be16 group;		/* group id */
 } __packed;
 
 struct batman_header {
@@ -142,7 +142,7 @@ struct icmp_packet {
 	uint8_t  msg_type; /* see ICMP message types above */
 	uint8_t  dst[ETH_ALEN];
 	uint8_t  orig[ETH_ALEN];
-	uint16_t seqno;
+	__be16   seqno;
 	uint8_t  uid;
 	uint8_t  reserved;
 } __packed;
@@ -156,7 +156,7 @@ struct icmp_packet_rr {
 	uint8_t  msg_type; /* see ICMP message types above */
 	uint8_t  dst[ETH_ALEN];
 	uint8_t  orig[ETH_ALEN];
-	uint16_t seqno;
+	__be16   seqno;
 	uint8_t  uid;
 	uint8_t  rr_cur;
 	uint8_t  rr[BAT_RR_LEN][ETH_ALEN];
@@ -181,20 +181,20 @@ struct unicast_frag_packet {
 	uint8_t  flags;
 	uint8_t  align;
 	uint8_t  orig[ETH_ALEN];
-	uint16_t seqno;
+	__be16   seqno;
 } __packed;
 
 struct bcast_packet {
 	struct batman_header header;
 	uint8_t  reserved;
-	uint32_t seqno;
+	__be32   seqno;
 	uint8_t  orig[ETH_ALEN];
 } __packed;
 
 struct vis_packet {
 	struct batman_header header;
 	uint8_t  vis_type;	 /* which type of vis-participant sent this? */
-	uint32_t seqno;		 /* sequence number */
+	__be32   seqno;		 /* sequence number */
 	uint8_t  entries;	 /* number of entries behind this struct */
 	uint8_t  reserved;
 	uint8_t  vis_orig[ETH_ALEN];	/* originator reporting its neighbors */
-- 
1.7.2.5

^ permalink raw reply related

* RE: [PATCH 00/14] usb/net: rndis: first step toward consolidation
From: Jussi Kivilinna @ 2012-04-18 18:14 UTC (permalink / raw)
  To: Haiyang Zhang
  Cc: Linus Walleij, netdev@vger.kernel.org, linux-usb@vger.kernel.org,
	Greg Kroah-Hartman, David S. Miller, Felipe Balbi, Wei Yongjun,
	Ben Hutchings
In-Reply-To: <A1F3067C9B68744AA19F6802BAB8FFDC0DD33174@TK5EX14MBXC221.redmond.corp.microsoft.com>

Quoting Haiyang Zhang <haiyangz@microsoft.com>:

>> -----Original Message-----
>> From: Linus Walleij [mailto:linus.walleij@linaro.org]
>> Sent: Wednesday, April 18, 2012 8:26 AM
>> To: Haiyang Zhang
>> Cc: netdev@vger.kernel.org; linux-usb@vger.kernel.org; Greg Kroah-
>> Hartman; David S. Miller; Felipe Balbi; Jussi Kivilinna; Wei Yongjun; Ben
>> Hutchings
>> Subject: Re: [PATCH 00/14] usb/net: rndis: first step toward consolidation
>>
>> On Sun, Apr 8, 2012 at 3:58 PM, Haiyang Zhang <haiyangz@microsoft.com>
>> wrote:
>> > _______________________________________
>> >> From: Linus Walleij [linus.walleij@linaro.org]
>> >> Sent: Sunday, April 08, 2012 4:46 AM
>> >> To: netdev@vger.kernel.org; linux-usb@vger.kernel.org; Greg
>> >> Kroah-Hartman; David S. Miller; Felipe Balbi
>> >> Cc: Jussi Kivilinna; Haiyang Zhang; Wei Yongjun; Ben Hutchings; Linus
>> >> Walleij
>> >> Subject: [PATCH 00/14] usb/net: rndis: first step toward
>> >> consolidation
>> >
>> >> So if you like this, let's proceed, but if you're all in "I wanna
>> >> keep this one implementation in my corner" I'll just give up right now.
>> >
>> >> So: what do you think?
>> >
>> > I will test this soon.
>>
>> Ping on this... any testing so far?
>
> I saw Jussi Kivilinna <jussi.kivilinna@mbnet.fi>'s comments saying  
> it does not
> work. And your patches are in "changes requested" state. So I'm waiting for
> your updated patches before testing.
>

Maybe I should clarify that at least rndis_wlan does not work because  
of that single patch (09/14). By fixing the problem, the patch-set  
works with rndis_wlan fine.

-Jussi

> Thanks,
> - Haiyang
>
>
>
>

^ permalink raw reply

* Re: batman: keep batman_ogm_packet ->seqno net-endian all along
From: Al Viro @ 2012-04-18 18:15 UTC (permalink / raw)
  To: Antonio Quartulli; +Cc: davem, netdev, b.a.t.m.a.n
In-Reply-To: <20120418181150.GE6589@ZenIV.linux.org.uk>

grr... this one would be 3/4 and the last ("trivial endianness annotations") -
4/4.  My apologies...

^ permalink raw reply

* Re: [PATCH net-next] bonding,vlan: propagate MAC failover changes to VLANs
From: Ben Hutchings @ 2012-04-18 18:17 UTC (permalink / raw)
  To: Jay Vosburgh; +Cc: netdev, David S. Miller, Patrick McHardy, Andy Gospodarek
In-Reply-To: <10757.1334772163@death.nxdomain>

On Wed, 2012-04-18 at 11:02 -0700, Jay Vosburgh wrote:
> 	With bonding's fail_over_mac=active, during failover the MAC
> address of the bond itself changes to match that of the slave.
> 
> 	This patch adds a notifier call to cause VLANs stacked atop the
> bonding to also change their MAC addresses to the new address when a
> failover occurs.
> 
> 	While it is legal for a VLAN to have a MAC address that differs
> from the underlying device, at least one device (qeth) that requires the
> use of fail_over_mac for bonding cannot handle the VLAN's MAC differing
> from that of the bond; thus, it needs the MAC change to propagate up
> to any VLANs when fail_over_mac is set to active.
[...]

This doesn't make sense to me.  You're applying the behaviour to all
VLANs on top of a bond, whether or not the underlying device is driven
by qeth, and ignoring any MAC address changes that don't involve the
bonding driver.

I think either of these would be better fixes:
1. Make VLAN devices follow changes to the parent device's MAC address
unless they are assigned an address of their own.
2. Add a configuration flag for VLAN devices to follow changes to the
parent device's MAC address.

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 4/4] net/l2tp: add support for L2TP over IPv6 UDP encap
From: David Miller @ 2012-04-18 18:30 UTC (permalink / raw)
  To: bcrl; +Cc: netdev, jchapman
In-Reply-To: <20120418134438.GA5162@kvack.org>

From: Benjamin LaHaise <bcrl@kvack.org>
Date: Wed, 18 Apr 2012 09:44:38 -0400

> +#if IS_ENABLED(CONFIG_IPV6)
> +	if (sk->sk_family == PF_INET6) {
> +		if (!uh->check) {
> +			LIMIT_NETDEBUG(KERN_INFO "L2TP: IPv6: checksum is 0\n");
> +			return 1;
> +		}
> +		if ((skb->ip_summed == CHECKSUM_COMPLETE) &&
> +		    !csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
> +				     &ipv6_hdr(skb)->daddr, ulen,
> +				     IPPROTO_UDP, skb->csum)) {
> +			skb->ip_summed = CHECKSUM_UNNECESSARY;
> +			return 0;
> +		}
> +		skb->csum = ~csum_unfold(csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
> +							 &ipv6_hdr(skb)->daddr,
> +							 skb->len, IPPROTO_UDP,
> +							 0));

Both the csum_ipv6_magic() calls should either use "ulen" or both
should use "skb->len".

^ permalink raw reply

* [PATCH] macvlan/macvtap: Fix vlan tagging on user read
From: Basil Gor @ 2012-04-18 18:34 UTC (permalink / raw)
  To: netdev; +Cc: David S. Miller, Eric W. Biederman, Basil Gor

Vlan tag is restored during buffer transmit to a network device (bridge
port) in bridging code in case of tun/tap driver. In case of macvtap it
has to be done explicitly. Otherwise vlan_tci is ignored and user always
gets untagged packets.

Scenario tested:
kvm guests (that use vlans) migration from bridged network to macvtap
revealed that packets delivered to guests are always untagged. Dumping
and comparing sk_buff in case of tap and macvtap driver showed that
macvtap does not restore vlan_tci.

With current patch applied I was able to get working network, kvm guests
get correctly tagged packets and can reach each other when macvtap in
bridge mode (both with no vlans and through vlan interfaces).

Signed-off-by: Basil Gor <basilgor@gmail.com>
---
 drivers/net/macvtap.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
index 0427c65..a6802b9 100644
--- a/drivers/net/macvtap.c
+++ b/drivers/net/macvtap.c
@@ -1,6 +1,7 @@
 #include <linux/etherdevice.h>
 #include <linux/if_macvlan.h>
 #include <linux/interrupt.h>
+#include <linux/if_vlan.h>
 #include <linux/nsproxy.h>
 #include <linux/compat.h>
 #include <linux/if_tun.h>
@@ -254,6 +255,14 @@ static int macvtap_forward(struct net_device *dev, struct sk_buff *skb)
 	if (skb_queue_len(&q->sk.sk_receive_queue) >= dev->tx_queue_len)
 		goto drop;
 
+	if (vlan_tx_tag_present(skb)) {
+		skb = __vlan_put_tag(skb, vlan_tx_tag_get(skb));
+		if (unlikely(!skb))
+			return NET_RX_DROP;
+
+		skb->vlan_tci = 0;
+	}
+
 	skb_queue_tail(&q->sk.sk_receive_queue, skb);
 	wake_up_interruptible_poll(sk_sleep(&q->sk), POLLIN | POLLRDNORM | POLLRDBAND);
 	return NET_RX_SUCCESS;
-- 
1.7.6.5

^ permalink raw reply related

* Re: [PATCH net-next] tcp: avoid expensive pskb_expand_head() calls
From: Neal Cardwell @ 2012-04-18 18:40 UTC (permalink / raw)
  To: Eric Dumazet
  Cc: David Miller, netdev, Tom Herbert, Maciej Żenczykowski,
	Yuchung Cheng
In-Reply-To: <1334764184.2472.299.camel@edumazet-glaptop>

On Wed, Apr 18, 2012 at 11:49 AM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> From: Eric Dumazet <edumazet@google.com>
>
> While doing netperf sessions on 10Gb Intel nics (ixgbe), I noticed
> unexpected profiling results, with pskb_expand_head() being in the top.
>
> After further analysis, I found we hit badly page refcounts,
> because when we transmit full size skb (64 KB), we can receive ACK for
> the first segments of the frame while skb was not completely sent by
> NIC.
>
> It takes ~54 us to send a full TSO packet at 10Gb speed, but with a
> close peer, we can receive TCP ACK in less than 50 us rtt.
>
> This is also true on 1Gb links but we were limited by wire speed, not
> cpu.
>
> When we try to trim skb, tcp_trim_head() has to call pskb_expand_head(),
> because the skb clone we did for transmit is still alive in TX ring
> buffer.
>
> pskb_expand_head() is really expensive : It has to make about 16+16
> atomic operations on page refcounts, not counting the skb head
> reallocation/copy. It increases chances of false sharing.
>
> In fact, we dont really need to trim skb. This costly operation can be
> delayed to the point it is really needed : Thats when a retransmit must
> happen.
>
> Most of the time, upcoming ACKS will ack the whole packet, and we can
> free it with minimal cost (since clone was already freed by TX
> completion)
>
> Of course, this means we dont uncharge the acked part from socket limits
> until retransmit, but this is hardly a concern with current autotuning
> (around 4MB per socket)
> Even with small cwnd limit, a single packet can not hold more than half
> the window.
>
> Performance results on my Q6600 cpu and 82599EB 10-Gigabit card :
> About 3% less cpu used for same workload (single netperf TCP_STREAM),
> bounded by x4 PCI-e slots (4660 Mbits).
>
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Cc: Tom Herbert <therbert@google.com>
> Cc: Neal Cardwell <ncardwell@google.com>
> Cc: Maciej Żenczykowski <maze@google.com>
> Cc: Yuchung Cheng <ycheng@google.com>

Nice find!

> +       prev_packets_acked = tcp_skb_pcount(skb);

FWIW, I'd find old_pcount or prev_pcount a little easier to read than
prev_packets_acked here (I see "oldpcount" is used in tcp_output
in a similar context).

>        TCP_SKB_CB(skb)->seq += len;
> +       TCP_SKB_CB(skb)->header.offset_ack = 0;

If the caller decides to trim a prefix of the skb that does not extend
to snd_una, then setting offset_ack to 0 here will cause us to forget
that some prefix is ACKed when we should have remembered this.
However, the API for the function invites the caller to chop off an
arbitrary amount (and there's no comment to disuade the caller from
trying this). This seems to risk bugs in the future.

To attempt to make this API safer and simpler for future generations,
what do you think about calculating the len inside tcp_trim_head(),
something like:

static int tcp_trim_head(struct sock *sk, struct sk_buff *skb)
{
  u32 len = tp->snd_una - TCP_SKB_CB(skb)->seq;
...

...
 if (tcp_trim_head(sk, skb))
...

neal

^ permalink raw reply

* pull request: wireless 2012-04-18
From: John W. Linville @ 2012-04-18 18:43 UTC (permalink / raw)
  To: davem-fT/PcQaiUtIeIZ0/mPfg9Q
  Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA,
	netdev-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA

[-- Attachment #1: Type: text/plain, Size: 13829 bytes --]

commit dbd717e37bf1409fd250d13aef2cab07bcae8c88

Dave,

Another batch of fixes intended for 3.4...

First up, we have a minor signedness fix for libertas from Amitkumar
Karwar.  Next, Arend gives us a brcm80211 fix for correctly enabling
Tx FIFOs on channels 12 and 13.  Bing Zhao gives us some register
address corrections for mwifiex.  Felix give us a trio of fixes --
one for ath9k to wake the hardware properly from full sleep, one for
mac80211 to properly handle packets in cooked monitor mode, and one
for ensuring that the proper HT mode selection is honored.

Hauke gives us a bcma fix for handling the lack of an sprom.  Jonathon
Bither gives us an ath5k fix for a missing THIS_MODULE build issue,
and another ath5k fix for an io mapping leak.  Lukasz Kucharczyk
fixes a bitwise check in cfg80211, and Sujith gives us an ath9k fix
for assigning sequence numbers for fragmented frames.  Finally, we
have a MAINTAINERS change from Wey-Yi Guy -- congrats to Johannes
Berg for taking the lead on iwlwifi. :-)

Please let me know if there are problems!

John

---

The following changes since commit 9fe5642f4a3b13beb43c2633db7df22dd9d99250:

  Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net (2012-04-17 22:58:52 -0400)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless.git for-davem

Amitkumar Karwar (1):
      libertas: fix signedness bug in lbs_auth_to_authtype()

Arend van Spriel (1):
      brcm80211: smac: resume transmit fifo upon receiving frames

Bing Zhao (1):
      mwifiex: update pcie8766 scratch register addresses

Felix Fietkau (3):
      ath9k: wake up the hardware from full sleep when idle is turned off
      mac80211: fix truncated packets in cooked monitor rx
      mac80211: fix logic error in ibss channel type check

Hauke Mehrtens (1):
      bcma: use fallback sprom if no on chip sprom is available

John W. Linville (1):
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless into for-davem

Jonathan Bither (2):
      ath5k: fix undefined 'THIS_MODULE'
      ath5k: unmap io memory on probe failure

Lukasz Kucharczyk (1):
      cfg80211: fix interface combinations check.

Sujith Manoharan (1):
      ath9k: Fix TX fragmentation

Wey-Yi Guy (1):
      MAINTAINERS: Add maintainer for iwlwifi

 MAINTAINERS                                    |    1 +
 drivers/bcma/sprom.c                           |    7 +++++--
 drivers/net/wireless/ath/ath5k/ahb.c           |    7 +++++--
 drivers/net/wireless/ath/ath9k/main.c          |    9 ++++++++-
 drivers/net/wireless/ath/ath9k/xmit.c          |   10 +++++++++-
 drivers/net/wireless/brcm80211/brcmsmac/main.c |    8 ++++++++
 drivers/net/wireless/libertas/cfg.c            |    9 +++++++--
 drivers/net/wireless/mwifiex/pcie.h            |   18 +++++++++---------
 net/mac80211/ibss.c                            |    4 ++--
 net/mac80211/rx.c                              |   10 ++++++----
 net/wireless/util.c                            |    2 +-
 11 files changed, 61 insertions(+), 24 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 7cef7be..f11ac47 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3592,6 +3592,7 @@ S:	Supported
 F:	drivers/net/wireless/iwlegacy/
 
 INTEL WIRELESS WIFI LINK (iwlwifi)
+M:	Johannes Berg <johannes.berg-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
 M:	Wey-Yi Guy <wey-yi.w.guy-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
 M:	Intel Linux Wireless <ilw-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
 L:	linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
diff --git a/drivers/bcma/sprom.c b/drivers/bcma/sprom.c
index cdcf75c..3e2a600 100644
--- a/drivers/bcma/sprom.c
+++ b/drivers/bcma/sprom.c
@@ -404,16 +404,19 @@ int bcma_sprom_get(struct bcma_bus *bus)
 		return -EOPNOTSUPP;
 
 	if (!bcma_sprom_ext_available(bus)) {
+		bool sprom_onchip;
+
 		/*
 		 * External SPROM takes precedence so check
 		 * on-chip OTP only when no external SPROM
 		 * is present.
 		 */
-		if (bcma_sprom_onchip_available(bus)) {
+		sprom_onchip = bcma_sprom_onchip_available(bus);
+		if (sprom_onchip) {
 			/* determine offset */
 			offset = bcma_sprom_onchip_offset(bus);
 		}
-		if (!offset) {
+		if (!offset || !sprom_onchip) {
 			/*
 			 * Maybe there is no SPROM on the device?
 			 * Now we ask the arch code if there is some sprom
diff --git a/drivers/net/wireless/ath/ath5k/ahb.c b/drivers/net/wireless/ath/ath5k/ahb.c
index 8faa129..8c50d9d 100644
--- a/drivers/net/wireless/ath/ath5k/ahb.c
+++ b/drivers/net/wireless/ath/ath5k/ahb.c
@@ -19,6 +19,7 @@
 #include <linux/nl80211.h>
 #include <linux/platform_device.h>
 #include <linux/etherdevice.h>
+#include <linux/export.h>
 #include <ar231x_platform.h>
 #include "ath5k.h"
 #include "debug.h"
@@ -119,7 +120,7 @@ static int ath_ahb_probe(struct platform_device *pdev)
 	if (res == NULL) {
 		dev_err(&pdev->dev, "no IRQ resource found\n");
 		ret = -ENXIO;
-		goto err_out;
+		goto err_iounmap;
 	}
 
 	irq = res->start;
@@ -128,7 +129,7 @@ static int ath_ahb_probe(struct platform_device *pdev)
 	if (hw == NULL) {
 		dev_err(&pdev->dev, "no memory for ieee80211_hw\n");
 		ret = -ENOMEM;
-		goto err_out;
+		goto err_iounmap;
 	}
 
 	ah = hw->priv;
@@ -185,6 +186,8 @@ static int ath_ahb_probe(struct platform_device *pdev)
  err_free_hw:
 	ieee80211_free_hw(hw);
 	platform_set_drvdata(pdev, NULL);
+ err_iounmap:
+        iounmap(mem);
  err_out:
 	return ret;
 }
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 2504ab0..798ea57 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1548,6 +1548,7 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
 	struct ath_hw *ah = sc->sc_ah;
 	struct ath_common *common = ath9k_hw_common(ah);
 	struct ieee80211_conf *conf = &hw->conf;
+	bool reset_channel = false;
 
 	ath9k_ps_wakeup(sc);
 	mutex_lock(&sc->mutex);
@@ -1556,6 +1557,12 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
 		sc->ps_idle = !!(conf->flags & IEEE80211_CONF_IDLE);
 		if (sc->ps_idle)
 			ath_cancel_work(sc);
+		else
+			/*
+			 * The chip needs a reset to properly wake up from
+			 * full sleep
+			 */
+			reset_channel = ah->chip_fullsleep;
 	}
 
 	/*
@@ -1584,7 +1591,7 @@ static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
 		}
 	}
 
-	if (changed & IEEE80211_CONF_CHANGE_CHANNEL) {
+	if ((changed & IEEE80211_CONF_CHANGE_CHANNEL) || reset_channel) {
 		struct ieee80211_channel *curchan = hw->conf.channel;
 		int pos = curchan->hw_value;
 		int old_pos = -1;
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index 834e6bc..23eaa1b 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -1820,6 +1820,7 @@ static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc,
 	struct ath_frame_info *fi = get_frame_info(skb);
 	struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
 	struct ath_buf *bf;
+	int fragno;
 	u16 seqno;
 
 	bf = ath_tx_get_buffer(sc);
@@ -1831,9 +1832,16 @@ static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc,
 	ATH_TXBUF_RESET(bf);
 
 	if (tid) {
+		fragno = le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_FRAG;
 		seqno = tid->seq_next;
 		hdr->seq_ctrl = cpu_to_le16(tid->seq_next << IEEE80211_SEQ_SEQ_SHIFT);
-		INCR(tid->seq_next, IEEE80211_SEQ_MAX);
+
+		if (fragno)
+			hdr->seq_ctrl |= cpu_to_le16(fragno);
+
+		if (!ieee80211_has_morefrags(hdr->frame_control))
+			INCR(tid->seq_next, IEEE80211_SEQ_MAX);
+
 		bf->bf_state.seqno = seqno;
 	}
 
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c
index 231ddf4..7083db7 100644
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
@@ -7614,6 +7614,7 @@ brcms_c_recvctl(struct brcms_c_info *wlc, struct d11rxhdr *rxh,
 {
 	int len_mpdu;
 	struct ieee80211_rx_status rx_status;
+	struct ieee80211_hdr *hdr;
 
 	memset(&rx_status, 0, sizeof(rx_status));
 	prep_mac80211_status(wlc, rxh, p, &rx_status);
@@ -7623,6 +7624,13 @@ brcms_c_recvctl(struct brcms_c_info *wlc, struct d11rxhdr *rxh,
 	skb_pull(p, D11_PHY_HDR_LEN);
 	__skb_trim(p, len_mpdu);
 
+	/* unmute transmit */
+	if (wlc->hw->suspended_fifos) {
+		hdr = (struct ieee80211_hdr *)p->data;
+		if (ieee80211_is_beacon(hdr->frame_control))
+			brcms_b_mute(wlc->hw, false);
+	}
+
 	memcpy(IEEE80211_SKB_RXCB(p), &rx_status, sizeof(rx_status));
 	ieee80211_rx_irqsafe(wlc->pub->ieee_hw, p);
 }
diff --git a/drivers/net/wireless/libertas/cfg.c b/drivers/net/wireless/libertas/cfg.c
index 3fa1ece..2fa879b 100644
--- a/drivers/net/wireless/libertas/cfg.c
+++ b/drivers/net/wireless/libertas/cfg.c
@@ -103,7 +103,7 @@ static const u32 cipher_suites[] = {
  * Convert NL80211's auth_type to the one from Libertas, see chapter 5.9.1
  * in the firmware spec
  */
-static u8 lbs_auth_to_authtype(enum nl80211_auth_type auth_type)
+static int lbs_auth_to_authtype(enum nl80211_auth_type auth_type)
 {
 	int ret = -ENOTSUPP;
 
@@ -1411,7 +1411,12 @@ static int lbs_cfg_connect(struct wiphy *wiphy, struct net_device *dev,
 		goto done;
 	}
 
-	lbs_set_authtype(priv, sme);
+	ret = lbs_set_authtype(priv, sme);
+	if (ret == -ENOTSUPP) {
+		wiphy_err(wiphy, "unsupported authtype 0x%x\n", sme->auth_type);
+		goto done;
+	}
+
 	lbs_set_radio(priv, preamble, 1);
 
 	/* Do the actual association */
diff --git a/drivers/net/wireless/mwifiex/pcie.h b/drivers/net/wireless/mwifiex/pcie.h
index 445ff21..2f218f9 100644
--- a/drivers/net/wireless/mwifiex/pcie.h
+++ b/drivers/net/wireless/mwifiex/pcie.h
@@ -48,15 +48,15 @@
 #define PCIE_HOST_INT_STATUS_MASK			0xC3C
 #define PCIE_SCRATCH_2_REG				0xC40
 #define PCIE_SCRATCH_3_REG				0xC44
-#define PCIE_SCRATCH_4_REG				0xCC0
-#define PCIE_SCRATCH_5_REG				0xCC4
-#define PCIE_SCRATCH_6_REG				0xCC8
-#define PCIE_SCRATCH_7_REG				0xCCC
-#define PCIE_SCRATCH_8_REG				0xCD0
-#define PCIE_SCRATCH_9_REG				0xCD4
-#define PCIE_SCRATCH_10_REG				0xCD8
-#define PCIE_SCRATCH_11_REG				0xCDC
-#define PCIE_SCRATCH_12_REG				0xCE0
+#define PCIE_SCRATCH_4_REG				0xCD0
+#define PCIE_SCRATCH_5_REG				0xCD4
+#define PCIE_SCRATCH_6_REG				0xCD8
+#define PCIE_SCRATCH_7_REG				0xCDC
+#define PCIE_SCRATCH_8_REG				0xCE0
+#define PCIE_SCRATCH_9_REG				0xCE4
+#define PCIE_SCRATCH_10_REG				0xCE8
+#define PCIE_SCRATCH_11_REG				0xCEC
+#define PCIE_SCRATCH_12_REG				0xCF0
 
 #define CPU_INTR_DNLD_RDY				BIT(0)
 #define CPU_INTR_DOOR_BELL				BIT(1)
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
index 33fd8d9..cef7c29 100644
--- a/net/mac80211/ibss.c
+++ b/net/mac80211/ibss.c
@@ -457,8 +457,8 @@ static void ieee80211_rx_bss_info(struct ieee80211_sub_if_data *sdata,
 			 * fall back to HT20 if we don't use or use
 			 * the other extension channel
 			 */
-			if ((channel_type == NL80211_CHAN_HT40MINUS ||
-			     channel_type == NL80211_CHAN_HT40PLUS) &&
+			if (!(channel_type == NL80211_CHAN_HT40MINUS ||
+			      channel_type == NL80211_CHAN_HT40PLUS) ||
 			    channel_type != sdata->u.ibss.channel_type)
 				sta_ht_cap_new.cap &=
 					~IEEE80211_HT_CAP_SUP_WIDTH_20_40;
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index bcfe8c7..d64e285 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -103,7 +103,7 @@ static void
 ieee80211_add_rx_radiotap_header(struct ieee80211_local *local,
 				 struct sk_buff *skb,
 				 struct ieee80211_rate *rate,
-				 int rtap_len)
+				 int rtap_len, bool has_fcs)
 {
 	struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
 	struct ieee80211_radiotap_header *rthdr;
@@ -134,7 +134,7 @@ ieee80211_add_rx_radiotap_header(struct ieee80211_local *local,
 	}
 
 	/* IEEE80211_RADIOTAP_FLAGS */
-	if (local->hw.flags & IEEE80211_HW_RX_INCLUDES_FCS)
+	if (has_fcs && (local->hw.flags & IEEE80211_HW_RX_INCLUDES_FCS))
 		*pos |= IEEE80211_RADIOTAP_F_FCS;
 	if (status->flag & (RX_FLAG_FAILED_FCS_CRC | RX_FLAG_FAILED_PLCP_CRC))
 		*pos |= IEEE80211_RADIOTAP_F_BADFCS;
@@ -294,7 +294,8 @@ ieee80211_rx_monitor(struct ieee80211_local *local, struct sk_buff *origskb,
 	}
 
 	/* prepend radiotap information */
-	ieee80211_add_rx_radiotap_header(local, skb, rate, needed_headroom);
+	ieee80211_add_rx_radiotap_header(local, skb, rate, needed_headroom,
+					 true);
 
 	skb_reset_mac_header(skb);
 	skb->ip_summed = CHECKSUM_UNNECESSARY;
@@ -2571,7 +2572,8 @@ static void ieee80211_rx_cooked_monitor(struct ieee80211_rx_data *rx,
 		goto out_free_skb;
 
 	/* prepend radiotap information */
-	ieee80211_add_rx_radiotap_header(local, skb, rate, needed_headroom);
+	ieee80211_add_rx_radiotap_header(local, skb, rate, needed_headroom,
+					 false);
 
 	skb_set_mac_header(skb, 0);
 	skb->ip_summed = CHECKSUM_UNNECESSARY;
diff --git a/net/wireless/util.c b/net/wireless/util.c
index 1b7a08d..957f2562 100644
--- a/net/wireless/util.c
+++ b/net/wireless/util.c
@@ -989,7 +989,7 @@ int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev,
 			if (rdev->wiphy.software_iftypes & BIT(iftype))
 				continue;
 			for (j = 0; j < c->n_limits; j++) {
-				if (!(limits[j].types & iftype))
+				if (!(limits[j].types & BIT(iftype)))
 					continue;
 				if (limits[j].max < num[iftype])
 					goto cont;
-- 
John W. Linville		Someday the world will need a hero, and you
linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org			might be all we have.  Be ready.

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply related

* Re: [patch] Fix handling of overlength pathname in AF_UNIX sun_path
From: Carlos O'Donell @ 2012-04-18 18:48 UTC (permalink / raw)
  To: David Miller
  Cc: mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w,
	netdev-u79uwXL29TY76Z2rM5mHXA,
	penguin-kernel-1yMVhJb1mP/7nzcFbJAaVXf5DAMn2ifp,
	linux-api-u79uwXL29TY76Z2rM5mHXA, yoshfuji-VfPWfsRibaP+Ru+s062T9g,
	jengelh-nopoi9nDyk+ELgA04lAiVw, w,
	alan-qBU/x9rampVanCEyBjwyrvXRex20P6io
In-Reply-To: <20120418.133102.1711079292327461659.davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>

On Wed, Apr 18, 2012 at 1:31 PM, David Miller <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org> wrote:
> From: "Carlos O'Donell" <carlos-v2tUB8YBRSi3e3T8WW9gsA@public.gmane.org>
> Date: Wed, 18 Apr 2012 08:57:58 -0400
>
>> In summary your opinion is that the API has and always will allow up
>> to 108 chars to be used in sun_path?
>
> Yes.
>
>> In which case I will talk to the Austin group to get a good example
>> added to POSIX showing safe usage.
>
> Why would you add language to POSIX for Linux specific behavior?
> Just curious :-)

Why not? Do you ever feel crazy when people question what you think is
perfectly reasonable? ;-)

POSIX doesn't exist in a vacuum, we need to harmonize reality with the
standard. If an implementation exists where sun_path has no
null-terminator then it is useful to have POSIX clarify that
null-termination is implementation defined behaviour, just like it
says that sun_path's length undefined. Under "Application Usage" or
"Examples" it's valid to talk about specific implementations.

See: http://pubs.opengroup.org/onlinepubs/007904975/basedefs/sys/un.h.html,
where it talks about BSD in the "Application Usage." It's about time
we some "Linux this" and "Linux that" in there.

Cheers,
Carlos.

^ permalink raw reply

* Re: [PATCH net-next] bonding,vlan: propagate MAC failover changes to VLANs
From: Jay Vosburgh @ 2012-04-18 18:49 UTC (permalink / raw)
  To: Ben Hutchings; +Cc: netdev, David S. Miller, Patrick McHardy, Andy Gospodarek
In-Reply-To: <1334773079.2426.32.camel@bwh-desktop.uk.solarflarecom.com>

Ben Hutchings <bhutchings@solarflare.com> wrote:

>On Wed, 2012-04-18 at 11:02 -0700, Jay Vosburgh wrote:
>> 	With bonding's fail_over_mac=active, during failover the MAC
>> address of the bond itself changes to match that of the slave.
>> 
>> 	This patch adds a notifier call to cause VLANs stacked atop the
>> bonding to also change their MAC addresses to the new address when a
>> failover occurs.
>> 
>> 	While it is legal for a VLAN to have a MAC address that differs
>> from the underlying device, at least one device (qeth) that requires the
>> use of fail_over_mac for bonding cannot handle the VLAN's MAC differing
>> from that of the bond; thus, it needs the MAC change to propagate up
>> to any VLANs when fail_over_mac is set to active.
>[...]
>
>This doesn't make sense to me.  You're applying the behaviour to all
>VLANs on top of a bond, whether or not the underlying device is driven
>by qeth, and ignoring any MAC address changes that don't involve the
>bonding driver.

	With the patch, the PROPAGATE event is only generated if bonding
is set for fail_over_mac=active, which is normally only enabled on those
devices that require it (some devices for IBM's pseries and zseries
architectures and Infiniband, which doesn't have VLANs).

	Devices that do not use bonding's fail_over_mac will not have
VLANs following MAC changes.

>I think either of these would be better fixes:
>1. Make VLAN devices follow changes to the parent device's MAC address
>unless they are assigned an address of their own.
>2. Add a configuration flag for VLAN devices to follow changes to the
>parent device's MAC address.

	#1 would be a behavior change for all VLAN devices, which I
sought to avoid.

	#2 would be an additional configuration option that would have
to be enabled just for this case (unless VLANs following MAC changes of
the parent device is a generally desirable feature).  The patch requires
no additional option settings beyond what are currently in use.

	-J

---
	-Jay Vosburgh, IBM Linux Technology Center, fubar@us.ibm.com

^ permalink raw reply

* Re: [PATCH] macvlan/macvtap: Fix vlan tagging on user read
From: Eric W. Biederman @ 2012-04-18 18:54 UTC (permalink / raw)
  To: Basil Gor; +Cc: netdev, David S. Miller, Basil Gor
In-Reply-To: <1334774098-22886-1-git-send-email-basilgor@gmail.com>

Basil Gor <basil.gor@gmail.com> writes:

> Vlan tag is restored during buffer transmit to a network device (bridge
> port) in bridging code in case of tun/tap driver. In case of macvtap it
> has to be done explicitly. Otherwise vlan_tci is ignored and user always
> gets untagged packets.
>
> Scenario tested:
> kvm guests (that use vlans) migration from bridged network to macvtap
> revealed that packets delivered to guests are always untagged. Dumping
> and comparing sk_buff in case of tap and macvtap driver showed that
> macvtap does not restore vlan_tci.
>
> With current patch applied I was able to get working network, kvm guests
> get correctly tagged packets and can reach each other when macvtap in
> bridge mode (both with no vlans and through vlan interfaces).

My first impression is that this is the wrong place to add a vlan
header back.

You need to keep the vlan information in vlan_tci until just
before the packet is delivered to userspace. Which would suggest
the best place for these games is macvtap_put_user.

Elsewhere vlan headers should not be explicitly stored in the packet.

At least that was the rule last I looked.

Eric


> Signed-off-by: Basil Gor <basilgor@gmail.com>
> ---
>  drivers/net/macvtap.c |    9 +++++++++
>  1 files changed, 9 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
> index 0427c65..a6802b9 100644
> --- a/drivers/net/macvtap.c
> +++ b/drivers/net/macvtap.c
> @@ -1,6 +1,7 @@
>  #include <linux/etherdevice.h>
>  #include <linux/if_macvlan.h>
>  #include <linux/interrupt.h>
> +#include <linux/if_vlan.h>
>  #include <linux/nsproxy.h>
>  #include <linux/compat.h>
>  #include <linux/if_tun.h>
> @@ -254,6 +255,14 @@ static int macvtap_forward(struct net_device *dev, struct sk_buff *skb)
>  	if (skb_queue_len(&q->sk.sk_receive_queue) >= dev->tx_queue_len)
>  		goto drop;
>  
> +	if (vlan_tx_tag_present(skb)) {
> +		skb = __vlan_put_tag(skb, vlan_tx_tag_get(skb));
> +		if (unlikely(!skb))
> +			return NET_RX_DROP;
> +
> +		skb->vlan_tci = 0;
> +	}
> +
>  	skb_queue_tail(&q->sk.sk_receive_queue, skb);
>  	wake_up_interruptible_poll(sk_sleep(&q->sk), POLLIN | POLLRDNORM | POLLRDBAND);
>  	return NET_RX_SUCCESS;

^ permalink raw reply

* Re: [PATCH] set fake_rtable's dst to NULL to avoid kernel Oops.
From: Jonathan Nieder @ 2012-04-18 19:04 UTC (permalink / raw)
  To: Peter Huang (Peng)
  Cc: shemminger, 'David S. Miller', netdev, eric.dumazet,
	linux-kernel, ctrix+debianbugs, peter.huangpeng, harry.majun
In-Reply-To: <000001cd1c62$75d10de0$617329a0$%huangpeng@huawei.com>

Hi,

Peter Huang (Peng) wrote:

> When bridge is deleted before tap/vif device's delete, kernel may
> encounter an oops because of NULL reference to fake_rtable's dst.
>
> Set fake_rtable's dst to NULL before sending packets out can solve
> this problem.
>
> Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
> Signed-off-by: Peter Huang <peter.huangpeng@huawei.com>
> ---
> include/linux/netfilter_bridge.h |    8 ++++++++
>  net/bridge/br_forward.c          |    1 +
>  net/bridge/br_netfilter.c        |    6 +-----
>  3 files changed, 10 insertions(+), 5 deletions(-)

Massimo Cetra (cc-ed) tested the patch against a 3.2.y kernel and wrote[1]:

> The patch i applied yesterday to the debian kernel has been installed 
> and the kernel is not panic-ing anymore.
>
> I'll try to keep this bug up to date.

So it seems to work.  Dave, please consider queuing this for stable@
when the final patch is ready.

Thanks,
Jonathan

[1] http://bugs.debian.org/668511#37

^ permalink raw reply

* pull request: wireless-next 2012-04-18
From: John W. Linville @ 2012-04-18 19:05 UTC (permalink / raw)
  To: davem-fT/PcQaiUtIeIZ0/mPfg9Q
  Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA,
	netdev-u79uwXL29TY76Z2rM5mHXA

[-- Attachment #1: Type: text/plain, Size: 40096 bytes --]

commit 59ef43e681d103a51c3727dad0315e093f07ec61

Dave,

Another batch of wireless updates intended for 3.5...

Highlights include some wl12xx refactoring, NFC HCI and SHDLC updates,
an ath6kl pull, some mesh updates, and the usual updates to iwlwifi,
ath9k, brcm80211, mwifiex, libertas, and other drivers.

Please let me know if there are problems!

Thanks,

John

---

The following changes since commit 91fbe33034c184c6a60e31c2207a2f7ec2f180dc:

  Merge tag 'batman-adv-for-davem' of git://git.open-mesh.org/linux-merge (2012-04-18 13:21:59 -0400)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next.git for-davem

Aarthi Thiruvengadam (2):
      ath6kl: handle probe response from P2P device in P2P GO mode
      ath6kl: add debug log for AP MLME operations

Amit Beka (1):
      iwlwifi: added HBUS_TARG_TEST_REG

Amitkumar Karwar (5):
      mwifiex: set default regulatory domain
      mwifiex: display correct country information in debugfs "info"
      mwifiex: use asynchronous firmware loading
      mwifiex: code cleanup in BSS handling
      mwifiex: corrections in timestamp related code

Andreas Hartmann (1):
      rt2x00: Don't let mac80211 send a BAR when an AMPDU subframe fails

Arend van Spriel (5):
      brcm80211: fmac: make brcmf_net_attach() static
      brcm80211: fmac: remove primary mac address handling from brcmf_net_attach
      brcm80211: fmac: register primary net device with device mac address
      brcm80211: smac: do not use US as fallback regulatory hint
      brcm80211: smac: only provide valid regulatory hint

Arik Nemtsov (19):
      wlcore/wl12xx: create per-chip-family private storage
      wlcore/wl12xx: set the number of Tx descriptors per chip family
      wlcore/wl12xx: change GEM Tx-spare blocks per-vif
      wlcore/wl12xx: add hw op for calculating hw block count per packet
      wlcore/wl12xx: add hw op for setting blocks in hw_tx_desc
      wlcore/wl12xx: add hw op for setting frame length in tx_hw_desc
      wlcore/wl12xx: add global elements to convert hw-rates to standard rates
      wlcore: introduce Rx block-size alignment HW quirk
      wlcore/wl12xx: add hw op for getting rx buffer data alignment
      wlcore/wl12xx: add hw op for getting rx packet data length
      wlcore/wl12xx: split Tx completion to immediate/delayed
      wlcore/wl12xx: turn no-Tx-align quirk into Tx-align
      wlcore/wl12xx: add hw op for vif init
      wlcore/wl12xx: expand functionality of cmd_trigger HW op
      wlcore/wl12xx: add hw op to get rate-mask for AP-link in STA mode
      wlcore/wl12xx: set HT capabilities per chip-family
      wlcore: set max_rx_agg_subframes in mac80211 according to HT conf
      wlcore: add module param to prevent HW recovery
      wlcore/wl12xx: adapt FW status for multiple families

Avinash Patil (1):
      mwifiex: add support for WPS2.0

Axel Lin (1):
      net/wireless: use module_pci_driver

Bala Shanmugam (1):
      ath6kl: Set background scan period.

Ben Greear (2):
      ath9k: Use macro to decrease code when priting recv stats.
      ath9k: Gather and report IRQ sync_cause errors.

Bing Zhao (1):
      mwifiex: fix typo in RSSI_HIGH event handling

Chun-Yeow Yeoh (1):
      mac80211: fix the assignment of PREQ's MAC address for Proactive RANN

Daniel Drake (5):
      libertas: Firmware loading simplifications
      libertas: harden-up exit paths
      libertas: add asynchronous firmware loading capability
      libertas SDIO: convert to asynchronous firmware loading
      libertas USB: convert to asynchronous firmware loading

David Spinadel (4):
      iwlwifi: set size of ucode section
      iwlwifi: remove double verification of ucode sections
      iwlwifi: phy db channel to tx power channel group
      iwlwifi: expose static methods for MVM use

Don Fry (3):
      iwlwifi: complete STATUS_READY refactoring
      iwlwifi: move HCMD_ACTIVE to trans
      iwlwifi: move status definitions from iwl-shared

Dor Shaish (1):
      iwlwifi: Disabling calibrations variable

Eliad Peller (2):
      wl12xx: set do_join on BSS_CHANGED_ASSOC
      wl12xx: free ap keys only in ap mode

Emmanuel Grumbach (1):
      iwlwifi: remove uneeded include from iwl-pci.c

Eric Lapuyade (7):
      NFC: Export target lost function
      NFC: HCI support
      NFC: SHDLC implementation
      NFC: Add HCI documentation
      NFC: Fix next target_idx type and rename for clarity
      NFC: Changed target activated state logic
      NFC: Add Core support to generate tag lost event

Eyal Shapira (4):
      wl12xx: fix race between suspend/resume and recovery
      wl12xx: fix a memory leak of probereq template upon recovery
      wl12xx: adaptive sched scan dwell times
      wl12xx: increase scan timeout to 30s

Felix Fietkau (3):
      ath9k_hw: add support for 8 AP mode interfaces
      ath9k: do not register LEDs on AR913x
      ath9k: optimize the hardware hang check

Forest Bond (2):
      rtl8192de: Clean up and fix 92D cut version constants and macros.
      rtl8192de: Recognize 92D E-CUT version.

Franky Lin (3):
      brcm80211: fmac: add frame header extension support
      brcm80211: fmac: postpone dongle RF enabling.
      brcm80211: fmac: clean up chip id table

Gabor Juhos (8):
      ath9k: use ath9k_hw_update_regulatory_maxpower in ath9k_hw_def_set_txpower
      ath9k: use consistent value for REDUCE_SCALED_POWER_BY_THREE_CHAIN
      ath9k: introduce ath9k_hw_get_scaled_power helper
      ath9k: simplify ath9k_hw_get_scaled_power function
      ath9k: merge power correction constants
      ath9k: remove unused PWRINC_*_TO_*_CHAIN defines
      ath9k: move ath9k_hw_fbin2freq function to eeprom.h
      ath9k: use ath9k_hw_fbin2freq instead of FBIN2FREQ

Jakub Kicinski (4):
      rt2800: introduce wpdma_disable function
      rt2800: add disabling of DMA before loading firmware
      rt2800: initialize queues before giving up due to DMA error
      rt2800: zero registers of unused TX rings

Javier Cardona (4):
      mac80211: Set the correct values for hwmp (1) and airtimeLinkMetric (1)
      mac80211_hwsim: fixup for tsf setting
      mac80211: Choose a new toffset setpoint if a big tsf jump is detected.
      mac80211: Take into account TSF adjustment latency in Toffset setpoint

Jesper Juhl (7):
      wireless, at76c50x:: Don't needlessly test for NULL before calling release_firmware()
      wireless, atmel: remove pointless test for NULL before release_firmware() call
      ipw2200: remove a redundant NULL check before calling release_firmware()
      wireless, libertas: remove redundant NULL tests before calling release_firmware()
      wireless, mwifiex: drop redundant NULL test before call to release_firmware()
      wireless, orinoco: release_firmware() tests for NULL, remove explicit tests before calls
      ipw2100: remove a redundant NULL check before calling release_firmware()

Jim Cromie (2):
      brcm80211: replace open-coded ARRAY_SIZE with the macro
      prism54: replace open-coded ARRAY_SIZE with macro

Joe Perches (1):
      ath6kl: Add __printf verification to ath6kl_printk

Johannes Berg (20):
      iwlwifi: move rx_page_order into transport
      iwlwifi: remove watchdog debugfs file
      iwlwifi: remove unneeded struct declarations
      iwlwifi: move queue watchdog into transport
      iwlwifi: move hw_params into priv
      iwlwifi: remove ack_check module parameter
      iwlwifi: split force_reset debugfs file
      iwlwifi: move eeprom into priv
      iwlwifi: create device configuration header file
      iwlwifi: introduce device family enum
      iwlwifi: dynamically determine lib_ops
      iwlwifi: make iwl_sta_fill_lq static
      iwlwifi: calculate active legacy rates per station
      cfg80211: enforce lack of interface combinations
      iwlwifi: remove no_sleep_autoadjust
      iwlwifi: remove uCode alternatives mechanism
      iwlwifi: remove antenna from mod params struct
      iwlwifi: remove iwl_tx_queue declaration
      iwlwifi: optimize struct iwl_cmd_meta layout
      iwlwifi: remove get_cmd_string

John W. Linville (4):
      Merge branch 'for-linville' of git://github.com/kvalo/ath6kl
      Merge branch 'for-linville' of git://git.kernel.org/.../luca/wl12xx
      Merge branch 'wireless-next' of git://git.kernel.org/.../iwlwifi/iwlwifi
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next into for-davem

Jonathan Bither (1):
      ath5k: use compare_ether_addr on MAC addresses instead of memcmp

Julia Lawall (1):
      drivers/net/wireless/libertas/if_usb.c: add missing debugging code

Kalle Valo (11):
      ath6kl: abort normal scan when scheduled scan is started
      Merge remote branch 'wireless-next/master' into ath6kl-next
      ath6kl: set ram reserved size only for ar6003
      ath6kl: Add tx_complete() to struct htc_ep_callbacks
      ath6kl: add tx_comp_multi() to struct htc_ep_callbacks
      ath6kl: add pointer to the skb in htc_packet
      ath6kl: add rx data padding support
      ath6kl: remove void pointer from ath6kl_credit_setup()
      ath6kl: add htc ops
      ath6kl: Add HTC pipe implementation
      ath6kl: add full USB support

Larry Finger (1):
      rtlwifi: rtl8192ce: Remove false positives for kmemleak

Lorenzo Bianconi (2):
      rtlwifi: support for Belkin Surf N300 XR
      mac80211: fix an issue in ieee80211_tx_info count field management

Luciano Coelho (23):
      wireless/wl12xx/wl1251: move TI WLAN modules to a common ti subdirectory
      wl12xx/wlcore: rename wl12xx to wlcore
      wl12xx/wlcore: spin out the wl12xx probe from wlcore to a new wl12xx
      wl12xx/wlcore: initial split of probe
      wl12xx/wlcore: move wl1271 struct to wlcore and add ops
      wlcore/wl12xx: implement chip-specific partition tables
      wlcore/wl12xx: implement chip-specific register tables
      wlcore/wl12xx: add chip-specific identify chip operation
      wlcore/wl12xx: move get_pg_ver to the lower driver
      wlcore/wl12xx: move top initialization to wl12xx
      wlcore/wl12xx: move MAC address reading operation to lower driver
      wlcore/wl12xx: add command trigger and event ack operations
      wlcore/wl12xx: add quirk for legacy NVS support
      wlcore: remove some unnecessary event mailbox address reads
      wlcore: add quirk to disable ELP
      wlcore/wl12xx: add prepare_read hw op for Rx data
      wlcore/wl12xx: add hw_init operation
      wlcore/wl12xx: move runtime configuration struct to the lower driver
      wlcore/wl12xx: move extended radio configuration parameters to wl12xx
      wlcore/wl12xx: use a single memory config and reset if using wl127x
      wlcore/wl12xx: move identify firmware function to a lower driver op
      Merge branch 'wl12xx-next' into for-linville
      mac80211: check IEEE80211_HW_QUEUE_CONTROL in ieee80211_check_queues()

Matt Renzelmann (1):
      hostap: GFP_ATOMIC/GFP_KERNEL cleanup

Meenakshi Venkataraman (20):
      iwlwifi: move iwlagn_hw_valid_rtc_data_addr prototype
      iwlwifi: move channel switch related functions
      iwlwifi: move iwl_free_skb and mark it static
      iwlwifi: move iwl_set_hw_rfkill_state and mark it static
      iwlwifi: move iwl_is_ht40_tx_allowed out of iwl-core.c
      iwlwifi: move iwl_set_rxon_ht to iwl-agn-rxon.c
      iwlwifi: move iwl_set_rxon_channel to iwl-agn-rxon.c
      iwlwifi: move iwl_set_flags_for_band to iwl-agn-rxon.c
      iwlwifi: move iwl_connection_init_rx_config to iwl-agn-rxon.c
      iwlwifi: move iwl_set_rate to iwl-agn-rxon.c
      iwlwifi: move iwl_chswitch_done to iwl-mac80211.c
      iwlwifi: move iwlagn_fw_error to iwl-agn.c
      iwlwifi: move iwl_set_tx_power and make it static
      iwlwifi: move iwl_send_bt_config and mark it static
      iwlwifi: move iwl_print_rx_config_cmd to iwl-agn-rxon.c
      iwlwifi: move iwl_send_statistics_request to iwl-agn.c
      iwlwifi: move iwl_force_rf_reset to iwl-agn-rx.c
      iwlwifi: move iwl_bcast_addr to iwl-agn-sta.c
      iwlwifi: move utility functions out of iwl-core.h
      iwlwifi: move scan related declarations out of iwl-core.h

Michal Kazior (1):
      mac80211: remove hw.conf.channel usage where possible

Mircea Gherzan (1):
      wl12xx: fix DMA-API-related warnings

Mohammed Shafi Shajakhan (1):
      mac80211: remove ieee80211_rx_bss_get

Pontus Fuchs (1):
      cfg80211: Add channel information to NL80211_CMD_GET_INTERFACE

Raja Mani (4):
      ath6kl: Add ARP offload related statistic info in tgt_stats
      ath6kl: Isolate host sleep mode config part from ath6kl_wow_suspend
      ath6kl: Optimize target power in deep sleep suspend
      ath6kl: Store scan request info in-advance before sending SCAN request

Rajkumar Manoharan (6):
      ath9k: fix ibss fair beacon distribution for AR9462
      ath9k: fix ibss beacon next tbtt
      cfg80211: increse bss expire time
      ath9k: reset noiseimmunity level to default
      ath9k: skip beaconing when reset work is pending
      ath9k: fix beacon descriptor

Samuel Ortiz (10):
      NFC: Add a target lost netlink event
      NFC: The core part should generate the target index
      NFC: Dump LLCP frames
      NFC: No need to apply twice the modulo op to LLCP's recv_n
      NFC: Fix LLCP TLV building routine
      NFC: Call llcp_add_header properly when sending LLCP DM or DISC
      NFC: Convert pn533 from tasklet to workqueues
      NFC: pn533 Rx chaining support
      NFC: Add MIUX to the local LLCP general bytes
      NFC: Fix LLCP link timeout typo

Stanislav Yakovlev (1):
      net/wireless: ipw2x00: add supported cipher suites to wiphy initialization

Stanislaw Gruszka (2):
      mac80211: do not scan and monitor connection in parallel
      mac80211: protect ->scanning by mutex in ieee80211_work_work()

Sujith Manoharan (2):
      ath9k_hw: Remove BTCOEX initvals
      ath9k_htc: Add Panasonic N5HBZ0000055 device id

Vasanthakumar Thiagarajan (7):
      ath6kl: Dump htc header when invalid Rx frame length is detected
      ath6kl: Configure inactivity timeout in fw
      ath6kl: Support net_stats.multicast
      ath6kl: Fix target assert in p2p bringup with multi vif
      ath6kl: Don't advertise HT40 support in 2.4 Ghz
      ath6kl: Configure htcap in fw based on the channel type in AP mode
      ath6kl: Fix 4-way handshake failure in AP and P2P GO mode

Victor Goldenshtein (1):
      wl12xx: fix station channel switch

Vivek Natarajan (2):
      ath6kl: Use vmalloc instead of kmalloc for fw
      ath6kl: Fix scan related issue on suspend-resume

Wey-Yi Guy (7):
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next into wireless-next
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next into wireless-next
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next into wireless-next
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next into wireless-next
      iwlwifi: more generic name for bluetooth command
      iwlwifi: change the default P2P support to "Yes"
      mac80211: add function retrieve average rssi

Xose Vazquez Perez (2):
      wireless: rt2x00: rt{2500,73}usb.c put back duplicate id
      wireless: rt2x00: rt2800pci add more RT539x ids

Yoshinori Sato (1):
      ath5k: add PCI id

Zefir Kurtisi (1):
      ath9k: remove dead code

 Documentation/nfc/nfc-hci.txt                      |  155 ++
 MAINTAINERS                                        |   27 +-
 drivers/net/wireless/Kconfig                       |    3 +-
 drivers/net/wireless/Makefile                      |    4 +-
 drivers/net/wireless/adm8211.c                     |   17 +-
 drivers/net/wireless/at76c50x-usb.c                |    6 +-
 drivers/net/wireless/ath/ath5k/ath5k.h             |    2 +-
 drivers/net/wireless/ath/ath5k/base.c              |    4 +-
 drivers/net/wireless/ath/ath5k/pci.c               |   27 +-
 drivers/net/wireless/ath/ath5k/pcu.c               |    9 +-
 drivers/net/wireless/ath/ath5k/qcu.c               |    8 +-
 drivers/net/wireless/ath/ath6kl/Makefile           |    3 +-
 drivers/net/wireless/ath/ath6kl/cfg80211.c         |  417 ++++-
 drivers/net/wireless/ath/ath6kl/common.h           |    4 +-
 drivers/net/wireless/ath/ath6kl/core.c             |   30 +-
 drivers/net/wireless/ath/ath6kl/core.h             |   34 +-
 drivers/net/wireless/ath/ath6kl/debug.c            |    6 +
 drivers/net/wireless/ath/ath6kl/debug.h            |    1 +
 drivers/net/wireless/ath/ath6kl/hif-ops.h          |   34 +
 drivers/net/wireless/ath/ath6kl/hif.h              |    6 +
 drivers/net/wireless/ath/ath6kl/htc-ops.h          |  113 ++
 drivers/net/wireless/ath/ath6kl/htc.h              |   98 +-
 .../net/wireless/ath/ath6kl/{htc.c => htc_mbox.c}  |   85 +-
 drivers/net/wireless/ath/ath6kl/htc_pipe.c         | 1713 ++++++++++++++++++++
 drivers/net/wireless/ath/ath6kl/init.c             |   57 +-
 drivers/net/wireless/ath/ath6kl/main.c             |    4 +
 drivers/net/wireless/ath/ath6kl/sdio.c             |    2 +-
 drivers/net/wireless/ath/ath6kl/txrx.c             |   23 +-
 drivers/net/wireless/ath/ath6kl/usb.c              |  785 +++++++++-
 drivers/net/wireless/ath/ath6kl/wmi.c              |   80 +
 drivers/net/wireless/ath/ath6kl/wmi.h              |   40 +
 drivers/net/wireless/ath/ath9k/ani.c               |    8 +-
 drivers/net/wireless/ath/ath9k/ar5008_phy.c        |    1 -
 drivers/net/wireless/ath/ath9k/ar9002_mac.c        |    1 +
 drivers/net/wireless/ath/ath9k/ar9002_phy.c        |    1 -
 drivers/net/wireless/ath/ath9k/ar9003_eeprom.c     |   52 +-
 drivers/net/wireless/ath/ath9k/ar9003_eeprom.h     |    1 -
 drivers/net/wireless/ath/ath9k/ar9003_hw.c         |    5 -
 drivers/net/wireless/ath/ath9k/ar9003_mac.c        |    2 +
 drivers/net/wireless/ath/ath9k/ar9003_phy.c        |   14 +-
 .../net/wireless/ath/ath9k/ar9462_2p0_initvals.h   |   16 +-
 drivers/net/wireless/ath/ath9k/ath9k.h             |    2 +-
 drivers/net/wireless/ath/ath9k/beacon.c            |   13 +-
 drivers/net/wireless/ath/ath9k/debug.c             |  188 +--
 drivers/net/wireless/ath/ath9k/debug.h             |   23 +
 drivers/net/wireless/ath/ath9k/eeprom.c            |   40 +-
 drivers/net/wireless/ath/ath9k/eeprom.h            |   14 +-
 drivers/net/wireless/ath/ath9k/eeprom_9287.c       |   30 +-
 drivers/net/wireless/ath/ath9k/eeprom_def.c        |   38 +-
 drivers/net/wireless/ath/ath9k/gpio.c              |    3 +
 drivers/net/wireless/ath/ath9k/hif_usb.c           |    2 +
 drivers/net/wireless/ath/ath9k/hw.c                |   54 +-
 drivers/net/wireless/ath/ath9k/hw.h                |   16 +-
 drivers/net/wireless/ath/ath9k/main.c              |   11 -
 drivers/net/wireless/atmel.c                       |    3 +-
 drivers/net/wireless/atmel_pci.c                   |   13 +-
 drivers/net/wireless/b43/xmit.c                    |    3 +-
 drivers/net/wireless/b43legacy/main.c              |    2 +
 drivers/net/wireless/b43legacy/xmit.c              |    1 +
 drivers/net/wireless/brcm80211/brcmfmac/dhd.h      |    1 -
 drivers/net/wireless/brcm80211/brcmfmac/dhd_cdc.c  |    1 +
 .../net/wireless/brcm80211/brcmfmac/dhd_common.c   |    4 -
 .../net/wireless/brcm80211/brcmfmac/dhd_linux.c    |  127 +-
 drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c |    6 -
 drivers/net/wireless/brcm80211/brcmfmac/usb.c      |    8 -
 drivers/net/wireless/brcm80211/brcmsmac/channel.c  |   36 +-
 .../net/wireless/brcm80211/brcmsmac/mac80211_if.c  |    6 +-
 .../net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c  |    3 +-
 .../net/wireless/brcm80211/brcmsmac/phy/phy_n.c    |   41 +-
 .../net/wireless/brcm80211/include/brcm_hw_ids.h   |   40 +-
 drivers/net/wireless/hostap/hostap_main.c          |    3 +-
 drivers/net/wireless/hostap/hostap_pci.c           |   16 +-
 drivers/net/wireless/hostap/hostap_plx.c           |   16 +-
 drivers/net/wireless/ipw2x00/ipw.h                 |   23 +
 drivers/net/wireless/ipw2x00/ipw2100.c             |    7 +-
 drivers/net/wireless/ipw2x00/ipw2200.c             |    7 +-
 drivers/net/wireless/iwlwifi/Kconfig               |   29 +-
 drivers/net/wireless/iwlwifi/Makefile              |    2 +-
 drivers/net/wireless/iwlwifi/iwl-1000.c            |  117 +--
 drivers/net/wireless/iwlwifi/iwl-2000.c            |  120 +--
 drivers/net/wireless/iwlwifi/iwl-5000.c            |  274 +---
 drivers/net/wireless/iwlwifi/iwl-6000.c            |  229 +---
 drivers/net/wireless/iwlwifi/iwl-agn-calib.c       |   28 +-
 drivers/net/wireless/iwlwifi/iwl-agn-devices.c     |  756 +++++++++
 drivers/net/wireless/iwlwifi/iwl-agn-lib.c         |  100 +-
 drivers/net/wireless/iwlwifi/iwl-agn-rs.c          |   68 +-
 drivers/net/wireless/iwlwifi/iwl-agn-rx.c          |  289 ++--
 drivers/net/wireless/iwlwifi/iwl-agn-rxon.c        |  339 ++++-
 drivers/net/wireless/iwlwifi/iwl-agn-sta.c         |  146 ++-
 drivers/net/wireless/iwlwifi/iwl-agn-tx.c          |    6 +-
 drivers/net/wireless/iwlwifi/iwl-agn.c             |  305 +++--
 drivers/net/wireless/iwlwifi/iwl-agn.h             |  183 ++-
 drivers/net/wireless/iwlwifi/iwl-commands.h        |    4 +-
 drivers/net/wireless/iwlwifi/iwl-config.h          |  227 +++
 drivers/net/wireless/iwlwifi/iwl-core.c            |  711 +--------
 drivers/net/wireless/iwlwifi/iwl-core.h            |   86 -
 drivers/net/wireless/iwlwifi/iwl-csr.h             |    3 +
 drivers/net/wireless/iwlwifi/iwl-debugfs.c         |  146 +-
 drivers/net/wireless/iwlwifi/iwl-dev.h             |   86 +-
 drivers/net/wireless/iwlwifi/iwl-drv.c             |   70 +-
 drivers/net/wireless/iwlwifi/iwl-eeprom.c          |  220 ++-
 drivers/net/wireless/iwlwifi/iwl-eeprom.h          |   14 +-
 drivers/net/wireless/iwlwifi/iwl-fw-file.h         |   15 +-
 drivers/net/wireless/iwlwifi/iwl-mac80211.c        |  125 +-
 drivers/net/wireless/iwlwifi/iwl-op-mode.h         |    7 +
 drivers/net/wireless/iwlwifi/iwl-pci.c             |    2 -
 drivers/net/wireless/iwlwifi/iwl-phy-db.c          |   20 +-
 drivers/net/wireless/iwlwifi/iwl-phy-db.h          |    6 +
 drivers/net/wireless/iwlwifi/iwl-power.c           |   62 +-
 drivers/net/wireless/iwlwifi/iwl-scan.c            |    8 +-
 drivers/net/wireless/iwlwifi/iwl-shared.h          |  227 +---
 drivers/net/wireless/iwlwifi/iwl-testmode.c        |    4 +-
 drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h  |   44 +-
 drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c   |   35 +-
 drivers/net/wireless/iwlwifi/iwl-trans-pcie-tx.c   |   83 +-
 drivers/net/wireless/iwlwifi/iwl-trans-pcie.c      |  122 +-
 drivers/net/wireless/iwlwifi/iwl-trans.h           |   21 +-
 drivers/net/wireless/iwlwifi/iwl-ucode.c           |   14 +-
 drivers/net/wireless/libertas/Makefile             |    1 +
 drivers/net/wireless/libertas/decl.h               |   11 +-
 drivers/net/wireless/libertas/dev.h                |   10 +
 drivers/net/wireless/libertas/firmware.c           |  222 +++
 drivers/net/wireless/libertas/if_cs.c              |   10 +-
 drivers/net/wireless/libertas/if_sdio.c            |  229 ++--
 drivers/net/wireless/libertas/if_spi.c             |   11 +-
 drivers/net/wireless/libertas/if_usb.c             |  265 +---
 drivers/net/wireless/libertas/main.c               |  117 +--
 drivers/net/wireless/mac80211_hwsim.c              |    1 +
 drivers/net/wireless/mwifiex/cfg80211.c            |   31 +-
 drivers/net/wireless/mwifiex/cfp.c                 |   31 +
 drivers/net/wireless/mwifiex/debugfs.c             |    2 +-
 drivers/net/wireless/mwifiex/fw.h                  |    3 +-
 drivers/net/wireless/mwifiex/init.c                |    2 +
 drivers/net/wireless/mwifiex/ioctl.h               |    3 +-
 drivers/net/wireless/mwifiex/join.c                |   50 +-
 drivers/net/wireless/mwifiex/main.c                |  106 +-
 drivers/net/wireless/mwifiex/main.h                |   20 +-
 drivers/net/wireless/mwifiex/pcie.c                |    3 +
 drivers/net/wireless/mwifiex/scan.c                |   63 +-
 drivers/net/wireless/mwifiex/sdio.c                |    3 +
 drivers/net/wireless/mwifiex/sta_cmd.c             |    2 +-
 drivers/net/wireless/mwifiex/sta_ioctl.c           |   87 +-
 drivers/net/wireless/mwl8k.c                       |   13 +-
 drivers/net/wireless/orinoco/fw.c                  |    7 +-
 drivers/net/wireless/p54/p54pci.c                  |   13 +-
 drivers/net/wireless/prism54/oid_mgt.c             |    6 +-
 drivers/net/wireless/rt2x00/rt2400pci.c            |   13 +-
 drivers/net/wireless/rt2x00/rt2500pci.c            |   13 +-
 drivers/net/wireless/rt2x00/rt2500usb.c            |    2 +-
 drivers/net/wireless/rt2x00/rt2800lib.c            |   36 +-
 drivers/net/wireless/rt2x00/rt2800lib.h            |    1 +
 drivers/net/wireless/rt2x00/rt2800pci.c            |   28 +-
 drivers/net/wireless/rt2x00/rt2x00dev.c            |    7 +-
 drivers/net/wireless/rt2x00/rt61pci.c              |   13 +-
 drivers/net/wireless/rt2x00/rt73usb.c              |    1 +
 drivers/net/wireless/rtl818x/rtl8180/dev.c         |   13 +-
 drivers/net/wireless/rtl818x/rtl8187/dev.c         |    1 +
 drivers/net/wireless/rtlwifi/pci.c                 |    2 +
 drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c  |    3 +
 drivers/net/wireless/rtlwifi/rtl8192ce/sw.c        |   19 +-
 drivers/net/wireless/rtlwifi/rtl8192cu/sw.c        |    1 +
 drivers/net/wireless/rtlwifi/rtl8192de/def.h       |   16 +-
 drivers/net/wireless/rtlwifi/rtl8192de/hw.c        |    4 +
 drivers/net/wireless/rtlwifi/rtl8192se/sw.c        |   19 +-
 drivers/net/wireless/ti/Kconfig                    |   14 +
 drivers/net/wireless/ti/Makefile                   |    4 +
 drivers/net/wireless/{ => ti}/wl1251/Kconfig       |    0
 drivers/net/wireless/{ => ti}/wl1251/Makefile      |    0
 drivers/net/wireless/{ => ti}/wl1251/acx.c         |    0
 drivers/net/wireless/{ => ti}/wl1251/acx.h         |    0
 drivers/net/wireless/{ => ti}/wl1251/boot.c        |    0
 drivers/net/wireless/{ => ti}/wl1251/boot.h        |    0
 drivers/net/wireless/{ => ti}/wl1251/cmd.c         |    0
 drivers/net/wireless/{ => ti}/wl1251/cmd.h         |    0
 drivers/net/wireless/{ => ti}/wl1251/debugfs.c     |    0
 drivers/net/wireless/{ => ti}/wl1251/debugfs.h     |    0
 drivers/net/wireless/{ => ti}/wl1251/event.c       |    0
 drivers/net/wireless/{ => ti}/wl1251/event.h       |    0
 drivers/net/wireless/{ => ti}/wl1251/init.c        |    0
 drivers/net/wireless/{ => ti}/wl1251/init.h        |    0
 drivers/net/wireless/{ => ti}/wl1251/io.c          |    0
 drivers/net/wireless/{ => ti}/wl1251/io.h          |    0
 drivers/net/wireless/{ => ti}/wl1251/main.c        |    0
 drivers/net/wireless/{ => ti}/wl1251/ps.c          |    0
 drivers/net/wireless/{ => ti}/wl1251/ps.h          |    0
 drivers/net/wireless/{ => ti}/wl1251/reg.h         |    0
 drivers/net/wireless/{ => ti}/wl1251/rx.c          |    0
 drivers/net/wireless/{ => ti}/wl1251/rx.h          |    0
 drivers/net/wireless/{ => ti}/wl1251/sdio.c        |    0
 drivers/net/wireless/{ => ti}/wl1251/spi.c         |    0
 drivers/net/wireless/{ => ti}/wl1251/spi.h         |    0
 drivers/net/wireless/{ => ti}/wl1251/tx.c          |    0
 drivers/net/wireless/{ => ti}/wl1251/tx.h          |    0
 drivers/net/wireless/{ => ti}/wl1251/wl1251.h      |    0
 .../net/wireless/{ => ti}/wl1251/wl12xx_80211.h    |    0
 drivers/net/wireless/ti/wl12xx/Kconfig             |    8 +
 drivers/net/wireless/ti/wl12xx/Makefile            |    3 +
 drivers/net/wireless/ti/wl12xx/acx.c               |   53 +
 drivers/net/wireless/ti/wl12xx/acx.h               |   36 +
 drivers/net/wireless/ti/wl12xx/cmd.c               |  254 +++
 drivers/net/wireless/ti/wl12xx/cmd.h               |  112 ++
 drivers/net/wireless/ti/wl12xx/conf.h              |   50 +
 drivers/net/wireless/ti/wl12xx/main.c              | 1388 ++++++++++++++++
 drivers/net/wireless/{ => ti}/wl12xx/reg.h         |  315 ++--
 drivers/net/wireless/ti/wl12xx/wl12xx.h            |   31 +
 drivers/net/wireless/ti/wlcore/Kconfig             |   41 +
 drivers/net/wireless/ti/wlcore/Makefile            |   15 +
 drivers/net/wireless/{wl12xx => ti/wlcore}/acx.c   |   42 +-
 drivers/net/wireless/{wl12xx => ti/wlcore}/acx.h   |   10 +-
 drivers/net/wireless/ti/wlcore/boot.c              |  443 +++++
 drivers/net/wireless/ti/wlcore/boot.h              |   54 +
 drivers/net/wireless/{wl12xx => ti/wlcore}/cmd.c   |  285 +---
 drivers/net/wireless/{wl12xx => ti/wlcore}/cmd.h   |   98 +-
 drivers/net/wireless/{wl12xx => ti/wlcore}/conf.h  |   85 +-
 drivers/net/wireless/{wl12xx => ti/wlcore}/debug.h |    1 +
 .../net/wireless/{wl12xx => ti/wlcore}/debugfs.c   |    3 +-
 .../net/wireless/{wl12xx => ti/wlcore}/debugfs.h   |    2 +-
 drivers/net/wireless/{wl12xx => ti/wlcore}/event.c |   31 +-
 drivers/net/wireless/{wl12xx => ti/wlcore}/event.h |    3 +-
 drivers/net/wireless/ti/wlcore/hw_ops.h            |  122 ++
 drivers/net/wireless/{wl12xx => ti/wlcore}/ini.h   |    0
 drivers/net/wireless/{wl12xx => ti/wlcore}/init.c  |   66 +-
 drivers/net/wireless/{wl12xx => ti/wlcore}/init.h  |    2 +-
 drivers/net/wireless/{wl12xx => ti/wlcore}/io.c    |  191 +--
 drivers/net/wireless/{wl12xx => ti/wlcore}/io.h    |   88 +-
 drivers/net/wireless/{wl12xx => ti/wlcore}/main.c  |  821 ++--------
 drivers/net/wireless/{wl12xx => ti/wlcore}/ps.c    |    8 +-
 drivers/net/wireless/{wl12xx => ti/wlcore}/ps.h    |    2 +-
 drivers/net/wireless/{wl12xx => ti/wlcore}/rx.c    |  130 +-
 drivers/net/wireless/{wl12xx => ti/wlcore}/rx.h    |   12 +-
 drivers/net/wireless/{wl12xx => ti/wlcore}/scan.c  |   30 +-
 drivers/net/wireless/{wl12xx => ti/wlcore}/scan.h  |    4 +-
 drivers/net/wireless/{wl12xx => ti/wlcore}/sdio.c  |    6 +-
 drivers/net/wireless/{wl12xx => ti/wlcore}/spi.c   |    4 +-
 .../net/wireless/{wl12xx => ti/wlcore}/testmode.c  |    3 +-
 .../net/wireless/{wl12xx => ti/wlcore}/testmode.h  |    0
 drivers/net/wireless/{wl12xx => ti/wlcore}/tx.c    |  125 +-
 drivers/net/wireless/{wl12xx => ti/wlcore}/tx.h    |    7 +-
 .../net/wireless/{wl12xx => ti/wlcore}/wl12xx.h    |  271 +---
 .../wireless/{wl12xx => ti/wlcore}/wl12xx_80211.h  |    0
 .../{wl12xx => ti/wlcore}/wl12xx_platform_data.c   |    0
 drivers/net/wireless/ti/wlcore/wlcore.h            |  448 +++++
 drivers/net/wireless/wl12xx/Kconfig                |   48 -
 drivers/net/wireless/wl12xx/Makefile               |   15 -
 drivers/net/wireless/wl12xx/boot.c                 |  786 ---------
 drivers/net/wireless/wl12xx/boot.h                 |  120 --
 drivers/nfc/pn533.c                                |  228 ++-
 include/linux/ieee80211.h                          |    4 +-
 include/linux/nfc.h                                |    1 +
 include/net/cfg80211.h                             |    9 +-
 include/net/mac80211.h                             |    4 +
 include/net/nfc/hci.h                              |  198 +++
 include/net/nfc/nfc.h                              |   12 +-
 include/net/nfc/shdlc.h                            |  104 ++
 net/mac80211/cfg.c                                 |    4 +-
 net/mac80211/ieee80211_i.h                         |    6 +-
 net/mac80211/iface.c                               |    3 +-
 net/mac80211/mesh_hwmp.c                           |    5 +-
 net/mac80211/mesh_pathtbl.c                        |    2 +
 net/mac80211/mesh_sync.c                           |   32 +-
 net/mac80211/mlme.c                                |   35 +-
 net/mac80211/rc80211_minstrel.c                    |   13 +-
 net/mac80211/rc80211_minstrel_ht.c                 |    5 +-
 net/mac80211/scan.c                                |   43 +-
 net/mac80211/status.c                              |    8 +-
 net/mac80211/tx.c                                  |    4 +-
 net/mac80211/util.c                                |   42 +-
 net/mac80211/work.c                                |   15 +-
 net/nfc/Kconfig                                    |    1 +
 net/nfc/Makefile                                   |    1 +
 net/nfc/core.c                                     |  140 ++-
 net/nfc/hci/Kconfig                                |   16 +
 net/nfc/hci/Makefile                               |    8 +
 net/nfc/hci/command.c                              |  354 ++++
 net/nfc/hci/core.c                                 |  830 ++++++++++
 net/nfc/hci/hci.h                                  |  139 ++
 net/nfc/hci/hcp.c                                  |  156 ++
 net/nfc/hci/shdlc.c                                |  945 +++++++++++
 net/nfc/llcp/commands.c                            |    8 +-
 net/nfc/llcp/llcp.c                                |   21 +-
 net/nfc/nci/core.c                                 |    2 +-
 net/nfc/nci/ntf.c                                  |   11 +-
 net/nfc/netlink.c                                  |   31 +
 net/nfc/nfc.h                                      |    1 +
 net/nfc/rawsock.c                                  |    6 +
 net/wireless/core.c                                |    4 -
 net/wireless/nl80211.c                             |   13 +
 net/wireless/scan.c                                |    2 +-
 net/wireless/util.c                                |   10 +-
 net/wireless/wext-compat.c                         |    3 +-
 290 files changed, 14493 insertions(+), 7242 deletions(-)
 create mode 100644 Documentation/nfc/nfc-hci.txt
 create mode 100644 drivers/net/wireless/ath/ath6kl/htc-ops.h
 rename drivers/net/wireless/ath/ath6kl/{htc.c => htc_mbox.c} (96%)
 create mode 100644 drivers/net/wireless/ath/ath6kl/htc_pipe.c
 create mode 100644 drivers/net/wireless/ipw2x00/ipw.h
 create mode 100644 drivers/net/wireless/iwlwifi/iwl-agn-devices.c
 create mode 100644 drivers/net/wireless/iwlwifi/iwl-config.h
 create mode 100644 drivers/net/wireless/libertas/firmware.c
 create mode 100644 drivers/net/wireless/ti/Kconfig
 create mode 100644 drivers/net/wireless/ti/Makefile
 rename drivers/net/wireless/{ => ti}/wl1251/Kconfig (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/Makefile (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/acx.c (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/acx.h (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/boot.c (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/boot.h (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/cmd.c (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/cmd.h (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/debugfs.c (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/debugfs.h (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/event.c (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/event.h (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/init.c (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/init.h (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/io.c (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/io.h (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/main.c (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/ps.c (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/ps.h (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/reg.h (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/rx.c (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/rx.h (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/sdio.c (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/spi.c (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/spi.h (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/tx.c (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/tx.h (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/wl1251.h (100%)
 rename drivers/net/wireless/{ => ti}/wl1251/wl12xx_80211.h (100%)
 create mode 100644 drivers/net/wireless/ti/wl12xx/Kconfig
 create mode 100644 drivers/net/wireless/ti/wl12xx/Makefile
 create mode 100644 drivers/net/wireless/ti/wl12xx/acx.c
 create mode 100644 drivers/net/wireless/ti/wl12xx/acx.h
 create mode 100644 drivers/net/wireless/ti/wl12xx/cmd.c
 create mode 100644 drivers/net/wireless/ti/wl12xx/cmd.h
 create mode 100644 drivers/net/wireless/ti/wl12xx/conf.h
 create mode 100644 drivers/net/wireless/ti/wl12xx/main.c
 rename drivers/net/wireless/{ => ti}/wl12xx/reg.h (71%)
 create mode 100644 drivers/net/wireless/ti/wl12xx/wl12xx.h
 create mode 100644 drivers/net/wireless/ti/wlcore/Kconfig
 create mode 100644 drivers/net/wireless/ti/wlcore/Makefile
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/acx.c (97%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/acx.h (99%)
 create mode 100644 drivers/net/wireless/ti/wlcore/boot.c
 create mode 100644 drivers/net/wireless/ti/wlcore/boot.h
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/cmd.c (84%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/cmd.h (87%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/conf.h (94%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/debug.h (99%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/debugfs.c (99%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/debugfs.h (98%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/event.c (91%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/event.h (98%)
 create mode 100644 drivers/net/wireless/ti/wlcore/hw_ops.h
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/ini.h (100%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/init.c (93%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/init.h (98%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/io.c (55%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/io.h (71%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/main.c (85%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/ps.c (97%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/ps.h (98%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/rx.c (69%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/rx.h (92%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/scan.c (95%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/scan.h (98%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/sdio.c (98%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/spi.c (99%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/testmode.c (99%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/testmode.h (100%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/tx.c (90%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/tx.h (97%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/wl12xx.h (68%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/wl12xx_80211.h (100%)
 rename drivers/net/wireless/{wl12xx => ti/wlcore}/wl12xx_platform_data.c (100%)
 create mode 100644 drivers/net/wireless/ti/wlcore/wlcore.h
 delete mode 100644 drivers/net/wireless/wl12xx/Kconfig
 delete mode 100644 drivers/net/wireless/wl12xx/Makefile
 delete mode 100644 drivers/net/wireless/wl12xx/boot.c
 delete mode 100644 drivers/net/wireless/wl12xx/boot.h
 create mode 100644 include/net/nfc/hci.h
 create mode 100644 include/net/nfc/shdlc.h
 create mode 100644 net/nfc/hci/Kconfig
 create mode 100644 net/nfc/hci/Makefile
 create mode 100644 net/nfc/hci/command.c
 create mode 100644 net/nfc/hci/core.c
 create mode 100644 net/nfc/hci/hci.h
 create mode 100644 net/nfc/hci/hcp.c
 create mode 100644 net/nfc/hci/shdlc.c
-- 
John W. Linville		Someday the world will need a hero, and you
linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org			might be all we have.  Be ready.

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply

* Re: [PATCH net-next] tcp: avoid expensive pskb_expand_head() calls
From: Eric Dumazet @ 2012-04-18 19:18 UTC (permalink / raw)
  To: Neal Cardwell
  Cc: David Miller, netdev, Tom Herbert, Maciej Żenczykowski,
	Yuchung Cheng
In-Reply-To: <CADVnQy=BkhSBHyN2hyBy=_H64oM8sJvyZZfEjK1x7PYzoLv=5w@mail.gmail.com>

On Wed, 2012-04-18 at 14:40 -0400, Neal Cardwell wrote:

> 
> > +       prev_packets_acked = tcp_skb_pcount(skb);
> 
> FWIW, I'd find old_pcount or prev_pcount a little easier to read than
> prev_packets_acked here (I see "oldpcount" is used in tcp_output
> in a similar context).
> 

You're right, I'll change this.

> >        TCP_SKB_CB(skb)->seq += len;
> > +       TCP_SKB_CB(skb)->header.offset_ack = 0;
> 
> If the caller decides to trim a prefix of the skb that does not extend
> to snd_una, then setting offset_ack to 0 here will cause us to forget
> that some prefix is ACKed when we should have remembered this.
> However, the API for the function invites the caller to chop off an
> arbitrary amount (and there's no comment to disuade the caller from
> trying this). This seems to risk bugs in the future.
> 
> To attempt to make this API safer and simpler for future generations,
> what do you think about calculating the len inside tcp_trim_head(),
> something like:
> 
> static int tcp_trim_head(struct sock *sk, struct sk_buff *skb)
> {
>   u32 len = tp->snd_una - TCP_SKB_CB(skb)->seq;
> ...
> 
> ...
>  if (tcp_trim_head(sk, skb))
> ...
> 

Very good point, I'll use this suggestion too in v2.

Thanks !

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox