* 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
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