Netdev List
 help / color / mirror / Atom feed
* Re: NETDEV WATCHDOG: %s (%s): transmit queue %u timed out
From: George Spelvin @ 2012-05-23  1:53 UTC (permalink / raw)
  To: davej, linux; +Cc: kernel-team, netdev
In-Reply-To: <20120523012640.GB15255@redhat.com>

> We seem to be seeing more and more of these (across a range of different NICs)
> https://bugzilla.redhat.com/showdependencytree.cgi?id=702723&hide_resolved=1
> has a bunch of duplicated bugs sorted into per-nic reports.

Thank yoou for rhe response.

Unfortunately, the last reboot was on Feb. 26, and the kernel logs don't go back that far,
so I'm not sure if 3.3-rc5 reported this priblem or not.

^ permalink raw reply

* Re: [RFC/PATCH] Bluetooth: prevent double l2cap_chan_destroy
From: Minho Ban @ 2012-05-23  1:39 UTC (permalink / raw)
  To: Chanyeol Park
  Cc: Gustavo Padovan, Marcel Holtmann, Johan Hedberg, David S. Miller,
	linux-bluetooth, netdev, linux-kernel
In-Reply-To: <4FBB8544.3040408@samsung.com>

On 05/22/2012 09:23 PM, Chanyeol Park wrote:
> Hi
> 
> On 2012년 05월 22일 11:50, Minho Ban wrote:
>> @@ -1343,10 +1343,10 @@ static void l2cap_conn_del(struct hci_conn *hcon, int err)
>>                  l2cap_chan_lock(chan);
>>
>>                  l2cap_chan_del(chan, err);
>> +               chan->ops->close(chan->data);
>>
>>                  l2cap_chan_unlock(chan);
>>
>> -               chan->ops->close(chan->data);
>>                  l2cap_chan_put(chan);
>>          }
> I think this patch does not make sense Because inside chan->ops->close() "chan" could be freed in the l2cap_chan_destroy().
> 

I agree, thanks for pointing out.

^ permalink raw reply

* Re: NETDEV WATCHDOG: %s (%s): transmit queue %u timed out
From: Dave Jones @ 2012-05-23  1:26 UTC (permalink / raw)
  To: George Spelvin; +Cc: netdev, Fedora Kernel Team
In-Reply-To: <20120523010334.5778.qmail@science.horizon.com>

On Tue, May 22, 2012 at 09:03:34PM -0400, George Spelvin wrote:
 > After installing a 3.4 kernel, I got the following:
 > 
 > ------------[ cut here ]------------
 > WARNING: at net/sched/sch_generic.c:256 dev_watchdog+0xe9/0x15c()
 > Hardware name: MS-7376
 > NETDEV WATCHDOG: inside (r8169): transmit queue 0 timed out
 > Pid: 0, comm: swapper/3 Not tainted 3.4.0-00017-g3df9c78 #152
 > ..
 > It doesn't seem to be causing serious problems, but I presume the warning is there because
 > someone would like to know about it.

We seem to be seeing more and more of these (across a range of different NICs)
https://bugzilla.redhat.com/showdependencytree.cgi?id=702723&hide_resolved=1
has a bunch of duplicated bugs sorted into per-nic reports.

	Dave

^ permalink raw reply

* NETDEV WATCHDOG: %s (%s): transmit queue %u timed out
From: George Spelvin @ 2012-05-23  1:03 UTC (permalink / raw)
  To: netdev; +Cc: linux

After installing a 3.4 kernel, I got the following:

------------[ cut here ]------------
WARNING: at net/sched/sch_generic.c:256 dev_watchdog+0xe9/0x15c()
Hardware name: MS-7376
NETDEV WATCHDOG: inside (r8169): transmit queue 0 timed out
Pid: 0, comm: swapper/3 Not tainted 3.4.0-00017-g3df9c78 #152
Call Trace:
 <IRQ>  [<ffffffff81311aba>] ? dev_watchdog+0xe9/0x15c
 [<ffffffff81024499>] ? warn_slowpath_common+0x71/0x85
 [<ffffffff813119d1>] ? netif_tx_lock+0x7a/0x7a
 [<ffffffff81024511>] ? warn_slowpath_fmt+0x45/0x4a
 [<ffffffff813119be>] ? netif_tx_lock+0x67/0x7a
 [<ffffffff81311aba>] ? dev_watchdog+0xe9/0x15c
 [<ffffffff810345ab>] ? __queue_work+0x20a/0x20a
 [<ffffffff8102c908>] ? run_timer_softirq+0x17e/0x20b
 [<ffffffff81028889>] ? __do_softirq+0x80/0x102
 [<ffffffff81404b8c>] ? call_softirq+0x1c/0x30
 [<ffffffff81003044>] ? do_softirq+0x2c/0x60
 [<ffffffff81028abc>] ? irq_exit+0x3a/0x91
 [<ffffffff81002e91>] ? do_IRQ+0x81/0x97
 [<ffffffff81403327>] ? common_interrupt+0x67/0x67
 <EOI>  [<ffffffff810079d8>] ? default_idle+0x1e/0x32
 [<ffffffff81007afc>] ? amd_e400_idle+0xb7/0xd4
 [<ffffffff810081a5>] ? cpu_idle+0x58/0x98
---[ end trace 7d5a7d21f604b0d8 ]---
r8169 0000:02:00.0: inside: link up


(The 17 local patches are to the PPS subsystem and nowhere near net net/
directory.)

The system is an AND Phenom X4 processor with 8G of ECC RAM, recently rebooted with 

lspci -nn gives:

00:00.0 Host bridge [0600]: Advanced Micro Devices [AMD] nee ATI RD790 Northbridge only dual slot PCI-e_GFX and HT3 K8 part [1002:5956]
00:02.0 PCI bridge [0604]: Advanced Micro Devices [AMD] nee ATI RD790 PCI to PCI bridge (external gfx0 port A) [1002:5978]
00:05.0 PCI bridge [0604]: Advanced Micro Devices [AMD] nee ATI RD790 PCI to PCI bridge (PCI express gpp port B) [1002:597b]
00:09.0 PCI bridge [0604]: Advanced Micro Devices [AMD] nee ATI RD790 PCI to PCI bridge (PCI express gpp port E) [1002:597e]
00:12.0 SATA controller [0106]: Advanced Micro Devices [AMD] nee ATI SB600 Non-Raid-5 SATA [1002:4380]
00:13.0 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB600 USB (OHCI0) [1002:4387]
00:13.1 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB600 USB (OHCI1) [1002:4388]
00:13.2 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB600 USB (OHCI2) [1002:4389]
00:13.3 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB600 USB (OHCI3) [1002:438a]
00:13.4 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB600 USB (OHCI4) [1002:438b]
00:13.5 USB controller [0c03]: Advanced Micro Devices [AMD] nee ATI SB600 USB Controller (EHCI) [1002:4386]
00:14.0 SMBus [0c05]: Advanced Micro Devices [AMD] nee ATI SBx00 SMBus Controller [1002:4385] (rev 14)
00:14.1 IDE interface [0101]: Advanced Micro Devices [AMD] nee ATI SB600 IDE [1002:438c]
00:14.2 Audio device [0403]: Advanced Micro Devices [AMD] nee ATI SBx00 Azalia (Intel HDA) [1002:4383]
00:14.3 ISA bridge [0601]: Advanced Micro Devices [AMD] nee ATI SB600 PCI to LPC Bridge [1002:438d]
00:14.4 PCI bridge [0604]: Advanced Micro Devices [AMD] nee ATI SBx00 PCI to PCI Bridge [1002:4384]
00:18.0 Host bridge [0600]: Advanced Micro Devices [AMD] Family 10h Processor HyperTransport Configuration [1022:1200]
00:18.1 Host bridge [0600]: Advanced Micro Devices [AMD] Family 10h Processor Address Map [1022:1201]
00:18.2 Host bridge [0600]: Advanced Micro Devices [AMD] Family 10h Processor DRAM Controller [1022:1202]
00:18.3 Host bridge [0600]: Advanced Micro Devices [AMD] Family 10h Processor Miscellaneous Control [1022:1203]
00:18.4 Host bridge [0600]: Advanced Micro Devices [AMD] Family 10h Processor Link Control [1022:1204]
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI RV370 5B60 [Radeon X300 (PCIE)] [1002:5b60]
01:00.1 Display controller [0380]: Advanced Micro Devices [AMD] nee ATI RV370 [Radeon X300SE] [1002:5b70]
02:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller [10ec:8168] (rev 01)
03:00.0 RAID bus controller [0104]: Promise Technology, Inc. PDC42819 [FastTrak TX2650/TX4650] [105a:3f20]
04:00.0 FireWire (IEEE 1394) [0c00]: VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller [1106:3044] (rev c0)
04:02.0 Serial controller [0700]: Oxford Semiconductor Ltd OX16PCI954 (Quad 16950 UART) function 0 (Uart) [1415:9501]
04:02.1 Parallel controller [0701]: Oxford Semiconductor Ltd OX16PCI954 (Quad 16950 UART) function 1 (parallel port) [1415:9513]
04:03.0 PCI bridge [0604]: Digital Equipment Corporation DECchip 21152 [1011:0024] (rev 03)
05:04.0 Ethernet controller [0200]: Digital Equipment Corporation DECchip 21142/43 [1011:0019] (rev 41)
05:05.0 Ethernet controller [0200]: Digital Equipment Corporation DECchip 21142/43 [1011:0019] (rev 41)
05:06.0 Ethernet controller [0200]: Digital Equipment Corporation DECchip 21142/43 [1011:0019] (rev 41)
05:07.0 Ethernet controller [0200]: Digital Equipment Corporation DECchip 21142/43 [1011:0019] (rev 41)

The Tulip 100baseT ports are used for external and DMZ ports, while the RTL8169 is the main "inside"
gigabit network port.

r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
r8169 0000:02:00.0: irq 40 for MSI/MSI-X
r8169 0000:02:00.0: eth4: RTL8168b/8111b at 0xffffc90000020000, 00:21:85:16:51:7f, XID 18000000 IRQ 40
r8169 0000:02:00.0: eth4: jumbo features [frames: 4080 bytes, tx checksumming: ko]

It doesn't seem to be causing serious problems, but I presume the warning is there because
someone would like to know about it.

^ permalink raw reply

* Re: [PATCH 3/3] ethtool: Addition of -m option to dump module eeprom
From: Ben Hutchings @ 2012-05-23  0:01 UTC (permalink / raw)
  To: Stuart Hodgson; +Cc: netdev, David Miller, Yaniv Rosner, Eilon Greenstein
In-Reply-To: <4FB663A5.3060107@solarflare.com>

On Fri, 2012-05-18 at 15:58 +0100, Stuart Hodgson wrote:
> The -m option now allows for retrieval of EEPROM
> information form a plug in module such as SFP+. This
> shows specific information about the type and
> capabilities of the module in use The format can be
> easily extended to support other modules types such as
> QSFP in future. Raw data dump is also supported.
[...]

Applied, thanks.

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 iproute2] tc_codel: Controlled Delay AQM
From: Dave Taht @ 2012-05-22 23:59 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Eric Dumazet, netdev, Dave Taht
In-Reply-To: <20120522141610.601f68ed@nehalam.linuxnetplumber.net>

I promised eric I'd write the two man pages.

I also promised myself a vacation. The last year has been a long hard
road. If someone
hasn't got to writing the man pages by the time I get back from lupin,
I'll write it.

On Tue, May 22, 2012 at 2:16 PM, Stephen Hemminger
<shemminger@vyatta.com> wrote:
> On Fri, 11 May 2012 08:22:35 +0200
> Eric Dumazet <eric.dumazet@gmail.com> wrote:
>
>> From: Eric Dumazet <edumazet@google.com>
>>
>> An implementation of CoDel AQM, from Kathleen Nichols and Van Jacobson.
>>
>> http://queue.acm.org/detail.cfm?id=2209336
>>
>> This AQM main input is no longer queue size in bytes or packets, but the
>> delay packets stay in (FIFO) queue.
>>
>> As we don't have infinite memory, we still can drop packets in enqueue()
>> in case of massive load, but mean of CoDel is to drop packets in
>> dequeue(), using a control law based on two simple parameters :
>>
>> target : target sojourn time (default 5ms)
>> interval : width of moving time window (default 100ms)
>>
>> Selected packets are dropped, unless ECN is enabled and packets can get
>> ECN mark instead.
>>
>> Usage: tc qdisc ... codel [ limit PACKETS ] [ target TIME ]
>>                           [ interval TIME ] [ ecn ]
>>
>> qdisc codel 10: parent 1:1 limit 2000p target 3.0ms interval 60.0ms ecn
>>  Sent 13347099587 bytes 8815805 pkt (dropped 0, overlimits 0 requeues 0)
>>  rate 202365Kbit 16708pps backlog 113550b 75p requeues 0
>>   count 116 lastcount 98 ldelay 4.3ms dropping drop_next 816us
>>   maxpacket 1514 ecn_mark 84399 drop_overlimit 0
>>
>> CoDel must be seen as a base module, and should be used keeping in mind
>> there is still a FIFO queue. So a typical setup will probably need a
>> hierarchy of several qdiscs and packet classifiers to be able to meet
>> whatever constraints a user might have.
>>
>> One possible example would be to use fq_codel, which combines Fair
>> Queueing and CoDel, in replacement of sfq / sfq_red.
>>
>> Signed-off-by: Eric Dumazet <edumazet@google.com>
>> Signed-off-by: Dave Taht <dave.taht@bufferbloat.net>
>> ---
>> Notes :
>> 1) : Dave Taht will send a nice man-page for this stuff.
>> 2) : the TCA_NETEM_ECN bit is because of include/linux/pkt_sched.h sync
>> with net-next
>>      (I'll send a separate patch for netem)
>>
>
> Applied. Used 3.5 sanitized header (not the one in your patch),
> and fixed whitespace error.
>
>
> Ok, where's the man page :-)
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Dave Täht
SKYPE: davetaht
US Tel: 1-239-829-5608
http://www.bufferbloat.net

^ permalink raw reply

* Re: [PATCH 1/3] ethtool: Split out printing of hex data
From: Ben Hutchings @ 2012-05-22 23:58 UTC (permalink / raw)
  To: Stuart Hodgson; +Cc: netdev, Yaniv Rosner, David Miller, Eilon Greenstein
In-Reply-To: <4FB66390.2010704@solarflare.com>

On Fri, 2012-05-18 at 15:58 +0100, Stuart Hodgson wrote:
> Split out printing of hex data to common function from
> dump_regs and dump_eeprom. Ready for use by module
> eeprom dumping.
> 
> Signed-off-by: Stuart Hodgson <smhodgson@solarflare.com>
> ---
>  ethtool.c |   35 ++++++++++++++++++-----------------
>  1 files changed, 18 insertions(+), 17 deletions(-)
> 
> diff --git a/ethtool.c b/ethtool.c
> index e80b38b..fdc21de 100644
> --- a/ethtool.c
> +++ b/ethtool.c
> @@ -787,6 +787,20 @@ static const struct {
>  	{ "st_gmac", st_gmac_dump_regs },
>  };
>  
> +static void dump_hex(__u8 *data, int len, int offset)
> +{
> +	int i;
> +
> +	fprintf(stdout, "Offset\tValues\n");
> +	fprintf(stdout, "--------\t-----");
> +	for (i = 0; i < len; i++) {
> +		if (i%16 == 0)
> +			fprintf(stdout, "\n0x%04x:\t", i + offset);
> +		fprintf(stdout, " %02x", data[i]);
> +	}

The problem with this (inherited from dump_regs()) is that the columns
don't line up.  So I've applied this but changed dump_hex() to look more
like the code removed from dump_eeprom().

Ben.

> +	fprintf(stdout, "\n\n");
> +}
> +
>  static int dump_regs(int gregs_dump_raw, int gregs_dump_hex,
>  		     const char *gregs_dump_file,
>  		     struct ethtool_drvinfo *info, struct ethtool_regs *regs)
> @@ -820,22 +834,14 @@ static int dump_regs(int gregs_dump_raw, int gregs_dump_hex,
>  				     ETHTOOL_BUSINFO_LEN))
>  				return driver_list[i].func(info, regs);
>  
> -	fprintf(stdout, "Offset\tValues\n");
> -	fprintf(stdout, "--------\t-----");
> -	for (i = 0; i < regs->len; i++) {
> -		if (i%16 == 0)
> -			fprintf(stdout, "\n%03x:\t", i);
> -		fprintf(stdout, " %02x", regs->data[i]);
> -	}
> -	fprintf(stdout, "\n\n");
> +	dump_hex(regs->data, regs->len, 0);
> +
>  	return 0;
>  }
>  
>  static int dump_eeprom(int geeprom_dump_raw, struct ethtool_drvinfo *info,
>  		       struct ethtool_eeprom *ee)
>  {
> -	int i;
> -
>  	if (geeprom_dump_raw) {
>  		fwrite(ee->data, 1, ee->len, stdout);
>  		return 0;
> @@ -847,13 +853,8 @@ static int dump_eeprom(int geeprom_dump_raw, struct ethtool_drvinfo *info,
>  		return tg3_dump_eeprom(info, ee);
>  	}
>  
> -	fprintf(stdout, "Offset\t\tValues\n");
> -	fprintf(stdout, "------\t\t------");
> -	for (i = 0; i < ee->len; i++) {
> -		if(!(i%16)) fprintf(stdout, "\n0x%04x\t\t", i + ee->offset);
> -		fprintf(stdout, "%02x ", ee->data[i]);
> -	}
> -	fprintf(stdout, "\n");
> +	dump_hex(ee->data, ee->len, ee->offset);
> +
>  	return 0;
>  }
>  

-- 
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 v6 2/2] decrement static keys on real destroy time
From: Andrew Morton @ 2012-05-22 23:11 UTC (permalink / raw)
  To: Glauber Costa, linux-mm-Bw31MaZKKs3YtjvyW6yDsg,
	cgroups-u79uwXL29TY76Z2rM5mHXA, devel-GEFAQzZX7r8dnm+yROfE0A,
	kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A,
	netdev-u79uwXL29TY76Z2rM5mHXA, Tejun Heo, Li Zefan,
	Johannes Weiner, Michal Hocko, David Miller, Joe Perches
In-Reply-To: <20120522154610.f2f9b78e.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>

On Tue, 22 May 2012 15:46:10 -0700
Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org> wrote:

> > +static inline bool memcg_proto_active(struct cg_proto *cg_proto)
> > +{
> > +	return cg_proto->flags & (1 << MEMCG_SOCK_ACTIVE);
> > +}
> > +
> > +static inline bool memcg_proto_activated(struct cg_proto *cg_proto)
> > +{
> > +	return cg_proto->flags & (1 << MEMCG_SOCK_ACTIVATED);
> > +}
> 
> Here, we're open-coding kinda-test_bit().  Why do that?  These flags are
> modified with set_bit() and friends, so we should read them with the
> matching test_bit()?
> 
> Also, these bool-returning functions will return values other than 0
> and 1.  That probably works OK and I don't know what the C standards
> and implementations do about this.  But it seems unclean and slightly
> risky to have a "bool" value of 32!  Converting these functions to use
> test_bit() fixes this - test_bit() returns only 0 or 1.
> 
> test_bit() is slightly more expensive than the above.  If this is
> considered to be an issue then I guess we could continue to use this
> approach.  But I do think a code comment is needed, explaining and
> justifying the unusual decision to bypass the bitops API.  Also these
> functions should tell the truth and return an "int" type.

Joe corrected (and informed) me:

: 6.3.1.2p1:
: 
: "When any scalar value is converted to _Bool, the result is 0
: if the value compares equal to 0; otherwise, the result is 1."

So the above functions will be given compiler-generated scalar-to-boolean
conversion.

test_bit() already does internal scalar-to-boolean conversion.  The
compiler doesn't know that, so if we convert the above functions to use
test_bit(), we'll end up performing scalar-to-boolean-to-boolean
conversion, which is dumb.

I assume that a way of fixing this is to change test_bit() to return
bool type.  That's a bit scary.

A less scary way would be to add a new

	bool test_bit_bool(int nr, const unsigned long *addr);

which internally calls test_bit() but somehow avoids the
compiler-generated conversion of the test_bit() return value into a
bool.  I haven't actually thought of a way of doing this ;)

^ permalink raw reply

* Re: [PATCH v6 2/2] decrement static keys on real destroy time
From: Andrew Morton @ 2012-05-22 22:46 UTC (permalink / raw)
  To: Glauber Costa
  Cc: linux-mm-Bw31MaZKKs3YtjvyW6yDsg, cgroups-u79uwXL29TY76Z2rM5mHXA,
	devel-GEFAQzZX7r8dnm+yROfE0A,
	kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A,
	netdev-u79uwXL29TY76Z2rM5mHXA, Tejun Heo, Li Zefan,
	Johannes Weiner, Michal Hocko, David Miller
In-Reply-To: <1337682339-21282-3-git-send-email-glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>

(cc davem)

On Tue, 22 May 2012 14:25:39 +0400
Glauber Costa <glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org> wrote:

> We call the destroy function when a cgroup starts to be removed,
> such as by a rmdir event.
> 
> However, because of our reference counters, some objects are still
> inflight. Right now, we are decrementing the static_keys at destroy()
> time, meaning that if we get rid of the last static_key reference,
> some objects will still have charges, but the code to properly
> uncharge them won't be run.
> 
> This becomes a problem specially if it is ever enabled again, because
> now new charges will be added to the staled charges making keeping
> it pretty much impossible.
> 
> We just need to be careful with the static branch activation:
> since there is no particular preferred order of their activation,
> we need to make sure that we only start using it after all
> call sites are active. This is achieved by having a per-memcg
> flag that is only updated after static_key_slow_inc() returns.
> At this time, we are sure all sites are active.
> 
> This is made per-memcg, not global, for a reason:
> it also has the effect of making socket accounting more
> consistent. The first memcg to be limited will trigger static_key()
> activation, therefore, accounting. But all the others will then be
> accounted no matter what. After this patch, only limited memcgs
> will have its sockets accounted.
> 
> [v2: changed a tcp limited flag for a generic proto limited flag ]
> [v3: update the current active flag only after the static_key update ]
> [v4: disarm_static_keys() inside free_work ]
> [v5: got rid of tcp_limit_mutex, now in the static_key interface ]
> [v6: changed active and activated to a flags field, as suggested by akpm ]

A few things...

>  include/linux/memcontrol.h |    5 +++++
>  include/net/sock.h         |   11 +++++++++++
>  mm/memcontrol.c            |   29 +++++++++++++++++++++++++++--
>  net/ipv4/tcp_memcontrol.c  |   34 +++++++++++++++++++++++++++-------
>  4 files changed, 70 insertions(+), 9 deletions(-)
> 
> diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
> index f94efd2..9dc0b86 100644
> --- a/include/linux/memcontrol.h
> +++ b/include/linux/memcontrol.h
> @@ -436,6 +436,11 @@ enum {
>  	OVER_LIMIT,
>  };
>  
> +enum sock_flag_bits {
> +	MEMCG_SOCK_ACTIVE,
> +	MEMCG_SOCK_ACTIVATED,
> +};

I don't see why this was defined in memcontrol.h.  It is enumerating
the bits in sock.h's cg_proto.flags, so why not define it in sock.h? 
This is changed in the appended patch.

Also, in the v5 patch these flags were documented, as they should be. 
Version 6 forgot to do this. This is changed in the appended patch.

And version 6 doesn't describe what sock_flag_bits actually does.  It
should. This is changed in the appended patch.

And the name seems inappropriate to me.  Should it not be enum
cg_proto_flag_bits?  Or, probably better, cg_proto_flags?  This I did
*not* change.

>  struct sock;
>  #ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM
>  void sock_update_memcg(struct sock *sk);
> diff --git a/include/net/sock.h b/include/net/sock.h
> index b3ebe6b..1742db7 100644
> --- a/include/net/sock.h
> +++ b/include/net/sock.h
> @@ -913,6 +913,7 @@ struct cg_proto {
>  	struct percpu_counter	*sockets_allocated;	/* Current number of sockets. */
>  	int			*memory_pressure;
>  	long			*sysctl_mem;
> +	unsigned long		flags;
>  	/*
>  	 * memcg field is used to find which memcg we belong directly
>  	 * Each memcg struct can hold more than one cg_proto, so container_of
> @@ -928,6 +929,16 @@ struct cg_proto {
>  extern int proto_register(struct proto *prot, int alloc_slab);
>  extern void proto_unregister(struct proto *prot);
>  
> +static inline bool memcg_proto_active(struct cg_proto *cg_proto)
> +{
> +	return cg_proto->flags & (1 << MEMCG_SOCK_ACTIVE);
> +}
> +
> +static inline bool memcg_proto_activated(struct cg_proto *cg_proto)
> +{
> +	return cg_proto->flags & (1 << MEMCG_SOCK_ACTIVATED);
> +}

Here, we're open-coding kinda-test_bit().  Why do that?  These flags are
modified with set_bit() and friends, so we should read them with the
matching test_bit()?

Also, these bool-returning functions will return values other than 0
and 1.  That probably works OK and I don't know what the C standards
and implementations do about this.  But it seems unclean and slightly
risky to have a "bool" value of 32!  Converting these functions to use
test_bit() fixes this - test_bit() returns only 0 or 1.

test_bit() is slightly more expensive than the above.  If this is
considered to be an issue then I guess we could continue to use this
approach.  But I do think a code comment is needed, explaining and
justifying the unusual decision to bypass the bitops API.  Also these
functions should tell the truth and return an "int" type.

>  #ifdef SOCK_REFCNT_DEBUG
>  static inline void sk_refcnt_debug_inc(struct sock *sk)
>  {
> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
> index 0b4b4c8..22434bf 100644
> --- a/mm/memcontrol.c
> +++ b/mm/memcontrol.c
> @@ -404,6 +404,7 @@ void sock_update_memcg(struct sock *sk)
>  {
>  	if (mem_cgroup_sockets_enabled) {
>  		struct mem_cgroup *memcg;
> +		struct cg_proto *cg_proto;
>  
>  		BUG_ON(!sk->sk_prot->proto_cgroup);
>  
> @@ -423,9 +424,10 @@ void sock_update_memcg(struct sock *sk)
>  
>  		rcu_read_lock();
>  		memcg = mem_cgroup_from_task(current);
> -		if (!mem_cgroup_is_root(memcg)) {
> +		cg_proto = sk->sk_prot->proto_cgroup(memcg);
> +		if (!mem_cgroup_is_root(memcg) && memcg_proto_active(cg_proto)) {
>  			mem_cgroup_get(memcg);
> -			sk->sk_cgrp = sk->sk_prot->proto_cgroup(memcg);
> +			sk->sk_cgrp = cg_proto;
>  		}
>  		rcu_read_unlock();
>  	}
> @@ -451,9 +453,25 @@ struct cg_proto *tcp_proto_cgroup(struct mem_cgroup *memcg)
>  	return &memcg->tcp_mem.cg_proto;
>  }
>  EXPORT_SYMBOL(tcp_proto_cgroup);
> +
> +static void disarm_sock_keys(struct mem_cgroup *memcg)
> +{
> +	if (!memcg_proto_activated(&memcg->tcp_mem.cg_proto))
> +		return;
> +	static_key_slow_dec(&memcg_socket_limit_enabled);
> +}
> +#else
> +static void disarm_sock_keys(struct mem_cgroup *memcg)
> +{
> +}
>  #endif /* CONFIG_INET */
>  #endif /* CONFIG_CGROUP_MEM_RES_CTLR_KMEM */
>  
> +static void disarm_static_keys(struct mem_cgroup *memcg)
> +{
> +	disarm_sock_keys(memcg);
> +}

Why does this function exist?  Its single caller could call
disarm_sock_keys() directly.

>  static void drain_all_stock_async(struct mem_cgroup *memcg);
>  
>  static struct mem_cgroup_per_zone *
> @@ -4836,6 +4854,13 @@ static void free_work(struct work_struct *work)
>  	int size = sizeof(struct mem_cgroup);
>  
>  	memcg = container_of(work, struct mem_cgroup, work_freeing);
> +	/*
> +	 * We need to make sure that (at least for now), the jump label
> +	 * destruction code runs outside of the cgroup lock.

This is a poor comment - it failed to tell the reader *why* that code
must run outside the cgroup lock.

>							schedule_work()
> +	 * will guarantee this happens. Be careful if you need to move this
> +	 * disarm_static_keys around

It's a bit difficult for the reader to be careful when he isn't told
what the risks are.

> +	 */
> +	disarm_static_keys(memcg);
>  	if (size < PAGE_SIZE)
>  		kfree(memcg);
>  	else
> diff --git a/net/ipv4/tcp_memcontrol.c b/net/ipv4/tcp_memcontrol.c
> index 1517037..3b8fa25 100644
> --- a/net/ipv4/tcp_memcontrol.c
> +++ b/net/ipv4/tcp_memcontrol.c
> @@ -74,9 +74,6 @@ void tcp_destroy_cgroup(struct mem_cgroup *memcg)
>  	percpu_counter_destroy(&tcp->tcp_sockets_allocated);
>  
>  	val = res_counter_read_u64(&tcp->tcp_memory_allocated, RES_LIMIT);
> -
> -	if (val != RESOURCE_MAX)
> -		static_key_slow_dec(&memcg_socket_limit_enabled);
>  }
>  EXPORT_SYMBOL(tcp_destroy_cgroup);
>  
> @@ -107,10 +104,33 @@ static int tcp_update_limit(struct mem_cgroup *memcg, u64 val)
>  		tcp->tcp_prot_mem[i] = min_t(long, val >> PAGE_SHIFT,
>  					     net->ipv4.sysctl_tcp_mem[i]);
>  
> -	if (val == RESOURCE_MAX && old_lim != RESOURCE_MAX)
> -		static_key_slow_dec(&memcg_socket_limit_enabled);
> -	else if (old_lim == RESOURCE_MAX && val != RESOURCE_MAX)
> -		static_key_slow_inc(&memcg_socket_limit_enabled);
> +	if (val == RESOURCE_MAX)
> +		clear_bit(MEMCG_SOCK_ACTIVE, &cg_proto->flags);
> +	else if (val != RESOURCE_MAX) {
> +		/*
> +		 *  The active bit needs to be written after the static_key update.
> +		 *  This is what guarantees that the socket activation function
> +		 *  is the last one to run. See sock_update_memcg() for details,
> +		 *  and note that we don't mark any socket as belonging to this
> +		 *  memcg until that flag is up.
> +		 *
> +		 *  We need to do this, because static_keys will span multiple
> +		 *  sites, but we can't control their order. If we mark a socket
> +		 *  as accounted, but the accounting functions are not patched in
> +		 *  yet, we'll lose accounting.
> +		 *
> +		 *  We never race with the readers in sock_update_memcg(), because
> +		 *  when this value change, the code to process it is not patched in
> +		 *  yet.
> +		 *
> +		 *  The activated bit is used to guarantee that no two writers will 
> +		 *  do the update in the same memcg. Without that, we can't properly
> +		 *  shutdown the static key.
> +		 */

This comment needlessly overflows 80 cols and has a pointless and
unconventional double-space indenting.  I already provided a patch
which fixes this and a few other things, but that was ignored when you
did the v6.

> +		if (!test_and_set_bit(MEMCG_SOCK_ACTIVATED, &cg_proto->flags))
> +			static_key_slow_inc(&memcg_socket_limit_enabled);
> +		set_bit(MEMCG_SOCK_ACTIVE, &cg_proto->flags);
> +	}

So here are suggested changes from *some* of the above discussion. 
Please consider, incorporate, retest and send us a v7?



From: Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
Subject: memcg-decrement-static-keys-at-real-destroy-time-v6-fix

- move enum sock_flag_bits into sock.h

- document enum sock_flag_bits

- convert memcg_proto_active() and memcg_proto_activated() to test_bit()

- redo tcp_update_limit() comment to 80 cols

Cc: Glauber Costa <glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
Cc: Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
Cc: Kamezawa Hiroyuki <kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
Cc: Li Zefan <lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
Cc: Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>
Cc: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Signed-off-by: Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
---

 include/linux/memcontrol.h |    5 -----
 include/net/sock.h         |   15 +++++++++++++--
 net/ipv4/tcp_memcontrol.c  |   30 +++++++++++++++---------------
 3 files changed, 28 insertions(+), 22 deletions(-)

diff -puN include/linux/memcontrol.h~memcg-decrement-static-keys-at-real-destroy-time-v6-fix include/linux/memcontrol.h
--- a/include/linux/memcontrol.h~memcg-decrement-static-keys-at-real-destroy-time-v6-fix
+++ a/include/linux/memcontrol.h
@@ -405,11 +405,6 @@ enum {
 	OVER_LIMIT,
 };
 
-enum sock_flag_bits {
-	MEMCG_SOCK_ACTIVE,
-	MEMCG_SOCK_ACTIVATED,
-};
-
 struct sock;
 #ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM
 void sock_update_memcg(struct sock *sk);
diff -puN include/net/sock.h~memcg-decrement-static-keys-at-real-destroy-time-v6-fix include/net/sock.h
--- a/include/net/sock.h~memcg-decrement-static-keys-at-real-destroy-time-v6-fix
+++ a/include/net/sock.h
@@ -46,6 +46,7 @@
 #include <linux/list_nulls.h>
 #include <linux/timer.h>
 #include <linux/cache.h>
+#include <linux/bitops.h>
 #include <linux/lockdep.h>
 #include <linux/netdevice.h>
 #include <linux/skbuff.h>	/* struct sk_buff */
@@ -921,6 +922,16 @@ struct proto {
 #endif
 };
 
+/*
+ * Bits in struct cg_proto.flags
+ */
+enum sock_flag_bits {
+	/* Currently active and new sockets should be assigned to cgroups */
+	MEMCG_SOCK_ACTIVE,
+	/* It was ever activated; we must disarm static keys on destruction */
+	MEMCG_SOCK_ACTIVATED,
+};
+
 struct cg_proto {
 	void			(*enter_memory_pressure)(struct sock *sk);
 	struct res_counter	*memory_allocated;	/* Current allocated memory. */
@@ -945,12 +956,12 @@ extern void proto_unregister(struct prot
 
 static inline bool memcg_proto_active(struct cg_proto *cg_proto)
 {
-	return cg_proto->flags & (1 << MEMCG_SOCK_ACTIVE);
+	return test_bit(MEMCG_SOCK_ACTIVE, &cg_proto->flags);
 }
 
 static inline bool memcg_proto_activated(struct cg_proto *cg_proto)
 {
-	return cg_proto->flags & (1 << MEMCG_SOCK_ACTIVATED);
+	return test_bit(MEMCG_SOCK_ACTIVATED, &cg_proto->flags);
 }
 
 #ifdef SOCK_REFCNT_DEBUG
diff -puN net/ipv4/tcp_memcontrol.c~memcg-decrement-static-keys-at-real-destroy-time-v6-fix net/ipv4/tcp_memcontrol.c
--- a/net/ipv4/tcp_memcontrol.c~memcg-decrement-static-keys-at-real-destroy-time-v6-fix
+++ a/net/ipv4/tcp_memcontrol.c
@@ -108,24 +108,24 @@ static int tcp_update_limit(struct mem_c
 		clear_bit(MEMCG_SOCK_ACTIVE, &cg_proto->flags);
 	else if (val != RESOURCE_MAX) {
 		/*
-		 *  The active bit needs to be written after the static_key update.
-		 *  This is what guarantees that the socket activation function
-		 *  is the last one to run. See sock_update_memcg() for details,
-		 *  and note that we don't mark any socket as belonging to this
-		 *  memcg until that flag is up.
+		 * The active bit needs to be written after the static_key
+		 * update.  This is what guarantees that the socket activation
+		 * function is the last one to run.  See sock_update_memcg() for
+		 * details, and note that we don't mark any socket as belonging
+		 * to this memcg until that flag is up.
 		 *
-		 *  We need to do this, because static_keys will span multiple
-		 *  sites, but we can't control their order. If we mark a socket
-		 *  as accounted, but the accounting functions are not patched in
-		 *  yet, we'll lose accounting.
+		 * We need to do this, because static_keys will span multiple
+		 * sites, but we can't control their order.  If we mark a socket
+		 * as accounted, but the accounting functions are not patched in
+		 * yet, we'll lose accounting.
 		 *
-		 *  We never race with the readers in sock_update_memcg(), because
-		 *  when this value change, the code to process it is not patched in
-		 *  yet.
+		 * We never race with the readers in sock_update_memcg(),
+		 * because when this value change, the code to process it is not
+		 * patched in yet.
 		 *
-		 *  The activated bit is used to guarantee that no two writers will
-		 *  do the update in the same memcg. Without that, we can't properly
-		 *  shutdown the static key.
+		 * The activated bit is used to guarantee that no two writers
+		 * will do the update in the same memcg. Without that, we can't
+		 * properly shutdown the static key.
 		 */
 		if (!test_and_set_bit(MEMCG_SOCK_ACTIVATED, &cg_proto->flags))
 			static_key_slow_inc(&memcg_socket_limit_enabled);
_

^ permalink raw reply

* [PATCH 2/2] iproute2: Fix memory hog of ip batched command.
From: Pravin B Shelar @ 2012-05-22 22:37 UTC (permalink / raw)
  To: shemminger, netdev; +Cc: jpettit, jesse, Pravin B Shelar

ipaddr_list_or_flush() builds list of all device at start of
every flush or list operation, but does not free memory at end.
This can hog lot of memory for large batched command.
Following patch fixes it.

Reported-by: Justin Pettit <jpettit@nicira.com>
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
---
 ip/ipaddress.c |   27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/ip/ipaddress.c b/ip/ipaddress.c
index 7080c41..09444e6 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
@@ -775,6 +775,8 @@ static int ipaddr_list_or_flush(int argc, char **argv, int flush)
 	struct nlmsg_list *l, *n;
 	char *filter_dev = NULL;
 	int no_link = 0;
+	int rc = 0;
+	int print_info = 0;
 
 	ipaddr_reset_filter(oneline);
 	filter.showqueue = 1;
@@ -877,7 +879,8 @@ static int ipaddr_list_or_flush(int argc, char **argv, int flush)
 		filter.ifindex = ll_name_to_index(filter_dev);
 		if (filter.ifindex <= 0) {
 			fprintf(stderr, "Device \"%s\" does not exist.\n", filter_dev);
-			return -1;
+			rc = -1;
+			goto out;
 		}
 	}
 
@@ -922,11 +925,14 @@ flush_done:
 						printf("*** Flush is complete after %d round%s ***\n", round, round>1?"s":"");
 				}
 				fflush(stdout);
-				return 0;
+				rc = 0;
+				goto out;
 			}
 			round++;
-			if (flush_update() < 0)
-				return 1;
+			if (flush_update() < 0) {
+				rc = 1;
+				goto out;
+			}
 
 			if (show_stats) {
 				printf("\n*** Round %d, deleting %d addresses ***\n", round, filter.flushed);
@@ -943,7 +949,8 @@ flush_done:
 		}
 		fprintf(stderr, "*** Flush remains incomplete after %d rounds. ***\n", max_flush_loops);
 		fflush(stderr);
-		return 1;
+		rc = 1;
+		goto out;
 	}
 
 	if (filter.family != AF_PACKET) {
@@ -1017,19 +1024,21 @@ flush_done:
 				lp = &l->next;
 		}
 	}
-
+	print_info = 1;
+out:
 	for (l=linfo; l; l = n) {
 		n = l->next;
-		if (no_link || print_linkinfo(NULL, &l->h, stdout) == 0) {
+		if (print_info &&
+		    (no_link || print_linkinfo(NULL, &l->h, stdout) == 0)) {
 			struct ifinfomsg *ifi = NLMSG_DATA(&l->h);
 			if (filter.family != AF_PACKET)
 				print_selected_addrinfo(ifi->ifi_index, ainfo, stdout);
+			fflush(stdout);
 		}
-		fflush(stdout);
 		free(l);
 	}
 
-	return 0;
+	return rc;
 }
 
 int ipaddr_list_link(int argc, char **argv)
-- 
1.7.10

^ permalink raw reply related

* [PATCH 1/2] iproute2: Improve list add.
From: Pravin B Shelar @ 2012-05-22 22:37 UTC (permalink / raw)
  To: shemminger, netdev; +Cc: jpettit, jesse, Pravin B Shelar

ip command reads entire list of devices on every flush command.
While adding device record to list is does list traversal O(n).
This is time consuming for large batch commands.
Following patch improves list add operation to O(1).

Reported-by: Justin Pettit <jpettit@nicira.com>
Signed-off-by: Pravin B Shelar <pshelar@nicira.com>
---
 ip/ipaddress.c |   16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/ip/ipaddress.c b/ip/ipaddress.c
index 9ab65ec..7080c41 100644
--- a/ip/ipaddress.c
+++ b/ip/ipaddress.c
@@ -714,6 +714,7 @@ int print_addrinfo_secondary(const struct sockaddr_nl *who, struct nlmsghdr *n,
 struct nlmsg_list
 {
 	struct nlmsg_list *next;
+	struct nlmsg_list *last;
 	struct nlmsghdr	  h;
 };
 
@@ -744,17 +745,24 @@ static int store_nlmsg(const struct sockaddr_nl *who, struct nlmsghdr *n,
 {
 	struct nlmsg_list **linfo = (struct nlmsg_list**)arg;
 	struct nlmsg_list *h;
-	struct nlmsg_list **lp;
 
-	h = malloc(n->nlmsg_len+sizeof(void*));
+	h = malloc(n->nlmsg_len+sizeof(void*)+sizeof(void*));
 	if (h == NULL)
 		return -1;
 
 	memcpy(&h->h, n, n->nlmsg_len);
 	h->next = NULL;
 
-	for (lp = linfo; *lp; lp = &(*lp)->next) /* NOTHING */;
-	*lp = h;
+	if (!*linfo) {
+		/* First element. */
+		h->last = h;
+		*linfo = h;
+	} else {
+		struct nlmsg_list *last = (*linfo)->last;
+
+		last->next = h;
+		(*linfo)->last = h;
+	}
 
 	ll_remember_index(who, n, NULL);
 	return 0;
-- 
1.7.10

^ permalink raw reply related

* Re: CODEL et al.
From: David Miller @ 2012-05-22 21:49 UTC (permalink / raw)
  To: shemminger; +Cc: netdev
In-Reply-To: <20120522142800.0fcd378e@nehalam.linuxnetplumber.net>

From: Stephen Hemminger <shemminger@vyatta.com>
Date: Tue, 22 May 2012 14:28:00 -0700

> Since codel is now merged, just finished merging all the outstanding
> iproute2 patches for 3.5.

Thanks a lot Stephen.

^ permalink raw reply

* Re: [Bug 43277] New: net/e1000e set mtu larger than 1500 fails
From: Stephen Hemminger @ 2012-05-22 21:29 UTC (permalink / raw)
  To: Ben Hutchings; +Cc: Christer Ekholm, netdev, Allan, Bruce W, e1000-devel
In-Reply-To: <1337713156.2922.12.camel@bwh-desktop.uk.solarflarecom.com>

On Tue, 22 May 2012 19:59:16 +0100
Ben Hutchings <bhutchings@solarflare.com> wrote:

> On Tue, 2012-05-22 at 20:39 +0200, Christer Ekholm wrote:
> > Stephen Hemminger writes:
> >  > On Tue, 22 May 2012 11:19:50 -0700
> >  > Stephen Hemminger <shemminger@vyatta.com> wrote:
> >  > 
> >  > 
> >  > I believe the problem is detected here. Check system console log (dmesg).
> >  > The hardware does not allow receive hashing and checksum offload together
> >  > in Jumbo mode.
> >  > 
> >  > 	/*
> >  > 	 * IP payload checksum (enabled with jumbos/packet-split when
> >  > 	 * Rx checksum is enabled) and generation of RSS hash is
> >  > 	 * mutually exclusive in the hardware.
> >  > 	 */
> >  > 	if ((netdev->features & NETIF_F_RXCSUM) &&
> >  > 	    (netdev->features & NETIF_F_RXHASH)) {
> >  > 		e_err("Jumbo frames cannot be enabled when both receive checksum offload and receive hashing are enabled.  Disable one of the receive offload features before enabling jumbos.\n");
> >  > 		return -EINVAL;
> >  > 	}
> > 
> > Yes you are right.
> > 
> >  e1000e 0000:05:00.1: eth1: Jumbo frames cannot be enabled when both receive checksum offload and receive hashing are enabled.  Disable one of the receive offload features before enabling jumbos.
> > 
> > How stupid of me to not see that. 
> > 
> > After turning rxhash of, setting of mtu to 9000 is possible again.
> > 
> > $ sudo ethtool -K eth1 rxhash off
> > 
> > $ sudo ip link set eth1 mtu 9000
> > 
> > 
> > Sorry to have wasted your time.
> 
> It's not a waste of time.
> 
> I think this behaviour is broken: NETIF_F_RXHASH is turned on by default
> and user and distribution scripts that set MTU will now be broken until
> they know that they need to work around this hardware limitation.  And
> why should they ever need to know that?
> 
> I think the proper thing to do is to automatically turn off
> NETIF_F_RXHASH when the MTU is too high for it to work.  The netdev
> still keeps track of whether it is 'wanted'.
> 
> Ben.
> 

Agreed. Principal of least surprise says the best thing to
do would be turn off features that are performance improvements to allow
user to do what they wanted (and turn the error into a warning).

^ permalink raw reply

* Re: CODEL et al.
From: Stephen Hemminger @ 2012-05-22 21:28 UTC (permalink / raw)
  To: David Miller; +Cc: netdev
In-Reply-To: <20120522.152424.2220976457698189461.davem@davemloft.net>

On Tue, 22 May 2012 15:24:24 -0400 (EDT)
David Miller <davem@davemloft.net> wrote:

> 
> Stephen, could you please provide a tree (if you don't already)
> that has all of the CODEL et al. iproute2 feature patches applied
> and mark the patchwork patches as applied??
> 
> Otherwise people have to do unreasonable things to test the new
> features that are in Linus's tree already.
> 
> Thanks.

Since codel is now merged, just finished merging all the outstanding
iproute2 patches for 3.5.

^ permalink raw reply

* Re: [PATCH 1/2] iproute2: allow IPv6 addresses for l2tp local and remote parameters
From: Stephen Hemminger @ 2012-05-22 21:26 UTC (permalink / raw)
  To: James Chapman; +Cc: netdev, Chris Elston
In-Reply-To: <1335882323-6219-2-git-send-email-jchapman@katalix.com>

On Tue,  1 May 2012 15:25:22 +0100
James Chapman <jchapman@katalix.com> wrote:

> From: Chris Elston <celston@katalix.com>
> 
> Adds support for parsing IPv6 addresses to the parameters local and
> remote in the l2tp commands. Requires netlink attributes L2TP_ATTR_IP6_SADDR
> and L2TP_ATTR_IP6_DADDR, added in a required kernel patch already submitted
> to netdev.
> 
> Also enables printing of IPv6 addresses returned by the L2TP_CMD_TUNNEL_GET
> request.
> 
> Signed-off-by: Chris Elston <celston@katalix.com>
> Signed-off-by: James Chapman <jchapman@katalix.com>

Applied. Since l2tp ipv6 is part of 3.5 merge.

^ permalink raw reply

* Re: [PATCH iproute2] tc_codel: Controlled Delay AQM
From: Stephen Hemminger @ 2012-05-22 21:16 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: netdev, Dave Taht
In-Reply-To: <1336717355.31653.130.camel@edumazet-glaptop>

On Fri, 11 May 2012 08:22:35 +0200
Eric Dumazet <eric.dumazet@gmail.com> wrote:

> From: Eric Dumazet <edumazet@google.com>
> 
> An implementation of CoDel AQM, from Kathleen Nichols and Van Jacobson. 
> 
> http://queue.acm.org/detail.cfm?id=2209336 
> 
> This AQM main input is no longer queue size in bytes or packets, but the
> delay packets stay in (FIFO) queue.
> 
> As we don't have infinite memory, we still can drop packets in enqueue()
> in case of massive load, but mean of CoDel is to drop packets in
> dequeue(), using a control law based on two simple parameters :
> 
> target : target sojourn time (default 5ms)
> interval : width of moving time window (default 100ms)
> 
> Selected packets are dropped, unless ECN is enabled and packets can get
> ECN mark instead.
> 
> Usage: tc qdisc ... codel [ limit PACKETS ] [ target TIME ]
>                           [ interval TIME ] [ ecn ]
> 
> qdisc codel 10: parent 1:1 limit 2000p target 3.0ms interval 60.0ms ecn 
>  Sent 13347099587 bytes 8815805 pkt (dropped 0, overlimits 0 requeues 0) 
>  rate 202365Kbit 16708pps backlog 113550b 75p requeues 0 
>   count 116 lastcount 98 ldelay 4.3ms dropping drop_next 816us
>   maxpacket 1514 ecn_mark 84399 drop_overlimit 0
> 
> CoDel must be seen as a base module, and should be used keeping in mind
> there is still a FIFO queue. So a typical setup will probably need a
> hierarchy of several qdiscs and packet classifiers to be able to meet
> whatever constraints a user might have.
> 
> One possible example would be to use fq_codel, which combines Fair
> Queueing and CoDel, in replacement of sfq / sfq_red.
> 
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Signed-off-by: Dave Taht <dave.taht@bufferbloat.net>
> ---
> Notes :
> 1) : Dave Taht will send a nice man-page for this stuff.
> 2) : the TCA_NETEM_ECN bit is because of include/linux/pkt_sched.h sync
> with net-next
>      (I'll send a separate patch for netem)
> 

Applied. Used 3.5 sanitized header (not the one in your patch),
and fixed whitespace error.


Ok, where's the man page :-)

^ permalink raw reply

* Re: [PATCH] if: restore token ring ARP type to header
From: David Miller @ 2012-05-22 21:14 UTC (permalink / raw)
  To: shemminger; +Cc: netdev
In-Reply-To: <20120522140105.284c28cd@nehalam.linuxnetplumber.net>

From: Stephen Hemminger <shemminger@vyatta.com>
Date: Tue, 22 May 2012 14:01:05 -0700

> Recent removal of Token Ring breaks the build of iproute2.
> 
> Even though Token Ring support is gone from the kernel, it is worth
> keeping the the definition of the TR ARP type to avoid breaking
> userspace programs that use this file.
> 
> Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>

Agreed, and applied, thanks Stephen.

^ permalink raw reply

* Re: [IPROUTE2 2/2] tc-netem: Add support for ECN packet marking
From: Stephen Hemminger @ 2012-05-22 21:12 UTC (permalink / raw)
  To: Vijay Subramanian; +Cc: netdev, Eric Dumazet
In-Reply-To: <1337212318-2100-3-git-send-email-subramanian.vijay@gmail.com>

On Wed, 16 May 2012 16:51:58 -0700
Vijay Subramanian <subramanian.vijay@gmail.com> wrote:

> This patch provides support for marking packets with ECN instead of
> dropping them with netem. This makes it possible to make use of the
> netem ECN marking feature that was added recently to the kernel.
> 
> Signed-off-by: Vijay Subramanian <subramanian.vijay@gmail.com>
> ---
>  include/linux/pkt_sched.h |    1 +
>  tc/q_netem.c              |   26 ++++++++++++++++++++++++++
>  2 files changed, 27 insertions(+), 0 deletions(-)
> 

Applied.

Note: I update kernel headers first (before applying changes), then
prune off the header changes from the patches. This is to make sure
that sanitized kernel headers are correct.

^ permalink raw reply

* [PATCH] if: restore token ring ARP type to header
From: Stephen Hemminger @ 2012-05-22 21:01 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

Recent removal of Token Ring breaks the build of iproute2.

Even though Token Ring support is gone from the kernel, it is worth
keeping the the definition of the TR ARP type to avoid breaking
userspace programs that use this file.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>

--- a/include/linux/if_arp.h	2012-05-22 08:24:26.816834997 -0700
+++ b/include/linux/if_arp.h	2012-05-22 13:57:24.037399528 -0700
@@ -82,7 +82,7 @@
 #define ARPHRD_FCPL	786		/* Fibrechannel public loop	*/
 #define ARPHRD_FCFABRIC	787		/* Fibrechannel fabric		*/
 	/* 787->799 reserved for fibrechannel media types */
-/* 800 used to be used for token ring */
+#define ARPHRD_IEEE802_TR 800		/* Magic type ident for TR	*/
 #define ARPHRD_IEEE80211 801		/* IEEE 802.11			*/
 #define ARPHRD_IEEE80211_PRISM 802	/* IEEE 802.11 + Prism2 header  */
 #define ARPHRD_IEEE80211_RADIOTAP 803	/* IEEE 802.11 + radiotap header */

^ permalink raw reply

* Re: TCPBacklogDrops during aggressive bursts of traffic
From: Eric Dumazet @ 2012-05-22 20:54 UTC (permalink / raw)
  To: Kieran Mansley; +Cc: Ben Hutchings, netdev
In-Reply-To: <1337705135.3361.226.camel@edumazet-glaptop>

On Tue, 2012-05-22 at 18:45 +0200, Eric Dumazet wrote:

> This is not evident from the capture, you are mistaken.
> 
> tcpdump captures packets before tcp stack, it doesnt say if they are :
> 
> 1) queued in receive of ofo queue
> 2) queued in socket backlog
> 3) dropped because we hit socket rcvbuf limit
> 
> If socket lock is hold by the user, packets are queued to backlog, or
> dropped.
> 
> Then, when socket lock is about to be released, we process the backlog.
> 
> 

BTW, latest iproute2 ss util has nice information if you add -m :

misc/ss -m dst 192.168.99.2
State      Recv-Q Send-Q      Local Address:Port          Peer Address:Port   
ESTAB      3441896 0            192.168.99.1:44409         192.168.99.2:41197   
	 skmem:(r5035136,rb6291456,t0,tb23080,f1149824,w0,o0)

Here you can see that for 3441896 bytes in TCP queue (payload), 
we have 5035136 bytes in rmem_alloc,
and 6291456 'bytes' in sk_rcvbuf

It lacks the backlog len, I'll send a patch when net-next reopens.

^ permalink raw reply

* Re: [PATCH RESENT] xen: do not disable netfront in dom0
From: David Miller @ 2012-05-22 20:50 UTC (permalink / raw)
  To: marmarek
  Cc: jeremy, Ian.Campbell, konrad.wilk, netdev, linux-kernel,
	virtualization, xen-devel
In-Reply-To: <20120522204742.29E8A626@duch.mimuw.edu.pl>

From: Marek Marczykowski <marmarek@invisiblethingslab.com>
Date: Sun, 20 May 2012 13:45:10 +0200

> Netfront driver can be also useful in dom0, eg when all NICs are assigned to
> some domU (aka driver domain). Then using netback in domU and netfront in dom0
> is the only way to get network access in dom0.
> 
> Signed-off-by: Marek Marczykowski <marmarek@invisiblethingslab.com>
> Acked-by: Ian Campbell <ian.campbell@citrix.com>
> Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>

Applied, thanks.

^ permalink raw reply

* Re: pull request: wireless 2012-05-22
From: David Miller @ 2012-05-22 20:17 UTC (permalink / raw)
  To: linville-2XuSBdqkA4R54TAoqtyWWQ
  Cc: linux-wireless-u79uwXL29TY76Z2rM5mHXA,
	netdev-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20120522195347.GF11866-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>

From: "John W. Linville" <linville-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org>
Date: Tue, 22 May 2012 15:53:48 -0400

> I apologize for not having sent this sooner.  FWIW, I was in a car
> somewhere between Illinois and North Carolina for most of the day
> Sunday and Monday... :-)
> 
> This is (obviously) the last non-fix pull request for wireless bits
> intended for 3.5.  It includes AP support for mwifiex, a variety of HCI
> and other updates for NFC, some brcmfmac and brcmsmac refactoring,
> a large batch of ssb and bcma updates, a batch of ath6kl updates,
> some cfg80211 and mac80211 updates/refactoring from Johannes Berg,
> a rather large collection of Bluetooth updates by way of Gustavo,
> and a variety of other bits here and there.

Pulled, thanks John.
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* RE: [PATCH] xen/netback: calculate correctly the SKB slots.
From: Simon Graham @ 2012-05-22 20:03 UTC (permalink / raw)
  To: Ian Campbell
  Cc: Konrad Rzeszutek Wilk, Ben Hutchings,
	xen-devel@lists.xensource.com, netdev@vger.kernel.org,
	davem@davemloft.net, linux-kernel@vger.kernel.org, Adnan Misherfi
In-Reply-To: <1337714930.3991.1.camel@dagon.hellion.org.uk>

> 
> That sounds very plausible indeed!
> 
> Please can format this as a commit message and resend with a
> Signed-off-by.
> 

Will do
Simon

> many thanks,
> Ian.
> 
> >
> > We found this running with a VIF bridged to a USB 3G Modem where
> > skb->data started near the end of a page so the header would always
> > span the page boundary.
> >
> > It was very easy to get the VIF to stop processing frames with the old
> > code and we have not seen any problems since applying this patch.
> >
> > Simon
> >
> 

^ permalink raw reply

* pull request: wireless 2012-05-22
From: John W. Linville @ 2012-05-22 19:53 UTC (permalink / raw)
  To: davem; +Cc: linux-wireless, netdev, linux-kernel

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

commit a0d0d1685f9763ab26a394df3ab84026b39a06a7

Dave,

I apologize for not having sent this sooner.  FWIW, I was in a car
somewhere between Illinois and North Carolina for most of the day
Sunday and Monday... :-)

This is (obviously) the last non-fix pull request for wireless bits
intended for 3.5.  It includes AP support for mwifiex, a variety of HCI
and other updates for NFC, some brcmfmac and brcmsmac refactoring,
a large batch of ssb and bcma updates, a batch of ath6kl updates,
some cfg80211 and mac80211 updates/refactoring from Johannes Berg,
a rather large collection of Bluetooth updates by way of Gustavo,
and a variety of other bits here and there.

Please let me know if there are problems!

Thanks,

John

---

The following changes since commit 31a67102f4762df5544bc2dfb34a931233d2a5b2:

  Fix blocking allocations called very early during bootup (2012-05-21 12:52:42 -0700)

are available in the git repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless.git master

Amit Beka (1):
      iwlwifi: fix power index handling

Amitkumar Karwar (2):
      Bluetooth: btmrvl: configure default host sleep parameters
      Bluetooth: btmrvl: add support for SDIO suspend/resume callbacks

Andre Guedes (21):
      Bluetooth: Check FINDING state in interleaved discovery
      Bluetooth: Add hci_cancel_le_scan() to hci_core
      Bluetooth: LE support for MGMT stop discovery
      Bluetooth: Replace EPERM by EALREADY in hci_cancel_inquiry
      Bluetooth: Refactor stop_discovery
      Bluetooth: Add Periodic Inquiry command complete handler
      Bluetooth: Add HCI_PERIODIC_INQ to dev_flags
      Bluetooth: Check HCI_PERIODIC_INQ in start_discovery
      Bluetooth: Ignore inquiry results from periodic inquiry
      Bluetooth: Add Periodic Inquiry command complete handler
      Bluetooth: Add HCI_PERIODIC_INQ to dev_flags
      Bluetooth: Remove MGMT_ADDR_INVALID macro
      Bluetooth: Remove useless code in hci_connect
      Bluetooth: Move address type macros to bluetooth.h
      Bluetooth: Rename link_to_mgmt to link_to_bdaddr
      Bluetooth: Add address type to struct sockaddr_l2
      Bluetooth: Rename mgmt_to_le to bdaddr_to_le
      Bluetooth: Move bdaddr_to_le to hci_core
      Bluetooth: Add dst_type parameter to hci_connect
      Bluetooth: Use address type info from user-space
      Bluetooth: Remove advertising cache

Andrei Emeltchenko (24):
      Bluetooth: trivial: Correct endian conversion
      Bluetooth: Correct type for hdev lmp_subver
      Bluetooth: Correct type for ediv to __le16
      Bluetooth: Fix extra conversion to __le32
      Bluetooth: Correct chan->psm endian conversions
      Bluetooth: Correct ediv in SMP
      Bluetooth: Correct length calc in L2CAP conf rsp
      Bluetooth: Correct CID endian notation
      Bluetooth: Convert error codes to le16
      Bluetooth: trivial: Fix endian conversion mode
      Bluetooth: trivial: Correct types
      Bluetooth: Fix type in cpu_to_le conversion
      Bluetooth: Fix opcode access in hci_complete
      Bluetooth: trivial: Remove sparse warnings
      Bluetooth: Silence sparse warning
      Bluetooth: Comments and style fixes
      Bluetooth: Remove unneeded timer clear
      Bluetooth: Make L2CAP chan_add functions static
      Bluetooth: Remove unneeded zero initialization
      Bluetooth: Add Read Local AMP Info to init
      Bluetooth: Adds set_default function in L2CAP setup
      Bluetooth: Fix debug printing unallocated name
      Bluetooth: trivial: Remove empty line
      Bluetooth: Remove unneeded calculation and magic number

Arik Nemtsov (1):
      mac80211: fix network header location when adding encryption headers

Ashok Nagarajan (4):
      mac80211: Push the deleted comment to correct place
      mac80211: Fix don't use '>' operator for matching channel types
      mac80211: Modify mesh_set_ht_prot_mode() to have less identation
      mac80211: Add debugfs entry for mesh ht_opmode

Avinash Patil (18):
      mwifiex: allocate space for one more mwifiex_private structure
      mwifiex: handle station specific commands on STA interface only
      mwifiex: support for creation of AP interface
      mwifiex: multi-interface support for mwifiex
      mwifiex: save adapter pointer in wiphy_priv
      mwifiex: append peer mac address TLV in key material command to firmware
      mwifiex: add bss start and bss stop commands for AP
      mwifiex: add AP command sys_config and set channel
      mwifiex: stop BSS in deauthentication handling
      mwifiex: handle interface type changes correctly
      mwifiex: common set_wiphy_params cfg80211 handler for AP and STA interface
      mwifiex: add cfg80211 start_ap and stop_ap handlers
      mwifiex: add AP event handling framework
      mwifiex: add WPA2 support for AP
      mwifiex: rearrange AP sys configure code
      mwifiex: add custom IE framework
      mwifiex: retrieve IEs from cfg80211_beacon_data and send to firmware
      mwifiex: delete IEs when stop_ap

Bartosz.Markowski@tieto.com (1):
      wlcore/wl12xx: implement better beacon loss handling

Bing Zhao (1):
      mwifiex: fix coding style issue in mwifiex_deauthenticate

Bjorn Helgaas (1):
      b43: use pci_is_pcie() instead of obsolete pci_dev.is_pcie

Chun-Yeow Yeoh (1):
      mac80211: fix the increment of unicast/multicast counters for forwarded PREQ

Cristian Chilipirea (2):
      Bluetooth: Fixed checkpatch warnings
      Net: wireless: core.c: fixed checkpatch warnings

Dan Carpenter (6):
      ath6kl: list_first_entry() is never NULL
      ath6kl: change || to &&
      ath6kl: fix an indenting issue
      NFC: Remove unneeded pn533 dev NULL check
      wlcore: release lock on error in wl1271_op_suspend()
      wlcore: fixup an allocation

David Herrmann (5):
      Bluetooth: Remove redundant hdev->parent field
      Bluetooth: vhci: Ignore return code of nonseekable_open()
      Bluetooth: Move hci_alloc/free_dev close to hci_register/unregister_dev
      Bluetooth: Move device initialization to hci_alloc_dev()
      Bluetooth: Remove unneeded initialization in hci_alloc_dev()

David Spinadel (3):
      iwlwifi: fix scan_cmd_size allocation
      iwlwifi: disable default wildcard ssid scan
      iwlwifi: invert the order of ssid list in scan cmd

Eldad Zack (1):
      Bluetooth: bnep: use constant for ethertype

Emmanuel Grumbach (2):
      iwlwifi: don't flood logs when HT debug flag is set
      iwlwifi: don't disable AGG queues that are not enabled

Eric Lapuyade (7):
      NFC: Cache the core NFC active target pointer instead of its index
      NFC: Remove useless HCI private nfc target table
      NFC: Specify usage for targets found and target lost events
      NFC: Add HCI/SHDLC support to let driver check for tag presence
      NFC: Update Documentation/nfc-hci.txt
      NFC: HCI based pn544 driver
      NFC: HCI drivers don't have to keep track of polling state

Eyal Shapira (4):
      wlcore: add RX filters util functions
      wl12xx: add RX filters ACX commands
      wlcore: add RX filters driver state mgmt functions
      wl12xx: support wowlan wakeup patterns

Franky Lin (11):
      brcmfmac: remove unused parameter of brcmf_sdcard_reg_read
      brcmfmac: remove unused parameter of brcmf_sdcard_reg_write
      brcmfmac: decouple set_sbaddr_window from register write interface
      brcmfmac: introduce unified register access interface for SDIO
      brcmfmac: replace brcmf_sdcard_cfg_read with brcmf_sdio_regrb
      brcmfmac: replace brcmf_sdcard_cfg_write with brcmf_sdio_regwb
      brcmfmac: replace brcmf_sdcard_reg_read with brcmf_sdio_regrl
      brcmfmac: replace brcmf_sdcard_reg_write with brcmf_sdio_regwl
      brcmfmac: remove redundant retries for SDIO core register access
      brcmfmac: remove function brcmf_sdcard_regfail
      brcmfmac: replace brcmf_sdioh_card_regread with brcmf_sdio_regrl

Gustavo Padovan (13):
      Bluetooth: Remove sk parameter from l2cap_chan_create()
      Bluetooth: Remove err parameter from alloc_skb()
      Bluetooth: remove unneeded declaration of sco_conn_del()
      Bluetooth: Remove unneeded elements from size calculation
      Bluetooth: Remove hlen variable
      Merge git://git.kernel.org/.../bluetooth/bluetooth
      Bluetooth: Fix wrong set of skb fragments
      Bluetooth: Fix packet size provided to the controller
      Bluetooth: Fix skb length calculation
      Bluetooth: improve readability of l2cap_seq_list code
      Bluetooth: report the right security level in getsockopt
      Bluetooth: Create flags for bt_sk()
      Bluetooth: Report proper error number in disconnection

H Hartley Sweeten (5):
      NFC: Quiet nci/data.c sparse noise about plain integer as NULL pointer
      NFC: Include nci_core.h to nci/lib.c
      NFC: Quiet nci/ntf.c sparse noise about plain integer as NULL pointer
      NFC: HCI ops should not be exposed globally
      NFC: The NFC genl family structure should not be exposed globally

Hauke Mehrtens (32):
      ssb: remove rev from boardinfo
      MIPS: bcm47xx: refactor fetching board data
      bcma: add boardinfo struct
      MIPS: bcm47xx: read baordrev without prefix from sprom
      ssb/bcma: fill attribute alpha2 from sprom
      ssb: fill board_rev attribute from sprom
      bcma: read out some additional sprom attributes
      bcma/ssb: parse new attributes from sprom
      bcma: implement setting core clock mode to dynamic
      bcma: add bcma_core_pci_extend_L1timer
      bcma: add bcma_core_pci_fixcfg()
      bcma: add bcma_core_pci_config_fixup()
      brcmsmac: use sprom from bcma
      brcmsmac: remove brcmsmac own sprom parsing
      brcmsmac: get board and chip info from bcma
      brcmsmac: remove support for cc rev < 20
      brcmsmac: remove references to PCI
      brcmsmac: remove PCIe functions needed for PCIe core rev <= 10
      brcmsmac: remove pcicore_hwup()
      brcmsmac: remove ai_pci_setup()
      brcmsmac: remove ai_chipcontrl_epa4331
      brcmsmac: remove ai_gpiocontrol()
      brcmsmac: remove _ai_clkctl_cc()
      brcmsmac: remove pcicore_attach()
      brcmsmac: remove pcicore_find_pci_capability()
      brcmsmac: remove pcie_extendL1timer()
      brcmsmac: remove pcicore_fixcfg()
      brcmsmac: remove nicpci.c
      brcmsmac: do not access host_pci
      brcmsmac: read PCI vendor and device id only for PCI devices
      brcmsmac: handle non pci in ai_deviceremoved()
      ssb: add PCI IDs 0x4322 and 43222

Hemant Gupta (5):
      Bluetooth: Send correct address type for LTK
      Bluetooth: Fix clearing discovery type when stopping discovery
      Bluetooth: mgmt: Fix missing connect failed event for LE
      Bluetooth: mgmt: Fix address type while loading Long Term Key
      Bluetooth: Don't distribute keys in case of Encryption Failure

Ido Yariv (1):
      Bluetooth: Search global l2cap channels by src/dst addresses

Janusz.Dziedzic@tieto.com (1):
      mac80211: Add IV-room in the skb for TKIP and WEP

Javier Cardona (1):
      mac80211_hwsim: Fix rate control by correctly reporting transmission counts

Jesper Juhl (3):
      ath6kl: fix memory leak in ath6kl_fwlog_block_read()
      Bluetooth: btmrvl_sdio: remove pointless conditional before release_firmware()
      wlcore: fix size of two memset's in wl1271_cmd_build_arp_rsp()

Johan Hedberg (1):
      Bluetooth: Fix Inquiry with RSSI event mask

Johannes Berg (11):
      mac80211: fix single queue drivers
      mac80211: fix TX aggregation session timer
      cfg80211: remove double prototype
      cfg80211: add warning when calculating MCS rates >= 32
      mac80211: (selectively) add HT details in radiotap
      nl80211: prevent additions to old station flags API
      cfg80211: fix cfg80211_can_beacon_sec_chan prototype
      nl80211: refactor valid channel type check
      iwlwifi: support explicit monitor interface
      rndis_wlan: remove set_channel cfg80211 hook
      mwifiex: remove set_channel cfg80211 hook

John W. Linville (3):
      Merge branch 'for-linville' of git://github.com/kvalo/ath6kl
      Merge branch 'for-upstream' of git://git.kernel.org/.../bluetooth/bluetooth-next
      Merge git://git.kernel.org/.../linville/wireless-next

Jouni Malinen (2):
      ath6kl: Remove incorrect Probe Response offload support for Interworking
      ath6kl: Configure probed SSID list consistently

Kalle Valo (2):
      Merge remote branch 'wireless-next/master' into ath6kl-next
      ath6kl: merge split format strings into one

Kevin Fang (2):
      ath6kl: handle background(BK) stream properly on htc mbox layer
      ath6kl: assign Tx packet drop threshold per endpoint on htc pipe layer

Larry Finger (1):
      b43legacy: Fix error due to MMIO access with SSB unpowered

Luciano Coelho (3):
      wlcore: use GFP_KERNEL together with GFP_DMA
      wlcore: fix pointer print out in wl1271_acx_set_rx_filter()
      wlcore: fix some sparse warnings due to missing static declaration

Luis R. Rodriguez (1):
      ath6kl: include in.h explicitly

Lukasz Rymanowski (1):
      Bluetooth: Remove not needed status parameter

Marcel Holtmann (12):
      Bluetooth: Add TX power tag to EIR data
      Bluetooth: Handle EIR tags for Device ID
      Bluetooth: Add management command for setting Device ID
      Bluetooth: Fix broken usage of put_unaligned_le16
      Bluetooth: Fix broken usage of get_unaligned_le16
      Bluetooth: Update management interface revision
      Bluetooth: Split error handling for L2CAP listen sockets
      Bluetooth: Split error handling for SCO listen sockets
      Bluetooth: Don't check source address in SCO bind function
      Bluetooth: Restrict to one SCO listening socket
      Bluetooth: Enable Low Energy support by default
      NFC: Select CRC_CCITT for SHDLC link layer of HCI based drivers

Mat Martineau (17):
      Bluetooth: Add definitions and struct members for new ERTM state machine
      Bluetooth: Add a structure to carry ERTM data in skb control blocks
      Bluetooth: Add the l2cap_seq_list structure for tracking frames
      Bluetooth: Functions for handling ERTM control fields
      Bluetooth: Improve ERTM sequence number offset calculation
      Bluetooth: Remove duplicate structure members from bt_skb_cb
      Bluetooth: Move recently-added ERTM header packing functions
      Bluetooth: Initialize new l2cap_chan structure members
      Bluetooth: Remove unused function
      Bluetooth: Make better use of l2cap_chan reference counting
      Bluetooth: Add Code Aurora Forum copyright
      Bluetooth: Refactor L2CAP ERTM and streaming transmit segmentation
      Bluetooth: Update tx_send_head when sending ERTM data
      Bluetooth: Initialize the transmit queue for L2CAP streaming mode
      Bluetooth: Fix a redundant and problematic incoming MTU check
      Bluetooth: Restore locking semantics when looking up L2CAP channels
      Bluetooth: Lock the L2CAP channel when sending

Michael Gruetzner (1):
      Bluetooth: Add support for Foxconn/Hon Hai AR5BBU22 0489:E03C

Mikel Astiz (3):
      Bluetooth: Use unsigned int instead of signed int
      Bluetooth: Remove unnecessary check
      Bluetooth: btusb: Dynamic alternate setting

Ming Jiang (2):
      ath6kl: allow deepsleep_suspend function when wlan interface down
      ath6kl clear the MMC_PM_KEEP_POWER for cutpower case

Nathan Hintz (6):
      bcma: Find names of non BCM cores
      bcma: Move initialization of SPROM to prevent overwrite
      bcma: Account for variable PCI memory base/size
      bcma: reads/writes are always 4 bytes, so always map 4 bytes
      bcma: Add __devexit to bcma_host_pci_remove
      bcma: Add flush for BCMA_RESET_CTL write

Naveen Gangadharan (1):
      ath6kl: Multicast filter support in wow suspend and non-suspend

Raja Mani (1):
      ath6kl: Retain bg scan period value modified by the user

Randy Dunlap (1):
      wireless: TI wlxxx depends on MAC80211

Ray Chen (2):
      ath6kl: Add AR6004 1.2 support for USB and SDIO
      ath6kl: Fix system crash sometimes for USB hotplug

Samuel Ortiz (6):
      NFC: LLCP connect must wait for a CC frame
      NFC: Update the LLCP poll mask
      NFC: Return the amount of LLCP bytes queued to sock_sendmsg
      feature-removal: Remove pn544 raw driver
      NFC: Export nfc.h to userland
      NFC: Queue I frame fragments to the LLCP sockets queue tail

Subramania Sharma Thandaveswaran (1):
      ath6kl: Fix bug in bg scan configuration in schedule scan

Sujith Manoharan (1):
      ath9k_hw: Fix RTT calibration

Syam Sidhardhan (5):
      Bluetooth: mgmt: Remove unwanted goto statements
      Bluetooth: remove header declared but not defined
      Bluetooth: Remove strtoba header declared but not defined
      Bluetooth: Remove unused hci_le_ltk_reply()
      Bluetooth: Remove unused hci_le_ltk_neg_reply()

Szymon Janc (2):
      Bluetooth: mgmt: Fix some code style and indentation issues
      Bluetooth: mgmt: Don't allow to set invalid value to DeviceID source

Thomas Pedersen (7):
      ath6kl: handle concurrent AP-STA channel switches
      ath6kl: support fw reporting phy capabilities
      ath6kl: only restore supported HT caps
      ath6kl: disallow WoW with multiple vifs
      ath6kl: unblock fwlog_block_read() on exit
      ath6kl: check for sband existence when creating scan cmd
      mac80211: send peer candidate event for new sta only

Tim Gardner (1):
      ath6kl: Normalize use of FW_DIR

Ulisses Furquim (1):
      Bluetooth: Fix registering hci with duplicate name

Vasanthakumar Thiagarajan (6):
      ath6kl: Fix possible unaligned memory access in ath6kl_get_rsn_capab()
      ath6kl: Configure 0 as rsn cap when it is not there in rsn ie
      ath6kl: Don't advertise HT capability for incapable firmware
      ath6kl: Fix bss filter setting while scanning
      ath6kl: Update netstats for some of the tx failrues in ath6kl_data_tx()
      ath6kl: Complete failed tx packet in ath6kl_htc_tx_from_queue()

Vinicius Costa Gomes (1):
      Bluetooth: Add support for reusing the same hci_conn for LE links

Vishal Agarwal (1):
      Bluetooth: Fix EIR data generation for mgmt_device_found

Vivek Natarajan (1):
      ath6kl_sdio: Fix the EAPOL out of order issue

Wey-Yi Guy (3):
      iwlwifi: include rssi as part of decision making for reduce txpower
      iwlwifi: add documentation for bt reduced tx power
      iwlwifi: make sure reduced tx power bit is valid

Zefir Kurtisi (1):
      nl80211: fix typos in comments

Zero.Lin (1):
      rt2x00:Add RT539b chipset support

joseph daniel (1):
      NFC: Fix LLCP compilation warning

 Documentation/feature-removal-schedule.txt         |   12 +
 Documentation/nfc/nfc-hci.txt                      |   45 +-
 arch/mips/bcm47xx/setup.c                          |   15 +-
 arch/mips/bcm47xx/sprom.c                          |   28 +-
 arch/mips/include/asm/mach-bcm47xx/bcm47xx.h       |    9 +
 drivers/bcma/core.c                                |    3 +-
 drivers/bcma/driver_pci.c                          |   53 +-
 drivers/bcma/driver_pci_host.c                     |   10 +-
 drivers/bcma/host_pci.c                            |    7 +-
 drivers/bcma/scan.c                                |   54 +-
 drivers/bcma/sprom.c                               |  149 +++-
 drivers/bluetooth/ath3k.c                          |    6 +
 drivers/bluetooth/btmrvl_drv.h                     |    3 +
 drivers/bluetooth/btmrvl_main.c                    |   56 +-
 drivers/bluetooth/btmrvl_sdio.c                    |  112 +++-
 drivers/bluetooth/btusb.c                          |   16 +-
 drivers/bluetooth/hci_ldisc.c                      |    2 +-
 drivers/bluetooth/hci_vhci.c                       |    3 +-
 drivers/net/wireless/ath/ath6kl/cfg80211.c         |  238 ++++--
 drivers/net/wireless/ath/ath6kl/cfg80211.h         |    2 +
 drivers/net/wireless/ath/ath6kl/core.h             |   33 +-
 drivers/net/wireless/ath/ath6kl/debug.c            |   12 +-
 drivers/net/wireless/ath/ath6kl/htc_mbox.c         |   45 +-
 drivers/net/wireless/ath/ath6kl/htc_pipe.c         |   11 +-
 drivers/net/wireless/ath/ath6kl/init.c             |   29 +-
 drivers/net/wireless/ath/ath6kl/main.c             |  104 ++-
 drivers/net/wireless/ath/ath6kl/sdio.c             |   17 +-
 drivers/net/wireless/ath/ath6kl/txrx.c             |   12 +-
 drivers/net/wireless/ath/ath6kl/usb.c              |   12 +
 drivers/net/wireless/ath/ath6kl/wmi.c              |   94 ++-
 drivers/net/wireless/ath/ath6kl/wmi.h              |   24 +
 drivers/net/wireless/ath/ath9k/ar9003_calib.c      |   50 +-
 drivers/net/wireless/ath/ath9k/ar9003_mci.c        |    2 +-
 drivers/net/wireless/ath/ath9k/ar9003_rtt.c        |   84 ++-
 drivers/net/wireless/ath/ath9k/ar9003_rtt.h        |    5 +-
 drivers/net/wireless/ath/ath9k/hw.c                |    9 +-
 drivers/net/wireless/ath/ath9k/hw.h                |    9 +-
 drivers/net/wireless/b43/bus.c                     |    6 +-
 drivers/net/wireless/b43/dma.c                     |    2 +-
 drivers/net/wireless/b43/main.c                    |    4 +-
 drivers/net/wireless/b43legacy/main.c              |    4 +-
 drivers/net/wireless/b43legacy/phy.c               |    4 +-
 drivers/net/wireless/b43legacy/radio.c             |   10 +-
 drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c   |  244 +++---
 .../net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c |   32 +-
 drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c |  350 +++----
 .../net/wireless/brcm80211/brcmfmac/sdio_chip.c    |  265 +++---
 .../net/wireless/brcm80211/brcmfmac/sdio_host.h    |   37 +-
 drivers/net/wireless/brcm80211/brcmsmac/Makefile   |    3 -
 drivers/net/wireless/brcm80211/brcmsmac/aiutils.c  |  479 +---------
 drivers/net/wireless/brcm80211/brcmsmac/aiutils.h  |   24 -
 drivers/net/wireless/brcm80211/brcmsmac/antsel.c   |   16 +-
 drivers/net/wireless/brcm80211/brcmsmac/channel.c  |    7 +-
 .../net/wireless/brcm80211/brcmsmac/mac80211_if.c  |   11 +-
 drivers/net/wireless/brcm80211/brcmsmac/main.c     |  142 ++--
 drivers/net/wireless/brcm80211/brcmsmac/nicpci.c   |  826 -----------------
 drivers/net/wireless/brcm80211/brcmsmac/nicpci.h   |   77 --
 drivers/net/wireless/brcm80211/brcmsmac/otp.c      |  410 --------
 drivers/net/wireless/brcm80211/brcmsmac/otp.h      |   36 -
 .../net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c  |   67 +-
 .../net/wireless/brcm80211/brcmsmac/phy/phy_n.c    |  333 +++-----
 drivers/net/wireless/brcm80211/brcmsmac/phy_shim.c |    9 -
 drivers/net/wireless/brcm80211/brcmsmac/phy_shim.h |    3 -
 drivers/net/wireless/brcm80211/brcmsmac/pub.h      |  228 -----
 drivers/net/wireless/brcm80211/brcmsmac/srom.c     |  980 --------------------
 drivers/net/wireless/brcm80211/brcmsmac/srom.h     |   29 -
 drivers/net/wireless/brcm80211/brcmsmac/stf.c      |    6 +-
 drivers/net/wireless/iwlwifi/iwl-agn-lib.c         |   37 +-
 drivers/net/wireless/iwlwifi/iwl-agn-rxon.c        |    4 +
 drivers/net/wireless/iwlwifi/iwl-agn-tx.c          |   19 +-
 drivers/net/wireless/iwlwifi/iwl-agn.c             |    2 +-
 drivers/net/wireless/iwlwifi/iwl-commands.h        |    7 +-
 drivers/net/wireless/iwlwifi/iwl-mac80211.c        |    5 +-
 drivers/net/wireless/iwlwifi/iwl-power.c           |    8 +-
 drivers/net/wireless/iwlwifi/iwl-scan.c            |   52 +-
 drivers/net/wireless/mac80211_hwsim.c              |    5 +
 drivers/net/wireless/mwifiex/Makefile              |    2 +
 drivers/net/wireless/mwifiex/cfg80211.c            |  498 +++++++---
 drivers/net/wireless/mwifiex/cfg80211.h            |    2 +-
 drivers/net/wireless/mwifiex/cmdevt.c              |   21 +-
 drivers/net/wireless/mwifiex/decl.h                |   13 +-
 drivers/net/wireless/mwifiex/fw.h                  |  159 ++++-
 drivers/net/wireless/mwifiex/ie.c                  |  396 ++++++++
 drivers/net/wireless/mwifiex/init.c                |    1 +
 drivers/net/wireless/mwifiex/ioctl.h               |   32 +
 drivers/net/wireless/mwifiex/join.c                |   26 +-
 drivers/net/wireless/mwifiex/main.c                |   57 +-
 drivers/net/wireless/mwifiex/main.h                |   26 +-
 drivers/net/wireless/mwifiex/sta_cmd.c             |   69 +-
 drivers/net/wireless/mwifiex/sta_cmdresp.c         |    8 +
 drivers/net/wireless/mwifiex/sta_event.c           |   51 +-
 drivers/net/wireless/mwifiex/sta_ioctl.c           |    9 +-
 drivers/net/wireless/mwifiex/uap_cmd.c             |  432 +++++++++
 drivers/net/wireless/mwifiex/wmm.c                 |    4 +
 drivers/net/wireless/rndis_wlan.c                  |   14 -
 drivers/net/wireless/rt2x00/rt2800pci.c            |    1 +
 drivers/net/wireless/ti/wl12xx/Kconfig             |    1 +
 drivers/net/wireless/ti/wlcore/Kconfig             |    2 +-
 drivers/net/wireless/ti/wlcore/acx.c               |   80 ++
 drivers/net/wireless/ti/wlcore/acx.h               |   30 +
 drivers/net/wireless/ti/wlcore/boot.c              |    3 +-
 drivers/net/wireless/ti/wlcore/cmd.c               |    8 +-
 drivers/net/wireless/ti/wlcore/event.c             |   29 +-
 drivers/net/wireless/ti/wlcore/main.c              |  323 +++++++-
 drivers/net/wireless/ti/wlcore/rx.c                |   36 +
 drivers/net/wireless/ti/wlcore/rx.h                |    4 +
 drivers/net/wireless/ti/wlcore/wl12xx.h            |   41 +
 drivers/net/wireless/ti/wlcore/wlcore.h            |    6 +
 drivers/nfc/Kconfig                                |   13 +
 drivers/nfc/Makefile                               |    1 +
 drivers/nfc/pn533.c                                |   19 +-
 drivers/nfc/pn544_hci.c                            |  947 +++++++++++++++++++
 drivers/ssb/b43_pci_bridge.c                       |    2 +
 drivers/ssb/pci.c                                  |   88 ++-
 include/linux/Kbuild                               |    1 +
 include/linux/bcma/bcma.h                          |    7 +
 include/linux/bcma/bcma_driver_pci.h               |   11 +
 include/linux/nfc/pn544.h                          |    7 +
 include/linux/nl80211.h                            |    8 +-
 include/linux/ssb/ssb.h                            |    1 -
 include/linux/ssb/ssb_regs.h                       |   61 ++-
 include/net/bluetooth/bluetooth.h                  |   32 +-
 include/net/bluetooth/hci.h                        |    8 +-
 include/net/bluetooth/hci_core.h                   |   67 +-
 include/net/bluetooth/l2cap.h                      |   93 ++-
 include/net/bluetooth/mgmt.h                       |    9 +
 include/net/bluetooth/smp.h                        |    2 +-
 include/net/cfg80211.h                             |    6 +-
 include/net/mac80211.h                             |   12 +-
 include/net/nfc/hci.h                              |    6 +-
 include/net/nfc/nfc.h                              |   19 +-
 include/net/nfc/shdlc.h                            |    2 +
 net/bluetooth/af_bluetooth.c                       |    8 +-
 net/bluetooth/bnep/core.c                          |    2 +-
 net/bluetooth/hci_conn.c                           |   56 +-
 net/bluetooth/hci_core.c                           |  267 +++----
 net/bluetooth/hci_event.c                          |   75 ++-
 net/bluetooth/hci_sysfs.c                          |    5 +-
 net/bluetooth/l2cap_core.c                         |  762 +++++++++++-----
 net/bluetooth/l2cap_sock.c                         |   76 +-
 net/bluetooth/mgmt.c                               |  286 ++++---
 net/bluetooth/rfcomm/sock.c                        |   14 +-
 net/bluetooth/sco.c                                |   75 +-
 net/bluetooth/smp.c                                |    2 +-
 net/mac80211/agg-tx.c                              |   10 +-
 net/mac80211/debugfs_netdev.c                      |    2 +
 net/mac80211/ibss.c                                |    5 +
 net/mac80211/iface.c                               |    4 +-
 net/mac80211/main.c                                |    3 +
 net/mac80211/mesh.c                                |    6 +-
 net/mac80211/mesh_hwmp.c                           |    5 +-
 net/mac80211/mesh_plink.c                          |   65 +-
 net/mac80211/rx.c                                  |    6 +-
 net/mac80211/wep.c                                 |   15 +-
 net/mac80211/wpa.c                                 |   10 +-
 net/nfc/core.c                                     |  112 ++-
 net/nfc/hci/Kconfig                                |    1 +
 net/nfc/hci/core.c                                 |   78 +--
 net/nfc/hci/shdlc.c                                |   12 +
 net/nfc/llcp/commands.c                            |    4 +-
 net/nfc/llcp/llcp.c                                |    7 +
 net/nfc/llcp/sock.c                                |   57 ++-
 net/nfc/nci/core.c                                 |   27 +-
 net/nfc/nci/data.c                                 |    8 +-
 net/nfc/nci/lib.c                                  |    1 +
 net/nfc/nci/ntf.c                                  |    2 +-
 net/nfc/netlink.c                                  |    6 +-
 net/nfc/nfc.h                                      |    2 +-
 net/wireless/chan.c                                |    2 +-
 net/wireless/core.c                                |    4 +-
 net/wireless/core.h                                |    2 -
 net/wireless/nl80211.c                             |   69 +-
 net/wireless/util.c                                |    2 +-
 173 files changed, 6619 insertions(+), 5500 deletions(-)
 delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/nicpci.c
 delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/nicpci.h
 delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/otp.c
 delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/otp.h
 delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/srom.c
 delete mode 100644 drivers/net/wireless/brcm80211/brcmsmac/srom.h
 create mode 100644 drivers/net/wireless/mwifiex/ie.c
 create mode 100644 drivers/net/wireless/mwifiex/uap_cmd.c
 create mode 100644 drivers/nfc/pn544_hci.c
-- 
John W. Linville		Someday the world will need a hero, and you
linville@tuxdriver.com			might be all we have.  Be ready.

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

^ permalink raw reply

* Re: [Xen-devel] [PATCH] xen: do not disable netfront in dom0
From: Konrad Rzeszutek Wilk @ 2012-05-22 19:43 UTC (permalink / raw)
  To: David Miller
  Cc: jeremy, Ian.Campbell, netdev, marmarek, virtualization, xen-devel,
	linux-kernel
In-Reply-To: <20120522.153847.2107186222464601466.davem@davemloft.net>

On Tue, May 22, 2012 at 03:38:47PM -0400, David Miller wrote:
> From: Ian Campbell <Ian.Campbell@citrix.com>
> Date: Tue, 22 May 2012 20:30:28 +0100
> 
> > On Tue, 2012-05-22 at 20:13 +0100, David Miller wrote:
> >> From: Marek Marczykowski <marmarek@invisiblethingslab.com>
> >> Date: Sun, 20 May 2012 13:45:10 +0200
> >> 
> >> > Netfront driver can be also useful in dom0, eg when all NICs are assigned to
> >> > some domU (aka driver domain). Then using netback in domU and netfront in dom0
> >> > is the only way to get network access in dom0.
> >> > 
> >> > Signed-off-by: Marek Marczykowski <marmarek@invisiblethingslab.com>
> >> 
> >> Someone please review this and I can merge it in via the 'net' tree if
> >> it looks OK to XEN folks.
> > 
> > Konrad is "Xen folks" and has acked it already but FWIW:
> > 
> > Acked-by: Ian Campbell <ian.campbell@citrix.com>
> 
> Ok, but this patch doesn't appply cleanly at all to Linus's
> current tree nor my 'net' tree (which are equal right now).

Oh no! Marek, can you repin it please (along with all the Ack's on it).

^ permalink raw reply


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