* 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
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox