* [PATCH net-next] inet: add rfc 3168 extract in front of INET_ECN_encapsulate()
From: Eric Dumazet @ 2011-10-22 5:11 UTC (permalink / raw)
To: David Miller; +Cc: netdev
INET_ECN_encapsulate() is better understood if we can read the official
statement.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
---
include/net/inet_ecn.h | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/include/net/inet_ecn.h b/include/net/inet_ecn.h
index 2fa8d13..2fa1469 100644
--- a/include/net/inet_ecn.h
+++ b/include/net/inet_ecn.h
@@ -30,6 +30,14 @@ static inline int INET_ECN_is_capable(__u8 dsfield)
return dsfield & INET_ECN_ECT_0;
}
+/*
+ * RFC 3168 9.1.1
+ * The full-functionality option for ECN encapsulation is to copy the
+ * ECN codepoint of the inside header to the outside header on
+ * encapsulation if the inside header is not-ECT or ECT, and to set the
+ * ECN codepoint of the outside header to ECT(0) if the ECN codepoint of
+ * the inside header is CE.
+ */
static inline __u8 INET_ECN_encapsulate(__u8 outer, __u8 inner)
{
outer &= ~INET_ECN_MASK;
^ permalink raw reply related
* Re: [PATCH] net: use INET_ECN_MASK instead of hardcoded 3
From: David Miller @ 2011-10-22 4:08 UTC (permalink / raw)
To: zenczykowski; +Cc: maze, netdev
In-Reply-To: <1319238710-11272-1-git-send-email-zenczykowski@gmail.com>
From: Maciej Żenczykowski <zenczykowski@gmail.com>
Date: Fri, 21 Oct 2011 16:11:50 -0700
> Signed-off-by: Maciej Żenczykowski <maze@google.com>
Applied.
^ permalink raw reply
* Re: [PATCH] net: add sysctl allow_so_priority for SO_PRIORITY setsockopt
From: David Miller @ 2011-10-22 4:04 UTC (permalink / raw)
To: zenczykowski; +Cc: maze, netdev
In-Reply-To: <1319235725-3046-1-git-send-email-zenczykowski@gmail.com>
From: Maciej Żenczykowski <zenczykowski@gmail.com>
Date: Fri, 21 Oct 2011 15:22:05 -0700
> From: Maciej Żenczykowski <maze@google.com>
>
> This change adds a sysctl (/proc/sys/net/core/allow_so_priority)
> with a default of true (1), as such it does not change the default
> behaviour of the Linux kernel.
>
> This sysctl can be set to false (0), this will result in non
> CAP_NET_ADMIN processes being unable to set SO_PRIORITY socket
> option.
>
> This is desireable if we want to rely on socket/skb priorities
> being inferred from TOS/TCLASS bits.
>
> Signed-off-by: Maciej Żenczykowski <maze@google.com>
The socket layer is not the place to enforce this.
The ingress into your MPLS/RSVP cloud that actually provides the
quality of service is where you control and mangle the TOS as needed.
Sorry, I'm not applying anything like this. Any machine on your
network can spit out any TOS it wants, and if you have control over
the apps change it's behavior there. If you don't have control over
the apps then filter and mangle.
^ permalink raw reply
* Re: BUG: All network processes hang (brcmsmac/wpa_supplicant)
From: Nico Schottelius @ 2011-10-22 1:59 UTC (permalink / raw)
To: Arend van Spriel
Cc: Nico Schottelius, Eric Dumazet, LKML,
linux-wireless@vger.kernel.org, netdev
In-Reply-To: <4E9FBFA7.4040502@broadcom.com>
[-- Attachment #1: Type: text/plain, Size: 752 bytes --]
Hey Arend,
it seems that your patch really solves this problem.
I've got a new one now, though :-)
After several suspend/resume cycles, my card often reconnects to my AP
that is only several meters (2) away. If the connection is established,
I've a very laggy connection to the AP:
64 bytes from 192.168.42.1: icmp_req=1154 ttl=64 time=10839 ms
64 bytes from 192.168.42.1: icmp_req=1155 ttl=64 time=9841 ms
...
64 bytes from 192.168.42.1: icmp_req=1164 ttl=64 time=2814 ms
64 bytes from 192.168.42.1: icmp_req=1165 ttl=64 time=16785 ms
64 bytes from 192.168.42.1: icmp_req=1166 ttl=64 time=20767 ms
Attached are the usual suspect outputs.
This time I'm on 2.432 Ghz.
Cheers,
Nico
--
PGP key: 7ED9 F7D3 6B10 81D7 0EC5 5C09 D7DC C8E4 3187 7DF0
[-- Attachment #2: 3.1.0-rc6-g443452b.config.gz --]
[-- Type: application/octet-stream, Size: 32197 bytes --]
[-- Attachment #3: 3.1.0-rc6-g443452b.dmesg --]
[-- Type: text/plain, Size: 288936 bytes --]
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 3.1.0-rc6-g443452b (nico@brief) (gcc version 4.6.1 20110819 (prerelease) (GCC) ) #5 SMP PREEMPT Wed Oct 19 23:39:31 CEST 2011
[ 0.000000] Command line: root=/dev/mapper/root cryptdevice=/dev/sda5:root ro initrd=../initramfs-nico.img BOOT_IMAGE=../vmlinuz-nico
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: 0000000000000000 - 000000000008f000 (usable)
[ 0.000000] BIOS-e820: 000000000008f000 - 0000000000090000 (reserved)
[ 0.000000] BIOS-e820: 0000000000090000 - 000000000009fc00 (usable)
[ 0.000000] BIOS-e820: 000000000009fc00 - 0000000000100000 (reserved)
[ 0.000000] BIOS-e820: 0000000000100000 - 0000000020000000 (usable)
[ 0.000000] BIOS-e820: 0000000020000000 - 0000000020200000 (reserved)
[ 0.000000] BIOS-e820: 0000000020200000 - 0000000040000000 (usable)
[ 0.000000] BIOS-e820: 0000000040000000 - 0000000040200000 (reserved)
[ 0.000000] BIOS-e820: 0000000040200000 - 000000008ad36000 (usable)
[ 0.000000] BIOS-e820: 000000008ad36000 - 000000008ad5f000 (ACPI NVS)
[ 0.000000] BIOS-e820: 000000008ad5f000 - 000000008afa2000 (ACPI data)
[ 0.000000] BIOS-e820: 000000008afa2000 - 000000008afff000 (reserved)
[ 0.000000] BIOS-e820: 000000008afff000 - 000000008b000000 (ACPI data)
[ 0.000000] BIOS-e820: 000000008b000000 - 000000008fa00000 (reserved)
[ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
[ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
[ 0.000000] BIOS-e820: 00000000fed00000 - 00000000fed04000 (reserved)
[ 0.000000] BIOS-e820: 00000000fed10000 - 00000000fed14000 (reserved)
[ 0.000000] BIOS-e820: 00000000fed18000 - 00000000fed1a000 (reserved)
[ 0.000000] BIOS-e820: 00000000fed1c000 - 00000000fed20000 (reserved)
[ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
[ 0.000000] BIOS-e820: 00000000ff800000 - 0000000100000000 (reserved)
[ 0.000000] BIOS-e820: 0000000100000000 - 000000016fe00000 (usable)
[ 0.000000] NX (Execute Disable) protection: active
[ 0.000000] DMI 2.4 present.
[ 0.000000] DMI: Apple Inc. MacBookAir4,2/Mac-742912EFDBEE19B3, BIOS MBA41.88Z.0077.B08.1109011050 09/01/2011
[ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)
[ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable)
[ 0.000000] No AGP bridge found
[ 0.000000] last_pfn = 0x16fe00 max_arch_pfn = 0x400000000
[ 0.000000] MTRR default type: write-back
[ 0.000000] MTRR fixed ranges enabled:
[ 0.000000] 00000-9FFFF write-back
[ 0.000000] A0000-BFFFF uncachable
[ 0.000000] C0000-DFFFF write-protect
[ 0.000000] E0000-FFFFF uncachable
[ 0.000000] MTRR variable ranges enabled:
[ 0.000000] 0 base 0C0000000 mask FC0000000 uncachable
[ 0.000000] 1 base 0A0000000 mask FE0000000 uncachable
[ 0.000000] 2 base 090000000 mask FF0000000 uncachable
[ 0.000000] 3 base 08C000000 mask FFC000000 uncachable
[ 0.000000] 4 base 08B800000 mask FFF800000 uncachable
[ 0.000000] 5 disabled
[ 0.000000] 6 disabled
[ 0.000000] 7 disabled
[ 0.000000] 8 disabled
[ 0.000000] 9 disabled
[ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[ 0.000000] last_pfn = 0x8ad36 max_arch_pfn = 0x400000000
[ 0.000000] initial memory mapped : 0 - 20000000
[ 0.000000] Base memory trampoline at [ffff88000009a000] 9a000 size 20480
[ 0.000000] init_memory_mapping: 0000000000000000-000000008ad36000
[ 0.000000] 0000000000 - 008ac00000 page 2M
[ 0.000000] 008ac00000 - 008ad36000 page 4k
[ 0.000000] kernel direct mapping tables up to 8ad36000 @ 8ad31000-8ad36000
[ 0.000000] init_memory_mapping: 0000000100000000-000000016fe00000
[ 0.000000] 0100000000 - 016fe00000 page 2M
[ 0.000000] kernel direct mapping tables up to 16fe00000 @ 16fdf9000-16fe00000
[ 0.000000] RAMDISK: 1fd2a000 - 1ffff000
[ 0.000000] ACPI: RSDP 00000000000fe020 00024 (v02 APPLE )
[ 0.000000] ACPI: XSDT 000000008ad8e1c0 000AC (v01 APPLE Apple00 00000060 01000013)
[ 0.000000] ACPI: FACP 000000008ad8c000 000F4 (v04 APPLE Apple00 00000060 Loki 0000005F)
[ 0.000000] ACPI: DSDT 000000008ad81000 05050 (v01 APPLE MacBookA 00040001 INTL 20100915)
[ 0.000000] ACPI: FACS 000000008ad40000 00040
[ 0.000000] ACPI: HPET 000000008ad8b000 00038 (v01 APPLE Apple00 00000001 Loki 0000005F)
[ 0.000000] ACPI: APIC 000000008ad8a000 000BC (v02 APPLE Apple00 00000001 Loki 0000005F)
[ 0.000000] ACPI: SBST 000000008ad88000 00030 (v01 APPLE Apple00 00000001 Loki 0000005F)
[ 0.000000] ACPI: ECDT 000000008ad87000 00053 (v01 APPLE Apple00 00000001 Loki 0000005F)
[ 0.000000] ACPI: SSDT 000000008ad7d000 00024 (v01 APPLE SmcDppt 00001000 INTL 20100915)
[ 0.000000] ACPI: SSDT 000000008ad7b000 006CA (v01 APPLE UsbSD 00001000 INTL 20100915)
[ 0.000000] ACPI: SSDT 000000008ad77000 00159 (v02 APPLE IGHda 00001000 INTL 20100915)
[ 0.000000] ACPI: SSDT 000000008ad73000 015EB (v02 APPLE SsdtIGPU 00001000 INTL 20100915)
[ 0.000000] ACPI: SSDT 000000008ad72000 00506 (v01 PmRef Cpu0Ist 00003000 INTL 20100915)
[ 0.000000] ACPI: SSDT 000000008ad71000 009B1 (v01 PmRef CpuPm 00003000 INTL 20100915)
[ 0.000000] ACPI: SSDT 000000008ad70000 00315 (v01 PmRef Cpu0Tst 00003000 INTL 20100915)
[ 0.000000] ACPI: SSDT 000000008ad6f000 0037A (v01 PmRef ApTst 00003000 INTL 20100915)
[ 0.000000] ACPI: MCFG 000000008ad89000 0003C (v01 APPLE Apple00 00000001 Loki 0000005F)
[ 0.000000] ACPI: SSDT 000000008ad80000 000FA (v01 SataRe SataPri 00001000 INTL 20100915)
[ 0.000000] ACPI: SSDT 000000008ad7f000 000D0 (v01 SataRe SataSec 00001000 INTL 20100915)
[ 0.000000] ACPI: SSDT 000000008ad7e000 00032 (v01 Apple SsdtS3 00001000 INTL 20100915)
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] No NUMA configuration found
[ 0.000000] Faking a node at 0000000000000000-000000016fe00000
[ 0.000000] Initmem setup node 0 0000000000000000-000000016fe00000
[ 0.000000] NODE_DATA [000000016fdfb000 - 000000016fdfffff]
[ 0.000000] [ffffea0000000000-ffffea0005bfffff] PMD -> [ffff88016b400000-ffff88016f3fffff] on node 0
[ 0.000000] Zone PFN ranges:
[ 0.000000] DMA 0x00000010 -> 0x00001000
[ 0.000000] DMA32 0x00001000 -> 0x00100000
[ 0.000000] Normal 0x00100000 -> 0x0016fe00
[ 0.000000] Movable zone start PFN for each node
[ 0.000000] early_node_map[6] active PFN ranges
[ 0.000000] 0: 0x00000010 -> 0x0000008f
[ 0.000000] 0: 0x00000090 -> 0x0000009f
[ 0.000000] 0: 0x00000100 -> 0x00020000
[ 0.000000] 0: 0x00020200 -> 0x00040000
[ 0.000000] 0: 0x00040200 -> 0x0008ad36
[ 0.000000] 0: 0x00100000 -> 0x0016fe00
[ 0.000000] On node 0 totalpages: 1025732
[ 0.000000] DMA zone: 64 pages used for memmap
[ 0.000000] DMA zone: 5 pages reserved
[ 0.000000] DMA zone: 3913 pages, LIFO batch:0
[ 0.000000] DMA32 zone: 16320 pages used for memmap
[ 0.000000] DMA32 zone: 547190 pages, LIFO batch:31
[ 0.000000] Normal zone: 7160 pages used for memmap
[ 0.000000] Normal zone: 451080 pages, LIFO batch:31
[ 0.000000] ACPI: PM-Timer IO Port: 0x408
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x01] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x03] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0xff] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0xff] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0xff] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0xff] disabled)
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1])
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1])
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x04] high edge lint[0x1])
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x05] high edge lint[0x1])
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x06] high edge lint[0x1])
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x07] high edge lint[0x1])
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x08] high edge lint[0x1])
[ 0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
[ 0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[ 0.000000] ACPI: IRQ0 used by override.
[ 0.000000] ACPI: IRQ2 used by override.
[ 0.000000] ACPI: IRQ9 used by override.
[ 0.000000] Using ACPI (MADT) for SMP configuration information
[ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[ 0.000000] SMP: Allowing 8 CPUs, 4 hotplug CPUs
[ 0.000000] nr_irqs_gsi: 40
[ 0.000000] PM: Registered nosave memory: 000000000008f000 - 0000000000090000
[ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
[ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 0000000000100000
[ 0.000000] PM: Registered nosave memory: 0000000020000000 - 0000000020200000
[ 0.000000] PM: Registered nosave memory: 0000000040000000 - 0000000040200000
[ 0.000000] PM: Registered nosave memory: 000000008ad36000 - 000000008ad5f000
[ 0.000000] PM: Registered nosave memory: 000000008ad5f000 - 000000008afa2000
[ 0.000000] PM: Registered nosave memory: 000000008afa2000 - 000000008afff000
[ 0.000000] PM: Registered nosave memory: 000000008afff000 - 000000008b000000
[ 0.000000] PM: Registered nosave memory: 000000008b000000 - 000000008fa00000
[ 0.000000] PM: Registered nosave memory: 000000008fa00000 - 00000000e0000000
[ 0.000000] PM: Registered nosave memory: 00000000e0000000 - 00000000f0000000
[ 0.000000] PM: Registered nosave memory: 00000000f0000000 - 00000000fec00000
[ 0.000000] PM: Registered nosave memory: 00000000fec00000 - 00000000fec01000
[ 0.000000] PM: Registered nosave memory: 00000000fec01000 - 00000000fed00000
[ 0.000000] PM: Registered nosave memory: 00000000fed00000 - 00000000fed04000
[ 0.000000] PM: Registered nosave memory: 00000000fed04000 - 00000000fed10000
[ 0.000000] PM: Registered nosave memory: 00000000fed10000 - 00000000fed14000
[ 0.000000] PM: Registered nosave memory: 00000000fed14000 - 00000000fed18000
[ 0.000000] PM: Registered nosave memory: 00000000fed18000 - 00000000fed1a000
[ 0.000000] PM: Registered nosave memory: 00000000fed1a000 - 00000000fed1c000
[ 0.000000] PM: Registered nosave memory: 00000000fed1c000 - 00000000fed20000
[ 0.000000] PM: Registered nosave memory: 00000000fed20000 - 00000000fee00000
[ 0.000000] PM: Registered nosave memory: 00000000fee00000 - 00000000fee01000
[ 0.000000] PM: Registered nosave memory: 00000000fee01000 - 00000000ff800000
[ 0.000000] PM: Registered nosave memory: 00000000ff800000 - 0000000100000000
[ 0.000000] Allocating PCI resources starting at 8fa00000 (gap: 8fa00000:50600000)
[ 0.000000] Booting paravirtualized kernel on bare hardware
[ 0.000000] setup_percpu: NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:8 nr_node_ids:1
[ 0.000000] PERCPU: Embedded 28 pages/cpu @ffff88016fa00000 s82048 r8192 d24448 u262144
[ 0.000000] pcpu-alloc: s82048 r8192 d24448 u262144 alloc=1*2097152
[ 0.000000] pcpu-alloc: [0] 0 1 2 3 4 5 6 7
[ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 1002183
[ 0.000000] Policy zone: Normal
[ 0.000000] Kernel command line: root=/dev/mapper/root cryptdevice=/dev/sda5:root ro initrd=../initramfs-nico.img BOOT_IMAGE=../vmlinuz-nico
[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.000000] xsave/xrstor: enabled xstate_bv 0x7, cntxt size 0x340
[ 0.000000] Checking aperture...
[ 0.000000] No AGP bridge found
[ 0.000000] Calgary: detecting Calgary via BIOS EBDA area
[ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing!
[ 0.000000] Memory: 3946532k/6027264k available (4294k kernel code, 1924336k absent, 156396k reserved, 5506k data, 724k init)
[ 0.000000] SLUB: Genslabs=15, HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
[ 0.000000] Preemptible hierarchical RCU implementation.
[ 0.000000] Verbose stalled-CPUs detection is disabled.
[ 0.000000] NR_IRQS:2304
[ 0.000000] Extended CMOS year: 2000
[ 0.000000] Console: colour VGA+ 80x25
[ 0.000000] console [tty0] enabled
[ 0.000000] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
[ 0.000000] ... MAX_LOCKDEP_SUBCLASSES: 8
[ 0.000000] ... MAX_LOCK_DEPTH: 48
[ 0.000000] ... MAX_LOCKDEP_KEYS: 8191
[ 0.000000] ... CLASSHASH_SIZE: 4096
[ 0.000000] ... MAX_LOCKDEP_ENTRIES: 16384
[ 0.000000] ... MAX_LOCKDEP_CHAINS: 32768
[ 0.000000] ... CHAINHASH_SIZE: 16384
[ 0.000000] memory used by lock dependency info: 5855 kB
[ 0.000000] per task-struct memory footprint: 1920 bytes
[ 0.000000] allocated 33554432 bytes of page_cgroup
[ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[ 0.000000] hpet clockevent registered
[ 0.000000] Fast TSC calibration using PIT
[ 0.003333] Detected 1699.751 MHz processor.
[ 0.000003] Calibrating delay loop (skipped), value calculated using timer frequency.. 3400.14 BogoMIPS (lpj=5665836)
[ 0.000141] pid_max: default: 32768 minimum: 301
[ 0.000396] Security Framework initialized
[ 0.000464] AppArmor: AppArmor disabled by boot time parameter
[ 0.001147] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes)
[ 0.002517] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)
[ 0.003100] Mount-cache hash table entries: 256
[ 0.004639] Initializing cgroup subsys cpuacct
[ 0.004743] Initializing cgroup subsys memory
[ 0.004863] Initializing cgroup subsys devices
[ 0.004930] Initializing cgroup subsys freezer
[ 0.004998] Initializing cgroup subsys net_cls
[ 0.005065] Initializing cgroup subsys blkio
[ 0.005243] CPU: Physical Processor ID: 0
[ 0.005308] CPU: Processor Core ID: 0
[ 0.005376] mce: CPU supports 7 MCE banks
[ 0.005455] CPU0: Thermal monitoring enabled (TM1)
[ 0.005537] using mwait in idle threads.
[ 0.007470] ACPI: Core revision 20110623
[ 0.030337] ftrace: allocating 16325 entries in 65 pages
[ 0.039487] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[ 0.072539] CPU0: Intel(R) Core(TM) i5-2557M CPU @ 1.70GHz stepping 07
[ 0.177397] Performance Events: PEBS fmt1+, SandyBridge events, Intel PMU driver.
[ 0.177612] ... version: 3
[ 0.177676] ... bit width: 48
[ 0.177740] ... generic registers: 4
[ 0.177805] ... value mask: 0000ffffffffffff
[ 0.177872] ... max period: 000000007fffffff
[ 0.177939] ... fixed-purpose events: 3
[ 0.178002] ... event mask: 000000070000000f
[ 0.198014] NMI watchdog enabled, takes one hw-pmu counter.
[ 0.217443] lockdep: fixing up alternatives.
[ 0.224200] Booting Node 0, Processors #1
[ 0.224296] smpboot cpu 1: start_ip = 9a000
[ 0.337501] NMI watchdog enabled, takes one hw-pmu counter.
[ 0.357326] lockdep: fixing up alternatives.
[ 0.357438] #2
[ 0.357484] smpboot cpu 2: start_ip = 9a000
[ 0.470705] NMI watchdog enabled, takes one hw-pmu counter.
[ 0.490575] lockdep: fixing up alternatives.
[ 0.490688] #3
[ 0.490735] smpboot cpu 3: start_ip = 9a000
[ 0.603917] NMI watchdog enabled, takes one hw-pmu counter.
[ 0.610491] Brought up 4 CPUs
[ 0.610570] Total of 4 processors activated (13604.09 BogoMIPS).
[ 0.614859] devtmpfs: initialized
[ 0.616467] PM: Registering ACPI NVS region at 8ad36000 (167936 bytes)
[ 0.618067] print_constraints: dummy:
[ 0.618421] NET: Registered protocol family 16
[ 0.618789] ACPI: bus type pci registered
[ 0.619111] PCI: MMCONFIG for domain 0000 [bus 00-97] at [mem 0xe0000000-0xe97fffff] (base 0xe0000000)
[ 0.619203] PCI: MMCONFIG at [mem 0xe0000000-0xe97fffff] reserved in E820
[ 0.682256] PCI: Using configuration type 1 for base access
[ 0.683581] bio: create slab <bio-0> at 0
[ 0.683862] ACPI: Added _OSI(Module Device)
[ 0.683931] ACPI: Added _OSI(Processor Device)
[ 0.683997] ACPI: Added _OSI(3.0 _SCP Extensions)
[ 0.684063] ACPI: Added _OSI(Processor Aggregator Device)
[ 0.690350] ACPI: EC: EC description table is found, configuring boot EC
[ 0.705403] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored
[ 0.706334] ACPI: SSDT 000000008ad3b190 00781 (v01 PmRef Cpu0Cst 00003001 INTL 20100915)
[ 0.708103] ACPI: Dynamic OEM Table Load:
[ 0.708252] ACPI: SSDT (null) 00781 (v01 PmRef Cpu0Cst 00003001 INTL 20100915)
[ 0.717594] ACPI: SSDT 000000008ad3c710 003A4 (v01 PmRef ApIst 00003000 INTL 20100915)
[ 0.719452] ACPI: Dynamic OEM Table Load:
[ 0.719600] ACPI: SSDT (null) 003A4 (v01 PmRef ApIst 00003000 INTL 20100915)
[ 0.727269] ACPI: SSDT 000000008ad3ad90 00119 (v01 PmRef ApCst 00003000 INTL 20100915)
[ 0.729036] ACPI: Dynamic OEM Table Load:
[ 0.729184] ACPI: SSDT (null) 00119 (v01 PmRef ApCst 00003000 INTL 20100915)
[ 0.738119] ACPI: Interpreter enabled
[ 0.738185] ACPI: (supports S0 S3 S4 S5)
[ 0.738464] ACPI: Using IOAPIC for interrupt routing
[ 0.764739] ACPI: EC: GPE = 0x17, I/O: command/status = 0x66, data = 0x62
[ 0.765295] ACPI: No dock devices found.
[ 0.765361] HEST: Table not found.
[ 0.765424] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[ 0.766233] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[ 0.767416] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7]
[ 0.767489] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff]
[ 0.767560] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff]
[ 0.767646] pci_root PNP0A08:00: host bridge window [mem 0x8fa00000-0xfeafffff]
[ 0.767731] pci_root PNP0A08:00: host bridge window [mem 0xfed40000-0xfed44fff]
[ 0.767855] pci 0000:00:00.0: [8086:0104] type 0 class 0x000600
[ 0.767955] pci 0000:00:01.0: [8086:0101] type 1 class 0x000604
[ 0.768013] pci 0000:00:01.0: PME# supported from D0 D3hot D3cold
[ 0.768018] pci 0000:00:01.0: PME# disabled
[ 0.768060] pci 0000:00:02.0: [8086:0116] type 0 class 0x000300
[ 0.768083] pci 0000:00:02.0: reg 10: [mem 0xa0000000-0xa03fffff 64bit]
[ 0.768096] pci 0000:00:02.0: reg 18: [mem 0x90000000-0x9fffffff 64bit pref]
[ 0.768106] pci 0000:00:02.0: reg 20: [io 0x2000-0x203f]
[ 0.768221] pci 0000:00:16.0: [8086:1c3a] type 0 class 0x000780
[ 0.768267] pci 0000:00:16.0: reg 10: [mem 0xa0607100-0xa060710f 64bit]
[ 0.768391] pci 0000:00:16.0: PME# supported from D0 D3hot D3cold
[ 0.768398] pci 0000:00:16.0: PME# disabled
[ 0.768456] pci 0000:00:1a.0: [8086:1c2c] type 0 class 0x000c03
[ 0.768550] pci 0000:00:1a.0: reg 20: [io 0x2140-0x215f]
[ 0.768664] pci 0000:00:1a.7: [8086:1c2d] type 0 class 0x000c03
[ 0.768704] pci 0000:00:1a.7: reg 10: [mem 0xa0606c00-0xa0606fff]
[ 0.768851] pci 0000:00:1a.7: PME# supported from D0 D3hot D3cold
[ 0.768858] pci 0000:00:1a.7: PME# disabled
[ 0.768906] pci 0000:00:1b.0: [8086:1c20] type 0 class 0x000403
[ 0.768939] pci 0000:00:1b.0: reg 10: [mem 0xa0600000-0xa0603fff 64bit]
[ 0.769068] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[ 0.769074] pci 0000:00:1b.0: PME# disabled
[ 0.769118] pci 0000:00:1c.0: [8086:1c10] type 1 class 0x000604
[ 0.769257] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[ 0.769264] pci 0000:00:1c.0: PME# disabled
[ 0.769315] pci 0000:00:1c.1: [8086:1c12] type 1 class 0x000604
[ 0.769454] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold
[ 0.769461] pci 0000:00:1c.1: PME# disabled
[ 0.769520] pci 0000:00:1d.0: [8086:1c27] type 0 class 0x000c03
[ 0.769612] pci 0000:00:1d.0: reg 20: [io 0x20e0-0x20ff]
[ 0.769730] pci 0000:00:1d.7: [8086:1c26] type 0 class 0x000c03
[ 0.769770] pci 0000:00:1d.7: reg 10: [mem 0xa0606800-0xa0606bff]
[ 0.769916] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold
[ 0.769923] pci 0000:00:1d.7: PME# disabled
[ 0.769965] pci 0000:00:1f.0: [8086:1c4d] type 0 class 0x000601
[ 0.770168] pci 0000:00:1f.2: [8086:1c01] type 0 class 0x000101
[ 0.770205] pci 0000:00:1f.2: reg 10: [io 0x2168-0x216f]
[ 0.770223] pci 0000:00:1f.2: reg 14: [io 0x217c-0x217f]
[ 0.770241] pci 0000:00:1f.2: reg 18: [io 0x2160-0x2167]
[ 0.770258] pci 0000:00:1f.2: reg 1c: [io 0x2178-0x217b]
[ 0.770276] pci 0000:00:1f.2: reg 20: [io 0x2060-0x206f]
[ 0.770294] pci 0000:00:1f.2: reg 24: [io 0xffe0-0xffef]
[ 0.770389] pci 0000:00:1f.3: [8086:1c22] type 0 class 0x000c05
[ 0.770424] pci 0000:00:1f.3: reg 10: [mem 0xa0607000-0xa06070ff 64bit]
[ 0.770473] pci 0000:00:1f.3: reg 20: [io 0xefa0-0xefbf]
[ 0.770597] pci 0000:03:00.0: [8086:151a] type 1 class 0x000604
[ 0.770672] pci 0000:03:00.0: supports D1 D2
[ 0.770675] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 0.770680] pci 0000:03:00.0: PME# disabled
[ 0.777099] pci 0000:00:01.0: PCI bridge to [bus 03-97]
[ 0.777170] pci 0000:00:01.0: bridge window [io 0x3000-0x3fff]
[ 0.777175] pci 0000:00:01.0: bridge window [mem 0xa0700000-0xa49fffff]
[ 0.777182] pci 0000:00:01.0: bridge window [mem 0xa4a00000-0xa89fffff 64bit pref]
[ 0.777255] pci 0000:04:00.0: [8086:151a] type 1 class 0x000604
[ 0.777334] pci 0000:04:00.0: supports D1 D2
[ 0.777336] pci 0000:04:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 0.777341] pci 0000:04:00.0: PME# disabled
[ 0.777391] pci 0000:04:03.0: [8086:151a] type 1 class 0x000604
[ 0.777469] pci 0000:04:03.0: supports D1 D2
[ 0.777471] pci 0000:04:03.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 0.777476] pci 0000:04:03.0: PME# disabled
[ 0.777516] pci 0000:04:04.0: [8086:151a] type 1 class 0x000604
[ 0.777594] pci 0000:04:04.0: supports D1 D2
[ 0.777596] pci 0000:04:04.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 0.777601] pci 0000:04:04.0: PME# disabled
[ 0.777668] pci 0000:03:00.0: PCI bridge to [bus 04-67]
[ 0.777745] pci 0000:03:00.0: bridge window [mem 0xa0700000-0xa09fffff]
[ 0.777834] pci 0000:05:00.0: [8086:151a] type 0 class 0x000880
[ 0.777854] pci 0000:05:00.0: reg 10: [mem 0xa0700000-0xa073ffff]
[ 0.777869] pci 0000:05:00.0: reg 14: [mem 0xa0740000-0xa0740fff]
[ 0.777976] pci 0000:05:00.0: supports D1 D2
[ 0.777978] pci 0000:05:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 0.777984] pci 0000:05:00.0: PME# disabled
[ 0.778046] pci 0000:04:00.0: PCI bridge to [bus 05-05]
[ 0.778122] pci 0000:04:00.0: bridge window [mem 0xa0700000-0xa07fffff]
[ 0.778187] pci 0000:04:03.0: PCI bridge to [bus 06-36]
[ 0.778263] pci 0000:04:03.0: bridge window [mem 0xa0800000-0xa08fffff]
[ 0.778328] pci 0000:04:04.0: PCI bridge to [bus 37-67]
[ 0.778404] pci 0000:04:04.0: bridge window [mem 0xa0900000-0xa09fffff]
[ 0.778532] pci 0000:00:1c.0: PCI bridge to [bus 01-01]
[ 0.778609] pci 0000:00:1c.0: bridge window [mem 0xa0500000-0xa05fffff]
[ 0.778813] pci 0000:02:00.0: [14e4:4353] type 0 class 0x000280
[ 0.778881] pci 0000:02:00.0: reg 10: [mem 0xa0400000-0xa0403fff 64bit]
[ 0.779164] pci 0000:02:00.0: supports D1 D2
[ 0.779166] pci 0000:02:00.0: PME# supported from D0 D3hot D3cold
[ 0.779178] pci 0000:02:00.0: PME# disabled
[ 0.783792] pci 0000:00:1c.1: PCI bridge to [bus 02-02]
[ 0.783870] pci 0000:00:1c.1: bridge window [mem 0xa0400000-0xa04fffff]
[ 0.783939] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
[ 0.784237] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P2._PRT]
[ 0.784491] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP02._PRT]
[ 0.784725] pci0000:00: Requesting ACPI _OSC control (0x1d)
[ 0.785065] pci0000:00: ACPI _OSC control (0x19) granted
[ 0.793625] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 5 6 7 10 12 14 15) *11
[ 0.794348] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 *11 12 14 15)
[ 0.794994] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 7 10 12 14 15) *11
[ 0.795694] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 *11 12 14 15)
[ 0.796337] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled.
[ 0.797088] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 11 12 14 15) *10
[ 0.797789] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 10 12 14 15) *11
[ 0.798488] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 7 *11 12 14 15)
[ 0.799434] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[ 0.799548] vgaarb: loaded
[ 0.799608] vgaarb: bridge control possible 0000:00:02.0
[ 0.799840] PCI: Using ACPI for IRQ routing
[ 0.805154] PCI: pci_cache_line_size set to 64 bytes
[ 0.805344] reserve RAM buffer: 000000000008f000 - 000000000008ffff
[ 0.805348] reserve RAM buffer: 000000000009fc00 - 000000000009ffff
[ 0.805351] reserve RAM buffer: 000000008ad36000 - 000000008bffffff
[ 0.805355] reserve RAM buffer: 000000016fe00000 - 000000016fffffff
[ 0.805758] NetLabel: Initializing
[ 0.805822] NetLabel: domain hash size = 128
[ 0.805887] NetLabel: protocols = UNLABELED CIPSOv4
[ 0.806000] NetLabel: unlabeled traffic allowed by default
[ 0.806092] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0
[ 0.806535] hpet0: 8 comparators, 64-bit 14.318180 MHz counter
[ 0.808647] Switching to clocksource hpet
[ 0.810387] Switched to NOHz mode on CPU #0
[ 0.810450] Switched to NOHz mode on CPU #3
[ 0.810477] Switched to NOHz mode on CPU #1
[ 0.810486] Switched to NOHz mode on CPU #2
[ 0.831384] pnp: PnP ACPI init
[ 0.831490] ACPI: bus type pnp registered
[ 0.832041] pnp 00:00: [bus 00-ff]
[ 0.832044] pnp 00:00: [io 0x0000-0x0cf7 window]
[ 0.832047] pnp 00:00: [io 0x0cf8-0x0cff]
[ 0.832050] pnp 00:00: [io 0x0d00-0xffff window]
[ 0.832053] pnp 00:00: [mem 0x000a0000-0x000bffff window]
[ 0.832055] pnp 00:00: [mem 0x000c0000-0x000c3fff window]
[ 0.832058] pnp 00:00: [mem 0x000c4000-0x000c7fff window]
[ 0.832060] pnp 00:00: [mem 0x000c8000-0x000cbfff window]
[ 0.832063] pnp 00:00: [mem 0x000cc000-0x000cffff window]
[ 0.832065] pnp 00:00: [mem 0x000d0000-0x000d3fff window]
[ 0.832068] pnp 00:00: [mem 0x000d4000-0x000d7fff window]
[ 0.832070] pnp 00:00: [mem 0x000d8000-0x000dbfff window]
[ 0.832073] pnp 00:00: [mem 0x000dc000-0x000dffff window]
[ 0.832075] pnp 00:00: [mem 0x000e0000-0x000e3fff window]
[ 0.832078] pnp 00:00: [mem 0x000e4000-0x000e7fff window]
[ 0.832080] pnp 00:00: [mem 0x000e8000-0x000ebfff window]
[ 0.832083] pnp 00:00: [mem 0x000ec000-0x000effff window]
[ 0.832085] pnp 00:00: [mem 0x000f0000-0x000fffff window]
[ 0.832088] pnp 00:00: [mem 0x8fa00000-0xfeafffff window]
[ 0.832090] pnp 00:00: [mem 0xfed40000-0xfed44fff window]
[ 0.832262] pnp 00:00: Plug and Play ACPI device, IDs PNP0a08 PNP0a03 (active)
[ 0.832467] pnp 00:01: [io 0x0000-0x001f]
[ 0.832470] pnp 00:01: [io 0x0081-0x0091]
[ 0.832472] pnp 00:01: [io 0x0093-0x009f]
[ 0.832474] pnp 00:01: [io 0x00c0-0x00df]
[ 0.832477] pnp 00:01: [dma 4]
[ 0.832555] pnp 00:01: Plug and Play ACPI device, IDs PNP0200 (active)
[ 0.832571] pnp 00:02: [mem 0xff000000-0xffffffff]
[ 0.832644] pnp 00:02: Plug and Play ACPI device, IDs INT0800 (active)
[ 0.832758] pnp 00:03: [irq 0 disabled]
[ 0.832772] pnp 00:03: [irq 8]
[ 0.832775] pnp 00:03: [mem 0xfed00000-0xfed003ff]
[ 0.832915] system 00:03: [mem 0xfed00000-0xfed003ff] has been reserved
[ 0.832991] system 00:03: Plug and Play ACPI device, IDs PNP0103 PNP0c01 (active)
[ 0.833012] pnp 00:04: [io 0x00f0]
[ 0.833021] pnp 00:04: [irq 13]
[ 0.833097] pnp 00:04: Plug and Play ACPI device, IDs PNP0c04 (active)
[ 0.833114] pnp 00:05: [io 0x002e-0x002f]
[ 0.833117] pnp 00:05: [io 0x004e-0x004f]
[ 0.833119] pnp 00:05: [io 0x0061]
[ 0.833121] pnp 00:05: [io 0x0063]
[ 0.833123] pnp 00:05: [io 0x0065]
[ 0.833125] pnp 00:05: [io 0x0067]
[ 0.833127] pnp 00:05: [io 0x0080]
[ 0.833129] pnp 00:05: [io 0x0092]
[ 0.833133] pnp 00:05: [io 0x00b2-0x00b3]
[ 0.833135] pnp 00:05: [io 0x1000-0x100f]
[ 0.833137] pnp 00:05: [io 0x0400-0x047f]
[ 0.833139] pnp 00:05: [io 0x0500-0x057f]
[ 0.833259] system 00:05: [io 0x1000-0x100f] has been reserved
[ 0.833330] system 00:05: [io 0x0400-0x047f] has been reserved
[ 0.833399] system 00:05: [io 0x0500-0x057f] has been reserved
[ 0.833470] system 00:05: Plug and Play ACPI device, IDs PNP0c02 (active)
[ 0.833485] pnp 00:06: [io 0x0070-0x0077]
[ 0.833563] pnp 00:06: Plug and Play ACPI device, IDs PNP0b00 (active)
[ 0.833585] pnp 00:07: [io 0x0300-0x031f]
[ 0.833593] pnp 00:07: [irq 6]
[ 0.833674] pnp 00:07: Plug and Play ACPI device, IDs APP0001 (active)
[ 0.833948] pnp 00:08: [mem 0xfed1c000-0xfed1ffff]
[ 0.833950] pnp 00:08: [mem 0xfed10000-0xfed17fff]
[ 0.833952] pnp 00:08: [mem 0xfed18000-0xfed18fff]
[ 0.833955] pnp 00:08: [mem 0xfed19000-0xfed19fff]
[ 0.833957] pnp 00:08: [mem 0xe0000000-0xefffffff]
[ 0.833959] pnp 00:08: [mem 0xfed20000-0xfed3ffff]
[ 0.833962] pnp 00:08: [mem 0xfed90000-0xfed93fff]
[ 0.833964] pnp 00:08: [mem 0xfed45000-0xfed8ffff]
[ 0.833966] pnp 00:08: [mem 0xff000000-0xffffffff]
[ 0.833968] pnp 00:08: [mem 0xfee00000-0xfeefffff]
[ 0.833971] pnp 00:08: [mem 0x00000000-0xffffffffffffffff disabled]
[ 0.834108] system 00:08: [mem 0xfed1c000-0xfed1ffff] has been reserved
[ 0.834181] system 00:08: [mem 0xfed10000-0xfed17fff] could not be reserved
[ 0.834254] system 00:08: [mem 0xfed18000-0xfed18fff] has been reserved
[ 0.834325] system 00:08: [mem 0xfed19000-0xfed19fff] has been reserved
[ 0.834396] system 00:08: [mem 0xe0000000-0xefffffff] has been reserved
[ 0.834468] system 00:08: [mem 0xfed20000-0xfed3ffff] has been reserved
[ 0.834539] system 00:08: [mem 0xfed90000-0xfed93fff] has been reserved
[ 0.834610] system 00:08: [mem 0xfed45000-0xfed8ffff] has been reserved
[ 0.834684] system 00:08: [mem 0xff000000-0xffffffff] could not be reserved
[ 0.834757] system 00:08: [mem 0xfee00000-0xfeefffff] could not be reserved
[ 0.834831] system 00:08: Plug and Play ACPI device, IDs PNP0c02 (active)
[ 0.842287] pnp 00:09: [mem 0x20000000-0x201fffff]
[ 0.842290] pnp 00:09: [mem 0x40000000-0x401fffff]
[ 0.842456] system 00:09: [mem 0x20000000-0x201fffff] has been reserved
[ 0.842529] system 00:09: [mem 0x40000000-0x401fffff] has been reserved
[ 0.842603] system 00:09: Plug and Play ACPI device, IDs PNP0c01 (active)
[ 0.842618] pnp: PnP ACPI: found 10 devices
[ 0.842682] ACPI: ACPI bus type pnp unregistered
[ 0.851982] PCI: max bus depth: 3 pci_try_num: 4
[ 0.852064] pci 0000:04:00.0: PCI bridge to [bus 05-05]
[ 0.852148] pci 0000:04:00.0: bridge window [mem 0xa0700000-0xa07fffff]
[ 0.852229] pci 0000:04:03.0: PCI bridge to [bus 06-36]
[ 0.852300] pci 0000:04:03.0: bridge window [mem 0xa0800000-0xa08fffff]
[ 0.852379] pci 0000:04:04.0: PCI bridge to [bus 37-67]
[ 0.852451] pci 0000:04:04.0: bridge window [mem 0xa0900000-0xa09fffff]
[ 0.852531] pci 0000:03:00.0: PCI bridge to [bus 04-67]
[ 0.852604] pci 0000:03:00.0: bridge window [mem 0xa0700000-0xa09fffff]
[ 0.852683] pci 0000:00:01.0: PCI bridge to [bus 03-97]
[ 0.852751] pci 0000:00:01.0: bridge window [io 0x3000-0x3fff]
[ 0.852823] pci 0000:00:01.0: bridge window [mem 0xa0700000-0xa49fffff]
[ 0.852897] pci 0000:00:01.0: bridge window [mem 0xa4a00000-0xa89fffff 64bit pref]
[ 0.852986] pci 0000:00:1c.0: PCI bridge to [bus 01-01]
[ 0.853061] pci 0000:00:1c.0: bridge window [mem 0xa0500000-0xa05fffff]
[ 0.853145] pci 0000:00:1c.1: PCI bridge to [bus 02-02]
[ 0.853219] pci 0000:00:1c.1: bridge window [mem 0xa0400000-0xa04fffff]
[ 0.853320] pci 0000:00:01.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 0.853393] pci 0000:00:01.0: setting latency timer to 64
[ 0.853402] pci 0000:03:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 0.853477] pci 0000:03:00.0: setting latency timer to 64
[ 0.853486] pci 0000:04:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 0.853559] pci 0000:04:00.0: setting latency timer to 64
[ 0.853568] pci 0000:04:03.0: enabling device (0000 -> 0002)
[ 0.853644] pci 0000:04:03.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19
[ 0.854219] pci 0000:04:03.0: setting latency timer to 64
[ 0.854227] pci 0000:04:04.0: enabling device (0000 -> 0002)
[ 0.854299] pci 0000:04:04.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 0.854373] pci 0000:04:04.0: setting latency timer to 64
[ 0.854382] pci 0000:00:1c.0: enabling device (0000 -> 0002)
[ 0.854453] pci 0000:00:1c.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 0.854531] pci 0000:00:1c.0: setting latency timer to 64
[ 0.854618] pci 0000:00:1c.1: power state changed by ACPI to D0
[ 0.854693] pci 0000:00:1c.1: power state changed by ACPI to D0
[ 0.854772] pci 0000:00:1c.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17
[ 0.854848] pci 0000:00:1c.1: setting latency timer to 64
[ 0.854854] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7]
[ 0.854857] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff]
[ 0.854859] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff]
[ 0.854862] pci_bus 0000:00: resource 7 [mem 0x8fa00000-0xfeafffff]
[ 0.854865] pci_bus 0000:00: resource 8 [mem 0xfed40000-0xfed44fff]
[ 0.854868] pci_bus 0000:03: resource 0 [io 0x3000-0x3fff]
[ 0.854870] pci_bus 0000:03: resource 1 [mem 0xa0700000-0xa49fffff]
[ 0.854873] pci_bus 0000:03: resource 2 [mem 0xa4a00000-0xa89fffff 64bit pref]
[ 0.854876] pci_bus 0000:04: resource 1 [mem 0xa0700000-0xa09fffff]
[ 0.854879] pci_bus 0000:05: resource 1 [mem 0xa0700000-0xa07fffff]
[ 0.854881] pci_bus 0000:06: resource 1 [mem 0xa0800000-0xa08fffff]
[ 0.854884] pci_bus 0000:37: resource 1 [mem 0xa0900000-0xa09fffff]
[ 0.854887] pci_bus 0000:01: resource 1 [mem 0xa0500000-0xa05fffff]
[ 0.854890] pci_bus 0000:02: resource 1 [mem 0xa0400000-0xa04fffff]
[ 0.855007] NET: Registered protocol family 2
[ 0.855407] IP route cache hash table entries: 131072 (order: 8, 1048576 bytes)
[ 0.857226] TCP established hash table entries: 524288 (order: 11, 8388608 bytes)
[ 0.859491] TCP bind hash table entries: 65536 (order: 10, 4194304 bytes)
[ 0.865392] TCP: Hash tables configured (established 524288 bind 65536)
[ 0.865509] TCP reno registered
[ 0.865623] UDP hash table entries: 2048 (order: 6, 327680 bytes)
[ 0.866105] UDP-Lite hash table entries: 2048 (order: 6, 327680 bytes)
[ 0.866801] NET: Registered protocol family 1
[ 0.866894] pci 0000:00:02.0: Boot video device
[ 0.867320] PCI: CLS 256 bytes, default 64
[ 0.867474] Unpacking initramfs...
[ 0.942816] Freeing initrd memory: 2900k freed
[ 0.943435] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[ 0.943511] Placing 64MB software IO TLB between ffff880086d31000 - ffff88008ad31000
[ 0.943597] software IO TLB at phys 0x86d31000 - 0x8ad31000
[ 0.944646] audit: initializing netlink socket (disabled)
[ 0.944752] type=2000 audit(1319149764.783:1): initialized
[ 0.950966] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[ 0.965951] VFS: Disk quotas dquot_6.5.2
[ 0.966235] Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[ 0.966795] msgmni has been set to 7713
[ 0.967369] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[ 0.967528] io scheduler noop registered
[ 0.967594] io scheduler deadline registered
[ 0.967738] io scheduler cfq registered (default)
[ 0.968089] pcieport 0000:00:01.0: setting latency timer to 64
[ 0.968159] pcieport 0000:00:01.0: irq 40 for MSI/MSI-X
[ 0.968466] pcieport 0000:03:00.0: setting latency timer to 64
[ 0.968519] pcieport 0000:03:00.0: irq 41 for MSI/MSI-X
[ 0.968652] pcieport 0000:04:00.0: setting latency timer to 64
[ 0.968725] pcieport 0000:04:00.0: irq 42 for MSI/MSI-X
[ 0.968859] pcieport 0000:04:03.0: setting latency timer to 64
[ 0.968913] pcieport 0000:04:03.0: irq 43 for MSI/MSI-X
[ 0.969048] pcieport 0000:04:04.0: setting latency timer to 64
[ 0.969102] pcieport 0000:04:04.0: irq 44 for MSI/MSI-X
[ 0.969687] intel_idle: MWAIT substates: 0x21120
[ 0.969689] intel_idle: v0.4 model 0x2A
[ 0.969691] intel_idle: lapic_timer_reliable_states 0xffffffff
[ 0.969848] ERST: Table is not found!
[ 0.969913] GHES: HEST is not enabled!
[ 0.970090] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[ 1.162451] Linux agpgart interface v0.103
[ 1.162763] i8042: PNP: No PS/2 controller found. Probing ports directly.
[ 1.163726] i8042: No controller found
[ 1.163977] mousedev: PS/2 mouse device common for all mice
[ 1.164223] rtc_cmos 00:06: RTC can wake from S4
[ 1.164602] rtc_cmos 00:06: rtc core: registered rtc_cmos as rtc0
[ 1.164718] rtc0: alarms up to one month, y3k, 242 bytes nvram, hpet irqs
[ 1.165065] cpuidle: using governor ladder
[ 1.165818] cpuidle: using governor menu
[ 1.166562] TCP cubic registered
[ 1.166627] NET: Registered protocol family 17
[ 1.166701] Registering the dns_resolver key type
[ 1.167149] PM: Hibernation image not present or could not be loaded.
[ 1.167157] registered taskstats version 1
[ 1.173667] rtc_cmos 00:06: setting system clock to 2011-10-20 22:29:25 UTC (1319149765)
[ 1.173889] Initializing network drop monitor service
[ 1.176260] Freeing unused kernel memory: 724k freed
[ 1.176459] Write protecting the kernel read-only data: 8192k
[ 1.184107] Freeing unused kernel memory: 1832k freed
[ 1.185593] Freeing unused kernel memory: 232k freed
[ 1.222859] udevd[86]: starting version 173
[ 1.314799] usbcore: registered new interface driver usbfs
[ 1.315143] usbcore: registered new interface driver hub
[ 1.318246] usbcore: registered new device driver usb
[ 1.320520] SCSI subsystem initialized
[ 1.321545] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 1.321786] ehci_hcd 0000:00:1a.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[ 1.321949] ehci_hcd 0000:00:1a.7: setting latency timer to 64
[ 1.321957] ehci_hcd 0000:00:1a.7: EHCI Host Controller
[ 1.322602] ehci_hcd 0000:00:1a.7: new USB bus registered, assigned bus number 1
[ 1.322800] ehci_hcd 0000:00:1a.7: debug port 2
[ 1.324140] libata version 3.00 loaded.
[ 1.326751] ehci_hcd 0000:00:1a.7: cache line size of 256 is not supported
[ 1.326802] ehci_hcd 0000:00:1a.7: irq 23, io mem 0xa0606c00
[ 1.338739] ehci_hcd 0000:00:1a.7: USB 2.0 started, EHCI 1.00
[ 1.342941] hub 1-0:1.0: USB hub found
[ 1.343046] hub 1-0:1.0: 6 ports detected
[ 1.343502] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[ 1.343624] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[ 1.343630] ehci_hcd 0000:00:1d.7: EHCI Host Controller
[ 1.343716] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 2
[ 1.343846] ehci_hcd 0000:00:1d.7: debug port 2
[ 1.347790] ehci_hcd 0000:00:1d.7: cache line size of 256 is not supported
[ 1.347823] ehci_hcd 0000:00:1d.7: irq 22, io mem 0xa0606800
[ 1.358602] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00
[ 1.359061] hub 2-0:1.0: USB hub found
[ 1.359135] hub 2-0:1.0: 8 ports detected
[ 1.359447] ata_piix 0000:00:1f.2: version 2.13
[ 1.359473] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[ 1.359562] ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ]
[ 1.415613] uhci_hcd: USB Universal Host Controller Interface driver
[ 1.511908] ata_piix 0000:00:1f.2: setting latency timer to 64
[ 1.512932] scsi0 : ata_piix
[ 1.513395] scsi1 : ata_piix
[ 1.513875] ata1: SATA max UDMA/133 cmd 0x2168 ctl 0x217c bmdma 0x2060 irq 19
[ 1.513952] ata2: SATA max UDMA/133 cmd 0x2160 ctl 0x2178 bmdma 0x2068 irq 19
[ 1.514156] uhci_hcd 0000:00:1a.0: PCI INT B -> GSI 21 (level, low) -> IRQ 21
[ 1.514250] uhci_hcd 0000:00:1a.0: setting latency timer to 64
[ 1.514256] uhci_hcd 0000:00:1a.0: UHCI Host Controller
[ 1.514379] uhci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 3
[ 1.514550] uhci_hcd 0000:00:1a.0: irq 21, io base 0x00002140
[ 1.514992] hub 3-0:1.0: USB hub found
[ 1.515096] hub 3-0:1.0: 2 ports detected
[ 1.515363] uhci_hcd 0000:00:1d.0: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[ 1.515443] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[ 1.515448] uhci_hcd 0000:00:1d.0: UHCI Host Controller
[ 1.515532] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 4
[ 1.515648] uhci_hcd 0000:00:1d.0: irq 19, io base 0x000020e0
[ 1.516029] hub 4-0:1.0: USB hub found
[ 1.516103] hub 4-0:1.0: 2 ports detected
[ 1.648457] usb 1-1: new high speed USB device number 2 using ehci_hcd
[ 1.773190] hub 1-1:1.0: USB hub found
[ 1.773439] hub 1-1:1.0: 3 ports detected
[ 1.878299] usb 1-2: new high speed USB device number 3 using ehci_hcd
[ 1.945005] Refined TSC clocksource calibration: 1700.012 MHz.
[ 1.945101] Switching to clocksource tsc
[ 2.124818] usb 2-1: new high speed USB device number 2 using ehci_hcd
[ 2.249358] hub 2-1:1.0: USB hub found
[ 2.249527] hub 2-1:1.0: 2 ports detected
[ 2.328188] usb 1-1.1: new full speed USB device number 4 using ehci_hcd
[ 2.427483] hub 1-1.1:1.0: USB hub found
[ 2.427671] hub 1-1.1:1.0: 3 ports detected
[ 2.508084] usb 1-1.2: new full speed USB device number 5 using ehci_hcd
[ 2.534592] ata2.00: failed to resume link (SControl 0)
[ 2.625877] usbcore: registered new interface driver usbhid
[ 2.625955] usbhid: USB HID core driver
[ 2.638231] input: Apple Inc. Apple Internal Keyboard / Trackpad as /devices/pci0000:00/0000:00:1a.7/usb1/1-1/1-1.2/1-1.2:1.0/input/input0
[ 2.639063] apple 0003:05AC:024D.0001: input,hidraw0: USB HID v1.11 Keyboard [Apple Inc. Apple Internal Keyboard / Trackpad] on usb-0000:00:1a.7-1.2/input0
[ 2.694742] usb 2-1.1: new high speed USB device number 3 using ehci_hcd
[ 2.736895] apple 0003:05AC:024D.0002: hidraw1: USB HID v1.11 Device [Apple Inc. Apple Internal Keyboard / Trackpad] on usb-0000:00:1a.7-1.2/input1
[ 2.854382] ata1.01: failed to resume link (SControl 0)
[ 2.874637] usb 2-1.2: new high speed USB device number 4 using ehci_hcd
[ 3.007689] ata1.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 3.007776] ata1.01: SATA link down (SStatus 0 SControl 0)
[ 3.014736] ata1.00: ATA-8: APPLE SSD SM256C, AXM09A1Q, max UDMA/133
[ 3.014812] ata1.00: 490234752 sectors, multi 16: LBA48 NCQ (depth 0/32)
[ 3.021235] ata1.00: configured for UDMA/133
[ 3.022079] scsi 0:0:0:0: Direct-Access ATA APPLE SSD SM256C AXM0 PQ: 0 ANSI: 5
[ 3.051176] usb 1-1.1.1: new full speed USB device number 6 using ehci_hcd
[ 3.139208] input: HID 05ac:820a as /devices/pci0000:00/0000:00:1a.7/usb1/1-1/1-1.1/1-1.1.1/1-1.1.1:1.0/input/input1
[ 3.139658] generic-usb 0003:05AC:820A.0003: input,hidraw2: USB HID v1.11 Keyboard [HID 05ac:820a] on usb-0000:00:1a.7-1.1.1/input0
[ 3.204442] usb 1-1.1.2: new full speed USB device number 7 using ehci_hcd
[ 3.292459] input: HID 05ac:820b as /devices/pci0000:00/0000:00:1a.7/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0/input/input2
[ 3.293283] generic-usb 0003:05AC:820B.0004: input,hidraw3: USB HID v1.11 Mouse [HID 05ac:820b] on usb-0000:00:1a.7-1.1.2/input0
[ 3.370984] usb 1-1.1.3: new full speed USB device number 8 using ehci_hcd
[ 3.557318] ata2.01: failed to resume link (SControl 0)
[ 3.569018] ata2.00: SATA link down (SStatus 0 SControl 0)
[ 3.569101] ata2.01: SATA link down (SStatus 0 SControl 0)
[ 3.579760] sd 0:0:0:0: [sda] 490234752 512-byte logical blocks: (251 GB/233 GiB)
[ 3.580066] sd 0:0:0:0: [sda] Write Protect is off
[ 3.580136] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 3.580192] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 3.586115] sda: sda1 sda2 sda3 sda4 sda5
[ 3.587353] sd 0:0:0:0: [sda] Attached SCSI disk
[ 3.798904] device-mapper: uevent: version 1.0.3
[ 3.799423] device-mapper: ioctl: 4.21.0-ioctl (2011-07-06) initialised: dm-devel@redhat.com
[ 9.705147] padlock_aes: VIA PadLock not detected.
[ 9.948112] JFS: nTxBlock = 8192, nTxLock = 65536
[ 10.391916] udevd[368]: starting version 173
[ 10.476167] agpgart-intel 0000:00:00.0: Intel Sandybridge Chipset
[ 10.476681] agpgart-intel 0000:00:00.0: detected gtt size: 2097152K total, 262144K mappable
[ 10.478947] agpgart-intel 0000:00:00.0: detected 65536K stolen memory
[ 10.481625] ACPI: acpi_idle yielding to intel_idle
[ 10.487065] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0x90000000
[ 10.488635] input: Lid Switch as /devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input3
[ 10.489546] ACPI: Lid Switch [LID0]
[ 10.489784] input: Power Button as /devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input4
[ 10.489904] ACPI: Power Button [PWRB]
[ 10.497253] mei: module is from the staging directory, the quality is unknown, you have been warned.
[ 10.497961] mei 0000:00:16.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 10.498048] mei 0000:00:16.0: setting latency timer to 64
[ 10.514037] input: Sleep Button as /devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input5
[ 10.514136] ACPI: Sleep Button [SLPB]
[ 10.514668] ACPI: AC Adapter [ADP1] (on-line)
[ 10.517726] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input6
[ 10.517819] ACPI: Power Button [PWRF]
[ 10.564844] iTCO_vendor_support: vendor-support=0
[ 10.577388] i801_smbus 0000:00:1f.3: PCI INT C -> GSI 18 (level, low) -> IRQ 18
[ 10.582567] input: PC Speaker as /devices/platform/pcspkr/input/input7
[ 10.613432] sd 0:0:0:0: Attached scsi generic sg0 type 0
[ 10.628638] ACPI: Battery Slot [BAT0] (battery present)
[ 10.636099] iTCO_wdt: Intel TCO WatchDog Timer Driver v1.06
[ 10.636372] iTCO_wdt: unable to reset NO_REBOOT flag, device disabled by hardware/BIOS
[ 10.641636] cfg80211: Calling CRDA to update world regulatory domain
[ 10.648790] brcmutil: module is from the staging directory, the quality is unknown, you have been warned.
[ 10.652173] [drm] Initialized drm 1.1.0 20060810
[ 10.675639] snd_hda_intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[ 10.675873] snd_hda_intel 0000:00:1b.0: irq 45 for MSI/MSI-X
[ 10.675960] snd_hda_intel 0000:00:1b.0: setting latency timer to 64
[ 10.693243] brcmsmac: module is from the staging directory, the quality is unknown, you have been warned.
[ 10.704015] brcmsmac 0000:02:00.0: bus 2 slot 0 func 0 irq 11
[ 10.704149] brcmsmac 0000:02:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[ 10.704243] brcmsmac 0000:02:00.0: setting latency timer to 64
[ 10.729682] input: bcm5974 as /devices/pci0000:00/0000:00:1a.7/usb1/1-1/1-1.2/1-1.2:1.2/input/input8
[ 10.731790] usbcore: registered new interface driver bcm5974
[ 10.732604] usbcore: registered new interface driver uas
[ 10.740161] applesmc: key=349 fan=1 temp=25 acc=0 lux=2 kbd=1
[ 10.742137] Initializing USB Mass Storage driver...
[ 10.742994] scsi2 : usb-storage 2-1.1:1.0
[ 10.744328] Linux media interface: v0.10
[ 10.744736] usb-storage 2-1.2:1.0: Quirks match for vid 1058 pid 0704: 8000
[ 10.745161] scsi3 : usb-storage 2-1.2:1.0
[ 10.752205] Registered led device: smc::kbd_backlight
[ 10.753310] Linux video capture interface: v2.00
[ 10.754397] usbcore: registered new interface driver usb-storage
[ 10.754487] USB Mass Storage support registered.
[ 10.757698] uvcvideo: Found UVC 1.00 device FaceTime Camera (Built-in) (05ac:850a)
[ 10.767084] input: FaceTime Camera (Built-in) as /devices/pci0000:00/0000:00:1a.7/usb1/1-2/1-2:1.0/input/input9
[ 10.767394] usbcore: registered new interface driver uvcvideo
[ 10.767477] USB Video Class driver (1.1.1)
[ 10.985179] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[ 11.228836] HDMI status: Codec=3 Pin=5 Presence_Detect=0 ELD_Valid=0
[ 11.229249] HDMI status: Codec=3 Pin=6 Presence_Detect=0 ELD_Valid=0
[ 11.229654] HDMI status: Codec=3 Pin=7 Presence_Detect=0 ELD_Valid=0
[ 11.234622] input: HDA Intel PCH HDMI/DP as /devices/pci0000:00/0000:00:1b.0/sound/card0/input10
[ 11.234876] input: HDA Intel PCH HDMI/DP as /devices/pci0000:00/0000:00:1b.0/sound/card0/input11
[ 11.235105] input: HDA Intel PCH HDMI/DP as /devices/pci0000:00/0000:00:1b.0/sound/card0/input12
[ 11.235952] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 11.236035] i915 0000:00:02.0: setting latency timer to 64
[ 11.384448] i915 0000:00:02.0: irq 46 for MSI/MSI-X
[ 11.384460] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[ 11.384533] [drm] Driver supports precise vblank timestamp query.
[ 11.384721] [drm:intel_dsm_platform_mux_info] *ERROR* MUX INFO call failed
[ 11.385048] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
[ 11.753747] scsi 3:0:0:0: Direct-Access WD 5000BMV External 1.75 PQ: 0 ANSI: 4
[ 11.754843] sd 3:0:0:0: Attached scsi generic sg1 type 0
[ 11.755479] sd 3:0:0:0: [sdb] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[ 11.756842] sd 3:0:0:0: [sdb] Write Protect is off
[ 11.756911] sd 3:0:0:0: [sdb] Mode Sense: 23 00 00 00
[ 11.757465] sd 3:0:0:0: [sdb] No Caching mode page present
[ 11.757533] sd 3:0:0:0: [sdb] Assuming drive cache: write through
[ 11.760738] sd 3:0:0:0: [sdb] No Caching mode page present
[ 11.760802] sd 3:0:0:0: [sdb] Assuming drive cache: write through
[ 11.761625] sdb: unknown partition table
[ 11.763711] sd 3:0:0:0: [sdb] No Caching mode page present
[ 11.763775] sd 3:0:0:0: [sdb] Assuming drive cache: write through
[ 11.763839] sd 3:0:0:0: [sdb] Attached SCSI disk
[ 11.764881] scsi 2:0:0:0: Direct-Access APPLE SD Card Reader 2.00 PQ: 0 ANSI: 0
[ 11.765644] sd 2:0:0:0: Attached scsi generic sg2 type 0
[ 11.767205] sd 2:0:0:0: [sdc] Attached SCSI removable disk
[ 12.720129] fbcon: inteldrmfb (fb0) is primary device
[ 13.708979] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting
[ 13.897858] Console: switching to colour frame buffer device 180x56
[ 13.901770] fb0: inteldrmfb frame buffer device
[ 13.901797] drm: registered panic notifier
[ 13.933717] acpi device:0d: registered as cooling_device4
[ 13.934500] input: Video Bus as /devices/LNXSYSTM:00/device:00/PNP0A08:00/LNXVIDEO:00/input/input13
[ 13.935501] ACPI: Video Device [IGPU] (multi-head: yes rom: no post: no)
[ 13.935760] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
[ 14.193534] EXT4-fs (sda4): mounted filesystem with ordered data mode. Opts: (null)
[ 15.015659] NET: Registered protocol family 10
[ 71.813695] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[ 71.813701] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[ 71.826233] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[ 71.826916] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 73.915918] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[ 73.915924] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[ 73.928372] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[ 73.928781] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 78.156442] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[ 78.158309] wlan0: authenticated
[ 78.162231] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[ 78.176749] wlan0: RX AssocResp from 00:14:6c:67:9c:32 (capab=0x611 status=0 aid=7)
[ 78.176754] wlan0: associated
[ 78.177848] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[ 78.177857] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[ 78.177882] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[ 78.178360] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 86.682691] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[ 88.951094] wlan0: no IPv6 routers present
[ 457.569163] tun: Universal TUN/TAP device driver, 1.6
[ 457.569168] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
[ 1226.896028] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting
[ 1709.122015] ieee80211 phy0: brcms_c_prec_enq_head: No where to go, prec == 4
[ 1709.122047] ieee80211 phy0: brcms_c_prec_enq_head: No where to go, prec == 4
[ 1709.123571] ieee80211 phy0: brcms_c_prec_enq_head: No where to go, prec == 4
[ 1709.123635] ieee80211 phy0: brcms_c_prec_enq_head: No where to go, prec == 4
[ 1709.123693] ieee80211 phy0: brcms_c_prec_enq_head: No where to go, prec == 4
[ 1709.123750] ieee80211 phy0: brcms_c_prec_enq_head: No where to go, prec == 4
[ 1709.123807] ieee80211 phy0: brcms_c_prec_enq_head: No where to go, prec == 4
[ 1709.123863] ieee80211 phy0: brcms_c_prec_enq_head: No where to go, prec == 4
[ 1709.123920] ieee80211 phy0: brcms_c_prec_enq_head: No where to go, prec == 4
[ 1709.123977] ieee80211 phy0: brcms_c_prec_enq_head: No where to go, prec == 4
[ 1709.124033] ieee80211 phy0: brcms_c_prec_enq_head: No where to go, prec == 4
[ 1709.124092] ieee80211 phy0: brcms_c_prec_enq_head: No where to go, prec == 4
[ 1709.124149] ieee80211 phy0: brcms_c_prec_enq_head: No where to go, prec == 4
[ 1709.124175] ieee80211 phy0: brcms_c_prec_enq_head: No where to go, prec == 4
[ 2398.268001] EXT4-fs (sda4): re-mounted. Opts: commit=0
[ 2398.574168] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[ 2399.651461] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[ 2399.651514] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[ 2399.651525] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[ 2399.651698] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[ 2399.769383] cfg80211: Calling CRDA for country: X3
[ 2400.042139] PM: Syncing filesystems ... done.
[ 2400.076909] PM: Preparing system for mem sleep
[ 2401.497327] Freezing user space processes ... (elapsed 0.01 seconds) done.
[ 2401.511190] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
[ 2401.524508] PM: Entering mem sleep
[ 2401.524568] Suspending console(s) (use no_console_suspend to debug)
[ 2401.526968] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[ 2401.528308] sd 0:0:0:0: [sda] Stopping disk
[ 2401.528640] brcmsmac 0000:02:00.0: PCI INT A disabled
[ 2401.528889] uhci_hcd 0000:00:1d.0: PCI INT B disabled
[ 2401.529004] uhci_hcd 0000:00:1a.0: PCI INT B disabled
[ 2401.564507] ehci_hcd 0000:00:1d.7: PCI INT A disabled
[ 2401.577820] ehci_hcd 0000:00:1a.7: PCI INT A disabled
[ 2401.734527] snd_hda_intel 0000:00:1b.0: PCI INT A disabled
[ 2402.798010] ata_piix 0000:00:1f.2: PCI INT B disabled
[ 2402.810491] PM: suspend of devices complete after 1285.713 msecs
[ 2402.850503] PM: late suspend of devices complete after 40.026 msecs
[ 2402.850817] ACPI: Preparing to enter system sleep state S3
[ 2402.877230] PM: Saving platform NVS memory
[ 2402.877957] Disabling non-boot CPUs ...
[ 2402.881789] CPU 1 is now offline
[ 2402.987004] CPU 2 is now offline
[ 2403.090262] CPU 3 is now offline
[ 2403.090265] lockdep: fixing up alternatives.
[ 2403.090983] Extended CMOS year: 2000
[ 2403.091430] ACPI: Low-level resume complete
[ 2403.091486] PM: Restoring platform NVS memory
[ 2403.091875] Extended CMOS year: 2000
[ 2403.091908] Enabling non-boot CPUs ...
[ 2403.098911] lockdep: fixing up alternatives.
[ 2403.098921] Booting Node 0 Processor 1 APIC 0x2
[ 2403.098923] smpboot cpu 1: start_ip = 9a000
[ 2403.110136] Calibrating delay loop (skipped) already calibrated this CPU
[ 2403.131403] Switched to NOHz mode on CPU #1
[ 2403.133982] NMI watchdog enabled, takes one hw-pmu counter.
[ 2403.137872] CPU1 is up
[ 2403.141452] lockdep: fixing up alternatives.
[ 2403.141458] Booting Node 0 Processor 2 APIC 0x1
[ 2403.141460] smpboot cpu 2: start_ip = 9a000
[ 2403.152571] Calibrating delay loop (skipped) already calibrated this CPU
[ 2403.173653] NMI watchdog enabled, takes one hw-pmu counter.
[ 2403.174234] CPU2 is up
[ 2403.174362] Switched to NOHz mode on CPU #2
[ 2403.175601] lockdep: fixing up alternatives.
[ 2403.175607] Booting Node 0 Processor 3 APIC 0x3
[ 2403.175609] smpboot cpu 3: start_ip = 9a000
[ 2403.186818] Calibrating delay loop (skipped) already calibrated this CPU
[ 2403.207863] Switched to NOHz mode on CPU #3
[ 2403.212854] NMI watchdog enabled, takes one hw-pmu counter.
[ 2403.216811] CPU3 is up
[ 2403.220663] ACPI: Waking up from system sleep state S3
[ 2403.721038] pcieport 0000:00:01.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[ 2403.721049] pcieport 0000:00:01.0: restoring config space at offset 0x9 (was 0x1fff1, writing 0xa891a4a1)
[ 2403.721055] pcieport 0000:00:01.0: restoring config space at offset 0x8 (was 0xfff0, writing 0xa490a070)
[ 2403.721060] pcieport 0000:00:01.0: restoring config space at offset 0x7 (was 0x200000f0, writing 0x3030)
[ 2403.721067] pcieport 0000:00:01.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[ 2403.721073] pcieport 0000:00:01.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[ 2403.721112] i915 0000:00:02.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[ 2403.721128] i915 0000:00:02.0: restoring config space at offset 0x2 (was 0x3800009, writing 0x3000009)
[ 2403.721133] i915 0000:00:02.0: restoring config space at offset 0x1 (was 0x900007, writing 0x900407)
[ 2403.721175] mei 0000:00:16.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[ 2403.721205] mei 0000:00:16.0: restoring config space at offset 0x4 (was 0xfed1b004, writing 0xa0607104)
[ 2403.721248] uhci_hcd 0000:00:1a.0: restoring config space at offset 0xf (was 0x200, writing 0x20a)
[ 2403.721269] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x8 (was 0x1, writing 0x2141)
[ 2403.721290] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[ 2403.721334] ehci_hcd 0000:00:1a.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[ 2403.721364] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606c00)
[ 2403.721376] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[ 2403.721431] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[ 2403.721461] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0600004)
[ 2403.721468] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[ 2403.721478] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100002)
[ 2403.721536] pcieport 0000:00:1c.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[ 2403.721555] pcieport 0000:00:1c.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[ 2403.721562] pcieport 0000:00:1c.0: restoring config space at offset 0x8 (was 0x0, writing 0xa050a050)
[ 2403.721569] pcieport 0000:00:1c.0: restoring config space at offset 0x7 (was 0x20000000, writing 0x200000f0)
[ 2403.721577] pcieport 0000:00:1c.0: restoring config space at offset 0x6 (was 0x0, writing 0x10100)
[ 2403.721589] pcieport 0000:00:1c.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[ 2403.721600] pcieport 0000:00:1c.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[ 2403.721667] pcieport 0000:00:1c.1: restoring config space at offset 0xf (was 0x200, writing 0x2ff)
[ 2403.721686] pcieport 0000:00:1c.1: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[ 2403.721694] pcieport 0000:00:1c.1: restoring config space at offset 0x8 (was 0x0, writing 0xa040a040)
[ 2403.721701] pcieport 0000:00:1c.1: restoring config space at offset 0x7 (was 0x20000000, writing 0x200000f0)
[ 2403.721708] pcieport 0000:00:1c.1: restoring config space at offset 0x6 (was 0x0, writing 0x20200)
[ 2403.721720] pcieport 0000:00:1c.1: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[ 2403.721730] pcieport 0000:00:1c.1: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[ 2403.721781] uhci_hcd 0000:00:1d.0: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[ 2403.721802] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x8 (was 0x1, writing 0x20e1)
[ 2403.721823] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[ 2403.721865] ehci_hcd 0000:00:1d.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[ 2403.721895] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606800)
[ 2403.721907] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[ 2403.722017] ata_piix 0000:00:1f.2: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[ 2403.722038] ata_piix 0000:00:1f.2: restoring config space at offset 0x8 (was 0x1, writing 0x2061)
[ 2403.722045] ata_piix 0000:00:1f.2: restoring config space at offset 0x7 (was 0x1, writing 0x2179)
[ 2403.722053] ata_piix 0000:00:1f.2: restoring config space at offset 0x6 (was 0x1, writing 0x2161)
[ 2403.722060] ata_piix 0000:00:1f.2: restoring config space at offset 0x5 (was 0x1, writing 0x217d)
[ 2403.722067] ata_piix 0000:00:1f.2: restoring config space at offset 0x4 (was 0x1, writing 0x2169)
[ 2403.722079] ata_piix 0000:00:1f.2: restoring config space at offset 0x1 (was 0x2b00000, writing 0x2b00007)
[ 2403.722108] i801_smbus 0000:00:1f.3: restoring config space at offset 0xf (was 0x300, writing 0x30b)
[ 2403.722138] i801_smbus 0000:00:1f.3: restoring config space at offset 0x4 (was 0x4, writing 0xa0607004)
[ 2403.722150] i801_smbus 0000:00:1f.3: restoring config space at offset 0x1 (was 0x2800001, writing 0x2800003)
[ 2403.722194] pcieport 0000:03:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[ 2403.722200] pcieport 0000:03:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a070)
[ 2403.722205] pcieport 0000:03:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[ 2403.722211] pcieport 0000:03:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x670403)
[ 2403.722219] pcieport 0000:03:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[ 2403.722226] pcieport 0000:03:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[ 2403.722293] pcieport 0000:04:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[ 2403.722299] pcieport 0000:04:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa070a070)
[ 2403.722305] pcieport 0000:04:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[ 2403.722310] pcieport 0000:04:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x50504)
[ 2403.722319] pcieport 0000:04:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[ 2403.722326] pcieport 0000:04:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[ 2403.722394] pcieport 0000:04:03.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[ 2403.722400] pcieport 0000:04:03.0: restoring config space at offset 0x8 (was 0x0, writing 0xa080a080)
[ 2403.722406] pcieport 0000:04:03.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[ 2403.722412] pcieport 0000:04:03.0: restoring config space at offset 0x6 (was 0x0, writing 0x360604)
[ 2403.722420] pcieport 0000:04:03.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[ 2403.722427] pcieport 0000:04:03.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[ 2403.722496] pcieport 0000:04:04.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[ 2403.722501] pcieport 0000:04:04.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a090)
[ 2403.722507] pcieport 0000:04:04.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[ 2403.722513] pcieport 0000:04:04.0: restoring config space at offset 0x6 (was 0x0, writing 0x673704)
[ 2403.722521] pcieport 0000:04:04.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[ 2403.722529] pcieport 0000:04:04.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[ 2403.722594] pci 0000:05:00.0: restoring config space at offset 0xf (was 0x1ff, writing 0x10b)
[ 2403.722617] pci 0000:05:00.0: restoring config space at offset 0x5 (was 0x0, writing 0xa0740000)
[ 2403.722623] pci 0000:05:00.0: restoring config space at offset 0x4 (was 0x0, writing 0xa0700000)
[ 2403.722629] pci 0000:05:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[ 2403.722637] pci 0000:05:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[ 2403.722765] brcmsmac 0000:02:00.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[ 2403.722823] brcmsmac 0000:02:00.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0400004)
[ 2403.722836] brcmsmac 0000:02:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[ 2403.722853] brcmsmac 0000:02:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[ 2403.723298] PM: early resume of devices complete after 2.402 msecs
[ 2403.724408] i915 0000:00:02.0: setting latency timer to 64
[ 2403.724415] uhci_hcd 0000:00:1a.0: PCI INT B -> GSI 21 (level, low) -> IRQ 21
[ 2403.724427] uhci_hcd 0000:00:1a.0: setting latency timer to 64
[ 2403.724458] usb usb3: root hub lost power or was reset
[ 2403.724487] ehci_hcd 0000:00:1a.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[ 2403.724498] ehci_hcd 0000:00:1a.7: setting latency timer to 64
[ 2403.724587] snd_hda_intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[ 2403.724600] snd_hda_intel 0000:00:1b.0: setting latency timer to 64
[ 2403.724685] snd_hda_intel 0000:00:1b.0: irq 45 for MSI/MSI-X
[ 2403.724771] uhci_hcd 0000:00:1d.0: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[ 2403.724781] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[ 2403.724815] usb usb4: root hub lost power or was reset
[ 2403.724842] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[ 2403.724849] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[ 2403.724859] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[ 2403.724862] ata_piix 0000:00:1f.2: setting latency timer to 64
[ 2403.725011] brcmsmac 0000:02:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[ 2403.725024] brcmsmac 0000:02:00.0: setting latency timer to 64
[ 2403.727431] sd 0:0:0:0: [sda] Starting disk
[ 2403.755329] bcm5974: bad trackpad package, length: 8
[ 2403.756326] bcm5974: bad trackpad package, length: 8
[ 2403.758324] bcm5974: bad trackpad package, length: 8
[ 2403.759324] bcm5974: bad trackpad package, length: 8
[ 2403.760294] bcm5974: bad trackpad package, length: 8
[ 2403.761329] bcm5974: bad trackpad package, length: 8
[ 2403.763307] bcm5974: bad trackpad package, length: 8
[ 2403.764292] bcm5974: bad trackpad package, length: 8
[ 2403.765287] bcm5974: bad trackpad package, length: 8
[ 2403.767287] bcm5974: bad trackpad package, length: 8
[ 2403.861115] Extended CMOS year: 2000
[ 2404.746855] ata2.00: failed to resume link (SControl 0)
[ 2405.066674] ata1.01: failed to resume link (SControl 0)
[ 2405.220005] ata1.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 2405.220020] ata1.01: SATA link down (SStatus 0 SControl 0)
[ 2405.226739] ata1.00: ACPI cmd ef/03:46:00:00:00:a0 (SET FEATURES) filtered out
[ 2405.233515] ata1.00: configured for UDMA/133
[ 2405.450694] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting
[ 2405.689883] PM: resume of devices complete after 1966.775 msecs
[ 2405.691447] PM: Finishing wakeup.
[ 2405.691450] Restarting tasks ...
[ 2405.692796] usb 2-1.2: USB disconnect, device number 4
[ 2405.696416] done.
[ 2405.730172] video LNXVIDEO:00: Restoring backlight state
[ 2405.769585] ata2.01: failed to resume link (SControl 0)
[ 2405.781246] ata2.00: SATA link down (SStatus 4 SControl 0)
[ 2405.781267] ata2.01: SATA link down (SStatus 0 SControl 0)
[ 2408.613195] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[ 2408.613200] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[ 2408.627566] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[ 2408.632253] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 2410.669486] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[ 2410.669493] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[ 2410.683881] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[ 2410.684307] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 2429.922397] EXT4-fs (sda4): re-mounted. Opts: commit=0
[ 2479.308752] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[ 2479.308758] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[ 2479.323026] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[ 2479.323427] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 2481.407682] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[ 2481.407688] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[ 2481.421949] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[ 2481.426600] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 2485.588757] wlan0: authenticate with 00:03:52:29:cf:40 (try 1)
[ 2485.590325] wlan0: authenticated
[ 2485.594233] wlan0: associate with 00:03:52:29:cf:40 (try 1)
[ 2485.596270] wlan0: RX AssocResp from 00:03:52:29:cf:40 (capab=0x431 status=0 aid=1)
[ 2485.596275] wlan0: associated
[ 2485.597168] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[ 2485.597175] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[ 2485.597200] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[ 2485.597562] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 2495.770749] wlan0: no IPv6 routers present
[ 2502.177289] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[ 3941.530655] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting
[ 5717.531594] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting
[ 6635.546190] EXT4-fs (sda4): re-mounted. Opts: commit=0
[ 6635.746248] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[ 6636.927834] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[ 6636.927857] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[ 6636.927869] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[ 6636.927904] wlan0: deauthenticating from 00:03:52:29:cf:40 by local choice (reason=3)
[ 6637.018140] cfg80211: Calling CRDA to update world regulatory domain
[ 6637.272616] PM: Syncing filesystems ... done.
[ 6637.315959] PM: Preparing system for mem sleep
[ 6638.970582] Freezing user space processes ... (elapsed 0.01 seconds) done.
[ 6638.983452] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
[ 6638.996781] PM: Entering mem sleep
[ 6638.996819] Suspending console(s) (use no_console_suspend to debug)
[ 6638.998851] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[ 6639.000182] sd 0:0:0:0: [sda] Stopping disk
[ 6639.000225] brcmsmac 0000:02:00.0: PCI INT A disabled
[ 6639.000489] uhci_hcd 0000:00:1d.0: PCI INT B disabled
[ 6639.000771] uhci_hcd 0000:00:1a.0: PCI INT B disabled
[ 6639.036754] ehci_hcd 0000:00:1d.7: PCI INT A disabled
[ 6639.050078] ehci_hcd 0000:00:1a.7: PCI INT A disabled
[ 6639.103515] do_IRQ: 0.169 No irq handler for vector (irq -1)
[ 6639.103520] snd_hda_intel 0000:00:1b.0: PCI INT A disabled
[ 6640.616805] ata_piix 0000:00:1f.2: PCI INT B disabled
[ 6640.629174] PM: suspend of devices complete after 1632.392 msecs
[ 6640.669256] PM: late suspend of devices complete after 40.093 msecs
[ 6640.669570] ACPI: Preparing to enter system sleep state S3
[ 6640.695903] PM: Saving platform NVS memory
[ 6640.696494] Disabling non-boot CPUs ...
[ 6640.699926] CPU 1 is now offline
[ 6640.703047] CPU 2 is now offline
[ 6640.705911] CPU 3 is now offline
[ 6640.705914] lockdep: fixing up alternatives.
[ 6640.706591] Extended CMOS year: 2000
[ 6640.706995] ACPI: Low-level resume complete
[ 6640.707049] PM: Restoring platform NVS memory
[ 6640.707363] Extended CMOS year: 2000
[ 6640.707383] Enabling non-boot CPUs ...
[ 6640.707559] lockdep: fixing up alternatives.
[ 6640.707564] Booting Node 0 Processor 1 APIC 0x2
[ 6640.707566] smpboot cpu 1: start_ip = 9a000
[ 6640.718775] Calibrating delay loop (skipped) already calibrated this CPU
[ 6640.740120] Switched to NOHz mode on CPU #1
[ 6640.747866] NMI watchdog enabled, takes one hw-pmu counter.
[ 6640.748361] CPU1 is up
[ 6640.757939] lockdep: fixing up alternatives.
[ 6640.757944] Booting Node 0 Processor 2 APIC 0x1
[ 6640.757946] smpboot cpu 2: start_ip = 9a000
[ 6640.769057] Calibrating delay loop (skipped) already calibrated this CPU
[ 6640.789756] Switched to NOHz mode on CPU #2
[ 6640.790259] NMI watchdog enabled, takes one hw-pmu counter.
[ 6640.791661] CPU2 is up
[ 6640.795603] lockdep: fixing up alternatives.
[ 6640.795609] Booting Node 0 Processor 3 APIC 0x3
[ 6640.795612] smpboot cpu 3: start_ip = 9a000
[ 6640.806753] Calibrating delay loop (skipped) already calibrated this CPU
[ 6640.829947] Switched to NOHz mode on CPU #3
[ 6640.832420] NMI watchdog enabled, takes one hw-pmu counter.
[ 6640.834384] CPU3 is up
[ 6640.837755] ACPI: Waking up from system sleep state S3
[ 6641.339760] pcieport 0000:00:01.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[ 6641.339771] pcieport 0000:00:01.0: restoring config space at offset 0x9 (was 0x1fff1, writing 0xa891a4a1)
[ 6641.339777] pcieport 0000:00:01.0: restoring config space at offset 0x8 (was 0xfff0, writing 0xa490a070)
[ 6641.339782] pcieport 0000:00:01.0: restoring config space at offset 0x7 (was 0x200000f0, writing 0x20003030)
[ 6641.339789] pcieport 0000:00:01.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[ 6641.339795] pcieport 0000:00:01.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[ 6641.339834] i915 0000:00:02.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[ 6641.339851] i915 0000:00:02.0: restoring config space at offset 0x1 (was 0x900007, writing 0x900407)
[ 6641.339893] mei 0000:00:16.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[ 6641.339923] mei 0000:00:16.0: restoring config space at offset 0x4 (was 0xfed1b004, writing 0xa0607104)
[ 6641.339967] uhci_hcd 0000:00:1a.0: restoring config space at offset 0xf (was 0x200, writing 0x20a)
[ 6641.339988] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x8 (was 0x1, writing 0x2141)
[ 6641.340009] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[ 6641.340052] ehci_hcd 0000:00:1a.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[ 6641.340083] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606c00)
[ 6641.340094] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[ 6641.340149] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[ 6641.340180] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0600004)
[ 6641.340187] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[ 6641.340197] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100002)
[ 6641.340257] pcieport 0000:00:1c.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[ 6641.340276] pcieport 0000:00:1c.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[ 6641.340283] pcieport 0000:00:1c.0: restoring config space at offset 0x8 (was 0x0, writing 0xa050a050)
[ 6641.340290] pcieport 0000:00:1c.0: restoring config space at offset 0x7 (was 0x20000000, writing 0xf0)
[ 6641.340298] pcieport 0000:00:1c.0: restoring config space at offset 0x6 (was 0x0, writing 0x10100)
[ 6641.340310] pcieport 0000:00:1c.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[ 6641.340320] pcieport 0000:00:1c.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[ 6641.340388] pcieport 0000:00:1c.1: restoring config space at offset 0xf (was 0x200, writing 0x2ff)
[ 6641.340408] pcieport 0000:00:1c.1: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[ 6641.340415] pcieport 0000:00:1c.1: restoring config space at offset 0x8 (was 0x0, writing 0xa040a040)
[ 6641.340423] pcieport 0000:00:1c.1: restoring config space at offset 0x7 (was 0x20000000, writing 0xf0)
[ 6641.340430] pcieport 0000:00:1c.1: restoring config space at offset 0x6 (was 0x0, writing 0x20200)
[ 6641.340443] pcieport 0000:00:1c.1: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[ 6641.340453] pcieport 0000:00:1c.1: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[ 6641.340504] uhci_hcd 0000:00:1d.0: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[ 6641.340525] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x8 (was 0x1, writing 0x20e1)
[ 6641.340547] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[ 6641.340589] ehci_hcd 0000:00:1d.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[ 6641.340619] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606800)
[ 6641.340631] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[ 6641.340741] ata_piix 0000:00:1f.2: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[ 6641.340762] ata_piix 0000:00:1f.2: restoring config space at offset 0x8 (was 0x1, writing 0x2061)
[ 6641.340770] ata_piix 0000:00:1f.2: restoring config space at offset 0x7 (was 0x1, writing 0x2179)
[ 6641.340777] ata_piix 0000:00:1f.2: restoring config space at offset 0x6 (was 0x1, writing 0x2161)
[ 6641.340784] ata_piix 0000:00:1f.2: restoring config space at offset 0x5 (was 0x1, writing 0x217d)
[ 6641.340791] ata_piix 0000:00:1f.2: restoring config space at offset 0x4 (was 0x1, writing 0x2169)
[ 6641.340803] ata_piix 0000:00:1f.2: restoring config space at offset 0x1 (was 0x2b00000, writing 0x2b00007)
[ 6641.340832] i801_smbus 0000:00:1f.3: restoring config space at offset 0xf (was 0x300, writing 0x30b)
[ 6641.340862] i801_smbus 0000:00:1f.3: restoring config space at offset 0x4 (was 0x4, writing 0xa0607004)
[ 6641.340874] i801_smbus 0000:00:1f.3: restoring config space at offset 0x1 (was 0x2800001, writing 0x2800003)
[ 6641.340918] pcieport 0000:03:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[ 6641.340924] pcieport 0000:03:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a070)
[ 6641.340929] pcieport 0000:03:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[ 6641.340935] pcieport 0000:03:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x670403)
[ 6641.340943] pcieport 0000:03:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[ 6641.340950] pcieport 0000:03:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[ 6641.341017] pcieport 0000:04:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[ 6641.341023] pcieport 0000:04:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa070a070)
[ 6641.341029] pcieport 0000:04:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[ 6641.341034] pcieport 0000:04:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x50504)
[ 6641.341043] pcieport 0000:04:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[ 6641.341050] pcieport 0000:04:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[ 6641.341119] pcieport 0000:04:03.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[ 6641.341124] pcieport 0000:04:03.0: restoring config space at offset 0x8 (was 0x0, writing 0xa080a080)
[ 6641.341130] pcieport 0000:04:03.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[ 6641.341136] pcieport 0000:04:03.0: restoring config space at offset 0x6 (was 0x0, writing 0x360604)
[ 6641.341144] pcieport 0000:04:03.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[ 6641.341151] pcieport 0000:04:03.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[ 6641.341220] pcieport 0000:04:04.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[ 6641.341225] pcieport 0000:04:04.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a090)
[ 6641.341231] pcieport 0000:04:04.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[ 6641.341237] pcieport 0000:04:04.0: restoring config space at offset 0x6 (was 0x0, writing 0x673704)
[ 6641.341245] pcieport 0000:04:04.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[ 6641.341252] pcieport 0000:04:04.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[ 6641.341318] pci 0000:05:00.0: restoring config space at offset 0xf (was 0x1ff, writing 0x10b)
[ 6641.341341] pci 0000:05:00.0: restoring config space at offset 0x5 (was 0x0, writing 0xa0740000)
[ 6641.341347] pci 0000:05:00.0: restoring config space at offset 0x4 (was 0x0, writing 0xa0700000)
[ 6641.341353] pci 0000:05:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[ 6641.341361] pci 0000:05:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[ 6641.341489] brcmsmac 0000:02:00.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[ 6641.341549] brcmsmac 0000:02:00.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0400004)
[ 6641.341561] brcmsmac 0000:02:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[ 6641.341578] brcmsmac 0000:02:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[ 6641.342011] PM: early resume of devices complete after 2.393 msecs
[ 6641.343067] i915 0000:00:02.0: setting latency timer to 64
[ 6641.343084] uhci_hcd 0000:00:1a.0: PCI INT B -> GSI 21 (level, low) -> IRQ 21
[ 6641.343096] uhci_hcd 0000:00:1a.0: setting latency timer to 64
[ 6641.343127] usb usb3: root hub lost power or was reset
[ 6641.343153] ehci_hcd 0000:00:1a.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[ 6641.343164] ehci_hcd 0000:00:1a.7: setting latency timer to 64
[ 6641.343249] snd_hda_intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[ 6641.343260] snd_hda_intel 0000:00:1b.0: setting latency timer to 64
[ 6641.343337] snd_hda_intel 0000:00:1b.0: irq 45 for MSI/MSI-X
[ 6641.343412] uhci_hcd 0000:00:1d.0: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[ 6641.343422] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[ 6641.343452] usb usb4: root hub lost power or was reset
[ 6641.343475] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[ 6641.343485] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[ 6641.343578] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[ 6641.343586] ata_piix 0000:00:1f.2: setting latency timer to 64
[ 6641.343687] brcmsmac 0000:02:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[ 6641.343702] brcmsmac 0000:02:00.0: setting latency timer to 64
[ 6641.345371] sd 0:0:0:0: [sda] Starting disk
[ 6641.375933] bcm5974: bad trackpad package, length: 8
[ 6641.407956] bcm5974: bad trackpad package, length: 8
[ 6641.408921] bcm5974: bad trackpad package, length: 8
[ 6641.409957] bcm5974: bad trackpad package, length: 8
[ 6641.411902] bcm5974: bad trackpad package, length: 8
[ 6641.412983] bcm5974: bad trackpad package, length: 8
[ 6641.489812] Extended CMOS year: 2000
[ 6642.365583] ata2.00: failed to resume link (SControl 0)
[ 6642.685429] ata1.01: failed to resume link (SControl 0)
[ 6642.838724] ata1.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[ 6642.838739] ata1.01: SATA link down (SStatus 0 SControl 0)
[ 6642.845459] ata1.00: ACPI cmd ef/03:46:00:00:00:a0 (SET FEATURES) filtered out
[ 6642.852224] ata1.00: configured for UDMA/133
[ 6643.109398] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting
[ 6643.132853] PM: resume of devices complete after 1790.925 msecs
[ 6643.134475] PM: Finishing wakeup.
[ 6643.134477] Restarting tasks ... done.
[ 6643.175179] video LNXVIDEO:00: Restoring backlight state
[ 6643.388277] ata2.01: failed to resume link (SControl 0)
[ 6643.399832] ata2.00: SATA link down (SStatus 4 SControl 0)
[ 6643.399852] ata2.01: SATA link down (SStatus 0 SControl 0)
[ 6645.449846] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[ 6645.449852] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[ 6645.464194] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[ 6645.464597] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 6647.517572] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[ 6647.517578] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[ 6647.531782] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[ 6647.532182] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 6651.710025] wlan0: direct probe to 00:03:52:e3:0e:10 (try 1/3)
[ 6651.906728] wlan0: direct probe to 00:03:52:e3:0e:10 (try 2/3)
[ 6651.907594] wlan0: direct probe responded
[ 6651.936709] wlan0: authenticate with 00:03:52:e3:0e:10 (try 1)
[ 6651.937352] wlan0: authenticated
[ 6651.961348] wlan0: associate with 00:03:52:e3:0e:10 (try 1)
[ 6651.961906] wlan0: RX AssocResp from 00:03:52:e3:0e:10 (capab=0x11 status=0 aid=2)
[ 6651.961909] wlan0: associated
[ 6651.962617] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[ 6651.962623] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[ 6651.962648] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[ 6651.963011] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 6662.663784] wlan0: no IPv6 routers present
[ 6665.673461] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[ 6665.673484] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[ 6665.673496] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[ 6665.673505] wlan0: deauthenticating from 00:03:52:e3:0e:10 by local choice (reason=3)
[ 6665.695554] cfg80211: Calling CRDA to update world regulatory domain
[ 6666.768973] EXT4-fs (sda4): re-mounted. Opts: commit=0
[ 6694.068569] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[ 6694.068575] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[ 6694.092054] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[ 6694.096756] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 6696.133810] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[ 6696.133816] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[ 6696.157291] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[ 6696.161966] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 6700.240643] wlan0: authenticate with 00:03:52:e3:0e:10 (try 1)
[ 6700.241301] wlan0: authenticated
[ 6700.241481] wlan0: associate with 00:03:52:e3:0e:10 (try 1)
[ 6700.242303] wlan0: RX AssocResp from 00:03:52:e3:0e:10 (capab=0x11 status=0 aid=2)
[ 6700.242307] wlan0: associated
[ 6700.243017] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[ 6700.243022] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[ 6700.243048] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[ 6700.243407] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 6710.636014] wlan0: no IPv6 routers present
[ 6716.552808] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[10184.374166] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting
[10825.122904] EXT4-fs (sda4): re-mounted. Opts: commit=0
[10825.322862] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[10826.402277] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[10826.402292] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[10826.402305] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[10826.402314] wlan0: deauthenticating from 00:03:52:e3:0e:10 by local choice (reason=3)
[10826.547951] cfg80211: Calling CRDA to update world regulatory domain
[10826.839684] PM: Syncing filesystems ... done.
[10826.889158] PM: Preparing system for mem sleep
[10828.507165] Freezing user space processes ... (elapsed 0.01 seconds) done.
[10828.520036] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
[10828.533364] PM: Entering mem sleep
[10828.533402] Suspending console(s) (use no_console_suspend to debug)
[10828.535447] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[10828.536635] brcmsmac 0000:02:00.0: PCI INT A disabled
[10828.536794] sd 0:0:0:0: [sda] Stopping disk
[10828.537018] uhci_hcd 0000:00:1d.0: PCI INT B disabled
[10828.537256] uhci_hcd 0000:00:1a.0: PCI INT B disabled
[10828.573339] ehci_hcd 0000:00:1d.7: PCI INT A disabled
[10828.586655] ehci_hcd 0000:00:1a.7: PCI INT A disabled
[10828.640093] snd_hda_intel 0000:00:1b.0: PCI INT A disabled
[10828.640099] do_IRQ: 0.177 No irq handler for vector (irq -1)
[10830.169574] ata_piix 0000:00:1f.2: PCI INT B disabled
[10830.182474] PM: suspend of devices complete after 1649.095 msecs
[10830.222506] PM: late suspend of devices complete after 40.057 msecs
[10830.222820] ACPI: Preparing to enter system sleep state S3
[10830.249146] PM: Saving platform NVS memory
[10830.249760] Disabling non-boot CPUs ...
[10830.253035] CPU 1 is now offline
[10830.256412] CPU 2 is now offline
[10830.259101] CPU 3 is now offline
[10830.259104] lockdep: fixing up alternatives.
[10830.259728] Extended CMOS year: 2000
[10830.260134] ACPI: Low-level resume complete
[10830.260188] PM: Restoring platform NVS memory
[10830.260502] Extended CMOS year: 2000
[10830.260522] Enabling non-boot CPUs ...
[10830.267485] lockdep: fixing up alternatives.
[10830.267491] Booting Node 0 Processor 1 APIC 0x2
[10830.267493] smpboot cpu 1: start_ip = 9a000
[10830.278702] Calibrating delay loop (skipped) already calibrated this CPU
[10830.300013] Switched to NOHz mode on CPU #1
[10830.306263] NMI watchdog enabled, takes one hw-pmu counter.
[10830.310177] CPU1 is up
[10830.320773] lockdep: fixing up alternatives.
[10830.320778] Booting Node 0 Processor 2 APIC 0x1
[10830.320780] smpboot cpu 2: start_ip = 9a000
[10830.331891] Calibrating delay loop (skipped) already calibrated this CPU
[10830.352997] Switched to NOHz mode on CPU #2
[10830.353040] NMI watchdog enabled, takes one hw-pmu counter.
[10830.354540] CPU2 is up
[10830.358463] lockdep: fixing up alternatives.
[10830.358469] Booting Node 0 Processor 3 APIC 0x3
[10830.358471] smpboot cpu 3: start_ip = 9a000
[10830.369681] Calibrating delay loop (skipped) already calibrated this CPU
[10830.393188] Switched to NOHz mode on CPU #3
[10830.398631] NMI watchdog enabled, takes one hw-pmu counter.
[10830.400673] CPU3 is up
[10830.404088] ACPI: Waking up from system sleep state S3
[10830.889671] pcieport 0000:00:01.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[10830.889682] pcieport 0000:00:01.0: restoring config space at offset 0x9 (was 0x1fff1, writing 0xa891a4a1)
[10830.889687] pcieport 0000:00:01.0: restoring config space at offset 0x8 (was 0xfff0, writing 0xa490a070)
[10830.889692] pcieport 0000:00:01.0: restoring config space at offset 0x7 (was 0x200000f0, writing 0x3030)
[10830.889700] pcieport 0000:00:01.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[10830.889706] pcieport 0000:00:01.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[10830.889745] i915 0000:00:02.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[10830.889762] i915 0000:00:02.0: restoring config space at offset 0x1 (was 0x900007, writing 0x900407)
[10830.889804] mei 0000:00:16.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[10830.889834] mei 0000:00:16.0: restoring config space at offset 0x4 (was 0xfed1b004, writing 0xa0607104)
[10830.889877] uhci_hcd 0000:00:1a.0: restoring config space at offset 0xf (was 0x200, writing 0x20a)
[10830.889898] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x8 (was 0x1, writing 0x2141)
[10830.889919] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[10830.889963] ehci_hcd 0000:00:1a.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[10830.889993] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606c00)
[10830.890005] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[10830.890060] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[10830.890090] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0600004)
[10830.890098] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[10830.890107] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100002)
[10830.890166] pcieport 0000:00:1c.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[10830.890186] pcieport 0000:00:1c.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[10830.890194] pcieport 0000:00:1c.0: restoring config space at offset 0x8 (was 0x0, writing 0xa050a050)
[10830.890201] pcieport 0000:00:1c.0: restoring config space at offset 0x7 (was 0x20000000, writing 0x200000f0)
[10830.890208] pcieport 0000:00:1c.0: restoring config space at offset 0x6 (was 0x0, writing 0x10100)
[10830.890220] pcieport 0000:00:1c.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[10830.890230] pcieport 0000:00:1c.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[10830.890298] pcieport 0000:00:1c.1: restoring config space at offset 0xf (was 0x200, writing 0x2ff)
[10830.890317] pcieport 0000:00:1c.1: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[10830.890324] pcieport 0000:00:1c.1: restoring config space at offset 0x8 (was 0x0, writing 0xa040a040)
[10830.890332] pcieport 0000:00:1c.1: restoring config space at offset 0x7 (was 0x20000000, writing 0x200000f0)
[10830.890339] pcieport 0000:00:1c.1: restoring config space at offset 0x6 (was 0x0, writing 0x20200)
[10830.890351] pcieport 0000:00:1c.1: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[10830.890361] pcieport 0000:00:1c.1: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[10830.890411] uhci_hcd 0000:00:1d.0: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[10830.890432] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x8 (was 0x1, writing 0x20e1)
[10830.890453] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[10830.890496] ehci_hcd 0000:00:1d.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[10830.890526] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606800)
[10830.890538] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[10830.890648] ata_piix 0000:00:1f.2: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[10830.890669] ata_piix 0000:00:1f.2: restoring config space at offset 0x8 (was 0x1, writing 0x2061)
[10830.890676] ata_piix 0000:00:1f.2: restoring config space at offset 0x7 (was 0x1, writing 0x2179)
[10830.890683] ata_piix 0000:00:1f.2: restoring config space at offset 0x6 (was 0x1, writing 0x2161)
[10830.890690] ata_piix 0000:00:1f.2: restoring config space at offset 0x5 (was 0x1, writing 0x217d)
[10830.890697] ata_piix 0000:00:1f.2: restoring config space at offset 0x4 (was 0x1, writing 0x2169)
[10830.890709] ata_piix 0000:00:1f.2: restoring config space at offset 0x1 (was 0x2b00000, writing 0x2b00007)
[10830.890739] i801_smbus 0000:00:1f.3: restoring config space at offset 0xf (was 0x300, writing 0x30b)
[10830.890768] i801_smbus 0000:00:1f.3: restoring config space at offset 0x4 (was 0x4, writing 0xa0607004)
[10830.890780] i801_smbus 0000:00:1f.3: restoring config space at offset 0x1 (was 0x2800001, writing 0x2800003)
[10830.890824] pcieport 0000:03:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[10830.890830] pcieport 0000:03:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a070)
[10830.890835] pcieport 0000:03:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[10830.890841] pcieport 0000:03:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x670403)
[10830.890849] pcieport 0000:03:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[10830.890856] pcieport 0000:03:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[10830.890923] pcieport 0000:04:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[10830.890929] pcieport 0000:04:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa070a070)
[10830.890935] pcieport 0000:04:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[10830.890940] pcieport 0000:04:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x50504)
[10830.890949] pcieport 0000:04:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[10830.890956] pcieport 0000:04:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[10830.891024] pcieport 0000:04:03.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[10830.891030] pcieport 0000:04:03.0: restoring config space at offset 0x8 (was 0x0, writing 0xa080a080)
[10830.891035] pcieport 0000:04:03.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[10830.891041] pcieport 0000:04:03.0: restoring config space at offset 0x6 (was 0x0, writing 0x360604)
[10830.891049] pcieport 0000:04:03.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[10830.891057] pcieport 0000:04:03.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[10830.891125] pcieport 0000:04:04.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[10830.891130] pcieport 0000:04:04.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a090)
[10830.891136] pcieport 0000:04:04.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[10830.891142] pcieport 0000:04:04.0: restoring config space at offset 0x6 (was 0x0, writing 0x673704)
[10830.891150] pcieport 0000:04:04.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[10830.891157] pcieport 0000:04:04.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[10830.891222] pci 0000:05:00.0: restoring config space at offset 0xf (was 0x1ff, writing 0x10b)
[10830.891245] pci 0000:05:00.0: restoring config space at offset 0x5 (was 0x0, writing 0xa0740000)
[10830.891251] pci 0000:05:00.0: restoring config space at offset 0x4 (was 0x0, writing 0xa0700000)
[10830.891257] pci 0000:05:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[10830.891265] pci 0000:05:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[10830.891393] brcmsmac 0000:02:00.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[10830.891452] brcmsmac 0000:02:00.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0400004)
[10830.891465] brcmsmac 0000:02:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[10830.891482] brcmsmac 0000:02:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[10830.891909] PM: early resume of devices complete after 2.378 msecs
[10830.892908] i915 0000:00:02.0: setting latency timer to 64
[10830.892941] uhci_hcd 0000:00:1a.0: PCI INT B -> GSI 21 (level, low) -> IRQ 21
[10830.892956] uhci_hcd 0000:00:1a.0: setting latency timer to 64
[10830.892990] usb usb3: root hub lost power or was reset
[10830.893003] ehci_hcd 0000:00:1a.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[10830.893017] ehci_hcd 0000:00:1a.7: setting latency timer to 64
[10830.893027] snd_hda_intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[10830.893039] snd_hda_intel 0000:00:1b.0: setting latency timer to 64
[10830.893118] snd_hda_intel 0000:00:1b.0: irq 45 for MSI/MSI-X
[10830.893125] uhci_hcd 0000:00:1d.0: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[10830.893140] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[10830.893182] usb usb4: root hub lost power or was reset
[10830.893202] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[10830.893215] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[10830.893219] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[10830.893229] ata_piix 0000:00:1f.2: setting latency timer to 64
[10830.893347] brcmsmac 0000:02:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[10830.893361] brcmsmac 0000:02:00.0: setting latency timer to 64
[10830.895138] sd 0:0:0:0: [sda] Starting disk
[10831.029074] Extended CMOS year: 2000
[10831.915499] ata2.00: failed to resume link (SControl 0)
[10832.235336] ata1.01: failed to resume link (SControl 0)
[10832.388621] ata1.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[10832.388635] ata1.01: SATA link down (SStatus 0 SControl 0)
[10832.395330] ata1.00: ACPI cmd ef/03:46:00:00:00:a0 (SET FEATURES) filtered out
[10832.405510] ata1.00: configured for UDMA/133
[10832.572696] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting
[10832.596143] PM: resume of devices complete after 1704.293 msecs
[10832.597771] PM: Finishing wakeup.
[10832.597773] Restarting tasks ... done.
[10832.657655] video LNXVIDEO:00: Restoring backlight state
[10832.938252] ata2.01: failed to resume link (SControl 0)
[10832.949862] ata2.00: SATA link down (SStatus 4 SControl 0)
[10832.949882] ata2.01: SATA link down (SStatus 0 SControl 0)
[10834.935675] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[10834.935680] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[10834.959246] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[10834.959649] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[10837.024502] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[10837.024508] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[10837.047860] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[10837.048259] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[10841.152043] wlan0: authenticate with 00:03:52:e3:0e:10 (try 1)
[10841.152672] wlan0: authenticated
[10841.152851] wlan0: associate with 00:03:52:e3:0e:10 (try 1)
[10841.153645] wlan0: RX AssocResp from 00:03:52:e3:0e:10 (capab=0x11 status=0 aid=3)
[10841.153648] wlan0: associated
[10841.154364] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[10841.154370] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[10841.154396] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[10841.154761] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[10855.412118] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[10855.545493] EXT4-fs (sda4): re-mounted. Opts: commit=0
[13071.070367] EXT4-fs (sda4): re-mounted. Opts: commit=0
[13071.275551] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[13072.451467] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[13072.451483] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[13072.451495] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[13072.451504] wlan0: deauthenticating from 00:03:52:e3:0e:10 by local choice (reason=3)
[13072.570669] cfg80211: Calling CRDA to update world regulatory domain
[13072.839560] PM: Syncing filesystems ... done.
[13072.890829] PM: Preparing system for mem sleep
[13074.523215] Freezing user space processes ... (elapsed 0.01 seconds) done.
[13074.536085] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
[13074.549413] PM: Entering mem sleep
[13074.549449] Suspending console(s) (use no_console_suspend to debug)
[13074.551518] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[13074.552793] sd 0:0:0:0: [sda] Stopping disk
[13074.553724] brcmsmac 0000:02:00.0: PCI INT A disabled
[13074.553789] uhci_hcd 0000:00:1d.0: PCI INT B disabled
[13074.553904] uhci_hcd 0000:00:1a.0: PCI INT B disabled
[13074.589388] ehci_hcd 0000:00:1d.7: PCI INT A disabled
[13074.602711] ehci_hcd 0000:00:1a.7: PCI INT A disabled
[13074.656124] snd_hda_intel 0000:00:1b.0: PCI INT A disabled
[13076.189744] ata_piix 0000:00:1f.2: PCI INT B disabled
[13076.201836] PM: suspend of devices complete after 1652.449 msecs
[13076.241871] PM: late suspend of devices complete after 40.043 msecs
[13076.242185] ACPI: Preparing to enter system sleep state S3
[13076.268518] PM: Saving platform NVS memory
[13076.269107] Disabling non-boot CPUs ...
[13076.272587] CPU 1 is now offline
[13076.276229] CPU 2 is now offline
[13076.278940] CPU 3 is now offline
[13076.278943] lockdep: fixing up alternatives.
[13076.279586] Extended CMOS year: 2000
[13076.279992] ACPI: Low-level resume complete
[13076.280046] PM: Restoring platform NVS memory
[13076.280358] Extended CMOS year: 2000
[13076.280378] Enabling non-boot CPUs ...
[13076.287337] lockdep: fixing up alternatives.
[13076.287342] Booting Node 0 Processor 1 APIC 0x2
[13076.287344] smpboot cpu 1: start_ip = 9a000
[13076.298553] Calibrating delay loop (skipped) already calibrated this CPU
[13076.322607] Switched to NOHz mode on CPU #1
[13076.325407] NMI watchdog enabled, takes one hw-pmu counter.
[13076.329324] CPU1 is up
[13076.340385] lockdep: fixing up alternatives.
[13076.340390] Booting Node 0 Processor 2 APIC 0x1
[13076.340391] smpboot cpu 2: start_ip = 9a000
[13076.351503] Calibrating delay loop (skipped) already calibrated this CPU
[13076.372369] Switched to NOHz mode on CPU #2
[13076.372708] NMI watchdog enabled, takes one hw-pmu counter.
[13076.374137] CPU2 is up
[13076.377927] lockdep: fixing up alternatives.
[13076.377934] Booting Node 0 Processor 3 APIC 0x3
[13076.377936] smpboot cpu 3: start_ip = 9a000
[13076.389147] Calibrating delay loop (skipped) already calibrated this CPU
[13076.412555] Switched to NOHz mode on CPU #3
[13076.414509] NMI watchdog enabled, takes one hw-pmu counter.
[13076.416227] CPU3 is up
[13076.419903] ACPI: Waking up from system sleep state S3
[13076.905722] pcieport 0000:00:01.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[13076.905734] pcieport 0000:00:01.0: restoring config space at offset 0x9 (was 0x1fff1, writing 0xa891a4a1)
[13076.905739] pcieport 0000:00:01.0: restoring config space at offset 0x8 (was 0xfff0, writing 0xa490a070)
[13076.905744] pcieport 0000:00:01.0: restoring config space at offset 0x7 (was 0x200000f0, writing 0x20003030)
[13076.905752] pcieport 0000:00:01.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[13076.905758] pcieport 0000:00:01.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[13076.905796] i915 0000:00:02.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[13076.905814] i915 0000:00:02.0: restoring config space at offset 0x1 (was 0x900007, writing 0x900407)
[13076.905856] mei 0000:00:16.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[13076.905886] mei 0000:00:16.0: restoring config space at offset 0x4 (was 0xfed1b004, writing 0xa0607104)
[13076.905929] uhci_hcd 0000:00:1a.0: restoring config space at offset 0xf (was 0x200, writing 0x20a)
[13076.905951] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x8 (was 0x1, writing 0x2141)
[13076.905972] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[13076.906015] ehci_hcd 0000:00:1a.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[13076.906046] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606c00)
[13076.906057] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[13076.906112] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[13076.906142] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0600004)
[13076.906150] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[13076.906159] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100002)
[13076.906218] pcieport 0000:00:1c.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[13076.906238] pcieport 0000:00:1c.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[13076.906245] pcieport 0000:00:1c.0: restoring config space at offset 0x8 (was 0x0, writing 0xa050a050)
[13076.906253] pcieport 0000:00:1c.0: restoring config space at offset 0x7 (was 0x20000000, writing 0xf0)
[13076.906260] pcieport 0000:00:1c.0: restoring config space at offset 0x6 (was 0x0, writing 0x10100)
[13076.906272] pcieport 0000:00:1c.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[13076.906282] pcieport 0000:00:1c.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[13076.906350] pcieport 0000:00:1c.1: restoring config space at offset 0xf (was 0x200, writing 0x2ff)
[13076.906370] pcieport 0000:00:1c.1: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[13076.906378] pcieport 0000:00:1c.1: restoring config space at offset 0x8 (was 0x0, writing 0xa040a040)
[13076.906385] pcieport 0000:00:1c.1: restoring config space at offset 0x7 (was 0x20000000, writing 0xf0)
[13076.906393] pcieport 0000:00:1c.1: restoring config space at offset 0x6 (was 0x0, writing 0x20200)
[13076.906405] pcieport 0000:00:1c.1: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[13076.906415] pcieport 0000:00:1c.1: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[13076.906466] uhci_hcd 0000:00:1d.0: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[13076.906488] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x8 (was 0x1, writing 0x20e1)
[13076.906508] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[13076.906551] ehci_hcd 0000:00:1d.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[13076.906581] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606800)
[13076.906593] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[13076.906703] ata_piix 0000:00:1f.2: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[13076.906724] ata_piix 0000:00:1f.2: restoring config space at offset 0x8 (was 0x1, writing 0x2061)
[13076.906731] ata_piix 0000:00:1f.2: restoring config space at offset 0x7 (was 0x1, writing 0x2179)
[13076.906739] ata_piix 0000:00:1f.2: restoring config space at offset 0x6 (was 0x1, writing 0x2161)
[13076.906746] ata_piix 0000:00:1f.2: restoring config space at offset 0x5 (was 0x1, writing 0x217d)
[13076.906753] ata_piix 0000:00:1f.2: restoring config space at offset 0x4 (was 0x1, writing 0x2169)
[13076.906765] ata_piix 0000:00:1f.2: restoring config space at offset 0x1 (was 0x2b00000, writing 0x2b00007)
[13076.906794] i801_smbus 0000:00:1f.3: restoring config space at offset 0xf (was 0x300, writing 0x30b)
[13076.906825] i801_smbus 0000:00:1f.3: restoring config space at offset 0x4 (was 0x4, writing 0xa0607004)
[13076.906836] i801_smbus 0000:00:1f.3: restoring config space at offset 0x1 (was 0x2800001, writing 0x2800003)
[13076.906880] pcieport 0000:03:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[13076.906886] pcieport 0000:03:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a070)
[13076.906892] pcieport 0000:03:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[13076.906897] pcieport 0000:03:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x670403)
[13076.906905] pcieport 0000:03:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[13076.906912] pcieport 0000:03:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[13076.906980] pcieport 0000:04:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[13076.906985] pcieport 0000:04:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa070a070)
[13076.906991] pcieport 0000:04:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[13076.906997] pcieport 0000:04:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x50504)
[13076.907005] pcieport 0000:04:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[13076.907012] pcieport 0000:04:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[13076.907080] pcieport 0000:04:03.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[13076.907086] pcieport 0000:04:03.0: restoring config space at offset 0x8 (was 0x0, writing 0xa080a080)
[13076.907092] pcieport 0000:04:03.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[13076.907097] pcieport 0000:04:03.0: restoring config space at offset 0x6 (was 0x0, writing 0x360604)
[13076.907106] pcieport 0000:04:03.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[13076.907113] pcieport 0000:04:03.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[13076.907181] pcieport 0000:04:04.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[13076.907187] pcieport 0000:04:04.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a090)
[13076.907193] pcieport 0000:04:04.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[13076.907198] pcieport 0000:04:04.0: restoring config space at offset 0x6 (was 0x0, writing 0x673704)
[13076.907207] pcieport 0000:04:04.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[13076.907214] pcieport 0000:04:04.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[13076.907279] pci 0000:05:00.0: restoring config space at offset 0xf (was 0x1ff, writing 0x10b)
[13076.907302] pci 0000:05:00.0: restoring config space at offset 0x5 (was 0x0, writing 0xa0740000)
[13076.907308] pci 0000:05:00.0: restoring config space at offset 0x4 (was 0x0, writing 0xa0700000)
[13076.907314] pci 0000:05:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[13076.907322] pci 0000:05:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[13076.907450] brcmsmac 0000:02:00.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[13076.907509] brcmsmac 0000:02:00.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0400004)
[13076.907522] brcmsmac 0000:02:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[13076.907539] brcmsmac 0000:02:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[13076.907966] PM: early resume of devices complete after 2.385 msecs
[13076.908962] i915 0000:00:02.0: setting latency timer to 64
[13076.909600] uhci_hcd 0000:00:1a.0: PCI INT B -> GSI 21 (level, low) -> IRQ 21
[13076.909611] uhci_hcd 0000:00:1a.0: setting latency timer to 64
[13076.909642] usb usb3: root hub lost power or was reset
[13076.909697] ehci_hcd 0000:00:1a.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[13076.909703] snd_hda_intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[13076.909709] ehci_hcd 0000:00:1a.7: setting latency timer to 64
[13076.909719] snd_hda_intel 0000:00:1b.0: setting latency timer to 64
[13076.909798] uhci_hcd 0000:00:1d.0: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[13076.909812] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[13076.909816] snd_hda_intel 0000:00:1b.0: irq 45 for MSI/MSI-X
[13076.909849] usb usb4: root hub lost power or was reset
[13076.909869] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[13076.909879] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[13076.909897] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[13076.909905] ata_piix 0000:00:1f.2: setting latency timer to 64
[13076.910006] brcmsmac 0000:02:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[13076.910020] brcmsmac 0000:02:00.0: setting latency timer to 64
[13076.911788] sd 0:0:0:0: [sda] Starting disk
[13077.064755] Extended CMOS year: 2000
[13077.931576] ata2.00: failed to resume link (SControl 0)
[13078.251361] ata1.01: failed to resume link (SControl 0)
[13078.404671] ata1.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[13078.404685] ata1.01: SATA link down (SStatus 0 SControl 0)
[13078.411416] ata1.00: ACPI cmd ef/03:46:00:00:00:a0 (SET FEATURES) filtered out
[13078.415558] ata1.00: configured for UDMA/133
[13078.615388] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting
[13078.638836] PM: resume of devices complete after 1730.949 msecs
[13078.640441] PM: Finishing wakeup.
[13078.640444] Restarting tasks ... done.
[13078.690007] video LNXVIDEO:00: Restoring backlight state
[13078.954285] ata2.01: failed to resume link (SControl 0)
[13078.966134] ata2.00: SATA link down (SStatus 4 SControl 0)
[13078.966154] ata2.01: SATA link down (SStatus 0 SControl 0)
[13080.981860] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[13080.981866] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[13081.005342] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[13081.005748] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[13083.070670] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[13083.070677] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[13083.094024] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[13083.094425] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[13087.194911] wlan0: authenticate with 00:03:52:e3:0e:10 (try 1)
[13087.195547] wlan0: authenticated
[13087.195708] wlan0: associate with 00:03:52:e3:0e:10 (try 1)
[13087.196234] wlan0: RX AssocResp from 00:03:52:e3:0e:10 (capab=0x11 status=0 aid=3)
[13087.196238] wlan0: associated
[13087.197088] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[13087.197094] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[13087.197119] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[13087.197485] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[13095.911334] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[13096.043975] EXT4-fs (sda4): re-mounted. Opts: commit=0
[14906.512927] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting
[16791.871993] EXT4-fs (sda4): re-mounted. Opts: commit=0
[16792.077133] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[16793.155308] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[16793.155323] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[16793.155336] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[16793.155345] wlan0: deauthenticating from 00:03:52:e3:0e:10 by local choice (reason=3)
[16793.222263] cfg80211: Calling CRDA to update world regulatory domain
[16793.485688] PM: Syncing filesystems ... done.
[16793.546655] PM: Preparing system for mem sleep
[16795.178115] Freezing user space processes ... (elapsed 0.01 seconds) done.
[16795.191016] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
[16795.204344] PM: Entering mem sleep
[16795.204380] Suspending console(s) (use no_console_suspend to debug)
[16795.206712] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[16795.207965] brcmsmac 0000:02:00.0: PCI INT A disabled
[16795.207994] sd 0:0:0:0: [sda] Stopping disk
[16795.208280] uhci_hcd 0000:00:1d.0: PCI INT B disabled
[16795.208626] uhci_hcd 0000:00:1a.0: PCI INT B disabled
[16795.244314] ehci_hcd 0000:00:1d.7: PCI INT A disabled
[16795.257639] ehci_hcd 0000:00:1a.7: PCI INT A disabled
[16795.311058] snd_hda_intel 0000:00:1b.0: PCI INT A disabled
[16796.746863] ata_piix 0000:00:1f.2: PCI INT B disabled
[16796.760144] PM: suspend of devices complete after 1555.732 msecs
[16796.800205] PM: late suspend of devices complete after 40.083 msecs
[16796.800520] ACPI: Preparing to enter system sleep state S3
[16796.826843] PM: Saving platform NVS memory
[16796.827456] Disabling non-boot CPUs ...
[16796.831022] CPU 1 is now offline
[16796.834097] CPU 2 is now offline
[16796.836870] CPU 3 is now offline
[16796.836873] lockdep: fixing up alternatives.
[16796.837563] Extended CMOS year: 2000
[16796.837968] ACPI: Low-level resume complete
[16796.838021] PM: Restoring platform NVS memory
[16796.838333] Extended CMOS year: 2000
[16796.838354] Enabling non-boot CPUs ...
[16796.845287] lockdep: fixing up alternatives.
[16796.845293] Booting Node 0 Processor 1 APIC 0x2
[16796.845295] smpboot cpu 1: start_ip = 9a000
[16796.856506] Calibrating delay loop (skipped) already calibrated this CPU
[16796.877587] Switched to NOHz mode on CPU #1
[16796.882477] NMI watchdog enabled, takes one hw-pmu counter.
[16796.882974] CPU1 is up
[16796.892439] lockdep: fixing up alternatives.
[16796.892444] Booting Node 0 Processor 2 APIC 0x1
[16796.892445] smpboot cpu 2: start_ip = 9a000
[16796.903556] Calibrating delay loop (skipped) already calibrated this CPU
[16796.924028] Switched to NOHz mode on CPU #2
[16796.924694] NMI watchdog enabled, takes one hw-pmu counter.
[16796.925986] CPU2 is up
[16796.929923] lockdep: fixing up alternatives.
[16796.929930] Booting Node 0 Processor 3 APIC 0x3
[16796.929932] smpboot cpu 3: start_ip = 9a000
[16796.941042] Calibrating delay loop (skipped) already calibrated this CPU
[16796.964215] Switched to NOHz mode on CPU #3
[16796.968840] NMI watchdog enabled, takes one hw-pmu counter.
[16796.970471] CPU3 is up
[16796.974156] ACPI: Waking up from system sleep state S3
[16797.477365] pcieport 0000:00:01.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[16797.477377] pcieport 0000:00:01.0: restoring config space at offset 0x9 (was 0x1fff1, writing 0xa891a4a1)
[16797.477382] pcieport 0000:00:01.0: restoring config space at offset 0x8 (was 0xfff0, writing 0xa490a070)
[16797.477387] pcieport 0000:00:01.0: restoring config space at offset 0x7 (was 0x200000f0, writing 0x3030)
[16797.477395] pcieport 0000:00:01.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[16797.477401] pcieport 0000:00:01.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[16797.477439] i915 0000:00:02.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[16797.477456] i915 0000:00:02.0: restoring config space at offset 0x1 (was 0x900007, writing 0x900407)
[16797.477499] mei 0000:00:16.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[16797.477529] mei 0000:00:16.0: restoring config space at offset 0x4 (was 0xfed1b004, writing 0xa0607104)
[16797.477572] uhci_hcd 0000:00:1a.0: restoring config space at offset 0xf (was 0x200, writing 0x20a)
[16797.477593] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x8 (was 0x1, writing 0x2141)
[16797.477614] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[16797.477657] ehci_hcd 0000:00:1a.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[16797.477688] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606c00)
[16797.477700] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[16797.477754] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[16797.477785] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0600004)
[16797.477792] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[16797.477802] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100002)
[16797.477860] pcieport 0000:00:1c.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[16797.477879] pcieport 0000:00:1c.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[16797.477887] pcieport 0000:00:1c.0: restoring config space at offset 0x8 (was 0x0, writing 0xa050a050)
[16797.477895] pcieport 0000:00:1c.0: restoring config space at offset 0x7 (was 0x20000000, writing 0x200000f0)
[16797.477902] pcieport 0000:00:1c.0: restoring config space at offset 0x6 (was 0x0, writing 0x10100)
[16797.477915] pcieport 0000:00:1c.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[16797.477924] pcieport 0000:00:1c.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[16797.477994] pcieport 0000:00:1c.1: restoring config space at offset 0xf (was 0x200, writing 0x2ff)
[16797.478013] pcieport 0000:00:1c.1: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[16797.478021] pcieport 0000:00:1c.1: restoring config space at offset 0x8 (was 0x0, writing 0xa040a040)
[16797.478029] pcieport 0000:00:1c.1: restoring config space at offset 0x7 (was 0x20000000, writing 0x200000f0)
[16797.478037] pcieport 0000:00:1c.1: restoring config space at offset 0x6 (was 0x0, writing 0x20200)
[16797.478048] pcieport 0000:00:1c.1: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[16797.478058] pcieport 0000:00:1c.1: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[16797.478110] uhci_hcd 0000:00:1d.0: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[16797.478132] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x8 (was 0x1, writing 0x20e1)
[16797.478153] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[16797.478195] ehci_hcd 0000:00:1d.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[16797.478226] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606800)
[16797.478237] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[16797.478347] ata_piix 0000:00:1f.2: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[16797.478368] ata_piix 0000:00:1f.2: restoring config space at offset 0x8 (was 0x1, writing 0x2061)
[16797.478375] ata_piix 0000:00:1f.2: restoring config space at offset 0x7 (was 0x1, writing 0x2179)
[16797.478382] ata_piix 0000:00:1f.2: restoring config space at offset 0x6 (was 0x1, writing 0x2161)
[16797.478390] ata_piix 0000:00:1f.2: restoring config space at offset 0x5 (was 0x1, writing 0x217d)
[16797.478397] ata_piix 0000:00:1f.2: restoring config space at offset 0x4 (was 0x1, writing 0x2169)
[16797.478409] ata_piix 0000:00:1f.2: restoring config space at offset 0x1 (was 0x2b00000, writing 0x2b00007)
[16797.478438] i801_smbus 0000:00:1f.3: restoring config space at offset 0xf (was 0x300, writing 0x30b)
[16797.478469] i801_smbus 0000:00:1f.3: restoring config space at offset 0x4 (was 0x4, writing 0xa0607004)
[16797.478480] i801_smbus 0000:00:1f.3: restoring config space at offset 0x1 (was 0x2800001, writing 0x2800003)
[16797.478525] pcieport 0000:03:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[16797.478530] pcieport 0000:03:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a070)
[16797.478536] pcieport 0000:03:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[16797.478541] pcieport 0000:03:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x670403)
[16797.478550] pcieport 0000:03:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[16797.478557] pcieport 0000:03:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[16797.478624] pcieport 0000:04:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[16797.478630] pcieport 0000:04:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa070a070)
[16797.478635] pcieport 0000:04:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[16797.478641] pcieport 0000:04:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x50504)
[16797.478649] pcieport 0000:04:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[16797.478656] pcieport 0000:04:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[16797.478724] pcieport 0000:04:03.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[16797.478730] pcieport 0000:04:03.0: restoring config space at offset 0x8 (was 0x0, writing 0xa080a080)
[16797.478736] pcieport 0000:04:03.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[16797.478741] pcieport 0000:04:03.0: restoring config space at offset 0x6 (was 0x0, writing 0x360604)
[16797.478750] pcieport 0000:04:03.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[16797.478757] pcieport 0000:04:03.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[16797.478826] pcieport 0000:04:04.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[16797.478831] pcieport 0000:04:04.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a090)
[16797.478837] pcieport 0000:04:04.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[16797.478843] pcieport 0000:04:04.0: restoring config space at offset 0x6 (was 0x0, writing 0x673704)
[16797.478851] pcieport 0000:04:04.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[16797.478858] pcieport 0000:04:04.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[16797.478923] pci 0000:05:00.0: restoring config space at offset 0xf (was 0x1ff, writing 0x10b)
[16797.478946] pci 0000:05:00.0: restoring config space at offset 0x5 (was 0x0, writing 0xa0740000)
[16797.478952] pci 0000:05:00.0: restoring config space at offset 0x4 (was 0x0, writing 0xa0700000)
[16797.478959] pci 0000:05:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[16797.478967] pci 0000:05:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[16797.479094] brcmsmac 0000:02:00.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[16797.479153] brcmsmac 0000:02:00.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0400004)
[16797.479165] brcmsmac 0000:02:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[16797.479183] brcmsmac 0000:02:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[16797.479614] PM: early resume of devices complete after 2.389 msecs
[16797.480618] i915 0000:00:02.0: setting latency timer to 64
[16797.481240] uhci_hcd 0000:00:1a.0: PCI INT B -> GSI 21 (level, low) -> IRQ 21
[16797.481251] uhci_hcd 0000:00:1a.0: setting latency timer to 64
[16797.481285] usb usb3: root hub lost power or was reset
[16797.481310] ehci_hcd 0000:00:1a.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[16797.481321] ehci_hcd 0000:00:1a.7: setting latency timer to 64
[16797.481343] snd_hda_intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[16797.481356] snd_hda_intel 0000:00:1b.0: setting latency timer to 64
[16797.481388] uhci_hcd 0000:00:1d.0: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[16797.481402] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[16797.481416] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[16797.481432] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[16797.481445] usb usb4: root hub lost power or was reset
[16797.481458] snd_hda_intel 0000:00:1b.0: irq 45 for MSI/MSI-X
[16797.481482] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[16797.481492] ata_piix 0000:00:1f.2: setting latency timer to 64
[16797.481824] brcmsmac 0000:02:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[16797.481838] brcmsmac 0000:02:00.0: setting latency timer to 64
[16797.483354] sd 0:0:0:0: [sda] Starting disk
[16797.512900] bcm5974: bad trackpad package, length: 8
[16797.531887] bcm5974: bad trackpad package, length: 8
[16797.532888] bcm5974: bad trackpad package, length: 8
[16797.533886] bcm5974: bad trackpad package, length: 8
[16797.534885] bcm5974: bad trackpad package, length: 8
[16797.536890] bcm5974: bad trackpad package, length: 8
[16797.537941] bcm5974: bad trackpad package, length: 8
[16797.538889] bcm5974: bad trackpad package, length: 8
[16797.540943] bcm5974: bad trackpad package, length: 8
[16797.571870] bcm5974: bad trackpad package, length: 8
[16797.647080] Extended CMOS year: 2000
[16798.503185] ata2.00: failed to resume link (SControl 0)
[16798.822998] ata1.01: failed to resume link (SControl 0)
[16798.976308] ata1.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[16798.976322] ata1.01: SATA link down (SStatus 0 SControl 0)
[16798.983075] ata1.00: ACPI cmd ef/03:46:00:00:00:a0 (SET FEATURES) filtered out
[16798.989833] ata1.00: configured for UDMA/133
[16799.250332] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting
[16799.273817] PM: resume of devices complete after 1794.308 msecs
[16799.275439] PM: Finishing wakeup.
[16799.275441] Restarting tasks ... done.
[16799.313394] video LNXVIDEO:00: Restoring backlight state
[16799.525886] ata2.01: failed to resume link (SControl 0)
[16799.537443] ata2.00: SATA link down (SStatus 4 SControl 0)
[16799.537464] ata2.01: SATA link down (SStatus 0 SControl 0)
[16801.597664] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[16801.597670] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[16801.621165] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[16801.625828] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[16803.685594] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[16803.685600] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[16803.708944] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[16803.709341] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[16822.953984] EXT4-fs (sda4): re-mounted. Opts: commit=600
[17141.367140] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[17141.367146] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[17141.390641] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[17141.391042] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[17145.673634] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[17145.673639] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[17145.696969] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[17145.697376] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[17147.802217] wlan0: direct probe to 00:18:39:50:07:f3 (try 1/3)
[17148.000690] wlan0: direct probe to 00:18:39:50:07:f3 (try 2/3)
[17148.003558] wlan0: direct probe responded
[17148.040611] wlan0: authenticate with 00:18:39:50:07:f3 (try 1)
[17148.042269] wlan0: authenticated
[17148.066574] wlan0: associate with 00:18:39:50:07:f3 (try 1)
[17148.068771] wlan0: RX AssocResp from 00:18:39:50:07:f3 (capab=0x421 status=0 aid=4)
[17148.068776] wlan0: associated
[17148.069642] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[17148.069647] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[17148.069673] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[17148.070037] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[17152.759135] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[17152.759166] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[17152.759178] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[17152.759201] wlan0: deauthenticating from 00:18:39:50:07:f3 by local choice (reason=3)
[17152.798037] cfg80211: Calling CRDA to update world regulatory domain
[17154.797077] wlan0: authenticate with 00:18:39:50:07:f3 (try 1)
[17154.798738] wlan0: authenticated
[17154.798909] wlan0: associate with 00:18:39:50:07:f3 (try 1)
[17154.801148] wlan0: RX ReassocResp from 00:18:39:50:07:f3 (capab=0x421 status=0 aid=4)
[17154.801152] wlan0: associated
[17154.802031] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[17154.802037] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[17154.802061] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[17158.397953] wlan0: no IPv6 routers present
[17163.705160] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[18120.611269] EXT4-fs (sda4): re-mounted. Opts: commit=0
[18121.113590] PM: Syncing filesystems ... done.
[18121.195285] PM: Preparing system for mem sleep
[18122.806313] Freezing user space processes ... (elapsed 0.01 seconds) done.
[18122.819186] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
[18122.832514] PM: Entering mem sleep
[18122.832550] Suspending console(s) (use no_console_suspend to debug)
[18122.837548] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[18122.838864] sd 0:0:0:0: [sda] Stopping disk
[18122.839030] brcmsmac 0000:02:00.0: PCI INT A disabled
[18122.839128] uhci_hcd 0000:00:1d.0: PCI INT B disabled
[18122.839446] uhci_hcd 0000:00:1a.0: PCI INT B disabled
[18122.875821] ehci_hcd 0000:00:1d.7: PCI INT A disabled
[18122.889152] ehci_hcd 0000:00:1a.7: PCI INT A disabled
[18122.942573] snd_hda_intel 0000:00:1b.0: PCI INT A disabled
[18124.472264] ata_piix 0000:00:1f.2: PCI INT B disabled
[18124.484917] PM: suspend of devices complete after 1652.406 msecs
[18124.524980] PM: late suspend of devices complete after 40.070 msecs
[18124.525294] ACPI: Preparing to enter system sleep state S3
[18124.551627] PM: Saving platform NVS memory
[18124.552221] Disabling non-boot CPUs ...
[18124.555708] CPU 1 is now offline
[18124.558870] CPU 2 is now offline
[18124.561550] CPU 3 is now offline
[18124.561553] lockdep: fixing up alternatives.
[18124.562214] Extended CMOS year: 2000
[18124.562619] ACPI: Low-level resume complete
[18124.562672] PM: Restoring platform NVS memory
[18124.562985] Extended CMOS year: 2000
[18124.563005] Enabling non-boot CPUs ...
[18124.569968] lockdep: fixing up alternatives.
[18124.569974] Booting Node 0 Processor 1 APIC 0x2
[18124.569976] smpboot cpu 1: start_ip = 9a000
[18124.581185] Calibrating delay loop (skipped) already calibrated this CPU
[18124.605707] Switched to NOHz mode on CPU #1
[18124.606848] NMI watchdog enabled, takes one hw-pmu counter.
[18124.610682] CPU1 is up
[18124.617804] lockdep: fixing up alternatives.
[18124.617809] Booting Node 0 Processor 2 APIC 0x1
[18124.617811] smpboot cpu 2: start_ip = 9a000
[18124.628921] Calibrating delay loop (skipped) already calibrated this CPU
[18124.650089] NMI watchdog enabled, takes one hw-pmu counter.
[18124.651346] CPU2 is up
[18124.652153] Switched to NOHz mode on CPU #2
[18124.655140] lockdep: fixing up alternatives.
[18124.655147] Booting Node 0 Processor 3 APIC 0x3
[18124.655149] smpboot cpu 3: start_ip = 9a000
[18124.666359] Calibrating delay loop (skipped) already calibrated this CPU
[18124.689008] Switched to NOHz mode on CPU #3
[18124.691688] NMI watchdog enabled, takes one hw-pmu counter.
[18124.693826] CPU3 is up
[18124.697283] ACPI: Waking up from system sleep state S3
[18125.198822] pcieport 0000:00:01.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[18125.198834] pcieport 0000:00:01.0: restoring config space at offset 0x9 (was 0x1fff1, writing 0xa891a4a1)
[18125.198839] pcieport 0000:00:01.0: restoring config space at offset 0x8 (was 0xfff0, writing 0xa490a070)
[18125.198844] pcieport 0000:00:01.0: restoring config space at offset 0x7 (was 0x200000f0, writing 0x20003030)
[18125.198852] pcieport 0000:00:01.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[18125.198857] pcieport 0000:00:01.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[18125.198896] i915 0000:00:02.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[18125.198913] i915 0000:00:02.0: restoring config space at offset 0x1 (was 0x900007, writing 0x900407)
[18125.198955] mei 0000:00:16.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[18125.198985] mei 0000:00:16.0: restoring config space at offset 0x4 (was 0xfed1b004, writing 0xa0607104)
[18125.199029] uhci_hcd 0000:00:1a.0: restoring config space at offset 0xf (was 0x200, writing 0x20a)
[18125.199050] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x8 (was 0x1, writing 0x2141)
[18125.199071] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[18125.199114] ehci_hcd 0000:00:1a.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[18125.199144] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606c00)
[18125.199156] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[18125.199211] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[18125.199241] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0600004)
[18125.199249] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[18125.199258] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100002)
[18125.199317] pcieport 0000:00:1c.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[18125.199337] pcieport 0000:00:1c.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[18125.199344] pcieport 0000:00:1c.0: restoring config space at offset 0x8 (was 0x0, writing 0xa050a050)
[18125.199352] pcieport 0000:00:1c.0: restoring config space at offset 0x7 (was 0x20000000, writing 0xf0)
[18125.199359] pcieport 0000:00:1c.0: restoring config space at offset 0x6 (was 0x0, writing 0x10100)
[18125.199371] pcieport 0000:00:1c.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[18125.199381] pcieport 0000:00:1c.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[18125.199452] pcieport 0000:00:1c.1: restoring config space at offset 0xf (was 0x200, writing 0x2ff)
[18125.199472] pcieport 0000:00:1c.1: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[18125.199479] pcieport 0000:00:1c.1: restoring config space at offset 0x8 (was 0x0, writing 0xa040a040)
[18125.199487] pcieport 0000:00:1c.1: restoring config space at offset 0x7 (was 0x20000000, writing 0xf0)
[18125.199494] pcieport 0000:00:1c.1: restoring config space at offset 0x6 (was 0x0, writing 0x20200)
[18125.199506] pcieport 0000:00:1c.1: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[18125.199516] pcieport 0000:00:1c.1: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[18125.199568] uhci_hcd 0000:00:1d.0: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[18125.199589] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x8 (was 0x1, writing 0x20e1)
[18125.199611] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[18125.199652] ehci_hcd 0000:00:1d.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[18125.199683] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606800)
[18125.199695] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[18125.199804] ata_piix 0000:00:1f.2: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[18125.199825] ata_piix 0000:00:1f.2: restoring config space at offset 0x8 (was 0x1, writing 0x2061)
[18125.199833] ata_piix 0000:00:1f.2: restoring config space at offset 0x7 (was 0x1, writing 0x2179)
[18125.199840] ata_piix 0000:00:1f.2: restoring config space at offset 0x6 (was 0x1, writing 0x2161)
[18125.199847] ata_piix 0000:00:1f.2: restoring config space at offset 0x5 (was 0x1, writing 0x217d)
[18125.199854] ata_piix 0000:00:1f.2: restoring config space at offset 0x4 (was 0x1, writing 0x2169)
[18125.199866] ata_piix 0000:00:1f.2: restoring config space at offset 0x1 (was 0x2b00000, writing 0x2b00007)
[18125.199895] i801_smbus 0000:00:1f.3: restoring config space at offset 0xf (was 0x300, writing 0x30b)
[18125.199926] i801_smbus 0000:00:1f.3: restoring config space at offset 0x4 (was 0x4, writing 0xa0607004)
[18125.199938] i801_smbus 0000:00:1f.3: restoring config space at offset 0x1 (was 0x2800001, writing 0x2800003)
[18125.199982] pcieport 0000:03:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[18125.199987] pcieport 0000:03:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a070)
[18125.199993] pcieport 0000:03:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[18125.199998] pcieport 0000:03:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x670403)
[18125.200007] pcieport 0000:03:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[18125.200014] pcieport 0000:03:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[18125.200081] pcieport 0000:04:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[18125.200086] pcieport 0000:04:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa070a070)
[18125.200092] pcieport 0000:04:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[18125.200098] pcieport 0000:04:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x50504)
[18125.200106] pcieport 0000:04:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[18125.200113] pcieport 0000:04:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[18125.200181] pcieport 0000:04:03.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[18125.200187] pcieport 0000:04:03.0: restoring config space at offset 0x8 (was 0x0, writing 0xa080a080)
[18125.200192] pcieport 0000:04:03.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[18125.200198] pcieport 0000:04:03.0: restoring config space at offset 0x6 (was 0x0, writing 0x360604)
[18125.200207] pcieport 0000:04:03.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[18125.200214] pcieport 0000:04:03.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[18125.200282] pcieport 0000:04:04.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[18125.200287] pcieport 0000:04:04.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a090)
[18125.200293] pcieport 0000:04:04.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[18125.200299] pcieport 0000:04:04.0: restoring config space at offset 0x6 (was 0x0, writing 0x673704)
[18125.200307] pcieport 0000:04:04.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[18125.200314] pcieport 0000:04:04.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[18125.200379] pci 0000:05:00.0: restoring config space at offset 0xf (was 0x1ff, writing 0x10b)
[18125.200402] pci 0000:05:00.0: restoring config space at offset 0x5 (was 0x0, writing 0xa0740000)
[18125.200408] pci 0000:05:00.0: restoring config space at offset 0x4 (was 0x0, writing 0xa0700000)
[18125.200414] pci 0000:05:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[18125.200422] pci 0000:05:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[18125.200550] brcmsmac 0000:02:00.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[18125.200609] brcmsmac 0000:02:00.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0400004)
[18125.200622] brcmsmac 0000:02:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[18125.200639] brcmsmac 0000:02:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[18125.201066] PM: early resume of devices complete after 2.384 msecs
[18125.202062] i915 0000:00:02.0: setting latency timer to 64
[18125.202160] uhci_hcd 0000:00:1a.0: PCI INT B -> GSI 21 (level, low) -> IRQ 21
[18125.202170] uhci_hcd 0000:00:1a.0: setting latency timer to 64
[18125.202202] usb usb3: root hub lost power or was reset
[18125.202241] ehci_hcd 0000:00:1a.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[18125.202251] ehci_hcd 0000:00:1a.7: setting latency timer to 64
[18125.202345] snd_hda_intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[18125.202355] snd_hda_intel 0000:00:1b.0: setting latency timer to 64
[18125.202425] snd_hda_intel 0000:00:1b.0: irq 45 for MSI/MSI-X
[18125.202512] uhci_hcd 0000:00:1d.0: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[18125.202523] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[18125.202552] usb usb4: root hub lost power or was reset
[18125.202579] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[18125.202588] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[18125.202697] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[18125.202704] ata_piix 0000:00:1f.2: setting latency timer to 64
[18125.202854] brcmsmac 0000:02:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[18125.202867] brcmsmac 0000:02:00.0: setting latency timer to 64
[18125.204498] sd 0:0:0:0: [sda] Starting disk
[18125.233282] bcm5974: bad trackpad package, length: 8
[18125.234278] bcm5974: bad trackpad package, length: 8
[18125.235280] bcm5974: bad trackpad package, length: 8
[18125.237283] bcm5974: bad trackpad package, length: 8
[18125.345187] Extended CMOS year: 2000
[18126.224639] ata2.00: failed to resume link (SControl 0)
[18126.544454] ata1.01: failed to resume link (SControl 0)
[18126.697763] ata1.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[18126.697778] ata1.01: SATA link down (SStatus 0 SControl 0)
[18126.704522] ata1.00: ACPI cmd ef/03:46:00:00:00:a0 (SET FEATURES) filtered out
[18126.711289] ata1.00: configured for UDMA/133
[18126.802527] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[18126.802531] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[18126.803610] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[18126.803641] ieee80211 phy0: brcms_ops_bss_info_changed: cqm change: threshold 0, hys 0 (implement)
[18126.803644] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[18126.958465] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting
[18126.981952] PM: resume of devices complete after 1780.988 msecs
[18126.983675] PM: Finishing wakeup.
[18126.983678] Restarting tasks ... done.
[18127.023223] video LNXVIDEO:00: Restoring backlight state
[18127.093941] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[18127.093962] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[18127.093974] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[18127.108259] cfg80211: Calling CRDA for country: GB
[18127.250656] ata2.01: failed to resume link (SControl 0)
[18127.262265] ata2.00: SATA link down (SStatus 4 SControl 0)
[18127.262282] ata2.01: SATA link down (SStatus 0 SControl 0)
[18129.108439] EXT4-fs (sda4): re-mounted. Opts: commit=600
[18129.146629] wlan0: authenticate with 00:18:39:50:07:f3 (try 1)
[18129.148357] wlan0: authenticated
[18129.148464] wlan0: associate with 00:18:39:50:07:f3 (try 1)
[18129.150750] wlan0: RX ReassocResp from 00:18:39:50:07:f3 (capab=0x421 status=0 aid=4)
[18129.150754] wlan0: associated
[18129.151595] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[18129.151601] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[18129.151627] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[18135.059725] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[18162.247310] usb 2-1.2: new high speed USB device number 5 using ehci_hcd
[18163.511599] asix 2-1.2:1.0: eth0: register 'asix' at usb-0000:00:1d.7-1.2, ASIX AX88772 USB 2.0 Ethernet, 00:50:b6:05:85:62
[18163.511689] usbcore: registered new interface driver asix
[18265.664802] asix 2-1.2:1.0: eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
[18265.926612] asix 2-1.2:1.0: eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1
[18276.231019] eth0: no IPv6 routers present
[18441.689390] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting
[18709.903968] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting
[18834.421401] usb 2-1.2: USB disconnect, device number 5
[18834.421936] asix 2-1.2:1.0: eth0: unregister 'asix' usb-0000:00:1d.7-1.2, ASIX AX88772 USB 2.0 Ethernet
[18874.040815] EXT4-fs (sda4): re-mounted. Opts: commit=0
[18874.519380] PM: Syncing filesystems ... done.
[18874.563917] PM: Preparing system for mem sleep
[18876.197233] Freezing user space processes ... (elapsed 0.01 seconds) done.
[18876.210104] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
[18876.223431] PM: Entering mem sleep
[18876.223470] Suspending console(s) (use no_console_suspend to debug)
[18876.227683] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[18876.228922] uhci_hcd 0000:00:1d.0: PCI INT B disabled
[18876.228992] sd 0:0:0:0: [sda] Stopping disk
[18876.229000] brcmsmac 0000:02:00.0: PCI INT A disabled
[18876.229123] uhci_hcd 0000:00:1a.0: PCI INT B disabled
[18876.266741] ehci_hcd 0000:00:1d.7: PCI INT A disabled
[18876.280056] ehci_hcd 0000:00:1a.7: PCI INT A disabled
[18876.330159] snd_hda_intel 0000:00:1b.0: PCI INT A disabled
[18877.871485] ata_piix 0000:00:1f.2: PCI INT B disabled
[18877.882519] PM: suspend of devices complete after 1659.100 msecs
[18877.922560] PM: late suspend of devices complete after 40.056 msecs
[18877.922874] ACPI: Preparing to enter system sleep state S3
[18877.949200] PM: Saving platform NVS memory
[18877.949793] Disabling non-boot CPUs ...
[18877.953357] CPU 1 is now offline
[18877.956421] CPU 2 is now offline
[18877.959261] CPU 3 is now offline
[18877.959264] lockdep: fixing up alternatives.
[18877.959891] Extended CMOS year: 2000
[18877.960297] ACPI: Low-level resume complete
[18877.960350] PM: Restoring platform NVS memory
[18877.960663] Extended CMOS year: 2000
[18877.960683] Enabling non-boot CPUs ...
[18877.967643] lockdep: fixing up alternatives.
[18877.967648] Booting Node 0 Processor 1 APIC 0x2
[18877.967650] smpboot cpu 1: start_ip = 9a000
[18877.978866] Calibrating delay loop (skipped) already calibrated this CPU
[18878.003347] Switched to NOHz mode on CPU #1
[18878.003956] NMI watchdog enabled, takes one hw-pmu counter.
[18878.007855] CPU1 is up
[18878.014129] lockdep: fixing up alternatives.
[18878.014134] Booting Node 0 Processor 2 APIC 0x1
[18878.014136] smpboot cpu 2: start_ip = 9a000
[18878.025248] Calibrating delay loop (skipped) already calibrated this CPU
[18878.046385] Switched to NOHz mode on CPU #2
[18878.046395] NMI watchdog enabled, takes one hw-pmu counter.
[18878.048001] CPU2 is up
[18878.052071] lockdep: fixing up alternatives.
[18878.052077] Booting Node 0 Processor 3 APIC 0x3
[18878.052079] smpboot cpu 3: start_ip = 9a000
[18878.063290] Calibrating delay loop (skipped) already calibrated this CPU
[18878.086603] Switched to NOHz mode on CPU #3
[18878.087613] NMI watchdog enabled, takes one hw-pmu counter.
[18878.089322] CPU3 is up
[18878.092691] ACPI: Waking up from system sleep state S3
[18878.593062] pcieport 0000:00:01.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[18878.593074] pcieport 0000:00:01.0: restoring config space at offset 0x9 (was 0x1fff1, writing 0xa891a4a1)
[18878.593079] pcieport 0000:00:01.0: restoring config space at offset 0x8 (was 0xfff0, writing 0xa490a070)
[18878.593084] pcieport 0000:00:01.0: restoring config space at offset 0x7 (was 0x200000f0, writing 0x3030)
[18878.593092] pcieport 0000:00:01.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[18878.593098] pcieport 0000:00:01.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[18878.593136] i915 0000:00:02.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[18878.593153] i915 0000:00:02.0: restoring config space at offset 0x1 (was 0x900007, writing 0x900407)
[18878.593196] mei 0000:00:16.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[18878.593226] mei 0000:00:16.0: restoring config space at offset 0x4 (was 0xfed1b004, writing 0xa0607104)
[18878.593269] uhci_hcd 0000:00:1a.0: restoring config space at offset 0xf (was 0x200, writing 0x20a)
[18878.593290] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x8 (was 0x1, writing 0x2141)
[18878.593312] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[18878.593355] ehci_hcd 0000:00:1a.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[18878.593386] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606c00)
[18878.593398] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[18878.593452] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[18878.593482] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0600004)
[18878.593490] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[18878.593499] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100002)
[18878.593558] pcieport 0000:00:1c.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[18878.593577] pcieport 0000:00:1c.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[18878.593584] pcieport 0000:00:1c.0: restoring config space at offset 0x8 (was 0x0, writing 0xa050a050)
[18878.593592] pcieport 0000:00:1c.0: restoring config space at offset 0x7 (was 0x20000000, writing 0x200000f0)
[18878.593599] pcieport 0000:00:1c.0: restoring config space at offset 0x6 (was 0x0, writing 0x10100)
[18878.593611] pcieport 0000:00:1c.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[18878.593621] pcieport 0000:00:1c.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[18878.593690] pcieport 0000:00:1c.1: restoring config space at offset 0xf (was 0x200, writing 0x2ff)
[18878.593710] pcieport 0000:00:1c.1: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[18878.593718] pcieport 0000:00:1c.1: restoring config space at offset 0x8 (was 0x0, writing 0xa040a040)
[18878.593725] pcieport 0000:00:1c.1: restoring config space at offset 0x7 (was 0x20000000, writing 0x200000f0)
[18878.593733] pcieport 0000:00:1c.1: restoring config space at offset 0x6 (was 0x0, writing 0x20200)
[18878.593745] pcieport 0000:00:1c.1: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[18878.593755] pcieport 0000:00:1c.1: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[18878.593807] uhci_hcd 0000:00:1d.0: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[18878.593828] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x8 (was 0x1, writing 0x20e1)
[18878.593849] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[18878.593891] ehci_hcd 0000:00:1d.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[18878.593922] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606800)
[18878.593933] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[18878.594043] ata_piix 0000:00:1f.2: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[18878.594064] ata_piix 0000:00:1f.2: restoring config space at offset 0x8 (was 0x1, writing 0x2061)
[18878.594071] ata_piix 0000:00:1f.2: restoring config space at offset 0x7 (was 0x1, writing 0x2179)
[18878.594079] ata_piix 0000:00:1f.2: restoring config space at offset 0x6 (was 0x1, writing 0x2161)
[18878.594086] ata_piix 0000:00:1f.2: restoring config space at offset 0x5 (was 0x1, writing 0x217d)
[18878.594093] ata_piix 0000:00:1f.2: restoring config space at offset 0x4 (was 0x1, writing 0x2169)
[18878.594105] ata_piix 0000:00:1f.2: restoring config space at offset 0x1 (was 0x2b00000, writing 0x2b00007)
[18878.594134] i801_smbus 0000:00:1f.3: restoring config space at offset 0xf (was 0x300, writing 0x30b)
[18878.594164] i801_smbus 0000:00:1f.3: restoring config space at offset 0x4 (was 0x4, writing 0xa0607004)
[18878.594176] i801_smbus 0000:00:1f.3: restoring config space at offset 0x1 (was 0x2800001, writing 0x2800003)
[18878.594220] pcieport 0000:03:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[18878.594225] pcieport 0000:03:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a070)
[18878.594231] pcieport 0000:03:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[18878.594236] pcieport 0000:03:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x670403)
[18878.594245] pcieport 0000:03:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[18878.594252] pcieport 0000:03:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[18878.594319] pcieport 0000:04:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[18878.594325] pcieport 0000:04:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa070a070)
[18878.594330] pcieport 0000:04:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[18878.594336] pcieport 0000:04:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x50504)
[18878.594344] pcieport 0000:04:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[18878.594351] pcieport 0000:04:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[18878.594420] pcieport 0000:04:03.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[18878.594425] pcieport 0000:04:03.0: restoring config space at offset 0x8 (was 0x0, writing 0xa080a080)
[18878.594431] pcieport 0000:04:03.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[18878.594436] pcieport 0000:04:03.0: restoring config space at offset 0x6 (was 0x0, writing 0x360604)
[18878.594445] pcieport 0000:04:03.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[18878.594452] pcieport 0000:04:03.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[18878.594520] pcieport 0000:04:04.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[18878.594526] pcieport 0000:04:04.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a090)
[18878.594531] pcieport 0000:04:04.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[18878.594537] pcieport 0000:04:04.0: restoring config space at offset 0x6 (was 0x0, writing 0x673704)
[18878.594546] pcieport 0000:04:04.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[18878.594553] pcieport 0000:04:04.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[18878.594618] pci 0000:05:00.0: restoring config space at offset 0xf (was 0x1ff, writing 0x10b)
[18878.594641] pci 0000:05:00.0: restoring config space at offset 0x5 (was 0x0, writing 0xa0740000)
[18878.594647] pci 0000:05:00.0: restoring config space at offset 0x4 (was 0x0, writing 0xa0700000)
[18878.594653] pci 0000:05:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[18878.594661] pci 0000:05:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[18878.594788] brcmsmac 0000:02:00.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[18878.594848] brcmsmac 0000:02:00.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0400004)
[18878.594860] brcmsmac 0000:02:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[18878.594877] brcmsmac 0000:02:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[18878.595311] PM: early resume of devices complete after 2.391 msecs
[18878.596325] i915 0000:00:02.0: setting latency timer to 64
[18878.596357] uhci_hcd 0000:00:1a.0: PCI INT B -> GSI 21 (level, low) -> IRQ 21
[18878.596365] ehci_hcd 0000:00:1a.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[18878.596371] uhci_hcd 0000:00:1a.0: setting latency timer to 64
[18878.596380] ehci_hcd 0000:00:1a.7: setting latency timer to 64
[18878.596410] usb usb3: root hub lost power or was reset
[18878.596450] snd_hda_intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[18878.596458] uhci_hcd 0000:00:1d.0: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[18878.596464] snd_hda_intel 0000:00:1b.0: setting latency timer to 64
[18878.596471] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[18878.596505] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[18878.596513] usb usb4: root hub lost power or was reset
[18878.596525] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[18878.596552] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[18878.596565] ata_piix 0000:00:1f.2: setting latency timer to 64
[18878.596568] snd_hda_intel 0000:00:1b.0: irq 45 for MSI/MSI-X
[18878.596671] brcmsmac 0000:02:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[18878.596683] brcmsmac 0000:02:00.0: setting latency timer to 64
[18878.598462] sd 0:0:0:0: [sda] Starting disk
[18878.732349] Extended CMOS year: 2000
[18879.618881] ata2.00: failed to resume link (SControl 0)
[18879.938697] ata1.01: failed to resume link (SControl 0)
[18880.092007] ata1.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[18880.092022] ata1.01: SATA link down (SStatus 0 SControl 0)
[18880.098754] ata1.00: ACPI cmd ef/03:46:00:00:00:a0 (SET FEATURES) filtered out
[18880.105528] ata1.00: configured for UDMA/133
[18880.196671] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[18880.196676] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[18880.197719] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[18880.197745] ieee80211 phy0: brcms_ops_bss_info_changed: cqm change: threshold 0, hys 0 (implement)
[18880.197747] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[18880.329321] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[18880.329333] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[18880.329344] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[18880.332718] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting
[18880.356228] PM: resume of devices complete after 1760.991 msecs
[18880.358023] PM: Finishing wakeup.
[18880.358025] Restarting tasks ...
[18880.365079] cfg80211: Calling CRDA to update world regulatory domain
[18880.365282] done.
[18880.388337] video LNXVIDEO:00: Restoring backlight state
[18880.641636] ata2.01: failed to resume link (SControl 0)
[18880.653214] ata2.00: SATA link down (SStatus 4 SControl 0)
[18880.653232] ata2.01: SATA link down (SStatus 0 SControl 0)
[18882.180139] EXT4-fs (sda4): re-mounted. Opts: commit=600
[18882.402726] wlan0: authenticate with 00:21:04:10:d9:bb (try 1)
[18882.402915] wlan0: deauthenticating from 00:21:04:10:d9:bb by local choice (reason=2)
[18882.627293] wlan0: authenticate with 00:21:04:10:d9:bb (try 1)
[18882.827029] wlan0: authenticate with 00:21:04:10:d9:bb (try 2)
[18883.026905] wlan0: authenticate with 00:21:04:10:d9:bb (try 3)
[18883.226790] wlan0: authentication with 00:21:04:10:d9:bb timed out
[18894.337362] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[18894.536908] wlan0: direct probe to 00:21:04:10:d9:bb (try 2/3)
[18894.736785] wlan0: direct probe to 00:21:04:10:d9:bb (try 3/3)
[18894.936688] wlan0: direct probe to 00:21:04:10:d9:bb timed out
[18908.206003] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[18908.206508] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[18908.405541] wlan0: direct probe to 00:21:04:10:d9:bb (try 2/3)
[18908.605436] wlan0: direct probe to 00:21:04:10:d9:bb (try 3/3)
[18908.805308] wlan0: direct probe to 00:21:04:10:d9:bb timed out
[18915.784918] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[18915.984482] wlan0: direct probe to 00:21:04:10:d9:bb (try 2/3)
[18916.184360] wlan0: direct probe to 00:21:04:10:d9:bb (try 3/3)
[18916.384243] wlan0: direct probe to 00:21:04:10:d9:bb timed out
[18920.139060] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[18920.338632] wlan0: direct probe to 00:21:04:10:d9:bb (try 2/3)
[18920.538508] wlan0: direct probe to 00:21:04:10:d9:bb (try 3/3)
[18920.738395] wlan0: direct probe to 00:21:04:10:d9:bb timed out
[18927.078384] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[18927.078847] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[18927.277940] wlan0: direct probe to 00:21:04:10:d9:bb (try 2/3)
[18927.477826] wlan0: direct probe to 00:21:04:10:d9:bb (try 3/3)
[18927.677708] wlan0: direct probe to 00:21:04:10:d9:bb timed out
[18934.657325] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[18934.856891] wlan0: direct probe to 00:21:04:10:d9:bb (try 2/3)
[18935.056766] wlan0: direct probe to 00:21:04:10:d9:bb (try 3/3)
[18935.256655] wlan0: direct probe to 00:21:04:10:d9:bb timed out
[18940.551883] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[18940.551889] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[18940.566083] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[18940.566522] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[18940.566538] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[18940.763464] wlan0: direct probe to 00:21:04:10:d9:bb (try 2/3)
[18940.963337] wlan0: direct probe to 00:21:04:10:d9:bb (try 3/3)
[18941.163226] wlan0: direct probe to 00:21:04:10:d9:bb timed out
[18951.594156] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[18951.793730] wlan0: direct probe to 00:21:04:10:d9:bb (try 2/3)
[18951.993624] wlan0: direct probe to 00:21:04:10:d9:bb (try 3/3)
[18952.193499] wlan0: direct probe to 00:21:04:10:d9:bb timed out
[18979.760047] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[18979.760053] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[18979.778557] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[18979.779026] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[18981.858627] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[18981.858633] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[18981.872855] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[18981.877545] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[18981.966584] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[18981.966857] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[18982.166128] wlan0: direct probe to 00:21:04:10:d9:bb (try 2/3)
[18982.366015] wlan0: direct probe to 00:21:04:10:d9:bb (try 3/3)
[18982.565898] wlan0: direct probe to 00:21:04:10:d9:bb timed out
[18982.585492] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18982.687714] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18982.790058] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18982.995738] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18983.097084] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18983.199430] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18983.301770] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18983.404124] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18983.506460] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18983.608805] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18983.711148] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18983.813493] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18983.916049] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18984.018180] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18984.277328] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18984.334834] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18986.672272] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18986.774612] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18986.846995] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[18992.906875] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[18993.106462] wlan0: direct probe to 00:21:04:10:d9:bb (try 2/3)
[18993.306342] wlan0: direct probe to 00:21:04:10:d9:bb (try 3/3)
[18993.506232] wlan0: direct probe to 00:21:04:10:d9:bb timed out
[19004.124931] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[19004.124936] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[19004.139206] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19004.139678] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[19006.200606] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[19006.200612] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[19006.214995] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19006.219730] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[19006.308884] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[19006.309207] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[19006.508706] wlan0: direct probe to 00:21:04:10:d9:bb (try 2/3)
[19006.708580] wlan0: direct probe to 00:21:04:10:d9:bb (try 3/3)
[19006.908458] wlan0: direct probe to 00:21:04:10:d9:bb timed out
[19010.348616] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[19010.348938] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[19010.353191] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[19010.358883] wlan0: authenticated
[19010.358996] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[19010.367351] wlan0: RX AssocResp from 00:14:6c:67:9c:32 (capab=0x611 status=0 aid=2)
[19010.367355] wlan0: associated
[19010.368199] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19010.368205] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[19010.368231] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[19010.368635] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[19020.445578] wlan0: disassociating from 00:14:6c:67:9c:32 by local choice (reason=3)
[19020.446151] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19020.446164] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[19020.446176] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[19020.611246] cfg80211: Calling CRDA for country: GB
[19020.611549] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[19021.173492] wlan0: no IPv6 routers present
[19022.549741] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[19022.550151] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[19022.556154] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[19022.558342] wlan0: authenticated
[19022.558448] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[19022.567787] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=3)
[19022.567791] wlan0: associated
[19022.568648] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19022.568653] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[19022.568679] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[19032.650049] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19032.650075] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[19032.650088] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[19032.650107] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[19032.786922] cfg80211: Calling CRDA to update world regulatory domain
[19034.725992] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[19034.727848] wlan0: authenticated
[19034.727956] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[19034.737851] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=4)
[19034.737856] wlan0: associated
[19034.738698] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19034.738704] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[19034.738729] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[19035.564163] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19035.564184] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[19035.564200] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[19035.564213] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[19035.728472] cfg80211: Calling CRDA to update world regulatory domain
[19035.729183] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[19039.808412] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[19039.808417] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[19039.822610] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19039.827253] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[19041.909159] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[19041.909165] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[19041.912642] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19041.913084] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[19046.006080] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[19046.006388] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[19046.012530] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[19046.014703] wlan0: authenticated
[19046.014816] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[19046.022109] wlan0: RX AssocResp from 00:14:6c:67:9c:32 (capab=0x611 status=0 aid=5)
[19046.022114] wlan0: associated
[19046.023190] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19046.023196] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[19046.023223] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[19046.023611] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[19056.104437] wlan0: disassociating from 00:14:6c:67:9c:32 by local choice (reason=3)
[19056.105160] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19056.105173] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[19056.105185] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[19056.247096] cfg80211: Calling CRDA to update world regulatory domain
[19056.247464] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[19056.473042] wlan0: no IPv6 routers present
[19058.185736] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[19058.186148] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[19058.192167] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[19058.194073] wlan0: authenticated
[19058.194178] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[19058.203915] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=6)
[19058.203919] wlan0: associated
[19058.204761] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19058.204766] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[19058.204792] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[19066.141044] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[19068.660333] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19068.660347] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[19068.660360] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[19068.660368] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[19068.822656] cfg80211: Calling CRDA to update world regulatory domain
[19070.762029] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[19070.762186] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[19070.768187] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[19070.770083] wlan0: authenticated
[19070.770190] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[19070.779559] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=7)
[19070.779564] wlan0: associated
[19070.780409] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19070.780415] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[19070.780441] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[19080.858910] wlan0: disassociating from 00:14:6c:67:9c:32 by local choice (reason=3)
[19080.859470] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19080.859483] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[19080.859495] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[19080.999413] cfg80211: Calling CRDA to update world regulatory domain
[19081.000396] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[19082.941330] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[19082.943233] wlan0: authenticated
[19082.943340] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[19082.952689] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=8)
[19082.952694] wlan0: associated
[19082.953540] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19082.953546] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[19082.953572] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[19088.285095] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[19093.036787] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19093.036801] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[19093.036813] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[19093.036821] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[19093.171883] cfg80211: Calling CRDA to update world regulatory domain
[19095.110941] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[19095.113015] wlan0: authenticated
[19095.113122] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[19095.122746] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=9)
[19095.122751] wlan0: associated
[19095.123592] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19095.123598] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[19095.123622] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[19103.829198] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[19105.208773] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19105.208787] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[19105.208800] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[19105.208808] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[19105.344820] cfg80211: Calling CRDA to update world regulatory domain
[19107.283882] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[19107.288068] wlan0: authenticated
[19107.288180] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[19107.297929] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=10)
[19107.297934] wlan0: associated
[19107.298788] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19107.298794] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[19107.298820] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[19117.377826] wlan0: disassociating from 00:14:6c:67:9c:32 by local choice (reason=3)
[19117.378387] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19117.378400] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[19117.378412] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[19117.514928] cfg80211: Calling CRDA to update world regulatory domain
[19117.515237] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[19119.453528] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[19119.455380] wlan0: authenticated
[19119.455487] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[19119.465148] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=11)
[19119.465153] wlan0: associated
[19119.465997] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19119.466003] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[19119.466029] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[19130.555157] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19130.555172] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[19130.555184] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[19130.555192] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[19130.716766] cfg80211: Calling CRDA to update world regulatory domain
[19132.655853] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[19132.658648] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[19132.659412] wlan0: authenticated
[19132.668556] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[19132.677794] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=12)
[19132.677798] wlan0: associated
[19132.678638] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[19132.678644] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[19132.678669] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[19141.607286] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[20863.784327] wlan0: deauthenticated from 00:14:6c:67:9c:32 (Reason: 1)
[20863.784881] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[20863.784900] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[20863.784911] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[20863.946122] cfg80211: Calling CRDA to update world regulatory domain
[20865.931627] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[20866.131185] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[20866.331067] wlan0: authenticate with 00:14:6c:67:9c:32 (try 3)
[20866.530945] wlan0: authentication with 00:14:6c:67:9c:32 timed out
[20872.874185] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[20873.073837] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[20873.141853] wlan0: authenticated
[20873.141967] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[20873.340333] wlan0: associate with 00:14:6c:67:9c:32 (try 2)
[20873.540230] wlan0: associate with 00:14:6c:67:9c:32 (try 3)
[20873.740107] wlan0: association with 00:14:6c:67:9c:32 timed out
[20879.905578] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20879.905784] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20880.102660] wlan0: direct probe responded
[20880.126409] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[20880.326293] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[20880.526182] wlan0: authenticate with 00:14:6c:67:9c:32 (try 3)
[20880.726054] wlan0: authentication with 00:14:6c:67:9c:32 timed out
[20887.692329] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[20887.746863] wlan0: authenticated
[20887.747040] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[20887.945208] wlan0: associate with 00:14:6c:67:9c:32 (try 2)
[20888.145090] wlan0: associate with 00:14:6c:67:9c:32 (try 3)
[20888.344973] wlan0: association with 00:14:6c:67:9c:32 timed out
[20891.931409] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20891.931567] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20891.967049] wlan0: direct probe responded
[20892.012854] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[20892.212741] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[20892.412631] wlan0: authenticate with 00:14:6c:67:9c:32 (try 3)
[20892.612503] wlan0: authentication with 00:14:6c:67:9c:32 timed out
[20899.583839] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20899.781701] wlan0: direct probe to 00:14:6c:67:9c:32 (try 2/3)
[20899.782916] wlan0: direct probe responded
[20899.821664] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[20900.021544] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[20900.221439] wlan0: authenticate with 00:14:6c:67:9c:32 (try 3)
[20900.421350] wlan0: authentication with 00:14:6c:67:9c:32 timed out
[20903.871131] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20903.871287] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20904.069204] wlan0: direct probe to 00:14:6c:67:9c:32 (try 2/3)
[20904.269085] wlan0: direct probe to 00:14:6c:67:9c:32 (try 3/3)
[20904.468965] wlan0: direct probe to 00:14:6c:67:9c:32 timed out
[20911.443691] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20911.641479] wlan0: direct probe to 00:14:6c:67:9c:32 (try 2/3)
[20911.841364] wlan0: direct probe to 00:14:6c:67:9c:32 (try 3/3)
[20912.041246] wlan0: direct probe to 00:14:6c:67:9c:32 timed out
[20922.747178] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[20922.944930] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[20923.144813] wlan0: authenticate with 00:14:6c:67:9c:32 (try 3)
[20923.344699] wlan0: authentication with 00:14:6c:67:9c:32 timed out
[20929.687953] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20929.688229] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20929.887583] wlan0: direct probe to 00:14:6c:67:9c:32 (try 2/3)
[20930.087459] wlan0: direct probe to 00:14:6c:67:9c:32 (try 3/3)
[20930.287344] wlan0: direct probe to 00:14:6c:67:9c:32 timed out
[20937.253539] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20937.453226] wlan0: direct probe to 00:14:6c:67:9c:32 (try 2/3)
[20937.653085] wlan0: direct probe to 00:14:6c:67:9c:32 (try 3/3)
[20937.852968] wlan0: direct probe to 00:14:6c:67:9c:32 timed out
[20941.621093] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20941.820665] wlan0: direct probe to 00:14:6c:67:9c:32 (try 2/3)
[20942.020556] wlan0: direct probe to 00:14:6c:67:9c:32 (try 3/3)
[20942.220437] wlan0: direct probe to 00:14:6c:67:9c:32 timed out
[20962.520725] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20962.521094] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20962.718535] wlan0: direct probe to 00:14:6c:67:9c:32 (try 2/3)
[20962.918435] wlan0: direct probe to 00:14:6c:67:9c:32 (try 3/3)
[20963.118320] wlan0: direct probe to 00:14:6c:67:9c:32 timed out
[20977.115622] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20977.115893] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20977.313429] wlan0: direct probe to 00:14:6c:67:9c:32 (try 2/3)
[20977.513320] wlan0: direct probe to 00:14:6c:67:9c:32 (try 3/3)
[20977.713192] wlan0: direct probe to 00:14:6c:67:9c:32 timed out
[20984.686072] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[20984.885705] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[20985.085600] wlan0: authenticate with 00:14:6c:67:9c:32 (try 3)
[20985.285484] wlan0: authentication with 00:14:6c:67:9c:32 timed out
[20989.050213] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20989.249862] wlan0: direct probe to 00:14:6c:67:9c:32 (try 2/3)
[20989.449728] wlan0: direct probe to 00:14:6c:67:9c:32 (try 3/3)
[20989.649621] wlan0: direct probe to 00:14:6c:67:9c:32 timed out
[20995.989540] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[20996.189173] wlan0: direct probe to 00:14:6c:67:9c:32 (try 2/3)
[20996.389057] wlan0: direct probe to 00:14:6c:67:9c:32 (try 3/3)
[20996.588935] wlan0: direct probe to 00:14:6c:67:9c:32 timed out
[21004.366437] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[21004.564319] wlan0: direct probe to 00:14:6c:67:9c:32 (try 2/3)
[21004.764204] wlan0: direct probe to 00:14:6c:67:9c:32 (try 3/3)
[21004.964077] wlan0: direct probe to 00:14:6c:67:9c:32 timed out
[21007.927736] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[21008.125584] wlan0: direct probe to 00:14:6c:67:9c:32 (try 2/3)
[21008.325414] wlan0: direct probe to 00:14:6c:67:9c:32 (try 3/3)
[21008.525348] wlan0: direct probe to 00:14:6c:67:9c:32 timed out
[21015.586642] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[21015.784470] wlan0: direct probe to 00:14:6c:67:9c:32 (try 2/3)
[21015.984354] wlan0: direct probe to 00:14:6c:67:9c:32 (try 3/3)
[21016.184234] wlan0: direct probe to 00:14:6c:67:9c:32 timed out
[21019.864252] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[21019.864530] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[21020.061996] wlan0: direct probe to 00:14:6c:67:9c:32 (try 2/3)
[21020.261873] wlan0: direct probe to 00:14:6c:67:9c:32 (try 3/3)
[21020.461763] wlan0: direct probe to 00:14:6c:67:9c:32 timed out
[21027.429759] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21027.431630] wlan0: authenticated
[21027.435453] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[21027.446370] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=3)
[21027.446374] wlan0: associated
[21027.447272] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21027.447277] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[21027.447303] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[21037.105668] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[21037.566621] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21037.566642] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[21037.566653] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[21037.566661] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21037.698495] cfg80211: Calling CRDA to update world regulatory domain
[21039.637600] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21039.638001] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[21039.644050] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21039.645943] wlan0: authenticated
[21039.646051] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[21039.660631] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=4)
[21039.660635] wlan0: associated
[21039.661514] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21039.661520] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[21039.661546] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[21049.751742] wlan0: disassociating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21049.752332] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21049.752345] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[21049.752357] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[21049.891909] cfg80211: Calling CRDA to update world regulatory domain
[21049.892296] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21051.830542] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21051.830876] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[21051.837004] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21051.838732] wlan0: authenticated
[21051.838844] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[21051.852525] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=5)
[21051.852529] wlan0: associated
[21051.853398] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21051.853404] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[21051.853429] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[21061.943745] wlan0: disassociating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21061.944347] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21061.944360] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[21061.944372] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[21062.084837] cfg80211: Calling CRDA to update world regulatory domain
[21062.085139] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21064.026772] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21064.028633] wlan0: authenticated
[21064.028741] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[21064.038109] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=6)
[21064.038114] wlan0: associated
[21064.038971] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21064.038977] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[21064.039003] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[21073.254690] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[21074.118979] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21074.118994] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[21074.119006] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[21074.119014] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21074.287305] cfg80211: Calling CRDA to update world regulatory domain
[21076.226577] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21076.226962] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[21076.232845] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21076.234777] wlan0: authenticated
[21076.234885] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[21076.432661] wlan0: associate with 00:14:6c:67:9c:32 (try 2)
[21076.525028] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=7)
[21076.525033] wlan0: associated
[21076.525921] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21076.525929] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[21076.525959] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[21085.677507] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[21086.621920] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21086.621934] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[21086.621947] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[21086.621955] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21086.766733] cfg80211: Calling CRDA to update world regulatory domain
[21088.705818] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21088.707702] wlan0: authenticated
[21088.707810] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[21088.717057] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=8)
[21088.717061] wlan0: associated
[21088.717916] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21088.717924] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[21088.717953] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[21098.733405] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[21098.797842] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21098.797856] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[21098.797869] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[21098.797877] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21098.972995] cfg80211: Calling CRDA to update world regulatory domain
[21100.912082] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21100.914874] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[21100.918136] wlan0: authenticated
[21100.920091] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[21100.929680] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=9)
[21100.929684] wlan0: associated
[21100.930540] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21100.930546] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[21100.930572] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[21110.063370] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[21198.256706] EXT4-fs (sda4): re-mounted. Opts: commit=0
[21198.529361] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[21199.621660] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21199.621683] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[21199.621695] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[21199.621704] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21199.748003] cfg80211: Calling CRDA to update world regulatory domain
[21200.277410] PM: Syncing filesystems ... done.
[21200.322272] PM: Preparing system for mem sleep
[21201.917061] Freezing user space processes ... (elapsed 0.01 seconds) done.
[21201.929961] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
[21201.943277] PM: Entering mem sleep
[21201.943317] Suspending console(s) (use no_console_suspend to debug)
[21201.945436] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[21201.946760] sd 0:0:0:0: [sda] Stopping disk
[21201.946915] brcmsmac 0000:02:00.0: PCI INT A disabled
[21201.947308] uhci_hcd 0000:00:1d.0: PCI INT B disabled
[21201.947365] snd_hda_intel 0000:00:1b.0: PCI INT A disabled
[21201.947455] uhci_hcd 0000:00:1a.0: PCI INT B disabled
[21201.983336] ehci_hcd 0000:00:1d.7: PCI INT A disabled
[21201.996581] ehci_hcd 0000:00:1a.7: PCI INT A disabled
[21203.587190] ata_piix 0000:00:1f.2: PCI INT B disabled
[21203.599063] PM: suspend of devices complete after 1655.794 msecs
[21203.639081] PM: late suspend of devices complete after 40.027 msecs
[21203.639395] ACPI: Preparing to enter system sleep state S3
[21203.665757] PM: Saving platform NVS memory
[21203.666380] Disabling non-boot CPUs ...
[21203.669825] CPU 1 is now offline
[21203.672914] CPU 2 is now offline
[21203.675792] CPU 3 is now offline
[21203.675795] lockdep: fixing up alternatives.
[21203.676408] Extended CMOS year: 2000
[21203.676814] ACPI: Low-level resume complete
[21203.676867] PM: Restoring platform NVS memory
[21203.677181] Extended CMOS year: 2000
[21203.677202] Enabling non-boot CPUs ...
[21203.684156] lockdep: fixing up alternatives.
[21203.684162] Booting Node 0 Processor 1 APIC 0x2
[21203.684164] smpboot cpu 1: start_ip = 9a000
[21203.695374] Calibrating delay loop (skipped) already calibrated this CPU
[21203.716580] Switched to NOHz mode on CPU #1
[21203.724120] NMI watchdog enabled, takes one hw-pmu counter.
[21203.727978] CPU1 is up
[21203.734575] lockdep: fixing up alternatives.
[21203.734580] Booting Node 0 Processor 2 APIC 0x1
[21203.734582] smpboot cpu 2: start_ip = 9a000
[21203.745770] Calibrating delay loop (skipped) already calibrated this CPU
[21203.766247] Switched to NOHz mode on CPU #2
[21203.766912] NMI watchdog enabled, takes one hw-pmu counter.
[21203.768156] CPU2 is up
[21203.771873] lockdep: fixing up alternatives.
[21203.771880] Booting Node 0 Processor 3 APIC 0x3
[21203.771882] smpboot cpu 3: start_ip = 9a000
[21203.783093] Calibrating delay loop (skipped) already calibrated this CPU
[21203.806436] Switched to NOHz mode on CPU #3
[21203.808118] NMI watchdog enabled, takes one hw-pmu counter.
[21203.809720] CPU3 is up
[21203.813369] ACPI: Waking up from system sleep state S3
[21204.316254] pcieport 0000:00:01.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[21204.316265] pcieport 0000:00:01.0: restoring config space at offset 0x9 (was 0x1fff1, writing 0xa891a4a1)
[21204.316270] pcieport 0000:00:01.0: restoring config space at offset 0x8 (was 0xfff0, writing 0xa490a070)
[21204.316275] pcieport 0000:00:01.0: restoring config space at offset 0x7 (was 0x200000f0, writing 0x20003030)
[21204.316283] pcieport 0000:00:01.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[21204.316289] pcieport 0000:00:01.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[21204.316327] i915 0000:00:02.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[21204.316344] i915 0000:00:02.0: restoring config space at offset 0x1 (was 0x900007, writing 0x900407)
[21204.316387] mei 0000:00:16.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[21204.316417] mei 0000:00:16.0: restoring config space at offset 0x4 (was 0xfed1b004, writing 0xa0607104)
[21204.316459] uhci_hcd 0000:00:1a.0: restoring config space at offset 0xf (was 0x200, writing 0x20a)
[21204.316480] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x8 (was 0x1, writing 0x2141)
[21204.316502] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[21204.316545] ehci_hcd 0000:00:1a.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[21204.316575] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606c00)
[21204.316587] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[21204.316642] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[21204.316672] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0600004)
[21204.316679] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[21204.316689] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100002)
[21204.316747] pcieport 0000:00:1c.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[21204.316766] pcieport 0000:00:1c.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[21204.316774] pcieport 0000:00:1c.0: restoring config space at offset 0x8 (was 0x0, writing 0xa050a050)
[21204.316781] pcieport 0000:00:1c.0: restoring config space at offset 0x7 (was 0x20000000, writing 0xf0)
[21204.316788] pcieport 0000:00:1c.0: restoring config space at offset 0x6 (was 0x0, writing 0x10100)
[21204.316801] pcieport 0000:00:1c.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[21204.316810] pcieport 0000:00:1c.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[21204.316879] pcieport 0000:00:1c.1: restoring config space at offset 0xf (was 0x200, writing 0x2ff)
[21204.316898] pcieport 0000:00:1c.1: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[21204.316906] pcieport 0000:00:1c.1: restoring config space at offset 0x8 (was 0x0, writing 0xa040a040)
[21204.316913] pcieport 0000:00:1c.1: restoring config space at offset 0x7 (was 0x20000000, writing 0xf0)
[21204.316920] pcieport 0000:00:1c.1: restoring config space at offset 0x6 (was 0x0, writing 0x20200)
[21204.316932] pcieport 0000:00:1c.1: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[21204.316942] pcieport 0000:00:1c.1: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[21204.316993] uhci_hcd 0000:00:1d.0: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[21204.317014] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x8 (was 0x1, writing 0x20e1)
[21204.317035] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[21204.317077] ehci_hcd 0000:00:1d.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[21204.317108] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606800)
[21204.317119] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[21204.317229] ata_piix 0000:00:1f.2: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[21204.317250] ata_piix 0000:00:1f.2: restoring config space at offset 0x8 (was 0x1, writing 0x2061)
[21204.317257] ata_piix 0000:00:1f.2: restoring config space at offset 0x7 (was 0x1, writing 0x2179)
[21204.317265] ata_piix 0000:00:1f.2: restoring config space at offset 0x6 (was 0x1, writing 0x2161)
[21204.317272] ata_piix 0000:00:1f.2: restoring config space at offset 0x5 (was 0x1, writing 0x217d)
[21204.317279] ata_piix 0000:00:1f.2: restoring config space at offset 0x4 (was 0x1, writing 0x2169)
[21204.317291] ata_piix 0000:00:1f.2: restoring config space at offset 0x1 (was 0x2b00000, writing 0x2b00007)
[21204.317320] i801_smbus 0000:00:1f.3: restoring config space at offset 0xf (was 0x300, writing 0x30b)
[21204.317350] i801_smbus 0000:00:1f.3: restoring config space at offset 0x4 (was 0x4, writing 0xa0607004)
[21204.317362] i801_smbus 0000:00:1f.3: restoring config space at offset 0x1 (was 0x2800001, writing 0x2800003)
[21204.317406] pcieport 0000:03:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[21204.317412] pcieport 0000:03:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a070)
[21204.317417] pcieport 0000:03:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[21204.317423] pcieport 0000:03:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x670403)
[21204.317431] pcieport 0000:03:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[21204.317438] pcieport 0000:03:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[21204.317505] pcieport 0000:04:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[21204.317511] pcieport 0000:04:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa070a070)
[21204.317516] pcieport 0000:04:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[21204.317522] pcieport 0000:04:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x50504)
[21204.317530] pcieport 0000:04:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[21204.317538] pcieport 0000:04:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[21204.317606] pcieport 0000:04:03.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[21204.317611] pcieport 0000:04:03.0: restoring config space at offset 0x8 (was 0x0, writing 0xa080a080)
[21204.317617] pcieport 0000:04:03.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[21204.317623] pcieport 0000:04:03.0: restoring config space at offset 0x6 (was 0x0, writing 0x360604)
[21204.317631] pcieport 0000:04:03.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[21204.317638] pcieport 0000:04:03.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[21204.317707] pcieport 0000:04:04.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[21204.317712] pcieport 0000:04:04.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a090)
[21204.317718] pcieport 0000:04:04.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[21204.317723] pcieport 0000:04:04.0: restoring config space at offset 0x6 (was 0x0, writing 0x673704)
[21204.317732] pcieport 0000:04:04.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[21204.317739] pcieport 0000:04:04.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[21204.317804] pci 0000:05:00.0: restoring config space at offset 0xf (was 0x1ff, writing 0x10b)
[21204.317827] pci 0000:05:00.0: restoring config space at offset 0x5 (was 0x0, writing 0xa0740000)
[21204.317833] pci 0000:05:00.0: restoring config space at offset 0x4 (was 0x0, writing 0xa0700000)
[21204.317840] pci 0000:05:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[21204.317848] pci 0000:05:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[21204.317974] brcmsmac 0000:02:00.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[21204.318033] brcmsmac 0000:02:00.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0400004)
[21204.318045] brcmsmac 0000:02:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[21204.318062] brcmsmac 0000:02:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[21204.318492] PM: early resume of devices complete after 2.379 msecs
[21204.319483] i915 0000:00:02.0: setting latency timer to 64
[21204.319512] uhci_hcd 0000:00:1a.0: PCI INT B -> GSI 21 (level, low) -> IRQ 21
[21204.319519] ehci_hcd 0000:00:1a.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[21204.319529] uhci_hcd 0000:00:1a.0: setting latency timer to 64
[21204.319533] ehci_hcd 0000:00:1a.7: setting latency timer to 64
[21204.319568] usb usb3: root hub lost power or was reset
[21204.319607] snd_hda_intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[21204.319619] uhci_hcd 0000:00:1d.0: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[21204.319622] snd_hda_intel 0000:00:1b.0: setting latency timer to 64
[21204.319631] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[21204.319660] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[21204.319671] usb usb4: root hub lost power or was reset
[21204.319684] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[21204.319710] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[21204.319721] ata_piix 0000:00:1f.2: setting latency timer to 64
[21204.319726] snd_hda_intel 0000:00:1b.0: irq 45 for MSI/MSI-X
[21204.319829] brcmsmac 0000:02:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[21204.319843] brcmsmac 0000:02:00.0: setting latency timer to 64
[21204.321617] sd 0:0:0:0: [sda] Starting disk
[21204.458464] Extended CMOS year: 2000
[21205.342072] ata2.00: failed to resume link (SControl 0)
[21205.661892] ata1.01: failed to resume link (SControl 0)
[21205.815200] ata1.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[21205.815214] ata1.01: SATA link down (SStatus 0 SControl 0)
[21205.821950] ata1.00: ACPI cmd ef/03:46:00:00:00:a0 (SET FEATURES) filtered out
[21205.828714] ata1.00: configured for UDMA/133
[21206.009267] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting
[21206.032739] PM: resume of devices complete after 1714.316 msecs
[21206.034355] PM: Finishing wakeup.
[21206.034357] Restarting tasks ... done.
[21206.062400] video LNXVIDEO:00: Restoring backlight state
[21206.364849] ata2.01: failed to resume link (SControl 0)
[21206.376479] ata2.00: SATA link down (SStatus 4 SControl 0)
[21206.376499] ata2.01: SATA link down (SStatus 0 SControl 0)
[21208.342832] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[21208.342838] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[21208.346292] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21208.346741] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[21210.390821] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[21210.390828] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[21210.394315] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21210.394795] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[21214.493813] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21214.495658] wlan0: authenticated
[21214.495774] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[21214.503728] wlan0: RX AssocResp from 00:14:6c:67:9c:32 (capab=0x611 status=0 aid=10)
[21214.503732] wlan0: associated
[21214.504604] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21214.504610] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[21214.504634] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[21214.505000] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[21224.582712] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21224.582727] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[21224.582740] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[21224.582748] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21224.744181] cfg80211: Calling CRDA to update world regulatory domain
[21224.804095] wlan0: no IPv6 routers present
[21226.683295] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21226.686094] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[21226.687083] wlan0: authenticated
[21226.694877] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[21226.708482] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=11)
[21226.708486] wlan0: associated
[21226.709369] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21226.709374] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[21226.709400] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[21227.636995] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21227.637022] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[21227.637038] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[21227.637051] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21227.782536] cfg80211: Calling CRDA to update world regulatory domain
[21227.783280] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[21228.737983] EXT4-fs (sda4): re-mounted. Opts: commit=600
[21237.757137] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[21237.757143] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[21237.760639] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21237.761044] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[21239.843104] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[21239.843109] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[21239.846594] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21239.846998] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[21243.940007] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21243.940320] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[21243.949767] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21243.952044] wlan0: authenticated
[21243.952157] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[21243.959427] wlan0: RX AssocResp from 00:14:6c:67:9c:32 (capab=0x611 status=0 aid=12)
[21243.959432] wlan0: associated
[21243.960387] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21243.960393] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[21243.960418] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[21243.960829] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[21254.035558] wlan0: disassociating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21254.036181] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21254.036195] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[21254.036207] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[21254.184338] cfg80211: Calling CRDA to update world regulatory domain
[21254.184685] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21254.919980] wlan0: no IPv6 routers present
[21256.122946] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21256.124836] wlan0: authenticated
[21256.124946] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[21256.134331] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=13)
[21256.134335] wlan0: associated
[21256.135224] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21256.135230] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[21256.135255] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[21262.335923] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[21266.250707] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21266.250722] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[21266.250735] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[21266.250742] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21266.386773] cfg80211: Calling CRDA to update world regulatory domain
[21268.332515] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21268.335220] wlan0: authenticated
[21268.335327] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[21268.347279] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=14)
[21268.347283] wlan0: associated
[21268.348151] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21268.348156] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[21268.348182] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[21277.823742] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[21278.810425] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21278.810440] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[21278.810452] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[21278.810460] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21278.972816] cfg80211: Calling CRDA to update world regulatory domain
[21280.911885] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21280.913760] wlan0: authenticated
[21280.913869] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[21280.923203] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=15)
[21280.923207] wlan0: associated
[21280.924075] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21280.924080] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[21280.924106] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[21291.008263] wlan0: disassociating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21291.010981] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21291.011001] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[21291.011016] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[21291.145732] cfg80211: Calling CRDA to update world regulatory domain
[21291.146895] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21293.084845] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21293.085259] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[21293.091322] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21293.093411] wlan0: authenticated
[21293.093580] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[21293.104708] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=3)
[21293.104712] wlan0: associated
[21293.105574] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21293.105579] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[21293.105605] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[21303.197414] wlan0: disassociating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21303.198020] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21303.198033] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[21303.198045] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[21303.335866] cfg80211: Calling CRDA to update world regulatory domain
[21303.336212] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21305.274492] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21305.274745] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[21305.280938] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21305.282880] wlan0: authenticated
[21305.282989] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[21305.293383] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=4)
[21305.293388] wlan0: associated
[21305.294281] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21305.294287] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[21305.294313] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[21314.452406] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[21315.373554] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21315.373569] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[21315.373581] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[21315.373589] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[21315.531631] cfg80211: Calling CRDA to update world regulatory domain
[21317.470729] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[21317.471946] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[21317.670329] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[21317.670348] wlan0: direct probe to 00:21:04:10:d9:bb (try 2/3)
[21317.673468] wlan0: authenticated
[21317.705484] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[21317.716008] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=5)
[21317.716013] wlan0: associated
[21317.716907] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[21317.716916] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[21317.716945] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[21327.358250] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[22152.089208] EXT4-fs (sda4): re-mounted. Opts: commit=0
[22152.360803] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[22153.443347] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22153.443370] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[22153.443382] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[22153.443391] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[22153.562806] cfg80211: Calling CRDA to update world regulatory domain
[22154.386065] PM: Syncing filesystems ... done.
[22154.441026] PM: Preparing system for mem sleep
[22156.028364] Freezing user space processes ... (elapsed 0.01 seconds) done.
[22156.041237] Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
[22156.054566] PM: Entering mem sleep
[22156.054600] Suspending console(s) (use no_console_suspend to debug)
[22156.057023] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[22156.058295] brcmsmac 0000:02:00.0: PCI INT A disabled
[22156.058340] sd 0:0:0:0: [sda] Stopping disk
[22156.058688] uhci_hcd 0000:00:1d.0: PCI INT B disabled
[22156.058946] uhci_hcd 0000:00:1a.0: PCI INT B disabled
[22156.094543] ehci_hcd 0000:00:1d.7: PCI INT A disabled
[22156.107859] ehci_hcd 0000:00:1a.7: PCI INT A disabled
[22156.161271] snd_hda_intel 0000:00:1b.0: PCI INT A disabled
[22157.701978] ata_piix 0000:00:1f.2: PCI INT B disabled
[22157.713602] PM: suspend of devices complete after 1659.085 msecs
[22157.753664] PM: late suspend of devices complete after 40.064 msecs
[22157.753978] ACPI: Preparing to enter system sleep state S3
[22157.780312] PM: Saving platform NVS memory
[22157.780904] Disabling non-boot CPUs ...
[22157.783974] CPU 1 is now offline
[22157.787591] CPU 2 is now offline
[22157.790397] CPU 3 is now offline
[22157.790400] lockdep: fixing up alternatives.
[22157.791122] Extended CMOS year: 2000
[22157.791526] ACPI: Low-level resume complete
[22157.791580] PM: Restoring platform NVS memory
[22157.791893] Extended CMOS year: 2000
[22157.791913] Enabling non-boot CPUs ...
[22157.798846] lockdep: fixing up alternatives.
[22157.798851] Booting Node 0 Processor 1 APIC 0x2
[22157.798853] smpboot cpu 1: start_ip = 9a000
[22157.810062] Calibrating delay loop (skipped) already calibrated this CPU
[22157.834397] Switched to NOHz mode on CPU #1
[22157.839478] NMI watchdog enabled, takes one hw-pmu counter.
[22157.839977] CPU1 is up
[22157.849178] lockdep: fixing up alternatives.
[22157.849183] Booting Node 0 Processor 2 APIC 0x1
[22157.849185] smpboot cpu 2: start_ip = 9a000
[22157.860296] Calibrating delay loop (skipped) already calibrated this CPU
[22157.880833] Switched to NOHz mode on CPU #2
[22157.881561] NMI watchdog enabled, takes one hw-pmu counter.
[22157.882747] CPU2 is up
[22157.886240] lockdep: fixing up alternatives.
[22157.886247] Booting Node 0 Processor 3 APIC 0x3
[22157.886249] smpboot cpu 3: start_ip = 9a000
[22157.897458] Calibrating delay loop (skipped) already calibrated this CPU
[22157.921022] Switched to NOHz mode on CPU #3
[22157.923746] NMI watchdog enabled, takes one hw-pmu counter.
[22157.925709] CPU3 is up
[22157.929045] ACPI: Waking up from system sleep state S3
[22158.430840] pcieport 0000:00:01.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[22158.430852] pcieport 0000:00:01.0: restoring config space at offset 0x9 (was 0x1fff1, writing 0xa891a4a1)
[22158.430857] pcieport 0000:00:01.0: restoring config space at offset 0x8 (was 0xfff0, writing 0xa490a070)
[22158.430862] pcieport 0000:00:01.0: restoring config space at offset 0x7 (was 0x200000f0, writing 0x3030)
[22158.430870] pcieport 0000:00:01.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[22158.430876] pcieport 0000:00:01.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[22158.430914] i915 0000:00:02.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[22158.430932] i915 0000:00:02.0: restoring config space at offset 0x1 (was 0x900007, writing 0x900407)
[22158.430974] mei 0000:00:16.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[22158.431004] mei 0000:00:16.0: restoring config space at offset 0x4 (was 0xfed1b004, writing 0xa0607104)
[22158.431047] uhci_hcd 0000:00:1a.0: restoring config space at offset 0xf (was 0x200, writing 0x20a)
[22158.431068] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x8 (was 0x1, writing 0x2141)
[22158.431089] uhci_hcd 0000:00:1a.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[22158.431133] ehci_hcd 0000:00:1a.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[22158.431163] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606c00)
[22158.431175] ehci_hcd 0000:00:1a.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[22158.431230] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[22158.431260] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0600004)
[22158.431268] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[22158.431277] snd_hda_intel 0000:00:1b.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100002)
[22158.431335] pcieport 0000:00:1c.0: restoring config space at offset 0xf (was 0x100, writing 0x1ff)
[22158.431355] pcieport 0000:00:1c.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[22158.431362] pcieport 0000:00:1c.0: restoring config space at offset 0x8 (was 0x0, writing 0xa050a050)
[22158.431370] pcieport 0000:00:1c.0: restoring config space at offset 0x7 (was 0x20000000, writing 0x200000f0)
[22158.431378] pcieport 0000:00:1c.0: restoring config space at offset 0x6 (was 0x0, writing 0x10100)
[22158.431390] pcieport 0000:00:1c.0: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[22158.431400] pcieport 0000:00:1c.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[22158.431470] pcieport 0000:00:1c.1: restoring config space at offset 0xf (was 0x200, writing 0x2ff)
[22158.431489] pcieport 0000:00:1c.1: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[22158.431496] pcieport 0000:00:1c.1: restoring config space at offset 0x8 (was 0x0, writing 0xa040a040)
[22158.431504] pcieport 0000:00:1c.1: restoring config space at offset 0x7 (was 0x20000000, writing 0x200000f0)
[22158.431512] pcieport 0000:00:1c.1: restoring config space at offset 0x6 (was 0x0, writing 0x20200)
[22158.431523] pcieport 0000:00:1c.1: restoring config space at offset 0x3 (was 0x810000, writing 0x810040)
[22158.431533] pcieport 0000:00:1c.1: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[22158.431585] uhci_hcd 0000:00:1d.0: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[22158.431606] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x8 (was 0x1, writing 0x20e1)
[22158.431627] uhci_hcd 0000:00:1d.0: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900001)
[22158.431669] ehci_hcd 0000:00:1d.7: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[22158.431699] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x4 (was 0x0, writing 0xa0606800)
[22158.431711] ehci_hcd 0000:00:1d.7: restoring config space at offset 0x1 (was 0x2900000, writing 0x2900002)
[22158.431821] ata_piix 0000:00:1f.2: restoring config space at offset 0xf (was 0x200, writing 0x20b)
[22158.431842] ata_piix 0000:00:1f.2: restoring config space at offset 0x8 (was 0x1, writing 0x2061)
[22158.431850] ata_piix 0000:00:1f.2: restoring config space at offset 0x7 (was 0x1, writing 0x2179)
[22158.431857] ata_piix 0000:00:1f.2: restoring config space at offset 0x6 (was 0x1, writing 0x2161)
[22158.431864] ata_piix 0000:00:1f.2: restoring config space at offset 0x5 (was 0x1, writing 0x217d)
[22158.431871] ata_piix 0000:00:1f.2: restoring config space at offset 0x4 (was 0x1, writing 0x2169)
[22158.431883] ata_piix 0000:00:1f.2: restoring config space at offset 0x1 (was 0x2b00000, writing 0x2b00007)
[22158.431913] i801_smbus 0000:00:1f.3: restoring config space at offset 0xf (was 0x300, writing 0x30b)
[22158.431943] i801_smbus 0000:00:1f.3: restoring config space at offset 0x4 (was 0x4, writing 0xa0607004)
[22158.431955] i801_smbus 0000:00:1f.3: restoring config space at offset 0x1 (was 0x2800001, writing 0x2800003)
[22158.431999] pcieport 0000:03:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[22158.432004] pcieport 0000:03:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a070)
[22158.432010] pcieport 0000:03:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[22158.432015] pcieport 0000:03:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x670403)
[22158.432024] pcieport 0000:03:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[22158.432031] pcieport 0000:03:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[22158.432098] pcieport 0000:04:00.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[22158.432104] pcieport 0000:04:00.0: restoring config space at offset 0x8 (was 0x0, writing 0xa070a070)
[22158.432110] pcieport 0000:04:00.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[22158.432115] pcieport 0000:04:00.0: restoring config space at offset 0x6 (was 0x0, writing 0x50504)
[22158.432124] pcieport 0000:04:00.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[22158.432131] pcieport 0000:04:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100407)
[22158.432199] pcieport 0000:04:03.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[22158.432205] pcieport 0000:04:03.0: restoring config space at offset 0x8 (was 0x0, writing 0xa080a080)
[22158.432210] pcieport 0000:04:03.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[22158.432216] pcieport 0000:04:03.0: restoring config space at offset 0x6 (was 0x0, writing 0x360604)
[22158.432224] pcieport 0000:04:03.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[22158.432232] pcieport 0000:04:03.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[22158.432300] pcieport 0000:04:04.0: restoring config space at offset 0x9 (was 0x10001, writing 0x1fff1)
[22158.432305] pcieport 0000:04:04.0: restoring config space at offset 0x8 (was 0x0, writing 0xa090a090)
[22158.432311] pcieport 0000:04:04.0: restoring config space at offset 0x7 (was 0x101, writing 0x1f1)
[22158.432316] pcieport 0000:04:04.0: restoring config space at offset 0x6 (was 0x0, writing 0x673704)
[22158.432325] pcieport 0000:04:04.0: restoring config space at offset 0x3 (was 0x10000, writing 0x10040)
[22158.432332] pcieport 0000:04:04.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100406)
[22158.432397] pci 0000:05:00.0: restoring config space at offset 0xf (was 0x1ff, writing 0x10b)
[22158.432420] pci 0000:05:00.0: restoring config space at offset 0x5 (was 0x0, writing 0xa0740000)
[22158.432426] pci 0000:05:00.0: restoring config space at offset 0x4 (was 0x0, writing 0xa0700000)
[22158.432432] pci 0000:05:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[22158.432440] pci 0000:05:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100007)
[22158.432568] brcmsmac 0000:02:00.0: restoring config space at offset 0xf (was 0x100, writing 0x10b)
[22158.432627] brcmsmac 0000:02:00.0: restoring config space at offset 0x4 (was 0x4, writing 0xa0400004)
[22158.432640] brcmsmac 0000:02:00.0: restoring config space at offset 0x3 (was 0x0, writing 0x40)
[22158.432657] brcmsmac 0000:02:00.0: restoring config space at offset 0x1 (was 0x100000, writing 0x100006)
[22158.433091] PM: early resume of devices complete after 2.393 msecs
[22158.434095] i915 0000:00:02.0: setting latency timer to 64
[22158.434120] uhci_hcd 0000:00:1a.0: PCI INT B -> GSI 21 (level, low) -> IRQ 21
[22158.434127] ehci_hcd 0000:00:1a.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[22158.434133] uhci_hcd 0000:00:1a.0: setting latency timer to 64
[22158.434143] ehci_hcd 0000:00:1a.7: setting latency timer to 64
[22158.434170] usb usb3: root hub lost power or was reset
[22158.434208] snd_hda_intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[22158.434223] uhci_hcd 0000:00:1d.0: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[22158.434226] snd_hda_intel 0000:00:1b.0: setting latency timer to 64
[22158.434236] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[22158.434272] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[22158.434277] usb usb4: root hub lost power or was reset
[22158.434288] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[22158.434319] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[22158.434331] ata_piix 0000:00:1f.2: setting latency timer to 64
[22158.434336] snd_hda_intel 0000:00:1b.0: irq 45 for MSI/MSI-X
[22158.434435] brcmsmac 0000:02:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[22158.434449] brcmsmac 0000:02:00.0: setting latency timer to 64
[22158.436205] sd 0:0:0:0: [sda] Starting disk
[22158.561078] Extended CMOS year: 2000
[22159.456670] ata2.00: failed to resume link (SControl 0)
[22159.776507] ata1.01: failed to resume link (SControl 0)
[22159.929782] ata1.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[22159.929796] ata1.01: SATA link down (SStatus 0 SControl 0)
[22159.936541] ata1.00: ACPI cmd ef/03:46:00:00:00:a0 (SET FEATURES) filtered out
[22159.943307] ata1.00: configured for UDMA/133
[22160.140510] [drm:intel_dp_complete_link_train] *ERROR* failed to train DP, aborting
[22160.163970] PM: resume of devices complete after 1730.975 msecs
[22160.165587] PM: Finishing wakeup.
[22160.165589] Restarting tasks ... done.
[22160.205490] video LNXVIDEO:00: Restoring backlight state
[22160.479408] ata2.01: failed to resume link (SControl 0)
[22160.491004] ata2.00: SATA link down (SStatus 4 SControl 0)
[22160.491022] ata2.01: SATA link down (SStatus 0 SControl 0)
[22162.497160] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[22162.497166] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[22162.500965] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22162.501449] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[22164.541992] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[22164.541998] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[22164.545508] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22164.545947] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[22183.785770] EXT4-fs (sda4): re-mounted. Opts: commit=600
[22198.046757] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[22198.046763] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[22198.050215] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22198.050633] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[22200.130780] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[22200.130787] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[22200.134308] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22200.134717] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[22721.380785] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[22721.380791] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[22721.384300] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22721.384828] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[22723.461048] ieee80211 phy0: brcms_ops_config: change monitor mode: false (implement)
[22723.461054] ieee80211 phy0: brcms_ops_config: change power-save mode: false (implement)
[22723.464568] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22723.464989] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[22727.562963] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[22727.563319] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[22727.567543] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[22727.678942] wlan0: authenticated
[22727.679117] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[22727.877310] wlan0: associate with 00:14:6c:67:9c:32 (try 2)
[22727.907275] wlan0: RX AssocResp from 00:14:6c:67:9c:32 (capab=0x611 status=0 aid=2)
[22727.907279] wlan0: associated
[22727.908134] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22727.908140] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[22727.908165] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[22727.908528] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[22737.175461] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[22738.026761] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22738.026776] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[22738.026788] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[22738.026796] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[22738.158074] cfg80211: Calling CRDA to update world regulatory domain
[22738.461160] wlan0: no IPv6 routers present
[22740.100551] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[22740.100874] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[22740.106948] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[22740.120596] wlan0: authenticated
[22740.120705] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[22740.158585] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=3)
[22740.158589] wlan0: associated
[22740.159428] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22740.159434] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[22740.159460] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[22751.073620] wlan0: disassociating from 00:14:6c:67:9c:32 by local choice (reason=3)
[22751.074221] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22751.074234] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[22751.074246] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[22751.227676] cfg80211: Calling CRDA to update world regulatory domain
[22751.228017] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[22753.169692] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[22753.170126] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[22753.176070] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[22753.193072] wlan0: authenticated
[22753.193180] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[22753.208931] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=4)
[22753.208936] wlan0: associated
[22753.209857] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22753.209863] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[22753.209889] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[22763.767336] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22763.767351] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[22763.767363] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[22763.767371] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[22763.929819] cfg80211: Calling CRDA to update world regulatory domain
[22765.868864] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[22765.871662] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[22765.986048] wlan0: authenticated
[22765.987976] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[22766.020277] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=5)
[22766.020284] wlan0: associated
[22766.021149] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22766.021156] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[22766.021182] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[22770.629394] usb 2-1.2: new high speed USB device number 6 using ehci_hcd
[22770.728527] usb-storage 2-1.2:1.0: Quirks match for vid 1058 pid 0704: 8000
[22770.728621] scsi4 : usb-storage 2-1.2:1.0
[22771.729791] scsi 4:0:0:0: Direct-Access WD 5000BMV External 1.75 PQ: 0 ANSI: 4
[22771.730555] sd 4:0:0:0: Attached scsi generic sg1 type 0
[22771.730930] sd 4:0:0:0: [sdb] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[22771.731442] sd 4:0:0:0: [sdb] Write Protect is off
[22771.731449] sd 4:0:0:0: [sdb] Mode Sense: 23 00 00 00
[22771.732292] sd 4:0:0:0: [sdb] No Caching mode page present
[22771.732299] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[22771.734668] sd 4:0:0:0: [sdb] No Caching mode page present
[22771.734673] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[22771.760640] sdb: unknown partition table
[22771.762656] sd 4:0:0:0: [sdb] No Caching mode page present
[22771.762661] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[22771.762664] sd 4:0:0:0: [sdb] Attached SCSI disk
[22778.581476] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[22948.429930] wlan0: deauthenticated from 00:14:6c:67:9c:32 (Reason: 1)
[22948.430469] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22948.430489] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[22948.430500] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[22948.566216] cfg80211: Calling CRDA to update world regulatory domain
[22950.551865] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[22950.667941] wlan0: authenticated
[22950.668047] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[22950.687824] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=6)
[22950.687829] wlan0: associated
[22950.688917] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22950.688923] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[22950.688949] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[22961.269448] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22961.269462] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[22961.269474] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[22961.269482] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[22961.415388] cfg80211: Calling CRDA to update world regulatory domain
[22963.357779] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[22963.557412] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[22963.691645] wlan0: authenticated
[22963.691766] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[22963.883100] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=8)
[22963.883105] wlan0: associated
[22963.883992] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22963.884000] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[22963.884031] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[22975.087624] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22975.087638] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[22975.087650] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[22975.087658] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[22975.250698] cfg80211: Calling CRDA to update world regulatory domain
[22977.193106] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[22977.198501] wlan0: authenticated
[22977.198607] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[22977.231065] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=9)
[22977.231070] wlan0: associated
[22977.231916] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22977.231922] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[22977.231948] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[22986.554300] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[22987.546406] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22987.546421] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[22987.546433] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[22987.546441] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[22987.716823] cfg80211: Calling CRDA to update world regulatory domain
[22989.655873] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[22989.665885] wlan0: authenticated
[22989.665996] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[22989.865496] wlan0: associate with 00:14:6c:67:9c:32 (try 2)
[22989.888508] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=10)
[22989.888512] wlan0: associated
[22989.889468] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22989.889474] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[22989.889500] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[22995.756945] wlan0: disassociated from 00:14:6c:67:9c:32 (Reason: 1)
[22995.757469] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22995.757482] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[22995.757494] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[22995.785558] cfg80211: Calling CRDA to update world regulatory domain
[22995.785648] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[22997.824484] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[22997.857332] wlan0: authenticated
[22997.857446] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[22997.964074] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=11)
[22997.964078] wlan0: associated
[22997.964921] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[22997.964927] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[22997.964953] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[23010.722888] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[23010.722902] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[23010.722914] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[23010.722922] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[23010.883385] cfg80211: Calling CRDA to update world regulatory domain
[23012.822447] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[23012.825268] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[23013.022091] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[23013.022110] wlan0: direct probe to 00:21:04:10:d9:bb (try 2/3)
[23013.048544] wlan0: authenticated
[23013.050607] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[23013.248629] wlan0: associate with 00:14:6c:67:9c:32 (try 2)
[23013.448486] wlan0: associate with 00:14:6c:67:9c:32 (try 3)
[23013.458807] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=12)
[23013.458812] wlan0: associated
[23013.459662] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[23013.459668] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[23013.459694] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[23022.533547] wlan0: disassociated from 00:14:6c:67:9c:32 (Reason: 1)
[23022.534071] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[23022.534090] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[23022.534101] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[23022.563497] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[23022.564523] cfg80211: Calling CRDA to update world regulatory domain
[23024.605638] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[23024.613819] wlan0: authenticated
[23027.110826] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[23027.110917] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[23027.310489] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[23027.462618] wlan0: authenticated
[23027.462739] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[23027.660269] wlan0: associate with 00:14:6c:67:9c:32 (try 2)
[23027.860160] wlan0: associate with 00:14:6c:67:9c:32 (try 3)
[23028.060041] wlan0: association with 00:14:6c:67:9c:32 timed out
[23034.050148] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[23034.052934] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[23034.196837] wlan0: authenticated
[23034.198748] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[23034.288003] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=14)
[23034.288007] wlan0: associated
[23034.288876] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[23034.288882] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[23034.288903] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[23046.866025] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[23296.458512] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[23296.458526] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[23296.458538] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[23296.458546] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[23296.511248] cfg80211: Calling CRDA to update world regulatory domain
[23296.512279] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[23296.514811] wlan0: authenticated
[23296.515008] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[23296.552959] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=2)
[23296.552964] wlan0: associated
[23296.553924] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[23296.553930] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[23296.553950] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[23305.476189] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[23359.002903] padlock_sha: VIA PadLock Hash Engine not detected.
[24012.704780] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24012.704801] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[24012.704816] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[24012.856113] cfg80211: Calling CRDA to update world regulatory domain
[24014.853333] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24014.853493] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[24014.944948] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24015.144726] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[24015.344621] wlan0: authenticate with 00:14:6c:67:9c:32 (try 3)
[24015.544498] wlan0: authentication with 00:14:6c:67:9c:32 timed out
[24034.979933] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24035.081210] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24035.183602] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24035.286065] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24035.388267] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24035.490698] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24035.593595] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24035.710650] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24035.784688] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24035.798591] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24035.901115] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24036.003207] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24036.105112] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24036.208109] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24036.313314] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24036.412187] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24036.514683] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24036.626123] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24038.939243] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24039.045727] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24039.103998] ieee80211 phy0: wl0: brcms_c_recv: dropping a frame with invalid src mac address, a2: 00:00:00:00:00:00
[24062.602613] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24062.607359] wlan0: authenticated
[24062.607476] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24062.759493] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=2)
[24062.759498] wlan0: associated
[24062.760585] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24062.760593] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[24062.760640] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[24072.763147] wlan0: disassociating from 00:14:6c:67:9c:32 by local choice (reason=3)
[24072.763786] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24072.763806] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[24072.763823] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[24072.894696] cfg80211: Calling CRDA to update world regulatory domain
[24072.895758] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[24074.833813] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24074.834094] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[24074.840227] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24074.845038] wlan0: authenticated
[24074.845156] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24074.882483] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=3)
[24074.882487] wlan0: associated
[24074.883328] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24074.883334] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[24074.883358] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[24084.574695] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[24085.065531] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24085.065546] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[24085.065556] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[24085.065565] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[24085.234217] cfg80211: Calling CRDA to update world regulatory domain
[24087.175093] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[24087.177978] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24087.223587] wlan0: authenticated
[24087.223755] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24087.260719] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=4)
[24087.260724] wlan0: associated
[24087.261619] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24087.261628] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[24087.261658] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[24104.018231] wlan0: disassociated from 00:14:6c:67:9c:32 (Reason: 1)
[24104.018754] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24104.018774] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[24104.018785] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[24104.183204] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[24104.183307] cfg80211: Calling CRDA to update world regulatory domain
[24106.225678] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24106.295465] wlan0: authenticated
[24106.295606] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24106.495137] wlan0: associate with 00:14:6c:67:9c:32 (try 2)
[24106.695031] wlan0: associate with 00:14:6c:67:9c:32 (try 3)
[24106.780714] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=5)
[24106.780719] wlan0: associated
[24106.781599] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24106.781608] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[24106.781636] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[24116.917451] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24116.917467] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[24116.917479] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[24116.917488] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[24117.082415] cfg80211: Calling CRDA to update world regulatory domain
[24119.021514] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24119.024302] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[24119.164848] wlan0: authenticated
[24119.166835] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24119.205321] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=6)
[24119.205326] wlan0: associated
[24119.206180] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24119.206186] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[24119.206211] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[24124.586283] wlan0: disassociated from 00:14:6c:67:9c:32 (Reason: 1)
[24124.586847] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24124.586866] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[24124.586876] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[24124.628157] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[24124.628167] cfg80211: Calling CRDA to update world regulatory domain
[24126.667052] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24126.699963] wlan0: authenticated
[24126.700168] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24126.899992] wlan0: associate with 00:14:6c:67:9c:32 (try 2)
[24127.017905] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=7)
[24127.017910] wlan0: associated
[24127.018877] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24127.018884] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[24127.018909] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[24137.286102] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24137.286117] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[24137.286130] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[24137.286138] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[24137.450596] cfg80211: Calling CRDA to update world regulatory domain
[24139.389627] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24139.426918] wlan0: authenticated
[24139.427053] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24139.523436] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=8)
[24139.523440] wlan0: associated
[24139.524304] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24139.524310] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[24139.524335] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[24148.774196] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[24149.523884] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24149.523899] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[24149.523911] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[24149.523919] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[24149.676903] cfg80211: Calling CRDA to update world regulatory domain
[24151.616749] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24151.682253] wlan0: authenticated
[24151.682435] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24151.694086] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=9)
[24151.694090] wlan0: associated
[24151.694942] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24151.694948] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[24151.694973] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[24160.207608] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[24161.853717] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24161.853738] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[24161.853754] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[24161.853781] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[24161.973063] cfg80211: Calling CRDA to update world regulatory domain
[24163.916214] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24163.919068] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[24164.115069] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[24164.118556] wlan0: direct probe to 00:21:04:10:d9:bb (try 2/3)
[24164.120282] wlan0: authenticated
[24164.122403] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24164.321635] wlan0: associate with 00:14:6c:67:9c:32 (try 2)
[24164.486713] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=10)
[24164.486718] wlan0: associated
[24164.487569] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24164.487575] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[24164.487599] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[24174.342707] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[24300.724249] wlan0: deauthenticated from 00:14:6c:67:9c:32 (Reason: 1)
[24300.724828] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24300.724847] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[24300.724858] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[24300.862590] cfg80211: Calling CRDA to update world regulatory domain
[24302.844991] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24302.845447] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=2)
[24302.851439] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24303.051247] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[24303.056434] wlan0: authenticated
[24303.056620] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24303.254472] wlan0: associate with 00:14:6c:67:9c:32 (try 2)
[24303.357548] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=11)
[24303.357554] wlan0: associated
[24303.359354] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24303.359361] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[24303.359387] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[24308.603118] wlan0: disassociated from 00:14:6c:67:9c:32 (Reason: 1)
[24308.603723] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24308.603736] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[24308.603748] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[24308.641502] cfg80211: Calling CRDA to update world regulatory domain
[24308.641568] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[24310.680521] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24310.681773] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[24310.880055] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[24310.880084] wlan0: direct probe to 00:21:04:10:d9:bb (try 2/3)
[24311.079933] wlan0: authenticate with 00:14:6c:67:9c:32 (try 3)
[24311.079962] wlan0: direct probe to 00:21:04:10:d9:bb (try 3/3)
[24311.279821] wlan0: authentication with 00:14:6c:67:9c:32 timed out
[24311.319772] wlan0: direct probe to 00:21:04:10:d9:bb timed out
[24315.299689] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24315.338498] wlan0: authenticated
[24315.342298] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24315.434248] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=12)
[24315.434254] wlan0: associated
[24315.435555] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24315.435561] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[24315.435588] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[24319.981326] wlan0: disassociated from 00:14:6c:67:9c:32 (Reason: 1)
[24319.981914] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24319.981934] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[24319.981945] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[24320.034784] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[24320.034885] cfg80211: Calling CRDA to update world regulatory domain
[24322.073783] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24322.085592] wlan0: authenticated
[24322.085738] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24322.283418] wlan0: associate with 00:14:6c:67:9c:32 (try 2)
[24322.303207] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=13)
[24322.303216] wlan0: associated
[24322.304161] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24322.304170] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[24322.304200] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[24327.748544] wlan0: disassociated from 00:14:6c:67:9c:32 (Reason: 1)
[24327.749097] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24327.749110] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[24327.749122] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[24327.807098] cfg80211: Calling CRDA to update world regulatory domain
[24327.807157] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[24329.849303] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24329.850514] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[24330.048963] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[24330.048989] wlan0: direct probe to 00:21:04:10:d9:bb (try 2/3)
[24330.173715] wlan0: authenticated
[24330.175694] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24330.375436] wlan0: associate with 00:14:6c:67:9c:32 (try 2)
[24330.507532] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=14)
[24330.507537] wlan0: associated
[24330.508401] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24330.508407] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[24330.508429] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[24335.559092] wlan0: disassociated from 00:14:6c:67:9c:32 (Reason: 1)
[24335.559690] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24335.559709] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[24335.559719] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[24335.612535] cfg80211: Calling CRDA to update world regulatory domain
[24335.612647] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[24337.651529] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24337.851084] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[24337.864532] wlan0: authenticated
[24337.864711] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24338.064296] wlan0: associate with 00:14:6c:67:9c:32 (try 2)
[24338.264188] wlan0: associate with 00:14:6c:67:9c:32 (try 3)
[24338.464074] wlan0: association with 00:14:6c:67:9c:32 timed out
[24342.445369] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24342.506867] wlan0: authenticated
[24342.506993] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24342.614867] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=2)
[24342.614872] wlan0: associated
[24342.615829] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24342.615835] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[24342.615855] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[24347.674398] wlan0: disassociated from 00:14:6c:67:9c:32 (Reason: 1)
[24347.675004] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24347.675017] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[24347.675029] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[24347.715506] cfg80211: Calling CRDA to update world regulatory domain
[24347.715599] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[24349.757773] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24349.758968] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[24349.957427] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[24349.957451] wlan0: direct probe to 00:21:04:10:d9:bb (try 2/3)
[24350.157312] wlan0: authenticate with 00:14:6c:67:9c:32 (try 3)
[24350.157335] wlan0: direct probe to 00:21:04:10:d9:bb (try 3/3)
[24350.352914] wlan0: authenticated
[24350.354946] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24350.393016] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=3)
[24350.393021] wlan0: associated
[24350.393884] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24350.393892] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[24350.393917] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[24361.847386] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 1 (implement)
[24521.403299] wlan0: deauthenticated from 00:14:6c:67:9c:32 (Reason: 7)
[24521.403882] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24521.403901] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[24521.403911] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 1 (implement)
[24521.474874] cfg80211: Calling CRDA to update world regulatory domain
[24523.490389] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24523.690095] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[24523.718164] wlan0: authenticated
[24523.718333] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24523.916603] wlan0: associate with 00:14:6c:67:9c:32 (try 2)
[24524.116518] wlan0: associate with 00:14:6c:67:9c:32 (try 3)
[24524.312450] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=4)
[24524.312455] wlan0: associated
[24524.313445] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24524.313452] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[24524.313477] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
[24534.309525] wlan0: disassociating from 00:14:6c:67:9c:32 by local choice (reason=3)
[24534.310103] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24534.310115] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: disassociated
[24534.310127] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled false, count 0 (implement)
[24534.347418] cfg80211: Calling CRDA to update world regulatory domain
[24534.349136] wlan0: deauthenticating from 00:14:6c:67:9c:32 by local choice (reason=3)
[24536.286315] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24536.486012] wlan0: authenticate with 00:14:6c:67:9c:32 (try 2)
[24536.650794] wlan0: authenticated
[24536.650987] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24536.849093] wlan0: associate with 00:14:6c:67:9c:32 (try 2)
[24537.049004] wlan0: associate with 00:14:6c:67:9c:32 (try 3)
[24537.248886] wlan0: association with 00:14:6c:67:9c:32 timed out
[24543.222454] wlan0: direct probe to 00:14:6c:67:9c:32 (try 1/3)
[24543.421975] wlan0: direct probe to 00:14:6c:67:9c:32 (try 2/3)
[24543.621865] wlan0: direct probe to 00:14:6c:67:9c:32 (try 3/3)
[24543.821773] wlan0: direct probe to 00:14:6c:67:9c:32 timed out
[24550.158307] wlan0: authenticate with 00:14:6c:67:9c:32 (try 1)
[24550.161167] wlan0: direct probe to 00:21:04:10:d9:bb (try 1/3)
[24550.323150] wlan0: authenticated
[24550.325195] wlan0: associate with 00:14:6c:67:9c:32 (try 1)
[24550.524512] wlan0: associate with 00:14:6c:67:9c:32 (try 2)
[24550.627282] wlan0: RX ReassocResp from 00:14:6c:67:9c:32 (capab=0x211 status=0 aid=6)
[24550.627287] wlan0: associated
[24550.628227] ieee80211 phy0: brcms_ops_bss_info_changed: qos enabled: false (implement)
[24550.628233] ieee80211 phy0: brcmsmac: brcms_ops_bss_info_changed: associated
[24550.628259] ieee80211 phy0: brcms_ops_bss_info_changed: arp filtering: enabled true, count 0 (implement)
^ permalink raw reply
* Re: [PATCH] Disable TCP_DEBUG and FASTRETRANS_DEBUG by default
From: Dan McGee @ 2011-10-22 1:54 UTC (permalink / raw)
To: Flavio Leitner
Cc: David Miller, netdev, kuznet, jmorris, yoshfuji, kaber,
linux-kernel
In-Reply-To: <20111019151600.67cd99e6@asterix.rh>
On Wed, Oct 19, 2011 at 12:16 PM, Flavio Leitner <fbl@redhat.com> wrote:
> On Mon, 17 Oct 2011 17:52:38 -0400 (EDT)
> David Miller <davem@davemloft.net> wrote:
>
>> From: Dan McGee <dpmcgee@gmail.com>
>> Date: Mon, 17 Oct 2011 15:25:24 -0500
>>
>> > If these are truly debug options, they should be turned off by default
>> > and can be tweaked if necessary. Fix one usage of the flag to use #if
>> > instead of #ifdef so defining to zero is acceptable.
>> >
>> > Signed-off-by: Dan McGee <dpmcgee@gmail.com>
>>
>> Illegal window shrinks are a serious issue, and the fact that everyone
>> will see those messages by default and sometimes report them has been
>> tremendously useful.
>>
>
> Agreed. I recently got bug report because of that message. It is useful
> and doesn't disturbe when network is fine, so please don't remove it.
Can we kill TCP_DEBUG completely then? This is the only place it is
used, and it clearly is mislabeled if this is a "serious" and "useful"
feature.
Can anyone weigh in on FASTRETRANS_DEBUG and setting that to 0 by default?
-Dan
^ permalink raw reply
* Re: [PATCH net -v2] [BUGFIX] bonding: use flush_delayed_work_sync in bond_close
From: Jay Vosburgh @ 2011-10-22 0:59 UTC (permalink / raw)
To: netdev
Cc: =?us-ascii?Q?=3D=3FUTF-8=3FQ=3FAm=3DC3=3DA9rico=5FWang=3F=3D?=,
Stephen Hemminger, Mitsuo Hayasaka, Andy Gospodarek, linux-kernel,
yrl.pp-manager.tt
In-Reply-To: <17144.1319178396@death>
Jay Vosburgh <fubar@us.ibm.com> wrote:
>Américo Wang <xiyou.wangcong@gmail.com> wrote:
>
>>On Thu, Oct 20, 2011 at 3:09 AM, Jay Vosburgh <fubar@us.ibm.com> wrote:
>>> Stephen Hemminger <shemminger@vyatta.com> wrote:
>>>
>>>>On Wed, 19 Oct 2011 11:01:02 -0700
>>>>Jay Vosburgh <fubar@us.ibm.com> wrote:
>>>>
>>>>> Mitsuo Hayasaka <mitsuo.hayasaka.hu@hitachi.com> wrote:
>>>>>
>>>>> >The bond_close() calls cancel_delayed_work() to cancel delayed works.
>>>>> >It, however, cannot cancel works that were already queued in workqueue.
>>>>> >The bond_open() initializes work->data, and proccess_one_work() refers
>>>>> >get_work_cwq(work)->wq->flags. The get_work_cwq() returns NULL when
>>>>> >work->data has been initialized. Thus, a panic occurs.
>>>>> >
>>>>> >This patch uses flush_delayed_work_sync() instead of cancel_delayed_work()
>>>>> >in bond_close(). It cancels delayed timer and waits for work to finish
>>>>> >execution. So, it can avoid the null pointer dereference due to the
>>>>> >parallel executions of proccess_one_work() and initializing proccess
>>>>> >of bond_open().
>>>>>
>>>>> I'm setting up to test this. I have a dim recollection that we
>>>>> tried this some years ago, and there was a different deadlock that
>>>>> manifested through the flush path. Perhaps changes since then have
>>>>> removed that problem.
>>>>>
>>>>> -J
>>>>
>>>>Won't this deadlock on RTNL. The problem is that:
>>>>
>>>> CPU0 CPU1
>>>> rtnl_lock
>>>> bond_close
>>>> delayed_work
>>>> mii_work
>>>> read_lock(bond->lock);
>>>> read_unlock(bond->lock);
>>>> rtnl_lock... waiting for CPU0
>>>> flush_delayed_work_sync
>>>> waiting for delayed_work to finish...
>>>
>>> Yah, that was it. We discussed this a couple of years ago in
>>> regards to a similar patch:
>>>
>>> http://lists.openwall.net/netdev/2009/12/17/3
>>>
>>> The short version is that we could rework the rtnl_lock inside
>>> the montiors to be conditional and retry on failure (where "retry" means
>>> "reschedule the work and try again later," not "spin retrying on rtnl").
>>> That should permit the use of flush or cancel to terminate the work
>>> items.
>>
>>Yes? Even if we use rtnl_trylock(), doesn't flush_delayed_work_sync()
>>still queue the pending delayed work and wait for it to be finished?
>
> Yes, it does. The original patch wants to use flush instead of
>cancel to wait for the work to finish, because there's evidently a
>possibility of getting back into bond_open before the work item
>executes, and bond_open would reinitialize the work queue and corrupt
>the queued work item.
>
> The original patch series, and recipe for destruction, is here:
>
> http://www.spinics.net/lists/netdev/msg176382.html
>
> I've been unable to reproduce the work queue panic locally,
>although it sounds plausible.
>
> Mitsuo: can you provide the precise bonding configuration you're
>using to induce the problem? Driver options, number and type of slaves,
>etc.
>
>>Maybe I am too blind, why do we need rtnl_lock for cancel_delayed_work()
>>inside bond_close()?
>
> We don't need RTNL for cancel/flush. However, bond_close is an
>ndo_stop operation, and is called in the dev_close path, which always
>occurs under RTNL. The mii / arp monitor work functions separately
>acquire RTNL if they need to perform various failover related
>operations.
>
> I'm working on a patch that should resolve the mii / arp monitor
>RTNL problem as I described above (if rtnl_trylock fails, punt and
>reschedule the work). I need to rearrange the netdev_bonding_change
>stuff a bit as well, since it acquires RTNL separately.
>
> Once these changes are made to mii / arp monitor, then
>bond_close can call flush instead of cancel, which should eliminate the
>original problem described at the top.
Just an update: there are three functions that may deadlock if
the cancel work calls are changed to flush_sync. There are two
rtnl_lock calls in each of the bond_mii_monitor and
bond_activebackup_arp_mon functions, and one more in the
bond_alb_monitor.
Still testing to make sure I haven't missed anything, and I
still haven't been able to reproduce Mitsuo's original failure.
-J
---
-Jay Vosburgh, IBM Linux Technology Center, fubar@us.ibm.com
^ permalink raw reply
* [PATCH] net: use INET_ECN_MASK instead of hardcoded 3
From: Maciej Żenczykowski @ 2011-10-21 23:11 UTC (permalink / raw)
To: Maciej Żenczykowski; +Cc: netdev, Maciej Żenczykowski
From: Maciej Żenczykowski <maze@google.com>
Signed-off-by: Maciej Żenczykowski <maze@google.com>
---
net/ipv4/ip_sockglue.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
index f0dc3ad..09ff51b 100644
--- a/net/ipv4/ip_sockglue.c
+++ b/net/ipv4/ip_sockglue.c
@@ -33,6 +33,7 @@
#include <linux/netfilter.h>
#include <linux/route.h>
#include <linux/mroute.h>
+#include <net/inet_ecn.h>
#include <net/route.h>
#include <net/xfrm.h>
#include <net/compat.h>
@@ -578,8 +579,8 @@ static int do_ip_setsockopt(struct sock *sk, int level,
break;
case IP_TOS: /* This sets both TOS and Precedence */
if (sk->sk_type == SOCK_STREAM) {
- val &= ~3;
- val |= inet->tos & 3;
+ val &= ~INET_ECN_MASK;
+ val |= inet->tos & INET_ECN_MASK;
}
if (inet->tos != val) {
inet->tos = val;
--
1.7.3.1
^ permalink raw reply related
* [PATCH] net: add sysctl allow_so_priority for SO_PRIORITY setsockopt
From: Maciej Żenczykowski @ 2011-10-21 22:22 UTC (permalink / raw)
To: Maciej Żenczykowski; +Cc: netdev, Maciej Żenczykowski
From: Maciej Żenczykowski <maze@google.com>
This change adds a sysctl (/proc/sys/net/core/allow_so_priority)
with a default of true (1), as such it does not change the default
behaviour of the Linux kernel.
This sysctl can be set to false (0), this will result in non
CAP_NET_ADMIN processes being unable to set SO_PRIORITY socket
option.
This is desireable if we want to rely on socket/skb priorities
being inferred from TOS/TCLASS bits.
Signed-off-by: Maciej Żenczykowski <maze@google.com>
---
include/net/sock.h | 2 ++
net/core/sock.c | 5 ++++-
net/core/sysctl_net_core.c | 7 +++++++
3 files changed, 13 insertions(+), 1 deletions(-)
diff --git a/include/net/sock.h b/include/net/sock.h
index 5ac682f..bf18a6a 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -1853,6 +1853,8 @@ extern __u32 sysctl_rmem_max;
extern void sk_init(void);
+extern int sysctl_allow_so_priority;
+
extern int sysctl_optmem_max;
extern __u32 sysctl_wmem_default;
diff --git a/net/core/sock.c b/net/core/sock.c
index 5a08762..383fd89 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -217,6 +217,8 @@ __u32 sysctl_rmem_max __read_mostly = SK_RMEM_MAX;
__u32 sysctl_wmem_default __read_mostly = SK_WMEM_MAX;
__u32 sysctl_rmem_default __read_mostly = SK_RMEM_MAX;
+int sysctl_allow_so_priority __read_mostly = 1;
+
/* Maximal space eaten by iovec or ancillary data plus some space */
int sysctl_optmem_max __read_mostly = sizeof(unsigned long)*(2*UIO_MAXIOV+512);
EXPORT_SYMBOL(sysctl_optmem_max);
@@ -612,7 +614,8 @@ set_rcvbuf:
break;
case SO_PRIORITY:
- if ((val >= 0 && val <= 6) || capable(CAP_NET_ADMIN))
+ if ((val >= 0 && val <= 6 && sysctl_allow_so_priority)
+ || capable(CAP_NET_ADMIN))
sk->sk_priority = val;
else
ret = -EPERM;
diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c
index 77a65f0..91fdaac 100644
--- a/net/core/sysctl_net_core.c
+++ b/net/core/sysctl_net_core.c
@@ -183,6 +183,13 @@ static struct ctl_table net_core_table[] = {
.mode = 0644,
.proc_handler = proc_dointvec
},
+ {
+ .procname = "allow_so_priority",
+ .data = &sysctl_allow_so_priority,
+ .maxlen = sizeof(int),
+ .mode = 0644,
+ .proc_handler = proc_dointvec
+ },
{ }
};
--
1.7.3.1
^ permalink raw reply related
* Re: caif BUG() with network namespaces
From: Sjur Brændeland @ 2011-10-21 21:55 UTC (permalink / raw)
To: Woodhouse, David; +Cc: netdev@vger.kernel.org
In-Reply-To: <1319230309.19448.10.camel@shinybook.infradead.org>
Hi David,
> When Chrome initialises its sandbox, we get a BUG:
>
> [ 63.674528] ------------[ cut here ]------------
> [ 63.674540] kernel BUG at net/caif/caif_dev.c:66!
...
> Is this already known/fixed?
>
> https://bugs.meego.com/show_bug.cgi?id=23540
No, I'm afraid I haven't seen this one before. But I'm afraid we
haven't tested much with net-namespaces enabled either.
Regards,
Sjur
^ permalink raw reply
* caif BUG() with network namespaces
From: Woodhouse, David @ 2011-10-21 20:51 UTC (permalink / raw)
To: Sjur Braendeland; +Cc: netdev@vger.kernel.org
[-- Attachment #1: Type: text/plain, Size: 2687 bytes --]
When Chrome initialises its sandbox, we get a BUG:
[ 63.674528] ------------[ cut here ]------------
[ 63.674540] kernel BUG at net/caif/caif_dev.c:66!
[ 63.674547] invalid opcode: 0000 [#1] PREEMPT SMP
[ 63.674556] Modules linked in: iwlagn serio_raw [last unloaded: battery]
[ 63.674568]
[ 63.674575] Pid: 801, comm: chrome-sandbox Not tainted 3.0.0-4.1-adaptation-pc #1 Intel Corporation Cedartrail platform/To be filled by O.E.M.
[ 63.674589] EIP: 0060:-[<c0baaf8c>] EFLAGS: 00210246 CPU: 1
[ 63.674602] EIP is at caif_device_list+0x4c/0x50
[ 63.674608] EAX: 00000000 EBX: 00000000 ECX: e1482800 EDX: 00000010
[ 63.674614] ESI: e14133c0 EDI: 00000010 EBP: e141dda0 ESP: e141dd98
[ 63.674620] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
[ 63.674627] Process chrome-sandbox (pid: 801, ti=e141c000 task=e52a8ff0 task.ti=e141c000)
[ 63.674632] Stack:
[ 63.674636] e1482800 00000000 e141ddd8 c0bab291 c04da339 e141ddd8 c0ad64ff 00000011
[ 63.674655] e14133c0 e141ddd8 c0b335cd e1482800 00000010 c0f612bc 00000000 fffffff3
[ 63.674672] e141de08 c046e6e7 e141dde8 c0bcda38 e141de20 e1482800 00000010 c0f58ac0
[ 63.674690] Call Trace:
[ 63.674700] [<c0bab291>] caif_device_notify+0x21/0x2d0
[ 63.674710] [<c04da339>] ? pcpu_alloc_area+0x109/0x250
[ 63.674720] [<c0ad64ff>] ? inetdev_event+0x1f/0x3a0
[ 63.674728] [<c0b335cd>] ? packet_notifier+0x8d/0x180
[ 63.674738] [<c046e6e7>] notifier_call_chain+0x47/0x90
[ 63.674747] [<c0bcda38>] ? mutex_unlock+0x8/0x10
[ 63.674756] [<c046e77b>] raw_notifier_call_chain+0x1b/0x20
[ 63.674766] [<c0a7d938>] call_netdevice_notifiers+0x28/0x60
[ 63.674773] [<c04dac6a>] ? __alloc_percpu+0xa/0x10
[ 63.674782] [<c0a80c6d>] register_netdevice+0xed/0x210
[ 63.674790] [<c0bcdd0e>] ? mutex_lock+0x1e/0x30
[ 63.674797] [<c0a80da2>] register_netdev+0x12/0x20
[ 63.674807] [<c0868ec3>] loopback_net_init+0x43/0x90
[ 63.674815] [<c0a7864f>] ops_init+0x2f/0x80
[ 63.674822] [<c0a7877f>] setup_net+0x4f/0xe0
[ 63.674830] [<c0a78ccc>] copy_net_ns+0x6c/0xe0
[ 63.674838] [<c046de31>] create_new_namespaces+0xc1/0x150
[ 63.674847] [<c046df82>] copy_namespaces+0x72/0xb0
[ 63.674856] [<c0448efe>] copy_process+0x60e/0xc70
[ 63.674864] [<c04df3c1>] ? handle_mm_fault+0x141/0x250
[ 63.674872] [<c04495ef>] do_fork+0x5f/0x300
Is this already known/fixed?
https://bugs.meego.com/show_bug.cgi?id=23540
--
Sent with MeeGo's ActiveSync support.
David Woodhouse Open Source Technology Centre
David.Woodhouse@intel.com Intel Corporation
[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 4370 bytes --]
^ permalink raw reply
* Re: [patch net-next V2] net: introduce ethernet teaming device
From: Jay Vosburgh @ 2011-10-21 18:27 UTC (permalink / raw)
To: Jiri Pirko
Cc: netdev, davem, eric.dumazet, bhutchings, shemminger, andy, tgraf,
ebiederm, mirqus, kaber, greearb, jesse, fbl, benjamin.poirier,
jzupka
In-Reply-To: <1319200747-2508-1-git-send-email-jpirko@redhat.com>
Jiri Pirko <jpirko@redhat.com> wrote:
>This patch introduces new network device called team. It supposes to be
>very fast, simple, userspace-driven alternative to existing bonding
>driver.
>
>Userspace library called libteam with couple of demo apps is available
>here:
>https://github.com/jpirko/libteam
>Note it's still in its dipers atm.
>
>team<->libteam use generic netlink for communication. That and rtnl
>suppose to be the only way to configure team device, no sysfs etc.
>
>Python binding basis for libteam was recently introduced (some need
>still need to be done on it though). Daemon providing arpmon/miimon
>active-backup functionality will be introduced shortly.
>All what's necessary is already implemented in kernel team driver.
>
>Signed-off-by: Jiri Pirko <jpirko@redhat.com>
>
>v1->v2:
> - modes are made as modules. Makes team more modular and
> extendable.
> - several commenters' nitpicks found on v1 were fixed
> - several other bugs were fixed.
> - note I ignored Eric's comment about roundrobin port selector
> as Eric's way may be easily implemented as another mode (mode
> "random") in future.
>---
[...]
>+static int team_port_add(struct team *team, struct net_device *port_dev)
>+{
>+ struct net_device *dev = team->dev;
>+ struct team_port *port;
>+ char *portname = port_dev->name;
>+ char tmp_addr[ETH_ALEN];
>+ int err;
>+
>+ if (port_dev->flags & IFF_LOOPBACK ||
>+ port_dev->type != ARPHRD_ETHER) {
>+ netdev_err(dev, "Device %s is of an unsupported type\n",
>+ portname);
>+ return -EINVAL;
>+ }
>+
>+ if (team_port_exists(port_dev)) {
>+ netdev_err(dev, "Device %s is already a port "
>+ "of a team device\n", portname);
>+ return -EBUSY;
>+ }
>+
>+ if (port_dev->flags & IFF_UP) {
>+ netdev_err(dev, "Device %s is up. Set it down before adding it as a team port\n",
>+ portname);
>+ return -EBUSY;
>+ }
>+
>+ port = kzalloc(sizeof(struct team_port), GFP_KERNEL);
>+ if (!port)
>+ return -ENOMEM;
>+
>+ port->dev = port_dev;
>+ port->team = team;
>+
>+ port->orig.mtu = port_dev->mtu;
>+ err = dev_set_mtu(port_dev, dev->mtu);
>+ if (err) {
>+ netdev_dbg(dev, "Error %d calling dev_set_mtu\n", err);
>+ goto err_set_mtu;
>+ }
>+
>+ memcpy(port->orig.dev_addr, port_dev->dev_addr, ETH_ALEN);
>+ random_ether_addr(tmp_addr);
>+ err = __set_port_mac(port_dev, tmp_addr);
>+ if (err) {
>+ netdev_dbg(dev, "Device %s mac addr set failed\n",
>+ portname);
>+ goto err_set_mac_rand;
>+ }
>+
>+ err = dev_open(port_dev);
>+ if (err) {
>+ netdev_dbg(dev, "Device %s opening failed\n",
>+ portname);
>+ goto err_dev_open;
>+ }
>+
>+ err = team_port_set_orig_mac(port);
>+ if (err) {
>+ netdev_dbg(dev, "Device %s mac addr set failed - Device does not support addr change when it's opened\n",
>+ portname);
>+ goto err_set_mac_opened;
>+ }
This will exclude a number of devices that bonding currently
provides at least partial support for.
Most of those are older 10 or 10/100 Ethernet drivers (anything
that uses eth_mac_addr for its ndo_set_mac_address, I think; there look
to be about 140 or so of those), but it also includes Infiniband (which
is excluded explicitly elsewhere).
Another small set of Ethernet devices (those that currently need
bonding's fail_over_mac option) do permit setting the MAC while open,
but will misbehave if multiple ports are set to the same MAC. The usual
suspects here are ehea and qeth, which are partition-aware devices for
IBM's pseries and zseries hardware, but there may be others I'm not
familiar with.
If these will be permanent limitations of the team driver, then
this should (eventually) be in the documentation.
Also, from looking at the code, it's not obvious if nesting of
teams is supported or not. I'm not seeing anything in the code that
would prohibit adding a team device as a port to another team. If
nesting of teams is undesirable, it should probably be explicitly tested
for and disallowed.
[...]
>+static int __init team_module_init(void)
>+{
>+ int err;
>+
>+ register_netdevice_notifier(&team_notifier_block);
>+
>+ err = rtnl_link_register(&team_link_ops);
>+ if (err)
>+ goto err_rtln_reg;
>+
>+ err = team_nl_init();
>+ if (err)
>+ goto err_nl_init;
>+
>+ return 0;
>+
>+err_nl_init:
>+ rtnl_link_unregister(&team_link_ops);
>+
>+err_rtln_reg:
>+ unregister_netdevice_notifier(&team_notifier_block);
Minor nit: I suspect you meant "err_rtnl_reg" here, and in the
goto above.
-J
---
-Jay Vosburgh, IBM Linux Technology Center, fubar@us.ibm.com
^ permalink raw reply
* Re: [PATCH] route: fix ICMP redirect validation
From: Flavio Leitner @ 2011-10-21 18:13 UTC (permalink / raw)
To: David Miller; +Cc: netdev
In-Reply-To: <20111020.161929.97626808571871075.davem@davemloft.net>
On Thu, 20 Oct 2011 16:19:29 -0400 (EDT)
David Miller <davem@davemloft.net> wrote:
> From: Flavio Leitner <fbl@redhat.com>
> Date: Thu, 20 Oct 2011 15:47:02 -0200
>
> > I was reviewing this again and instead of doing the above, it would
> > be better to use rt_bind_peer() to update rt->peer as well.
> >
> > if (!rt->peer)
> > rt_bind_peer(rt, rt->rt_dst, 1);
> >
> > peer = rt->peer;
> > if (peer) {
> > peer->redirect_learned.a4 = new_gw;
> > atomic_inc(&__rt_peer_genid);
> > }
> >
> >
> > but I am not sure if I understood you completely when you say
> > to do such that only an inetpeer cache probe is necessary.
>
> If you have the route entry available already and you're doing the
> inetpeer lookup anyways, you might as well use rt_bind_peer() since
> all of the expensive work has to be done anyways.
>
> So yes, using rt_bind_peer() would be the best thing to do here.
>
just posted patch v3. iirc, you prefer to receive patches as new
posts rather than replies to old threads.
"Subject: [PATCH net-next v3] route: fix ICMP redirect validation"
thanks again,
fbl
^ permalink raw reply
* [PATCH net-next v3] route: fix ICMP redirect validation
From: Flavio Leitner @ 2011-10-21 16:44 UTC (permalink / raw)
To: netdev; +Cc: David Miller, Flavio Leitner
The commit f39925dbde7788cfb96419c0f092b086aa325c0f
(ipv4: Cache learned redirect information in inetpeer.)
removed some ICMP packet validations which are required by
RFC 1122, section 3.2.2.2:
...
A Redirect message SHOULD be silently discarded if the new
gateway address it specifies is not on the same connected
(sub-) net through which the Redirect arrived [INTRO:2,
Appendix A], or if the source of the Redirect is not the
current first-hop gateway for the specified destination (see
Section 3.3.1).
Signed-off-by: Flavio Leitner <fbl@redhat.com>
---
net/ipv4/route.c | 36 +++++++++++++++++++++++++++++++-----
1 files changed, 31 insertions(+), 5 deletions(-)
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 26c77e1..1082460 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -1308,7 +1308,12 @@ static void rt_del(unsigned hash, struct rtable *rt)
void ip_rt_redirect(__be32 old_gw, __be32 daddr, __be32 new_gw,
__be32 saddr, struct net_device *dev)
{
+ int s, i;
struct in_device *in_dev = __in_dev_get_rcu(dev);
+ struct rtable *rt;
+ __be32 skeys[2] = { saddr, 0 };
+ int ikeys[2] = { dev->ifindex, 0 };
+ struct flowi4 fl4;
struct inet_peer *peer;
struct net *net;
@@ -1331,13 +1336,34 @@ void ip_rt_redirect(__be32 old_gw, __be32 daddr, __be32 new_gw,
goto reject_redirect;
}
- peer = inet_getpeer_v4(daddr, 1);
- if (peer) {
- peer->redirect_learned.a4 = new_gw;
+ memset(&fl4, 0, sizeof(fl4));
+ fl4.daddr = daddr;
+ for (s = 0; s < 2; s++) {
+ for (i = 0; i < 2; i++) {
+ fl4.flowi4_oif = ikeys[i];
+ fl4.saddr = skeys[s];
+ rt = __ip_route_output_key(net, &fl4);
+ if (IS_ERR(rt))
+ continue;
- inet_putpeer(peer);
+ if (rt->dst.error || rt->dst.dev != dev ||
+ rt->rt_gateway != old_gw) {
+ ip_rt_put(rt);
+ continue;
+ }
- atomic_inc(&__rt_peer_genid);
+ if (!rt->peer)
+ rt_bind_peer(rt, rt->rt_dst, 1);
+
+ peer = rt->peer;
+ if (peer) {
+ peer->redirect_learned.a4 = new_gw;
+ atomic_inc(&__rt_peer_genid);
+ }
+
+ ip_rt_put(rt);
+ return;
+ }
}
return;
--
1.7.6
^ permalink raw reply related
* Re: IPsec performance bug
From: Kim Phillips @ 2011-10-21 17:54 UTC (permalink / raw)
To: Yan, Zheng; +Cc: netdev, davem, hirofumi
In-Reply-To: <CAAM7YAkxP06_=y1wg4P1JhPDWhZgRM6+wbFQRG5PFkAq8vgsTw@mail.gmail.com>
On Fri, 21 Oct 2011 16:28:30 +0800
"Yan, Zheng" <zheng.z.yan@linux.intel.com> wrote:
> On Thu, Oct 20, 2011 at 10:22 AM, Kim Phillips
> <kim.phillips@freescale.com> wrote:
> > (b) any ideas how to fix? I don't know much about routing
> > internals, but in ip_route_input_common(), if I remove the input
> > interface comparison (rth->rt_route_iif ^ iif), I get some
> > performance back, but the system becomes unstable (it's booted over
> > nfs).
>
> Looks like xfrm4_fill_dst() reset rt->rt_route_iif to 0, it makes the
> comparison (rth->rt_route_iif ^ iif) in
> ip_route_input_common() return false.
>
> Please try patch below. It improves the performance of 3.1-rc10
> kernel.
yes, thanks, ~50kpps performance is restored when applying this diff
to current net-next.
> (I'm not sure the patch is harmless)
the system appears to be more stable, but this is still concerning.
Kim
^ permalink raw reply
* Re: [PATCH V2 2/4] MIPS: Add board support for Loongson1B
From: Wu Zhangjin @ 2011-10-21 17:33 UTC (permalink / raw)
To: keguang.zhang; +Cc: linux-mips, linux-kernel, ralf, r0bertz, netdev
In-Reply-To: <1319192888-21465-2-git-send-email-keguang.zhang@gmail.com>
On Fri, Oct 21, 2011 at 6:28 PM, <keguang.zhang@gmail.com> wrote:
> From: Kelvin Cheung <keguang.zhang@gmail.com>
>
> This patch adds basic platform support for Loongson1B
> including serial port, ethernet, and interrupt handler.
>
> Loongson1B UART is compatible with NS16550A.
> Loongson1B GMAC is built around Synopsys IP Core.
>
Perhaps you'd better split out the GMAC support to its own patch and
send it to the net/ maintainer and the authors of the original files.
> diff --git a/drivers/net/stmmac/descs.h b/drivers/net/stmmac/descs.h
> index 63a03e2..4db27d0 100644
> --- a/drivers/net/stmmac/descs.h
> +++ b/drivers/net/stmmac/descs.h
> @@ -53,6 +53,38 @@ struct dma_desc {
> u32 reserved3:5;
> u32 disable_ic:1;
> } rx;
> +#ifdef CONFIG_MACH_LOONGSON1
> + struct {
> + /* RDES0 */
> + u32 payload_csum_error:1;
> + u32 crc_error:1;
> + u32 dribbling:1;
> + u32 error_gmii:1;
> + u32 receive_watchdog:1;
> + u32 frame_type:1;
> + u32 late_collision:1;
> + u32 ipc_csum_error:1;
> + u32 last_descriptor:1;
> + u32 first_descriptor:1;
> + u32 vlan_tag:1;
> + u32 overflow_error:1;
> + u32 length_error:1;
> + u32 sa_filter_fail:1;
> + u32 descriptor_error:1;
> + u32 error_summary:1;
> + u32 frame_length:14;
> + u32 da_filter_fail:1;
> + u32 own:1;
> + /* RDES1 */
> + u32 buffer1_size:11;
> + u32 buffer2_size:11;
> + u32 reserved1:2;
> + u32 second_address_chained:1;
> + u32 end_ring:1;
> + u32 reserved2:5;
> + u32 disable_ic:1;
> + } erx; /* -- enhanced -- */
> +#else
> struct {
> /* RDES0 */
> u32 payload_csum_error:1;
> @@ -83,6 +115,7 @@ struct dma_desc {
> u32 reserved2:2;
> u32 disable_ic:1;
> } erx; /* -- enhanced -- */
> +#endif
>
> /* Transmit descriptor */
> struct {
> @@ -113,6 +146,40 @@ struct dma_desc {
> u32 last_segment:1;
> u32 interrupt:1;
> } tx;
> +#ifdef CONFIG_MACH_LOONGSON1
> + struct {
> + /* TDES0 */
> + u32 deferred:1;
> + u32 underflow_error:1;
> + u32 excessive_deferral:1;
> + u32 collision_count:4;
> + u32 vlan_frame:1;
> + u32 excessive_collisions:1;
> + u32 late_collision:1;
> + u32 no_carrier:1;
> + u32 loss_carrier:1;
> + u32 payload_error:1;
> + u32 frame_flushed:1;
> + u32 jabber_timeout:1;
> + u32 error_summary:1;
> + u32 ip_header_error:1;
> + u32 time_stamp_status:1;
> + u32 reserved1:13;
> + u32 own:1;
> + /* TDES1 */
> + u32 buffer1_size:11;
> + u32 buffer2_size:11;
> + u32 time_stamp_enable:1;
> + u32 disable_padding:1;
> + u32 second_address_chained:1;
> + u32 end_ring:1;
> + u32 crc_disable:1;
> + u32 checksum_insertion:2;
> + u32 first_segment:1;
> + u32 last_segment:1;
> + u32 interrupt:1;
> + } etx; /* -- enhanced -- */
> +#else
> struct {
> /* TDES0 */
> u32 deferred:1;
> @@ -148,6 +215,7 @@ struct dma_desc {
> u32 buffer2_size:13;
> u32 reserved4:3;
> } etx; /* -- enhanced -- */
> +#endif
> } des01;
> unsigned int des2;
> unsigned int des3;
If the difference is very much, perhaps a new dma_desc struct can be
defined instead.
> diff --git a/drivers/net/stmmac/enh_desc.c b/drivers/net/stmmac/enh_desc.c
> index e5dfb6a..3b5e4f1 100644
> --- a/drivers/net/stmmac/enh_desc.c
> +++ b/drivers/net/stmmac/enh_desc.c
> @@ -108,6 +108,7 @@ static int enh_desc_get_tx_len(struct dma_desc *p)
> static int enh_desc_coe_rdes0(int ipc_err, int type, int payload_err)
> {
> int ret = good_frame;
> +#ifndef CONFIG_MACH_LOONGSON1
> u32 status = (type << 2 | ipc_err << 1 | payload_err) & 0x7;
>
> /* bits 5 7 0 | Frame status
> @@ -145,6 +146,7 @@ static int enh_desc_coe_rdes0(int ipc_err, int type, int payload_err)
> CHIP_DBG(KERN_ERR "RX Des0 status: No IPv4, IPv6 frame.\n");
> ret = discard_frame;
> }
> +#endif
> return ret;
> }
>
> @@ -232,9 +234,17 @@ static void enh_desc_init_rx_desc(struct dma_desc *p, unsigned int ring_size,
> int i;
> for (i = 0; i < ring_size; i++) {
> p->des01.erx.own = 1;
> +#ifdef CONFIG_MACH_LOONGSON1
> + p->des01.erx.buffer1_size = BUF_SIZE_2KiB - 1;
> +#else
> p->des01.erx.buffer1_size = BUF_SIZE_8KiB - 1;
> +#endif
> /* To support jumbo frames */
> +#ifdef CONFIG_MACH_LOONGSON1
> + p->des01.erx.buffer2_size = BUF_SIZE_2KiB - 1;
> +#else
> p->des01.erx.buffer2_size = BUF_SIZE_8KiB - 1;
> +#endif
> if (i == ring_size - 1)
> p->des01.erx.end_ring = 1;
> if (disable_rx_ic)
> @@ -292,9 +302,15 @@ static void enh_desc_prepare_tx_desc(struct dma_desc *p, int is_fs, int len,
> int csum_flag)
> {
> p->des01.etx.first_segment = is_fs;
> +#ifdef CONFIG_MACH_LOONGSON1
> + if (unlikely(len > BUF_SIZE_2KiB)) {
> + p->des01.etx.buffer1_size = BUF_SIZE_2KiB - 1;
> + p->des01.etx.buffer2_size = len - BUF_SIZE_2KiB + 1;
> +#else
> if (unlikely(len > BUF_SIZE_4KiB)) {
> p->des01.etx.buffer1_size = BUF_SIZE_4KiB;
> p->des01.etx.buffer2_size = len - BUF_SIZE_4KiB;
> +#endif
> } else {
> p->des01.etx.buffer1_size = len;
> }
Is it possible to add two new macros RX_BUF_SIZE and TX_BUF_SIZE to .h
instead? which may reduce code duplication.
Regards,
Wu Zhangjin
> --
> 1.7.1
>
>
^ permalink raw reply
* Re: [PATCH] dev: use name hash for dev_seq_ops
From: Stephen Hemminger @ 2011-10-21 17:07 UTC (permalink / raw)
To: Mihai Maruseac
Cc: davem, eric.dumazet, mirq-linux, therbert, jpirko, netdev,
linux-kernel, dbaluta, Mihai Maruseac
In-Reply-To: <1319179510-10715-1-git-send-email-mmaruseac@ixiacom.com>
On Fri, 21 Oct 2011 09:45:10 +0300
Mihai Maruseac <mihai.maruseac@gmail.com> wrote:
> Instead of using the dev->next chain and trying to resync at each call to
> dev_seq_start, use the name hash, keeping the bucket and the offset in
> seq->private field.
>
> Tests revealed the following results for ifconfig > /dev/null
> * 1000 interfaces:
> * 0.114s without patch
> * 0.089s with patch
> * 3000 interfaces:
> * 0.489s without patch
> * 0.110s with patch
> * 5000 interfaces:
> * 1.363s without patch
> * 0.250s with patch
> * 128000 interfaces (other setup):
> * ~100s without patch
> * ~30s with patch
>
> Signed-off-by: Mihai Maruseac <mmaruseac@ixiacom.com>
> ---
> net/core/dev.c | 84 ++++++++++++++++++++++++++++++++++++++++++++++----------
> 1 files changed, 69 insertions(+), 15 deletions(-)
>
> diff --git a/net/core/dev.c b/net/core/dev.c
> index 70ecb86..6edbcc5 100644
> --- a/net/core/dev.c
> +++ b/net/core/dev.c
> @@ -4041,6 +4041,60 @@ static int dev_ifconf(struct net *net, char __user *arg)
> }
>
> #ifdef CONFIG_PROC_FS
> +
> +#define BUCKET_SPACE (32 - NETDEV_HASHBITS)
> +
> +struct dev_iter_state {
> + struct seq_net_private p;
> + unsigned int pos; /* bucket << BUCKET_SPACE + offset */
> +};
> +
> +#define get_bucket(x) ((x) >> BUCKET_SPACE)
> +#define get_offset(x) ((x) & ((1 << BUCKET_SPACE) - 1))
> +#define set_bucket_offset(b, o) ((b) << BUCKET_SPACE | (o))
> +
> +static inline struct net_device *dev_from_same_bucket(struct seq_file *seq)
>
Why are all these function marked inline? They are big, hardly hot path
and better to not continue the bad practice of inlining too much code.
^ permalink raw reply
* [PATCH] rtnetlink: Add missing manual netlink notification in dev_change_net_namespaces
From: Eric W. Biederman @ 2011-10-21 16:24 UTC (permalink / raw)
To: David Miller
Cc: netdev, kaber, David Lamparter, Renato Westphal, Patrick McHardy
In-Reply-To: <CAChaegnHchLT0BV-_RaPT2-J3ZLin_U1x8X0KBi7ku1MArug1g@mail.gmail.com>
Renato Westphal noticed that since commit a2835763e130c343ace5320c20d33c281e7097b7
"rtnetlink: handle rtnl_link netlink notifications manually" was merged
we no longer send a netlink message when a networking device is moved
from one network namespace to another.
Fix this by adding the missing manual notification in dev_change_net_namespaces.
Since all network devices that are processed by dev_change_net_namspaces are
in the initialized state the complicated tests that guard the manual
rtmsg_ifinfo calls in rollback_registered and register_netdevice are
unnecessary and we can just perform a plain notification.
Cc: stable@kernel.org
Tested-by: Renato Westphal <renatowestphal@gmail.com>
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
---
net/core/dev.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/net/core/dev.c b/net/core/dev.c
index ad5d702..b7ba81a 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -6266,6 +6266,7 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
*/
call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
call_netdevice_notifiers(NETDEV_UNREGISTER_BATCH, dev);
+ rtmsg_ifinfo(RTM_DELLINK, dev, ~0U);
/*
* Flush the unicast and multicast chains
--
1.7.2.5
^ permalink raw reply related
* Re: [patch net-next V2] net: introduce ethernet teaming device
From: Eric Dumazet @ 2011-10-21 15:31 UTC (permalink / raw)
To: Jiri Pirko
Cc: netdev, davem, bhutchings, shemminger, fubar, andy, tgraf,
ebiederm, mirqus, kaber, greearb, jesse, fbl, benjamin.poirier,
jzupka
In-Reply-To: <20111021150250.GB10076@minipsycho>
Le vendredi 21 octobre 2011 à 17:02 +0200, Jiri Pirko a écrit :
> :( What do you suggest? Set these pointers one-by-one?
Yep, this is the right way to have atomicity guarantee.
^ permalink raw reply
* Re: [patch net-next V2] net: introduce ethernet teaming device
From: Jiri Pirko @ 2011-10-21 15:02 UTC (permalink / raw)
To: Eric Dumazet
Cc: netdev, davem, bhutchings, shemminger, fubar, andy, tgraf,
ebiederm, mirqus, kaber, greearb, jesse, fbl, benjamin.poirier,
jzupka
In-Reply-To: <1319208237.32161.14.camel@edumazet-HP-Compaq-6005-Pro-SFF-PC>
Fri, Oct 21, 2011 at 04:43:57PM CEST, eric.dumazet@gmail.com wrote:
>Le vendredi 21 octobre 2011 à 14:39 +0200, Jiri Pirko a écrit :
>> This patch introduces new network device called team. It supposes to be
>> very fast, simple, userspace-driven alternative to existing bonding
>> driver.
>>
>> Userspace library called libteam with couple of demo apps is available
>> here:
>> https://github.com/jpirko/libteam
>> Note it's still in its dipers atm.
>>
>> team<->libteam use generic netlink for communication. That and rtnl
>> suppose to be the only way to configure team device, no sysfs etc.
>>
>> Python binding basis for libteam was recently introduced (some need
>> still need to be done on it though). Daemon providing arpmon/miimon
>> active-backup functionality will be introduced shortly.
>> All what's necessary is already implemented in kernel team driver.
>>
>> Signed-off-by: Jiri Pirko <jpirko@redhat.com>
>>
>> v1->v2:
>> - modes are made as modules. Makes team more modular and
>> extendable.
>> - several commenters' nitpicks found on v1 were fixed
>> - several other bugs were fixed.
>> - note I ignored Eric's comment about roundrobin port selector
>> as Eric's way may be easily implemented as another mode (mode
>> "random") in future.
>> ---
>
>Very nice work !
>
>> +
>> +
>> +/*
>> + * We can benefit from the fact that it's ensured no port is present
>> + * at the time of mode change.
>> + */
>> +static int __team_change_mode(struct team *team,
>> + const struct team_mode *new_mode)
>> +{
>> + /* Check if mode was previously set and do cleanup if so */
>> + if (team->mode_kind) {
>> + void (*exit_op)(struct team *team) = team->mode_ops.exit;
>> +
>> + /* Clear ops area so no callback is called any longer */
>> + memset(&team->mode_ops, 0, sizeof(struct team_mode_ops));
>
> Hmm, memset() has no atomicity guarantee about 'longs' or 'pointers'.
>
> You must make sure mode_ops.receive (and other pointers) is set not
>byte per byte, but in one go.
:( What do you suggest? Set these pointers one-by-one?
>
>> +
>> + synchronize_rcu();
>> +
>> + if (exit_op)
>> + exit_op(team);
>> + team_mode_put(team->mode_kind);
>> + team->mode_kind = NULL;
>> + /* zero private data area */
>> + memset(&team->mode_priv, 0,
>> + sizeof(struct team) - offsetof(struct team, mode_priv));
>> + }
>> +
>> + if (!new_mode)
>> + return 0;
>> +
>> + if (new_mode->ops->init) {
>> + int err;
>> +
>> + err = new_mode->ops->init(team);
>> + if (err)
>> + return err;
>> + }
>> +
>> + team->mode_kind = new_mode->kind;
>> + memcpy(&team->mode_ops, new_mode->ops, sizeof(struct team_mode_ops));
>> +
>> + return 0;
>> +}
>> +
>
>> +
>> +/************************
>> + * Rx path frame handler
>> + ************************/
>> +
>> +/* note: already called with rcu_read_lock */
>> +static rx_handler_result_t team_handle_frame(struct sk_buff **pskb)
>> +{
>> + struct sk_buff *skb = *pskb;
>> + struct team_port *port;
>> + struct team *team;
>> + rx_handler_result_t res = RX_HANDLER_ANOTHER;
>> +
>> + skb = skb_share_check(skb, GFP_ATOMIC);
>> + if (!skb)
>> + return RX_HANDLER_CONSUMED;
>> +
>> + *pskb = skb;
>> +
>> + port = team_port_get_rcu(skb->dev);
>> + team = port->team;
>> +
>> + if (team->mode_ops.receive)
>
>Hmm, you need ACCESS_ONCE() here or rcu_dereference()
>
>See commit 4d97480b1806e883eb (bonding: use local function pointer of
>bond->recv_probe in bond_handle_frame) for reference
Will do
>
>> + res = team->mode_ops.receive(team, port, skb);
>> +
>> + if (res == RX_HANDLER_ANOTHER) {
>> + struct team_pcpu_stats *pcpu_stats;
>> +
>> + pcpu_stats = this_cpu_ptr(team->pcpu_stats);
>> + u64_stats_update_begin(&pcpu_stats->syncp);
>> + pcpu_stats->rx_packets++;
>> + pcpu_stats->rx_bytes += skb->len;
>> + if (skb->pkt_type == PACKET_MULTICAST)
>> + pcpu_stats->rx_multicast++;
>> + u64_stats_update_end(&pcpu_stats->syncp);
>> +
>> + skb->dev = team->dev;
>> + } else {
>> + this_cpu_inc(team->pcpu_stats->rx_dropped);
>> + }
>> +
>> + return res;
>> +}
>> +
>
>
>> +
>> +static int team_port_enter(struct team *team, struct team_port *port)
>> +{
>> + int err = 0;
>> +
>> + dev_hold(team->dev);
>> + port->dev->priv_flags |= IFF_TEAM_PORT;
>> + if (team->mode_ops.port_enter) {
>> + err = team->mode_ops.port_enter(team, port);
>> + if (err)
>> + netdev_err(team->dev, "Device %s failed to enter team mode\n",
>> + port->dev->name);
>
> Not sure if you need to unset IFF_TEAM_PORT;
I do. I will add it.
>
>> + }
>> + return err;
>> +}
>> +
>
>
>> diff --git a/include/linux/if_team.h b/include/linux/if_team.h
>> new file mode 100644
>> index 0000000..21581a7
>> --- /dev/null
>> +++ b/include/linux/if_team.h
>> @@ -0,0 +1,233 @@
>> +/*
>> + * include/linux/if_team.h - Network team device driver header
>> + * Copyright (c) 2011 Jiri Pirko <jpirko@redhat.com>
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License as published by
>> + * the Free Software Foundation; either version 2 of the License, or
>> + * (at your option) any later version.
>> + */
>> +
>> +#ifndef _LINUX_IF_TEAM_H_
>> +#define _LINUX_IF_TEAM_H_
>> +
>> +#ifdef __KERNEL__
>> +
>> +struct team_pcpu_stats {
>> + u64 rx_packets;
>> + u64 rx_bytes;
>> + u64 rx_multicast;
>> + u64 tx_packets;
>> + u64 tx_bytes;
>> + struct u64_stats_sync syncp;
>> + u32 rx_dropped;
>> + u32 tx_dropped;
>
> "unsigned long" for these two fields ?
I copied these from some other driver (macvlan I think). I will change
this to unsigned long.
>
>> +};
>> +
>> +struct team;
>> +
>> +struct team_port {
>> + struct net_device *dev;
>> + struct hlist_node hlist; /* node in hash list */
>> + struct list_head list; /* node in ordinary list */
>> + struct team *team;
>> + int index;
>> +
>> + /*
>> + * A place for storing original values of the device before it
>> + * become a port.
>> + */
>> + struct {
>> + unsigned char dev_addr[MAX_ADDR_LEN];
>> + unsigned int mtu;
>> + } orig;
>> +
>> + bool linkup;
>> + u32 speed;
>> + u8 duplex;
>> +
>> + struct rcu_head rcu;
>> +};
>> +
>> +struct team_mode_ops {
>> + int (*init)(struct team *team);
>> + void (*exit)(struct team *team);
>> + rx_handler_result_t (*receive)(struct team *team,
>> + struct team_port *port,
>> + struct sk_buff *skb);
>> + bool (*transmit)(struct team *team, struct sk_buff *skb);
>> + int (*port_enter)(struct team *team, struct team_port *port);
>> + void (*port_leave)(struct team *team, struct team_port *port);
>> + void (*port_change_mac)(struct team *team, struct team_port *port);
>> +};
>> +
>> +enum team_option_type {
>> + TEAM_OPTION_TYPE_U32,
>> + TEAM_OPTION_TYPE_STRING,
>> +};
>> +
>> +struct team_option {
>> + struct list_head list;
>> + const char *name;
>> + enum team_option_type type;
>> + int (*getter)(struct team *team, void *arg);
>> + int (*setter)(struct team *team, void *arg);
>> +};
>> +
>> +struct team_mode {
>> + struct list_head list;
>> + const char *kind;
>> + struct module *owner;
>> + size_t priv_size;
>> + const struct team_mode_ops *ops;
>> +};
>> +
>> +#define TEAM_MODE_PRIV_LONGS 4
>> +#define TEAM_MODE_PRIV_SIZE (sizeof(long) * TEAM_MODE_PRIV_LONGS)
>> +
>> +struct team {
>> + struct net_device *dev; /* associated netdevice */
>
>
>> + struct team_pcpu_stats __percpu *pcpu_stats;
>
> I believe you can use net_device->anonymous_union, the one with
>ml_priv :
> struct pcpu_lstats __percpu *lstats; /* loopback stats */
> struct pcpu_tstats __percpu *tstats; /* tunnel stats */
> struct pcpu_dstats __percpu *dstats; /* dummy stats */
>and add here
> struct team_pcpu_stats __percpu *team_stats;
I this the right way? I must say I do not like it too much :(
>
>> +
>> + spinlock_t lock; /* used for overall locking, e.g. port lists write */
>> +
>> + /*
>> + * port lists with port count
>> + */
>> + int port_count;
>> + struct hlist_head *port_hlist;
>
> I am not sure why you want an external hash table, with 16 pointers...
>This could be embedded here to remove one dereference ?
Good point! Will change this.
Thanks Eric!
Jirka
>
>> + struct list_head port_list;
>> +
>> + struct list_head option_list;
>> +
>> + const char *mode_kind;
>> + struct team_mode_ops mode_ops;
>> + long mode_priv[TEAM_MODE_PRIV_LONGS];
>> +};
>> +
>
>
^ permalink raw reply
* Re: [PATCH net] vlan:make mtu of vlan equal to physical dev
From: Herbert Xu @ 2011-10-21 14:48 UTC (permalink / raw)
To: WeipingPan; +Cc: open list:NETWORKING [GENERAL]
In-Reply-To: <4E9E30B8.5030904@gmail.com>
On Wed, Oct 19, 2011 at 10:06:48AM +0800, WeipingPan wrote:
>
> What do you think of this patch ?
I think the current behaviour is fine as it is.
Cheers,
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply
* Re: [patch net-next V2] net: introduce ethernet teaming device
From: Eric Dumazet @ 2011-10-21 14:43 UTC (permalink / raw)
To: Jiri Pirko
Cc: netdev, davem, bhutchings, shemminger, fubar, andy, tgraf,
ebiederm, mirqus, kaber, greearb, jesse, fbl, benjamin.poirier,
jzupka
In-Reply-To: <1319200747-2508-1-git-send-email-jpirko@redhat.com>
Le vendredi 21 octobre 2011 à 14:39 +0200, Jiri Pirko a écrit :
> This patch introduces new network device called team. It supposes to be
> very fast, simple, userspace-driven alternative to existing bonding
> driver.
>
> Userspace library called libteam with couple of demo apps is available
> here:
> https://github.com/jpirko/libteam
> Note it's still in its dipers atm.
>
> team<->libteam use generic netlink for communication. That and rtnl
> suppose to be the only way to configure team device, no sysfs etc.
>
> Python binding basis for libteam was recently introduced (some need
> still need to be done on it though). Daemon providing arpmon/miimon
> active-backup functionality will be introduced shortly.
> All what's necessary is already implemented in kernel team driver.
>
> Signed-off-by: Jiri Pirko <jpirko@redhat.com>
>
> v1->v2:
> - modes are made as modules. Makes team more modular and
> extendable.
> - several commenters' nitpicks found on v1 were fixed
> - several other bugs were fixed.
> - note I ignored Eric's comment about roundrobin port selector
> as Eric's way may be easily implemented as another mode (mode
> "random") in future.
> ---
Very nice work !
> +
> +
> +/*
> + * We can benefit from the fact that it's ensured no port is present
> + * at the time of mode change.
> + */
> +static int __team_change_mode(struct team *team,
> + const struct team_mode *new_mode)
> +{
> + /* Check if mode was previously set and do cleanup if so */
> + if (team->mode_kind) {
> + void (*exit_op)(struct team *team) = team->mode_ops.exit;
> +
> + /* Clear ops area so no callback is called any longer */
> + memset(&team->mode_ops, 0, sizeof(struct team_mode_ops));
Hmm, memset() has no atomicity guarantee about 'longs' or 'pointers'.
You must make sure mode_ops.receive (and other pointers) is set not
byte per byte, but in one go.
> +
> + synchronize_rcu();
> +
> + if (exit_op)
> + exit_op(team);
> + team_mode_put(team->mode_kind);
> + team->mode_kind = NULL;
> + /* zero private data area */
> + memset(&team->mode_priv, 0,
> + sizeof(struct team) - offsetof(struct team, mode_priv));
> + }
> +
> + if (!new_mode)
> + return 0;
> +
> + if (new_mode->ops->init) {
> + int err;
> +
> + err = new_mode->ops->init(team);
> + if (err)
> + return err;
> + }
> +
> + team->mode_kind = new_mode->kind;
> + memcpy(&team->mode_ops, new_mode->ops, sizeof(struct team_mode_ops));
> +
> + return 0;
> +}
> +
> +
> +/************************
> + * Rx path frame handler
> + ************************/
> +
> +/* note: already called with rcu_read_lock */
> +static rx_handler_result_t team_handle_frame(struct sk_buff **pskb)
> +{
> + struct sk_buff *skb = *pskb;
> + struct team_port *port;
> + struct team *team;
> + rx_handler_result_t res = RX_HANDLER_ANOTHER;
> +
> + skb = skb_share_check(skb, GFP_ATOMIC);
> + if (!skb)
> + return RX_HANDLER_CONSUMED;
> +
> + *pskb = skb;
> +
> + port = team_port_get_rcu(skb->dev);
> + team = port->team;
> +
> + if (team->mode_ops.receive)
Hmm, you need ACCESS_ONCE() here or rcu_dereference()
See commit 4d97480b1806e883eb (bonding: use local function pointer of
bond->recv_probe in bond_handle_frame) for reference
> + res = team->mode_ops.receive(team, port, skb);
> +
> + if (res == RX_HANDLER_ANOTHER) {
> + struct team_pcpu_stats *pcpu_stats;
> +
> + pcpu_stats = this_cpu_ptr(team->pcpu_stats);
> + u64_stats_update_begin(&pcpu_stats->syncp);
> + pcpu_stats->rx_packets++;
> + pcpu_stats->rx_bytes += skb->len;
> + if (skb->pkt_type == PACKET_MULTICAST)
> + pcpu_stats->rx_multicast++;
> + u64_stats_update_end(&pcpu_stats->syncp);
> +
> + skb->dev = team->dev;
> + } else {
> + this_cpu_inc(team->pcpu_stats->rx_dropped);
> + }
> +
> + return res;
> +}
> +
> +
> +static int team_port_enter(struct team *team, struct team_port *port)
> +{
> + int err = 0;
> +
> + dev_hold(team->dev);
> + port->dev->priv_flags |= IFF_TEAM_PORT;
> + if (team->mode_ops.port_enter) {
> + err = team->mode_ops.port_enter(team, port);
> + if (err)
> + netdev_err(team->dev, "Device %s failed to enter team mode\n",
> + port->dev->name);
Not sure if you need to unset IFF_TEAM_PORT;
> + }
> + return err;
> +}
> +
> diff --git a/include/linux/if_team.h b/include/linux/if_team.h
> new file mode 100644
> index 0000000..21581a7
> --- /dev/null
> +++ b/include/linux/if_team.h
> @@ -0,0 +1,233 @@
> +/*
> + * include/linux/if_team.h - Network team device driver header
> + * Copyright (c) 2011 Jiri Pirko <jpirko@redhat.com>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + */
> +
> +#ifndef _LINUX_IF_TEAM_H_
> +#define _LINUX_IF_TEAM_H_
> +
> +#ifdef __KERNEL__
> +
> +struct team_pcpu_stats {
> + u64 rx_packets;
> + u64 rx_bytes;
> + u64 rx_multicast;
> + u64 tx_packets;
> + u64 tx_bytes;
> + struct u64_stats_sync syncp;
> + u32 rx_dropped;
> + u32 tx_dropped;
"unsigned long" for these two fields ?
> +};
> +
> +struct team;
> +
> +struct team_port {
> + struct net_device *dev;
> + struct hlist_node hlist; /* node in hash list */
> + struct list_head list; /* node in ordinary list */
> + struct team *team;
> + int index;
> +
> + /*
> + * A place for storing original values of the device before it
> + * become a port.
> + */
> + struct {
> + unsigned char dev_addr[MAX_ADDR_LEN];
> + unsigned int mtu;
> + } orig;
> +
> + bool linkup;
> + u32 speed;
> + u8 duplex;
> +
> + struct rcu_head rcu;
> +};
> +
> +struct team_mode_ops {
> + int (*init)(struct team *team);
> + void (*exit)(struct team *team);
> + rx_handler_result_t (*receive)(struct team *team,
> + struct team_port *port,
> + struct sk_buff *skb);
> + bool (*transmit)(struct team *team, struct sk_buff *skb);
> + int (*port_enter)(struct team *team, struct team_port *port);
> + void (*port_leave)(struct team *team, struct team_port *port);
> + void (*port_change_mac)(struct team *team, struct team_port *port);
> +};
> +
> +enum team_option_type {
> + TEAM_OPTION_TYPE_U32,
> + TEAM_OPTION_TYPE_STRING,
> +};
> +
> +struct team_option {
> + struct list_head list;
> + const char *name;
> + enum team_option_type type;
> + int (*getter)(struct team *team, void *arg);
> + int (*setter)(struct team *team, void *arg);
> +};
> +
> +struct team_mode {
> + struct list_head list;
> + const char *kind;
> + struct module *owner;
> + size_t priv_size;
> + const struct team_mode_ops *ops;
> +};
> +
> +#define TEAM_MODE_PRIV_LONGS 4
> +#define TEAM_MODE_PRIV_SIZE (sizeof(long) * TEAM_MODE_PRIV_LONGS)
> +
> +struct team {
> + struct net_device *dev; /* associated netdevice */
> + struct team_pcpu_stats __percpu *pcpu_stats;
I believe you can use net_device->anonymous_union, the one with
ml_priv :
struct pcpu_lstats __percpu *lstats; /* loopback stats */
struct pcpu_tstats __percpu *tstats; /* tunnel stats */
struct pcpu_dstats __percpu *dstats; /* dummy stats */
and add here
struct team_pcpu_stats __percpu *team_stats;
> +
> + spinlock_t lock; /* used for overall locking, e.g. port lists write */
> +
> + /*
> + * port lists with port count
> + */
> + int port_count;
> + struct hlist_head *port_hlist;
I am not sure why you want an external hash table, with 16 pointers...
This could be embedded here to remove one dereference ?
> + struct list_head port_list;
> +
> + struct list_head option_list;
> +
> + const char *mode_kind;
> + struct team_mode_ops mode_ops;
> + long mode_priv[TEAM_MODE_PRIV_LONGS];
> +};
> +
^ permalink raw reply
* Re: [patch net-next V2] net: introduce ethernet teaming device
From: Jiri Pirko @ 2011-10-21 14:18 UTC (permalink / raw)
To: Benjamin Poirier
Cc: netdev, davem, eric.dumazet, bhutchings, shemminger, fubar, andy,
tgraf, ebiederm, mirqus, kaber, greearb, jesse, fbl, jzupka
In-Reply-To: <20111021140005.GA29815@synalogic.ca>
Fri, Oct 21, 2011 at 04:00:05PM CEST, benjamin.poirier@gmail.com wrote:
>On 11/10/21 14:39, Jiri Pirko wrote:
>> This patch introduces new network device called team. It supposes to be
>> very fast, simple, userspace-driven alternative to existing bonding
>> driver.
>>
>> Userspace library called libteam with couple of demo apps is available
>> here:
>> https://github.com/jpirko/libteam
>> Note it's still in its dipers atm.
>>
>> team<->libteam use generic netlink for communication. That and rtnl
>> suppose to be the only way to configure team device, no sysfs etc.
>>
>> Python binding basis for libteam was recently introduced (some need
>> still need to be done on it though). Daemon providing arpmon/miimon
>> active-backup functionality will be introduced shortly.
>> All what's necessary is already implemented in kernel team driver.
>>
>> Signed-off-by: Jiri Pirko <jpirko@redhat.com>
>>
>> v1->v2:
>> - modes are made as modules. Makes team more modular and
>> extendable.
>> - several commenters' nitpicks found on v1 were fixed
>> - several other bugs were fixed.
>> - note I ignored Eric's comment about roundrobin port selector
>> as Eric's way may be easily implemented as another mode (mode
>> "random") in future.
>> ---
>> Documentation/networking/team.txt | 2 +
>> MAINTAINERS | 7 +
>> drivers/net/Kconfig | 2 +
>> drivers/net/Makefile | 1 +
>> drivers/net/team/Kconfig | 38 +
>> drivers/net/team/Makefile | 7 +
>> drivers/net/team/team.c | 1593 +++++++++++++++++++++++++++++
>> drivers/net/team/team_mode_activebackup.c | 152 +++
>> drivers/net/team/team_mode_roundrobin.c | 107 ++
>> include/linux/Kbuild | 1 +
>> include/linux/if.h | 1 +
>> include/linux/if_team.h | 233 +++++
>> 12 files changed, 2144 insertions(+), 0 deletions(-)
>> create mode 100644 Documentation/networking/team.txt
>> create mode 100644 drivers/net/team/Kconfig
>> create mode 100644 drivers/net/team/Makefile
>> create mode 100644 drivers/net/team/team.c
>> create mode 100644 drivers/net/team/team_mode_activebackup.c
>> create mode 100644 drivers/net/team/team_mode_roundrobin.c
>> create mode 100644 include/linux/if_team.h
>>
>> diff --git a/Documentation/networking/team.txt b/Documentation/networking/team.txt
>> new file mode 100644
>> index 0000000..5a01368
>> --- /dev/null
>> +++ b/Documentation/networking/team.txt
>> @@ -0,0 +1,2 @@
>> +Team devices are driven from userspace via libteam library which is here:
>> + https://github.com/jpirko/libteam
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index 5008b08..c33400d 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -6372,6 +6372,13 @@ W: http://tcp-lp-mod.sourceforge.net/
>> S: Maintained
>> F: net/ipv4/tcp_lp.c
>>
>> +TEAM DRIVER
>> +M: Jiri Pirko <jpirko@redhat.com>
>> +L: netdev@vger.kernel.org
>> +S: Supported
>> +F: drivers/net/team/
>> +F: include/linux/if_team.h
>> +
>> TEGRA SUPPORT
>> M: Colin Cross <ccross@android.com>
>> M: Erik Gilling <konkers@android.com>
>> diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
>> index 583f66c..b3020be 100644
>> --- a/drivers/net/Kconfig
>> +++ b/drivers/net/Kconfig
>> @@ -125,6 +125,8 @@ config IFB
>> 'ifb1' etc.
>> Look at the iproute2 documentation directory for usage etc
>>
>> +source "drivers/net/team/Kconfig"
>> +
>> config MACVLAN
>> tristate "MAC-VLAN support (EXPERIMENTAL)"
>> depends on EXPERIMENTAL
>> diff --git a/drivers/net/Makefile b/drivers/net/Makefile
>> index fa877cd..4e4ebfe 100644
>> --- a/drivers/net/Makefile
>> +++ b/drivers/net/Makefile
>> @@ -17,6 +17,7 @@ obj-$(CONFIG_NET) += Space.o loopback.o
>> obj-$(CONFIG_NETCONSOLE) += netconsole.o
>> obj-$(CONFIG_PHYLIB) += phy/
>> obj-$(CONFIG_RIONET) += rionet.o
>> +obj-$(CONFIG_NET_TEAM) += team/
>> obj-$(CONFIG_TUN) += tun.o
>> obj-$(CONFIG_VETH) += veth.o
>> obj-$(CONFIG_VIRTIO_NET) += virtio_net.o
>> diff --git a/drivers/net/team/Kconfig b/drivers/net/team/Kconfig
>> new file mode 100644
>> index 0000000..70a43a6
>> --- /dev/null
>> +++ b/drivers/net/team/Kconfig
>> @@ -0,0 +1,38 @@
>> +menuconfig NET_TEAM
>> + tristate "Ethernet team driver support (EXPERIMENTAL)"
>> + depends on EXPERIMENTAL
>> + ---help---
>> + This allows one to create virtual interfaces that teams together
>> + multiple ethernet devices.
>> +
>> + Team devices can be added using the "ip" command from the
>> + iproute2 package:
>> +
>> + "ip link add link [ address MAC ] [ NAME ] type team"
>> +
>> + To compile this driver as a module, choose M here: the module
>> + will be called team.
>> +
>> +if NET_TEAM
>> +
>> +config NET_TEAM_MODE_ROUNDROBIN
>> + tristate "Round-robin mode support"
>> + depends on NET_TEAM
>> + ---help---
>> + Basic mode where port used for transmitting packets is selected in
>> + round-robin fashion using packet counter.
>> +
>> + To compile this team mode as a module, choose M here: the module
>> + will be called team_mode_roundrobin.
>> +
>> +config NET_TEAM_MODE_ACTIVEBACKUP
>> + tristate "Active-backup mode support"
>> + depends on NET_TEAM
>> + ---help---
>> + Only one port is active at a time and the rest of ports are used
>> + for backup.
>> +
>> + To compile this team mode as a module, choose M here: the module
>> + will be called team_mode_activebackup.
>> +
>> +endif # NET_TEAM
>> diff --git a/drivers/net/team/Makefile b/drivers/net/team/Makefile
>> new file mode 100644
>> index 0000000..85f2028
>> --- /dev/null
>> +++ b/drivers/net/team/Makefile
>> @@ -0,0 +1,7 @@
>> +#
>> +# Makefile for the network team driver
>> +#
>> +
>> +obj-$(CONFIG_NET_TEAM) += team.o
>> +obj-$(CONFIG_NET_TEAM_MODE_ROUNDROBIN) += team_mode_roundrobin.o
>> +obj-$(CONFIG_NET_TEAM_MODE_ACTIVEBACKUP) += team_mode_activebackup.o
>> diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
>> new file mode 100644
>> index 0000000..398be58
>> --- /dev/null
>> +++ b/drivers/net/team/team.c
>> @@ -0,0 +1,1593 @@
>> +/*
>> + * net/drivers/team/team.c - Network team device driver
>> + * Copyright (c) 2011 Jiri Pirko <jpirko@redhat.com>
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License as published by
>> + * the Free Software Foundation; either version 2 of the License, or
>> + * (at your option) any later version.
>> + */
>> +
>> +#include <linux/kernel.h>
>> +#include <linux/types.h>
>> +#include <linux/module.h>
>> +#include <linux/init.h>
>> +#include <linux/slab.h>
>> +#include <linux/rcupdate.h>
>> +#include <linux/errno.h>
>> +#include <linux/ctype.h>
>> +#include <linux/notifier.h>
>> +#include <linux/netdevice.h>
>> +#include <linux/if_arp.h>
>> +#include <linux/socket.h>
>> +#include <linux/etherdevice.h>
>> +#include <linux/rtnetlink.h>
>> +#include <net/rtnetlink.h>
>> +#include <net/genetlink.h>
>> +#include <net/netlink.h>
>> +#include <linux/if_team.h>
>> +
>> +#define DRV_NAME "team"
>> +
>> +
>> +/**********
>> + * Helpers
>> + **********/
>> +
>> +#define team_port_exists(dev) (dev->priv_flags & IFF_TEAM_PORT)
>> +
>> +static struct team_port *team_port_get_rcu(const struct net_device *dev)
>> +{
>> + struct team_port *port = rcu_dereference(dev->rx_handler_data);
>> +
>> + return team_port_exists(dev) ? port : NULL;
>> +}
>> +
>> +static struct team_port *team_port_get_rtnl(const struct net_device *dev)
>> +{
>> + struct team_port *port = rtnl_dereference(dev->rx_handler_data);
>> +
>> + return team_port_exists(dev) ? port : NULL;
>> +}
>> +
>> +/*
>> + * Since the ability to change mac address for open port device is tested in
>> + * team_port_add, this function can be called without control of return value
>> + */
>> +static int __set_port_mac(struct net_device *port_dev,
>> + const unsigned char *dev_addr)
>> +{
>> + struct sockaddr addr;
>> +
>> + memcpy(addr.sa_data, dev_addr, ETH_ALEN);
>> + addr.sa_family = ARPHRD_ETHER;
>> + return dev_set_mac_address(port_dev, &addr);
>> +}
>> +
>> +int team_port_set_orig_mac(struct team_port *port)
>> +{
>> + return __set_port_mac(port->dev, port->orig.dev_addr);
>> +}
>> +EXPORT_SYMBOL(team_port_set_orig_mac);
>> +
>> +int team_port_set_team_mac(struct team_port *port)
>> +{
>> + return __set_port_mac(port->dev, port->team->dev->dev_addr);
>> +}
>> +EXPORT_SYMBOL(team_port_set_team_mac);
>> +
>> +
>> +/*******************
>> + * Options handling
>> + *******************/
>> +
>> +void team_options_register(struct team *team, struct team_option *option,
>> + size_t option_count)
>> +{
>> + int i;
>> +
>> + for (i = 0; i < option_count; i++, option++)
>> + list_add_tail(&option->list, &team->option_list);
>> +}
>> +EXPORT_SYMBOL(team_options_register);
>> +
>> +static void __team_options_change_check(struct team *team,
>> + struct team_option *changed_option);
>> +
>> +static void __team_options_unregister(struct team *team,
>> + struct team_option *option,
>> + size_t option_count)
>> +{
>> + int i;
>> +
>> + for (i = 0; i < option_count; i++, option++)
>> + list_del(&option->list);
>> +}
>> +
>> +void team_options_unregister(struct team *team, struct team_option *option,
>> + size_t option_count)
>> +{
>> + __team_options_unregister(team, option, option_count);
>> + __team_options_change_check(team, NULL);
>> +}
>> +EXPORT_SYMBOL(team_options_unregister);
>> +
>> +static int team_option_get(struct team *team, struct team_option *option,
>> + void *arg)
>> +{
>> + return option->getter(team, arg);
>> +}
>> +
>> +static int team_option_set(struct team *team, struct team_option *option,
>> + void *arg)
>> +{
>> + int err;
>> +
>> + err = option->setter(team, arg);
>> + if (err)
>> + return err;
>> +
>> + __team_options_change_check(team, option);
>> + return err;
>> +}
>> +
>> +/****************
>> + * Mode handling
>> + ****************/
>> +
>> +static LIST_HEAD(mode_list);
>> +static DEFINE_SPINLOCK(mode_list_lock);
>> +
>> +static struct team_mode *__find_mode(const char *kind)
>> +{
>> + struct team_mode *mode;
>> +
>> + list_for_each_entry(mode, &mode_list, list) {
>> + if (strcmp(mode->kind, kind) == 0)
>> + return mode;
>> + }
>> + return NULL;
>> +}
>> +
>> +static bool is_good_mode_name(const char *name)
>> +{
>> + while (*name != '\0') {
>> + if (!isalpha(*name) && !isdigit(*name) && *name != '_')
>> + return false;
>> + name++;
>> + }
>> + return true;
>> +}
>> +
>> +int team_mode_register(struct team_mode *mode)
>> +{
>> + int err = 0;
>> +
>> + if (!is_good_mode_name(mode->kind) ||
>> + mode->priv_size > TEAM_MODE_PRIV_SIZE)
>> + return -EINVAL;
>> + spin_lock(&mode_list_lock);
>> + if (__find_mode(mode->kind)) {
>> + err = -EEXIST;
>> + goto unlock;
>> + }
>> + list_add_tail(&mode->list, &mode_list);
>> +unlock:
>> + spin_unlock(&mode_list_lock);
>> + return err;
>> +}
>> +EXPORT_SYMBOL(team_mode_register);
>> +
>> +int team_mode_unregister(struct team_mode *mode)
>> +{
>> + spin_lock(&mode_list_lock);
>> + list_del_init(&mode->list);
>> + spin_unlock(&mode_list_lock);
>> + return 0;
>> +}
>> +EXPORT_SYMBOL(team_mode_unregister);
>> +
>> +static struct team_mode *team_mode_get(const char *kind)
>> +{
>> + struct team_mode *mode;
>> +
>> + spin_lock(&mode_list_lock);
>> + mode = __find_mode(kind);
>> + if (!mode) {
>> + spin_unlock(&mode_list_lock);
>> + request_module("team-mode-%s", kind);
>> + spin_lock(&mode_list_lock);
>> + mode = __find_mode(kind);
>> + }
>> + if (mode)
>> + if (!try_module_get(mode->owner))
>> + mode = NULL;
>> +
>> + spin_unlock(&mode_list_lock);
>> + return mode;
>> +}
>> +
>> +static void team_mode_put(const char *kind)
>> +{
>> + struct team_mode *mode;
>> +
>> + spin_lock(&mode_list_lock);
>> + mode = __find_mode(kind);
>> + BUG_ON(!mode);
>> + module_put(mode->owner);
>> + spin_unlock(&mode_list_lock);
>> +}
>> +
>> +/*
>> + * We can benefit from the fact that it's ensured no port is present
>> + * at the time of mode change.
>> + */
>> +static int __team_change_mode(struct team *team,
>> + const struct team_mode *new_mode)
>> +{
>> + /* Check if mode was previously set and do cleanup if so */
>> + if (team->mode_kind) {
>> + void (*exit_op)(struct team *team) = team->mode_ops.exit;
>> +
>> + /* Clear ops area so no callback is called any longer */
>> + memset(&team->mode_ops, 0, sizeof(struct team_mode_ops));
>> +
>> + synchronize_rcu();
>> +
>> + if (exit_op)
>> + exit_op(team);
>> + team_mode_put(team->mode_kind);
>> + team->mode_kind = NULL;
>> + /* zero private data area */
>> + memset(&team->mode_priv, 0,
>> + sizeof(struct team) - offsetof(struct team, mode_priv));
>> + }
>> +
>> + if (!new_mode)
>> + return 0;
>> +
>> + if (new_mode->ops->init) {
>> + int err;
>> +
>> + err = new_mode->ops->init(team);
>> + if (err)
>> + return err;
>> + }
>> +
>> + team->mode_kind = new_mode->kind;
>> + memcpy(&team->mode_ops, new_mode->ops, sizeof(struct team_mode_ops));
>> +
>> + return 0;
>> +}
>> +
>> +static int team_change_mode(struct team *team, const char *kind)
>> +{
>> + struct team_mode *new_mode;
>> + struct net_device *dev = team->dev;
>> + int err;
>> +
>> + if (!list_empty(&team->port_list)) {
>> + netdev_err(dev, "No ports can be present during mode change\n");
>> + return -EBUSY;
>> + }
>> +
>> + if (team->mode_kind && strcmp(team->mode_kind, kind) == 0) {
>> + netdev_err(dev, "Unable to change to the same mode the team is in\n");
>> + return -EINVAL;
>> + }
>> +
>> + new_mode = team_mode_get(kind);
>> + if (!new_mode) {
>> + netdev_err(dev, "Mode \"%s\" not found\n", kind);
>> + return -EINVAL;
>> + }
>> +
>> + err = __team_change_mode(team, new_mode);
>> + if (err) {
>> + netdev_err(dev, "Failed to change to mode \"%s\"\n", kind);
>> + team_mode_put(kind);
>> + return err;
>> + }
>> +
>> + netdev_info(dev, "Mode changed to \"%s\"\n", kind);
>> + return 0;
>> +}
>> +
>> +
>> +/************************
>> + * Rx path frame handler
>> + ************************/
>> +
>> +/* note: already called with rcu_read_lock */
>> +static rx_handler_result_t team_handle_frame(struct sk_buff **pskb)
>> +{
>> + struct sk_buff *skb = *pskb;
>> + struct team_port *port;
>> + struct team *team;
>> + rx_handler_result_t res = RX_HANDLER_ANOTHER;
>> +
>> + skb = skb_share_check(skb, GFP_ATOMIC);
>> + if (!skb)
>> + return RX_HANDLER_CONSUMED;
>> +
>> + *pskb = skb;
>> +
>> + port = team_port_get_rcu(skb->dev);
>> + team = port->team;
>> +
>> + if (team->mode_ops.receive)
>> + res = team->mode_ops.receive(team, port, skb);
>> +
>> + if (res == RX_HANDLER_ANOTHER) {
>> + struct team_pcpu_stats *pcpu_stats;
>> +
>> + pcpu_stats = this_cpu_ptr(team->pcpu_stats);
>> + u64_stats_update_begin(&pcpu_stats->syncp);
>> + pcpu_stats->rx_packets++;
>> + pcpu_stats->rx_bytes += skb->len;
>> + if (skb->pkt_type == PACKET_MULTICAST)
>> + pcpu_stats->rx_multicast++;
>> + u64_stats_update_end(&pcpu_stats->syncp);
>> +
>> + skb->dev = team->dev;
>> + } else {
>> + this_cpu_inc(team->pcpu_stats->rx_dropped);
>> + }
>> +
>> + return res;
>> +}
>> +
>> +
>> +/****************
>> + * Port handling
>> + ****************/
>> +
>> +static bool team_port_find(const struct team *team,
>> + const struct team_port *port)
>> +{
>> + struct team_port *cur;
>> +
>> + list_for_each_entry(cur, &team->port_list, list)
>> + if (cur == port)
>> + return true;
>> + return false;
>> +}
>> +
>> +static int team_port_list_init(struct team *team)
>> +{
>> + int i;
>> + struct hlist_head *hash;
>> +
>> + hash = kmalloc(sizeof(*hash) * TEAM_PORT_HASHENTRIES, GFP_KERNEL);
>> + if (!hash)
>> + return -ENOMEM;
>> +
>> + for (i = 0; i < TEAM_PORT_HASHENTRIES; i++)
>> + INIT_HLIST_HEAD(&hash[i]);
>> + team->port_hlist = hash;
>> + INIT_LIST_HEAD(&team->port_list);
>> + return 0;
>> +}
>> +
>> +static void team_port_list_fini(struct team *team)
>> +{
>> + kfree(team->port_hlist);
>> +}
>> +
>> +/*
>> + * Add/delete port to the team port list. Write guarded by rtnl_lock.
>> + * Takes care of correct port->index setup (might be racy).
>> + */
>> +static void team_port_list_add_port(struct team *team,
>> + struct team_port *port)
>> +{
>> + port->index = team->port_count++;
>> + hlist_add_head_rcu(&port->hlist,
>> + team_port_index_hash(team, port->index));
>> + list_add_tail_rcu(&port->list, &team->port_list);
>> +}
>> +
>> +static void __reconstruct_port_hlist(struct team *team, int rm_index)
>> +{
>> + int i;
>> + struct team_port *port;
>> +
>> + for (i = rm_index + 1; i < team->port_count; i++) {
>> + port = team_get_port_by_index_rcu(team, i);
>> + hlist_del_rcu(&port->hlist);
>> + port->index--;
>> + hlist_add_head_rcu(&port->hlist,
>> + team_port_index_hash(team, port->index));
>> + }
>> +}
>> +
>> +static void team_port_list_del_port(struct team *team,
>> + struct team_port *port)
>> +{
>> + int rm_index = port->index;
>> +
>> + hlist_del_rcu(&port->hlist);
>> + list_del_rcu(&port->list);
>> + __reconstruct_port_hlist(team, rm_index);
>> + team->port_count--;
>> +}
>> +
>> +#define TEAM_VLAN_FEATURES (NETIF_F_ALL_CSUM | NETIF_F_SG | \
>> + NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \
>> + NETIF_F_HIGHDMA | NETIF_F_LRO)
>> +
>> +static void __team_compute_features(struct team *team)
>> +{
>> + struct team_port *port;
>> + u32 vlan_features = TEAM_VLAN_FEATURES;
>> + unsigned short max_hard_header_len = ETH_HLEN;
>> +
>> + list_for_each_entry(port, &team->port_list, list) {
>> + vlan_features = netdev_increment_features(vlan_features,
>> + port->dev->vlan_features,
>> + TEAM_VLAN_FEATURES);
>> +
>> + if (port->dev->hard_header_len > max_hard_header_len)
>> + max_hard_header_len = port->dev->hard_header_len;
>> + }
>> +
>> + team->dev->vlan_features = vlan_features;
>> + team->dev->hard_header_len = max_hard_header_len;
>> +
>> + netdev_change_features(team->dev);
>> +}
>> +
>> +static void team_compute_features(struct team *team)
>> +{
>> + spin_lock(&team->lock);
>> + __team_compute_features(team);
>> + spin_unlock(&team->lock);
>> +}
>> +
>> +static int team_port_enter(struct team *team, struct team_port *port)
>> +{
>> + int err = 0;
>> +
>> + dev_hold(team->dev);
>> + port->dev->priv_flags |= IFF_TEAM_PORT;
>> + if (team->mode_ops.port_enter) {
>> + err = team->mode_ops.port_enter(team, port);
>> + if (err)
>> + netdev_err(team->dev, "Device %s failed to enter team mode\n",
>> + port->dev->name);
>> + }
>> + return err;
>> +}
>> +
>> +static void team_port_leave(struct team *team, struct team_port *port)
>> +{
>> + if (team->mode_ops.port_leave)
>> + team->mode_ops.port_leave(team, port);
>> + port->dev->priv_flags &= ~IFF_TEAM_PORT;
>> + dev_put(team->dev);
>> +}
>> +
>> +static void __team_port_change_check(struct team_port *port, bool linkup);
>> +
>> +static int team_port_add(struct team *team, struct net_device *port_dev)
>> +{
>> + struct net_device *dev = team->dev;
>> + struct team_port *port;
>> + char *portname = port_dev->name;
>> + char tmp_addr[ETH_ALEN];
>> + int err;
>> +
>> + if (port_dev->flags & IFF_LOOPBACK ||
>> + port_dev->type != ARPHRD_ETHER) {
>> + netdev_err(dev, "Device %s is of an unsupported type\n",
>> + portname);
>> + return -EINVAL;
>> + }
>> +
>> + if (team_port_exists(port_dev)) {
>> + netdev_err(dev, "Device %s is already a port "
>> + "of a team device\n", portname);
>> + return -EBUSY;
>> + }
>> +
>> + if (port_dev->flags & IFF_UP) {
>> + netdev_err(dev, "Device %s is up. Set it down before adding it as a team port\n",
>> + portname);
>> + return -EBUSY;
>> + }
>> +
>> + port = kzalloc(sizeof(struct team_port), GFP_KERNEL);
>> + if (!port)
>> + return -ENOMEM;
>> +
>> + port->dev = port_dev;
>> + port->team = team;
>> +
>> + port->orig.mtu = port_dev->mtu;
>> + err = dev_set_mtu(port_dev, dev->mtu);
>> + if (err) {
>> + netdev_dbg(dev, "Error %d calling dev_set_mtu\n", err);
>> + goto err_set_mtu;
>> + }
>> +
>> + memcpy(port->orig.dev_addr, port_dev->dev_addr, ETH_ALEN);
>> + random_ether_addr(tmp_addr);
>> + err = __set_port_mac(port_dev, tmp_addr);
>> + if (err) {
>> + netdev_dbg(dev, "Device %s mac addr set failed\n",
>> + portname);
>> + goto err_set_mac_rand;
>> + }
>> +
>> + err = dev_open(port_dev);
>> + if (err) {
>> + netdev_dbg(dev, "Device %s opening failed\n",
>> + portname);
>> + goto err_dev_open;
>> + }
>> +
>> + err = team_port_set_orig_mac(port);
>> + if (err) {
>> + netdev_dbg(dev, "Device %s mac addr set failed - Device does not support addr change when it's opened\n",
>> + portname);
>> + goto err_set_mac_opened;
>> + }
>> +
>> + err = team_port_enter(team, port);
>> + if (err) {
>> + netdev_err(dev, "Device %s failed to enter team mode\n",
>> + portname);
>> + goto err_port_enter;
>> + }
>> +
>> + err = netdev_set_master(port_dev, dev);
>> + if (err) {
>> + netdev_err(dev, "Device %s failed to set master\n", portname);
>> + goto err_set_master;
>> + }
>> +
>> + err = netdev_rx_handler_register(port_dev, team_handle_frame,
>> + port);
>> + if (err) {
>> + netdev_err(dev, "Device %s failed to register rx_handler\n",
>> + portname);
>> + goto err_handler_register;
>> + }
>> +
>> + team_port_list_add_port(team, port);
>> + __team_compute_features(team);
>> + __team_port_change_check(port, !!netif_carrier_ok(port_dev));
>> +
>> + netdev_info(dev, "Port device %s added\n", portname);
>> +
>> + return 0;
>> +
>> +err_handler_register:
>> + netdev_set_master(port_dev, NULL);
>> +
>> +err_set_master:
>> + team_port_leave(team, port);
>> +
>> +err_port_enter:
>> +err_set_mac_opened:
>> + dev_close(port_dev);
>> +
>> +err_dev_open:
>> + team_port_set_orig_mac(port);
>> +
>> +err_set_mac_rand:
>> + dev_set_mtu(port_dev, port->orig.mtu);
>> +
>> +err_set_mtu:
>> + kfree(port);
>> +
>> + return err;
>> +}
>> +
>> +static int team_port_del(struct team *team, struct net_device *port_dev)
>> +{
>> + struct net_device *dev = team->dev;
>> + struct team_port *port;
>> + char *portname = port_dev->name;
>> +
>> + port = team_port_get_rtnl(port_dev);
>> + if (!port || !team_port_find(team, port)) {
>> + netdev_err(dev, "Device %s does not act as a port of this team\n",
>> + portname);
>> + return -ENOENT;
>> + }
>> +
>> + __team_port_change_check(port, false);
>> + team_port_list_del_port(team, port);
>> + netdev_rx_handler_unregister(port_dev);
>> + netdev_set_master(port_dev, NULL);
>> + team_port_leave(team, port);
>> + dev_close(port_dev);
>> + team_port_set_orig_mac(port);
>> + dev_set_mtu(port_dev, port->orig.mtu);
>> + synchronize_rcu();
>> + kfree(port);
>> + netdev_info(dev, "Port device %s removed\n", portname);
>> + __team_compute_features(team);
>> +
>> + return 0;
>> +}
>> +
>> +
>> +/*****************
>> + * Net device ops
>> + *****************/
>> +
>> +static const char team_no_mode_kind[] = "*NOMODE*";
>> +
>> +static int team_mode_option_get(struct team *team, void *arg)
>> +{
>> + const char **str = arg;
>> +
>> + *str = team->mode_kind ? team->mode_kind : team_no_mode_kind;
>> + return 0;
>> +}
>> +
>> +static int team_mode_option_set(struct team *team, void *arg)
>> +{
>> + const char **str = arg;
>> +
>> + return team_change_mode(team, *str);
>> +}
>> +
>> +static struct team_option team_options[] = {
>> + {
>> + .name = "mode",
>> + .type = TEAM_OPTION_TYPE_STRING,
>> + .getter = team_mode_option_get,
>> + .setter = team_mode_option_set,
>> + },
>> +};
>> +
>> +static int team_init(struct net_device *dev)
>> +{
>> + struct team *team = netdev_priv(dev);
>> + int err;
>> +
>> + team->dev = dev;
>> + spin_lock_init(&team->lock);
>> +
>> + team->pcpu_stats = alloc_percpu(struct team_pcpu_stats);
>> + if (!team->pcpu_stats)
>> + return -ENOMEM;
>> +
>> + err = team_port_list_init(team);
>> + if (err)
>> + goto err_port_list_init;
>> +
>> + INIT_LIST_HEAD(&team->option_list);
>> + team_options_register(team, team_options, ARRAY_SIZE(team_options));
>> + netif_carrier_off(dev);
>> +
>> + return 0;
>> +
>> +err_port_list_init:
>> +
>> + free_percpu(team->pcpu_stats);
>> +
>> + return err;
>> +}
>> +
>> +static void team_uninit(struct net_device *dev)
>> +{
>> + struct team *team = netdev_priv(dev);
>> + struct team_port *port;
>> + struct team_port *tmp;
>> +
>> + spin_lock(&team->lock);
>> + list_for_each_entry_safe(port, tmp, &team->port_list, list)
>> + team_port_del(team, port->dev);
>> +
>> + __team_change_mode(team, NULL); /* cleanup */
>> + __team_options_unregister(team, team_options, ARRAY_SIZE(team_options));
>> + spin_unlock(&team->lock);
>> +}
>> +
>> +static void team_destructor(struct net_device *dev)
>> +{
>> + struct team *team = netdev_priv(dev);
>> +
>> + team_port_list_fini(team);
>> + free_percpu(team->pcpu_stats);
>> + free_netdev(dev);
>> +}
>> +
>> +static int team_open(struct net_device *dev)
>> +{
>> + netif_carrier_on(dev);
>> + return 0;
>> +}
>> +
>> +static int team_close(struct net_device *dev)
>> +{
>> + netif_carrier_off(dev);
>> + return 0;
>> +}
>> +
>> +/*
>> + * note: already called with rcu_read_lock
>> + */
>> +static netdev_tx_t team_xmit(struct sk_buff *skb, struct net_device *dev)
>> +{
>> + struct team *team = netdev_priv(dev);
>> + bool tx_success = false;
>> + unsigned int len = skb->len;
>> +
>> + /*
>> + * Ensure transmit function is called only in case there is at least
>> + * one port present.
>> + */
>> + if (likely(!list_empty(&team->port_list) && team->mode_ops.transmit))
>> + tx_success = team->mode_ops.transmit(team, skb);
>> + if (tx_success) {
>> + struct team_pcpu_stats *pcpu_stats;
>> +
>> + pcpu_stats = this_cpu_ptr(team->pcpu_stats);
>> + u64_stats_update_begin(&pcpu_stats->syncp);
>> + pcpu_stats->tx_packets++;
>> + pcpu_stats->tx_bytes += len;
>> + u64_stats_update_end(&pcpu_stats->syncp);
>> + } else {
>> + this_cpu_inc(team->pcpu_stats->tx_dropped);
>> + }
>> +
>> + return NETDEV_TX_OK;
>> +}
>> +
>> +static void team_change_rx_flags(struct net_device *dev, int change)
>> +{
>> + struct team *team = netdev_priv(dev);
>> + struct team_port *port;
>> + int inc;
>> +
>> + rcu_read_lock();
>> + list_for_each_entry_rcu(port, &team->port_list, list) {
>> + if (change & IFF_PROMISC) {
>> + inc = dev->flags & IFF_PROMISC ? 1 : -1;
>> + dev_set_promiscuity(port->dev, inc);
>> + }
>> + if (change & IFF_ALLMULTI) {
>> + inc = dev->flags & IFF_ALLMULTI ? 1 : -1;
>> + dev_set_allmulti(port->dev, inc);
>> + }
>> + }
>> + rcu_read_unlock();
>> +}
>> +
>> +static void team_set_rx_mode(struct net_device *dev)
>> +{
>> + struct team *team = netdev_priv(dev);
>> + struct team_port *port;
>> +
>> + rcu_read_lock();
>> + list_for_each_entry_rcu(port, &team->port_list, list) {
>> + dev_uc_sync(port->dev, dev);
>> + dev_mc_sync(port->dev, dev);
>> + }
>> + rcu_read_unlock();
>> +}
>> +
>> +static int team_set_mac_address(struct net_device *dev, void *p)
>> +{
>> + struct team *team = netdev_priv(dev);
>> + struct team_port *port;
>> + struct sockaddr *addr = p;
>> +
>> + memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
>> + rcu_read_lock();
>> + list_for_each_entry_rcu(port, &team->port_list, list)
>> + if (team->mode_ops.port_change_mac)
>> + team->mode_ops.port_change_mac(team, port);
>> + rcu_read_unlock();
>> + return 0;
>> +}
>> +
>> +static int team_change_mtu(struct net_device *dev, int new_mtu)
>> +{
>> + struct team *team = netdev_priv(dev);
>> + struct team_port *port;
>> + int err;
>> +
>> + rcu_read_lock();
>> + list_for_each_entry_rcu(port, &team->port_list, list) {
>> + err = dev_set_mtu(port->dev, new_mtu);
>> + if (err) {
>> + netdev_err(dev, "Device %s failed to change mtu",
>> + port->dev->name);
>> + goto unwind;
>> + }
>> + }
>> + rcu_read_unlock();
>> +
>> + dev->mtu = new_mtu;
>> +
>> + return 0;
>> +
>> +unwind:
>> + list_for_each_entry_continue_reverse(port, &team->port_list, list)
>> + dev_set_mtu(port->dev, dev->mtu);
>
>It may be worth noting that backwards list traversal is not rcu safe.
>Under rcu_read_lock() list elements will not be freed but the list may
>be modified. Moreover, list_del_rcu() poisons ->prev pointers.
>
>In this case it doesn't really matter though. As Eric pointed out
>previously, we are under rtnl protection and no rcu is needed. Perhaps
>all the extra rcu locking should be removed?
Thanks for catching this. I will perhaps fix this in incremental patch
(in case there will be no more problems with this one).
list_for_each_entry_continue_reverse_rcu needs to be added ro rculist.h
And regarding rtnl. As I stated in v1 of this patch I do not want to
depend on rtnl. Team has spinlock to protect multiple writer access and
in this case, team_change_mtu code is reader.
Thanks.
Jirka
>
>-Ben
>
>> +
>> + rcu_read_unlock();
>> + return err;
>> +}
>> +
^ permalink raw reply
* Re: [patch net-next V2] net: introduce ethernet teaming device
From: Benjamin Poirier @ 2011-10-21 14:00 UTC (permalink / raw)
To: Jiri Pirko
Cc: netdev, davem, eric.dumazet, bhutchings, shemminger, fubar, andy,
tgraf, ebiederm, mirqus, kaber, greearb, jesse, fbl, jzupka
In-Reply-To: <1319200747-2508-1-git-send-email-jpirko@redhat.com>
On 11/10/21 14:39, Jiri Pirko wrote:
> This patch introduces new network device called team. It supposes to be
> very fast, simple, userspace-driven alternative to existing bonding
> driver.
>
> Userspace library called libteam with couple of demo apps is available
> here:
> https://github.com/jpirko/libteam
> Note it's still in its dipers atm.
>
> team<->libteam use generic netlink for communication. That and rtnl
> suppose to be the only way to configure team device, no sysfs etc.
>
> Python binding basis for libteam was recently introduced (some need
> still need to be done on it though). Daemon providing arpmon/miimon
> active-backup functionality will be introduced shortly.
> All what's necessary is already implemented in kernel team driver.
>
> Signed-off-by: Jiri Pirko <jpirko@redhat.com>
>
> v1->v2:
> - modes are made as modules. Makes team more modular and
> extendable.
> - several commenters' nitpicks found on v1 were fixed
> - several other bugs were fixed.
> - note I ignored Eric's comment about roundrobin port selector
> as Eric's way may be easily implemented as another mode (mode
> "random") in future.
> ---
> Documentation/networking/team.txt | 2 +
> MAINTAINERS | 7 +
> drivers/net/Kconfig | 2 +
> drivers/net/Makefile | 1 +
> drivers/net/team/Kconfig | 38 +
> drivers/net/team/Makefile | 7 +
> drivers/net/team/team.c | 1593 +++++++++++++++++++++++++++++
> drivers/net/team/team_mode_activebackup.c | 152 +++
> drivers/net/team/team_mode_roundrobin.c | 107 ++
> include/linux/Kbuild | 1 +
> include/linux/if.h | 1 +
> include/linux/if_team.h | 233 +++++
> 12 files changed, 2144 insertions(+), 0 deletions(-)
> create mode 100644 Documentation/networking/team.txt
> create mode 100644 drivers/net/team/Kconfig
> create mode 100644 drivers/net/team/Makefile
> create mode 100644 drivers/net/team/team.c
> create mode 100644 drivers/net/team/team_mode_activebackup.c
> create mode 100644 drivers/net/team/team_mode_roundrobin.c
> create mode 100644 include/linux/if_team.h
>
> diff --git a/Documentation/networking/team.txt b/Documentation/networking/team.txt
> new file mode 100644
> index 0000000..5a01368
> --- /dev/null
> +++ b/Documentation/networking/team.txt
> @@ -0,0 +1,2 @@
> +Team devices are driven from userspace via libteam library which is here:
> + https://github.com/jpirko/libteam
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 5008b08..c33400d 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -6372,6 +6372,13 @@ W: http://tcp-lp-mod.sourceforge.net/
> S: Maintained
> F: net/ipv4/tcp_lp.c
>
> +TEAM DRIVER
> +M: Jiri Pirko <jpirko@redhat.com>
> +L: netdev@vger.kernel.org
> +S: Supported
> +F: drivers/net/team/
> +F: include/linux/if_team.h
> +
> TEGRA SUPPORT
> M: Colin Cross <ccross@android.com>
> M: Erik Gilling <konkers@android.com>
> diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
> index 583f66c..b3020be 100644
> --- a/drivers/net/Kconfig
> +++ b/drivers/net/Kconfig
> @@ -125,6 +125,8 @@ config IFB
> 'ifb1' etc.
> Look at the iproute2 documentation directory for usage etc
>
> +source "drivers/net/team/Kconfig"
> +
> config MACVLAN
> tristate "MAC-VLAN support (EXPERIMENTAL)"
> depends on EXPERIMENTAL
> diff --git a/drivers/net/Makefile b/drivers/net/Makefile
> index fa877cd..4e4ebfe 100644
> --- a/drivers/net/Makefile
> +++ b/drivers/net/Makefile
> @@ -17,6 +17,7 @@ obj-$(CONFIG_NET) += Space.o loopback.o
> obj-$(CONFIG_NETCONSOLE) += netconsole.o
> obj-$(CONFIG_PHYLIB) += phy/
> obj-$(CONFIG_RIONET) += rionet.o
> +obj-$(CONFIG_NET_TEAM) += team/
> obj-$(CONFIG_TUN) += tun.o
> obj-$(CONFIG_VETH) += veth.o
> obj-$(CONFIG_VIRTIO_NET) += virtio_net.o
> diff --git a/drivers/net/team/Kconfig b/drivers/net/team/Kconfig
> new file mode 100644
> index 0000000..70a43a6
> --- /dev/null
> +++ b/drivers/net/team/Kconfig
> @@ -0,0 +1,38 @@
> +menuconfig NET_TEAM
> + tristate "Ethernet team driver support (EXPERIMENTAL)"
> + depends on EXPERIMENTAL
> + ---help---
> + This allows one to create virtual interfaces that teams together
> + multiple ethernet devices.
> +
> + Team devices can be added using the "ip" command from the
> + iproute2 package:
> +
> + "ip link add link [ address MAC ] [ NAME ] type team"
> +
> + To compile this driver as a module, choose M here: the module
> + will be called team.
> +
> +if NET_TEAM
> +
> +config NET_TEAM_MODE_ROUNDROBIN
> + tristate "Round-robin mode support"
> + depends on NET_TEAM
> + ---help---
> + Basic mode where port used for transmitting packets is selected in
> + round-robin fashion using packet counter.
> +
> + To compile this team mode as a module, choose M here: the module
> + will be called team_mode_roundrobin.
> +
> +config NET_TEAM_MODE_ACTIVEBACKUP
> + tristate "Active-backup mode support"
> + depends on NET_TEAM
> + ---help---
> + Only one port is active at a time and the rest of ports are used
> + for backup.
> +
> + To compile this team mode as a module, choose M here: the module
> + will be called team_mode_activebackup.
> +
> +endif # NET_TEAM
> diff --git a/drivers/net/team/Makefile b/drivers/net/team/Makefile
> new file mode 100644
> index 0000000..85f2028
> --- /dev/null
> +++ b/drivers/net/team/Makefile
> @@ -0,0 +1,7 @@
> +#
> +# Makefile for the network team driver
> +#
> +
> +obj-$(CONFIG_NET_TEAM) += team.o
> +obj-$(CONFIG_NET_TEAM_MODE_ROUNDROBIN) += team_mode_roundrobin.o
> +obj-$(CONFIG_NET_TEAM_MODE_ACTIVEBACKUP) += team_mode_activebackup.o
> diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
> new file mode 100644
> index 0000000..398be58
> --- /dev/null
> +++ b/drivers/net/team/team.c
> @@ -0,0 +1,1593 @@
> +/*
> + * net/drivers/team/team.c - Network team device driver
> + * Copyright (c) 2011 Jiri Pirko <jpirko@redhat.com>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + */
> +
> +#include <linux/kernel.h>
> +#include <linux/types.h>
> +#include <linux/module.h>
> +#include <linux/init.h>
> +#include <linux/slab.h>
> +#include <linux/rcupdate.h>
> +#include <linux/errno.h>
> +#include <linux/ctype.h>
> +#include <linux/notifier.h>
> +#include <linux/netdevice.h>
> +#include <linux/if_arp.h>
> +#include <linux/socket.h>
> +#include <linux/etherdevice.h>
> +#include <linux/rtnetlink.h>
> +#include <net/rtnetlink.h>
> +#include <net/genetlink.h>
> +#include <net/netlink.h>
> +#include <linux/if_team.h>
> +
> +#define DRV_NAME "team"
> +
> +
> +/**********
> + * Helpers
> + **********/
> +
> +#define team_port_exists(dev) (dev->priv_flags & IFF_TEAM_PORT)
> +
> +static struct team_port *team_port_get_rcu(const struct net_device *dev)
> +{
> + struct team_port *port = rcu_dereference(dev->rx_handler_data);
> +
> + return team_port_exists(dev) ? port : NULL;
> +}
> +
> +static struct team_port *team_port_get_rtnl(const struct net_device *dev)
> +{
> + struct team_port *port = rtnl_dereference(dev->rx_handler_data);
> +
> + return team_port_exists(dev) ? port : NULL;
> +}
> +
> +/*
> + * Since the ability to change mac address for open port device is tested in
> + * team_port_add, this function can be called without control of return value
> + */
> +static int __set_port_mac(struct net_device *port_dev,
> + const unsigned char *dev_addr)
> +{
> + struct sockaddr addr;
> +
> + memcpy(addr.sa_data, dev_addr, ETH_ALEN);
> + addr.sa_family = ARPHRD_ETHER;
> + return dev_set_mac_address(port_dev, &addr);
> +}
> +
> +int team_port_set_orig_mac(struct team_port *port)
> +{
> + return __set_port_mac(port->dev, port->orig.dev_addr);
> +}
> +EXPORT_SYMBOL(team_port_set_orig_mac);
> +
> +int team_port_set_team_mac(struct team_port *port)
> +{
> + return __set_port_mac(port->dev, port->team->dev->dev_addr);
> +}
> +EXPORT_SYMBOL(team_port_set_team_mac);
> +
> +
> +/*******************
> + * Options handling
> + *******************/
> +
> +void team_options_register(struct team *team, struct team_option *option,
> + size_t option_count)
> +{
> + int i;
> +
> + for (i = 0; i < option_count; i++, option++)
> + list_add_tail(&option->list, &team->option_list);
> +}
> +EXPORT_SYMBOL(team_options_register);
> +
> +static void __team_options_change_check(struct team *team,
> + struct team_option *changed_option);
> +
> +static void __team_options_unregister(struct team *team,
> + struct team_option *option,
> + size_t option_count)
> +{
> + int i;
> +
> + for (i = 0; i < option_count; i++, option++)
> + list_del(&option->list);
> +}
> +
> +void team_options_unregister(struct team *team, struct team_option *option,
> + size_t option_count)
> +{
> + __team_options_unregister(team, option, option_count);
> + __team_options_change_check(team, NULL);
> +}
> +EXPORT_SYMBOL(team_options_unregister);
> +
> +static int team_option_get(struct team *team, struct team_option *option,
> + void *arg)
> +{
> + return option->getter(team, arg);
> +}
> +
> +static int team_option_set(struct team *team, struct team_option *option,
> + void *arg)
> +{
> + int err;
> +
> + err = option->setter(team, arg);
> + if (err)
> + return err;
> +
> + __team_options_change_check(team, option);
> + return err;
> +}
> +
> +/****************
> + * Mode handling
> + ****************/
> +
> +static LIST_HEAD(mode_list);
> +static DEFINE_SPINLOCK(mode_list_lock);
> +
> +static struct team_mode *__find_mode(const char *kind)
> +{
> + struct team_mode *mode;
> +
> + list_for_each_entry(mode, &mode_list, list) {
> + if (strcmp(mode->kind, kind) == 0)
> + return mode;
> + }
> + return NULL;
> +}
> +
> +static bool is_good_mode_name(const char *name)
> +{
> + while (*name != '\0') {
> + if (!isalpha(*name) && !isdigit(*name) && *name != '_')
> + return false;
> + name++;
> + }
> + return true;
> +}
> +
> +int team_mode_register(struct team_mode *mode)
> +{
> + int err = 0;
> +
> + if (!is_good_mode_name(mode->kind) ||
> + mode->priv_size > TEAM_MODE_PRIV_SIZE)
> + return -EINVAL;
> + spin_lock(&mode_list_lock);
> + if (__find_mode(mode->kind)) {
> + err = -EEXIST;
> + goto unlock;
> + }
> + list_add_tail(&mode->list, &mode_list);
> +unlock:
> + spin_unlock(&mode_list_lock);
> + return err;
> +}
> +EXPORT_SYMBOL(team_mode_register);
> +
> +int team_mode_unregister(struct team_mode *mode)
> +{
> + spin_lock(&mode_list_lock);
> + list_del_init(&mode->list);
> + spin_unlock(&mode_list_lock);
> + return 0;
> +}
> +EXPORT_SYMBOL(team_mode_unregister);
> +
> +static struct team_mode *team_mode_get(const char *kind)
> +{
> + struct team_mode *mode;
> +
> + spin_lock(&mode_list_lock);
> + mode = __find_mode(kind);
> + if (!mode) {
> + spin_unlock(&mode_list_lock);
> + request_module("team-mode-%s", kind);
> + spin_lock(&mode_list_lock);
> + mode = __find_mode(kind);
> + }
> + if (mode)
> + if (!try_module_get(mode->owner))
> + mode = NULL;
> +
> + spin_unlock(&mode_list_lock);
> + return mode;
> +}
> +
> +static void team_mode_put(const char *kind)
> +{
> + struct team_mode *mode;
> +
> + spin_lock(&mode_list_lock);
> + mode = __find_mode(kind);
> + BUG_ON(!mode);
> + module_put(mode->owner);
> + spin_unlock(&mode_list_lock);
> +}
> +
> +/*
> + * We can benefit from the fact that it's ensured no port is present
> + * at the time of mode change.
> + */
> +static int __team_change_mode(struct team *team,
> + const struct team_mode *new_mode)
> +{
> + /* Check if mode was previously set and do cleanup if so */
> + if (team->mode_kind) {
> + void (*exit_op)(struct team *team) = team->mode_ops.exit;
> +
> + /* Clear ops area so no callback is called any longer */
> + memset(&team->mode_ops, 0, sizeof(struct team_mode_ops));
> +
> + synchronize_rcu();
> +
> + if (exit_op)
> + exit_op(team);
> + team_mode_put(team->mode_kind);
> + team->mode_kind = NULL;
> + /* zero private data area */
> + memset(&team->mode_priv, 0,
> + sizeof(struct team) - offsetof(struct team, mode_priv));
> + }
> +
> + if (!new_mode)
> + return 0;
> +
> + if (new_mode->ops->init) {
> + int err;
> +
> + err = new_mode->ops->init(team);
> + if (err)
> + return err;
> + }
> +
> + team->mode_kind = new_mode->kind;
> + memcpy(&team->mode_ops, new_mode->ops, sizeof(struct team_mode_ops));
> +
> + return 0;
> +}
> +
> +static int team_change_mode(struct team *team, const char *kind)
> +{
> + struct team_mode *new_mode;
> + struct net_device *dev = team->dev;
> + int err;
> +
> + if (!list_empty(&team->port_list)) {
> + netdev_err(dev, "No ports can be present during mode change\n");
> + return -EBUSY;
> + }
> +
> + if (team->mode_kind && strcmp(team->mode_kind, kind) == 0) {
> + netdev_err(dev, "Unable to change to the same mode the team is in\n");
> + return -EINVAL;
> + }
> +
> + new_mode = team_mode_get(kind);
> + if (!new_mode) {
> + netdev_err(dev, "Mode \"%s\" not found\n", kind);
> + return -EINVAL;
> + }
> +
> + err = __team_change_mode(team, new_mode);
> + if (err) {
> + netdev_err(dev, "Failed to change to mode \"%s\"\n", kind);
> + team_mode_put(kind);
> + return err;
> + }
> +
> + netdev_info(dev, "Mode changed to \"%s\"\n", kind);
> + return 0;
> +}
> +
> +
> +/************************
> + * Rx path frame handler
> + ************************/
> +
> +/* note: already called with rcu_read_lock */
> +static rx_handler_result_t team_handle_frame(struct sk_buff **pskb)
> +{
> + struct sk_buff *skb = *pskb;
> + struct team_port *port;
> + struct team *team;
> + rx_handler_result_t res = RX_HANDLER_ANOTHER;
> +
> + skb = skb_share_check(skb, GFP_ATOMIC);
> + if (!skb)
> + return RX_HANDLER_CONSUMED;
> +
> + *pskb = skb;
> +
> + port = team_port_get_rcu(skb->dev);
> + team = port->team;
> +
> + if (team->mode_ops.receive)
> + res = team->mode_ops.receive(team, port, skb);
> +
> + if (res == RX_HANDLER_ANOTHER) {
> + struct team_pcpu_stats *pcpu_stats;
> +
> + pcpu_stats = this_cpu_ptr(team->pcpu_stats);
> + u64_stats_update_begin(&pcpu_stats->syncp);
> + pcpu_stats->rx_packets++;
> + pcpu_stats->rx_bytes += skb->len;
> + if (skb->pkt_type == PACKET_MULTICAST)
> + pcpu_stats->rx_multicast++;
> + u64_stats_update_end(&pcpu_stats->syncp);
> +
> + skb->dev = team->dev;
> + } else {
> + this_cpu_inc(team->pcpu_stats->rx_dropped);
> + }
> +
> + return res;
> +}
> +
> +
> +/****************
> + * Port handling
> + ****************/
> +
> +static bool team_port_find(const struct team *team,
> + const struct team_port *port)
> +{
> + struct team_port *cur;
> +
> + list_for_each_entry(cur, &team->port_list, list)
> + if (cur == port)
> + return true;
> + return false;
> +}
> +
> +static int team_port_list_init(struct team *team)
> +{
> + int i;
> + struct hlist_head *hash;
> +
> + hash = kmalloc(sizeof(*hash) * TEAM_PORT_HASHENTRIES, GFP_KERNEL);
> + if (!hash)
> + return -ENOMEM;
> +
> + for (i = 0; i < TEAM_PORT_HASHENTRIES; i++)
> + INIT_HLIST_HEAD(&hash[i]);
> + team->port_hlist = hash;
> + INIT_LIST_HEAD(&team->port_list);
> + return 0;
> +}
> +
> +static void team_port_list_fini(struct team *team)
> +{
> + kfree(team->port_hlist);
> +}
> +
> +/*
> + * Add/delete port to the team port list. Write guarded by rtnl_lock.
> + * Takes care of correct port->index setup (might be racy).
> + */
> +static void team_port_list_add_port(struct team *team,
> + struct team_port *port)
> +{
> + port->index = team->port_count++;
> + hlist_add_head_rcu(&port->hlist,
> + team_port_index_hash(team, port->index));
> + list_add_tail_rcu(&port->list, &team->port_list);
> +}
> +
> +static void __reconstruct_port_hlist(struct team *team, int rm_index)
> +{
> + int i;
> + struct team_port *port;
> +
> + for (i = rm_index + 1; i < team->port_count; i++) {
> + port = team_get_port_by_index_rcu(team, i);
> + hlist_del_rcu(&port->hlist);
> + port->index--;
> + hlist_add_head_rcu(&port->hlist,
> + team_port_index_hash(team, port->index));
> + }
> +}
> +
> +static void team_port_list_del_port(struct team *team,
> + struct team_port *port)
> +{
> + int rm_index = port->index;
> +
> + hlist_del_rcu(&port->hlist);
> + list_del_rcu(&port->list);
> + __reconstruct_port_hlist(team, rm_index);
> + team->port_count--;
> +}
> +
> +#define TEAM_VLAN_FEATURES (NETIF_F_ALL_CSUM | NETIF_F_SG | \
> + NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \
> + NETIF_F_HIGHDMA | NETIF_F_LRO)
> +
> +static void __team_compute_features(struct team *team)
> +{
> + struct team_port *port;
> + u32 vlan_features = TEAM_VLAN_FEATURES;
> + unsigned short max_hard_header_len = ETH_HLEN;
> +
> + list_for_each_entry(port, &team->port_list, list) {
> + vlan_features = netdev_increment_features(vlan_features,
> + port->dev->vlan_features,
> + TEAM_VLAN_FEATURES);
> +
> + if (port->dev->hard_header_len > max_hard_header_len)
> + max_hard_header_len = port->dev->hard_header_len;
> + }
> +
> + team->dev->vlan_features = vlan_features;
> + team->dev->hard_header_len = max_hard_header_len;
> +
> + netdev_change_features(team->dev);
> +}
> +
> +static void team_compute_features(struct team *team)
> +{
> + spin_lock(&team->lock);
> + __team_compute_features(team);
> + spin_unlock(&team->lock);
> +}
> +
> +static int team_port_enter(struct team *team, struct team_port *port)
> +{
> + int err = 0;
> +
> + dev_hold(team->dev);
> + port->dev->priv_flags |= IFF_TEAM_PORT;
> + if (team->mode_ops.port_enter) {
> + err = team->mode_ops.port_enter(team, port);
> + if (err)
> + netdev_err(team->dev, "Device %s failed to enter team mode\n",
> + port->dev->name);
> + }
> + return err;
> +}
> +
> +static void team_port_leave(struct team *team, struct team_port *port)
> +{
> + if (team->mode_ops.port_leave)
> + team->mode_ops.port_leave(team, port);
> + port->dev->priv_flags &= ~IFF_TEAM_PORT;
> + dev_put(team->dev);
> +}
> +
> +static void __team_port_change_check(struct team_port *port, bool linkup);
> +
> +static int team_port_add(struct team *team, struct net_device *port_dev)
> +{
> + struct net_device *dev = team->dev;
> + struct team_port *port;
> + char *portname = port_dev->name;
> + char tmp_addr[ETH_ALEN];
> + int err;
> +
> + if (port_dev->flags & IFF_LOOPBACK ||
> + port_dev->type != ARPHRD_ETHER) {
> + netdev_err(dev, "Device %s is of an unsupported type\n",
> + portname);
> + return -EINVAL;
> + }
> +
> + if (team_port_exists(port_dev)) {
> + netdev_err(dev, "Device %s is already a port "
> + "of a team device\n", portname);
> + return -EBUSY;
> + }
> +
> + if (port_dev->flags & IFF_UP) {
> + netdev_err(dev, "Device %s is up. Set it down before adding it as a team port\n",
> + portname);
> + return -EBUSY;
> + }
> +
> + port = kzalloc(sizeof(struct team_port), GFP_KERNEL);
> + if (!port)
> + return -ENOMEM;
> +
> + port->dev = port_dev;
> + port->team = team;
> +
> + port->orig.mtu = port_dev->mtu;
> + err = dev_set_mtu(port_dev, dev->mtu);
> + if (err) {
> + netdev_dbg(dev, "Error %d calling dev_set_mtu\n", err);
> + goto err_set_mtu;
> + }
> +
> + memcpy(port->orig.dev_addr, port_dev->dev_addr, ETH_ALEN);
> + random_ether_addr(tmp_addr);
> + err = __set_port_mac(port_dev, tmp_addr);
> + if (err) {
> + netdev_dbg(dev, "Device %s mac addr set failed\n",
> + portname);
> + goto err_set_mac_rand;
> + }
> +
> + err = dev_open(port_dev);
> + if (err) {
> + netdev_dbg(dev, "Device %s opening failed\n",
> + portname);
> + goto err_dev_open;
> + }
> +
> + err = team_port_set_orig_mac(port);
> + if (err) {
> + netdev_dbg(dev, "Device %s mac addr set failed - Device does not support addr change when it's opened\n",
> + portname);
> + goto err_set_mac_opened;
> + }
> +
> + err = team_port_enter(team, port);
> + if (err) {
> + netdev_err(dev, "Device %s failed to enter team mode\n",
> + portname);
> + goto err_port_enter;
> + }
> +
> + err = netdev_set_master(port_dev, dev);
> + if (err) {
> + netdev_err(dev, "Device %s failed to set master\n", portname);
> + goto err_set_master;
> + }
> +
> + err = netdev_rx_handler_register(port_dev, team_handle_frame,
> + port);
> + if (err) {
> + netdev_err(dev, "Device %s failed to register rx_handler\n",
> + portname);
> + goto err_handler_register;
> + }
> +
> + team_port_list_add_port(team, port);
> + __team_compute_features(team);
> + __team_port_change_check(port, !!netif_carrier_ok(port_dev));
> +
> + netdev_info(dev, "Port device %s added\n", portname);
> +
> + return 0;
> +
> +err_handler_register:
> + netdev_set_master(port_dev, NULL);
> +
> +err_set_master:
> + team_port_leave(team, port);
> +
> +err_port_enter:
> +err_set_mac_opened:
> + dev_close(port_dev);
> +
> +err_dev_open:
> + team_port_set_orig_mac(port);
> +
> +err_set_mac_rand:
> + dev_set_mtu(port_dev, port->orig.mtu);
> +
> +err_set_mtu:
> + kfree(port);
> +
> + return err;
> +}
> +
> +static int team_port_del(struct team *team, struct net_device *port_dev)
> +{
> + struct net_device *dev = team->dev;
> + struct team_port *port;
> + char *portname = port_dev->name;
> +
> + port = team_port_get_rtnl(port_dev);
> + if (!port || !team_port_find(team, port)) {
> + netdev_err(dev, "Device %s does not act as a port of this team\n",
> + portname);
> + return -ENOENT;
> + }
> +
> + __team_port_change_check(port, false);
> + team_port_list_del_port(team, port);
> + netdev_rx_handler_unregister(port_dev);
> + netdev_set_master(port_dev, NULL);
> + team_port_leave(team, port);
> + dev_close(port_dev);
> + team_port_set_orig_mac(port);
> + dev_set_mtu(port_dev, port->orig.mtu);
> + synchronize_rcu();
> + kfree(port);
> + netdev_info(dev, "Port device %s removed\n", portname);
> + __team_compute_features(team);
> +
> + return 0;
> +}
> +
> +
> +/*****************
> + * Net device ops
> + *****************/
> +
> +static const char team_no_mode_kind[] = "*NOMODE*";
> +
> +static int team_mode_option_get(struct team *team, void *arg)
> +{
> + const char **str = arg;
> +
> + *str = team->mode_kind ? team->mode_kind : team_no_mode_kind;
> + return 0;
> +}
> +
> +static int team_mode_option_set(struct team *team, void *arg)
> +{
> + const char **str = arg;
> +
> + return team_change_mode(team, *str);
> +}
> +
> +static struct team_option team_options[] = {
> + {
> + .name = "mode",
> + .type = TEAM_OPTION_TYPE_STRING,
> + .getter = team_mode_option_get,
> + .setter = team_mode_option_set,
> + },
> +};
> +
> +static int team_init(struct net_device *dev)
> +{
> + struct team *team = netdev_priv(dev);
> + int err;
> +
> + team->dev = dev;
> + spin_lock_init(&team->lock);
> +
> + team->pcpu_stats = alloc_percpu(struct team_pcpu_stats);
> + if (!team->pcpu_stats)
> + return -ENOMEM;
> +
> + err = team_port_list_init(team);
> + if (err)
> + goto err_port_list_init;
> +
> + INIT_LIST_HEAD(&team->option_list);
> + team_options_register(team, team_options, ARRAY_SIZE(team_options));
> + netif_carrier_off(dev);
> +
> + return 0;
> +
> +err_port_list_init:
> +
> + free_percpu(team->pcpu_stats);
> +
> + return err;
> +}
> +
> +static void team_uninit(struct net_device *dev)
> +{
> + struct team *team = netdev_priv(dev);
> + struct team_port *port;
> + struct team_port *tmp;
> +
> + spin_lock(&team->lock);
> + list_for_each_entry_safe(port, tmp, &team->port_list, list)
> + team_port_del(team, port->dev);
> +
> + __team_change_mode(team, NULL); /* cleanup */
> + __team_options_unregister(team, team_options, ARRAY_SIZE(team_options));
> + spin_unlock(&team->lock);
> +}
> +
> +static void team_destructor(struct net_device *dev)
> +{
> + struct team *team = netdev_priv(dev);
> +
> + team_port_list_fini(team);
> + free_percpu(team->pcpu_stats);
> + free_netdev(dev);
> +}
> +
> +static int team_open(struct net_device *dev)
> +{
> + netif_carrier_on(dev);
> + return 0;
> +}
> +
> +static int team_close(struct net_device *dev)
> +{
> + netif_carrier_off(dev);
> + return 0;
> +}
> +
> +/*
> + * note: already called with rcu_read_lock
> + */
> +static netdev_tx_t team_xmit(struct sk_buff *skb, struct net_device *dev)
> +{
> + struct team *team = netdev_priv(dev);
> + bool tx_success = false;
> + unsigned int len = skb->len;
> +
> + /*
> + * Ensure transmit function is called only in case there is at least
> + * one port present.
> + */
> + if (likely(!list_empty(&team->port_list) && team->mode_ops.transmit))
> + tx_success = team->mode_ops.transmit(team, skb);
> + if (tx_success) {
> + struct team_pcpu_stats *pcpu_stats;
> +
> + pcpu_stats = this_cpu_ptr(team->pcpu_stats);
> + u64_stats_update_begin(&pcpu_stats->syncp);
> + pcpu_stats->tx_packets++;
> + pcpu_stats->tx_bytes += len;
> + u64_stats_update_end(&pcpu_stats->syncp);
> + } else {
> + this_cpu_inc(team->pcpu_stats->tx_dropped);
> + }
> +
> + return NETDEV_TX_OK;
> +}
> +
> +static void team_change_rx_flags(struct net_device *dev, int change)
> +{
> + struct team *team = netdev_priv(dev);
> + struct team_port *port;
> + int inc;
> +
> + rcu_read_lock();
> + list_for_each_entry_rcu(port, &team->port_list, list) {
> + if (change & IFF_PROMISC) {
> + inc = dev->flags & IFF_PROMISC ? 1 : -1;
> + dev_set_promiscuity(port->dev, inc);
> + }
> + if (change & IFF_ALLMULTI) {
> + inc = dev->flags & IFF_ALLMULTI ? 1 : -1;
> + dev_set_allmulti(port->dev, inc);
> + }
> + }
> + rcu_read_unlock();
> +}
> +
> +static void team_set_rx_mode(struct net_device *dev)
> +{
> + struct team *team = netdev_priv(dev);
> + struct team_port *port;
> +
> + rcu_read_lock();
> + list_for_each_entry_rcu(port, &team->port_list, list) {
> + dev_uc_sync(port->dev, dev);
> + dev_mc_sync(port->dev, dev);
> + }
> + rcu_read_unlock();
> +}
> +
> +static int team_set_mac_address(struct net_device *dev, void *p)
> +{
> + struct team *team = netdev_priv(dev);
> + struct team_port *port;
> + struct sockaddr *addr = p;
> +
> + memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
> + rcu_read_lock();
> + list_for_each_entry_rcu(port, &team->port_list, list)
> + if (team->mode_ops.port_change_mac)
> + team->mode_ops.port_change_mac(team, port);
> + rcu_read_unlock();
> + return 0;
> +}
> +
> +static int team_change_mtu(struct net_device *dev, int new_mtu)
> +{
> + struct team *team = netdev_priv(dev);
> + struct team_port *port;
> + int err;
> +
> + rcu_read_lock();
> + list_for_each_entry_rcu(port, &team->port_list, list) {
> + err = dev_set_mtu(port->dev, new_mtu);
> + if (err) {
> + netdev_err(dev, "Device %s failed to change mtu",
> + port->dev->name);
> + goto unwind;
> + }
> + }
> + rcu_read_unlock();
> +
> + dev->mtu = new_mtu;
> +
> + return 0;
> +
> +unwind:
> + list_for_each_entry_continue_reverse(port, &team->port_list, list)
> + dev_set_mtu(port->dev, dev->mtu);
It may be worth noting that backwards list traversal is not rcu safe.
Under rcu_read_lock() list elements will not be freed but the list may
be modified. Moreover, list_del_rcu() poisons ->prev pointers.
In this case it doesn't really matter though. As Eric pointed out
previously, we are under rtnl protection and no rcu is needed. Perhaps
all the extra rcu locking should be removed?
-Ben
> +
> + rcu_read_unlock();
> + return err;
> +}
> +
^ permalink raw reply
* [patch net-next V2] net: introduce ethernet teaming device
From: Jiri Pirko @ 2011-10-21 12:39 UTC (permalink / raw)
To: netdev
Cc: davem, eric.dumazet, bhutchings, shemminger, fubar, andy, tgraf,
ebiederm, mirqus, kaber, greearb, jesse, fbl, benjamin.poirier,
jzupka
This patch introduces new network device called team. It supposes to be
very fast, simple, userspace-driven alternative to existing bonding
driver.
Userspace library called libteam with couple of demo apps is available
here:
https://github.com/jpirko/libteam
Note it's still in its dipers atm.
team<->libteam use generic netlink for communication. That and rtnl
suppose to be the only way to configure team device, no sysfs etc.
Python binding basis for libteam was recently introduced (some need
still need to be done on it though). Daemon providing arpmon/miimon
active-backup functionality will be introduced shortly.
All what's necessary is already implemented in kernel team driver.
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
v1->v2:
- modes are made as modules. Makes team more modular and
extendable.
- several commenters' nitpicks found on v1 were fixed
- several other bugs were fixed.
- note I ignored Eric's comment about roundrobin port selector
as Eric's way may be easily implemented as another mode (mode
"random") in future.
---
Documentation/networking/team.txt | 2 +
MAINTAINERS | 7 +
drivers/net/Kconfig | 2 +
drivers/net/Makefile | 1 +
drivers/net/team/Kconfig | 38 +
drivers/net/team/Makefile | 7 +
drivers/net/team/team.c | 1593 +++++++++++++++++++++++++++++
drivers/net/team/team_mode_activebackup.c | 152 +++
drivers/net/team/team_mode_roundrobin.c | 107 ++
include/linux/Kbuild | 1 +
include/linux/if.h | 1 +
include/linux/if_team.h | 233 +++++
12 files changed, 2144 insertions(+), 0 deletions(-)
create mode 100644 Documentation/networking/team.txt
create mode 100644 drivers/net/team/Kconfig
create mode 100644 drivers/net/team/Makefile
create mode 100644 drivers/net/team/team.c
create mode 100644 drivers/net/team/team_mode_activebackup.c
create mode 100644 drivers/net/team/team_mode_roundrobin.c
create mode 100644 include/linux/if_team.h
diff --git a/Documentation/networking/team.txt b/Documentation/networking/team.txt
new file mode 100644
index 0000000..5a01368
--- /dev/null
+++ b/Documentation/networking/team.txt
@@ -0,0 +1,2 @@
+Team devices are driven from userspace via libteam library which is here:
+ https://github.com/jpirko/libteam
diff --git a/MAINTAINERS b/MAINTAINERS
index 5008b08..c33400d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -6372,6 +6372,13 @@ W: http://tcp-lp-mod.sourceforge.net/
S: Maintained
F: net/ipv4/tcp_lp.c
+TEAM DRIVER
+M: Jiri Pirko <jpirko@redhat.com>
+L: netdev@vger.kernel.org
+S: Supported
+F: drivers/net/team/
+F: include/linux/if_team.h
+
TEGRA SUPPORT
M: Colin Cross <ccross@android.com>
M: Erik Gilling <konkers@android.com>
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index 583f66c..b3020be 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -125,6 +125,8 @@ config IFB
'ifb1' etc.
Look at the iproute2 documentation directory for usage etc
+source "drivers/net/team/Kconfig"
+
config MACVLAN
tristate "MAC-VLAN support (EXPERIMENTAL)"
depends on EXPERIMENTAL
diff --git a/drivers/net/Makefile b/drivers/net/Makefile
index fa877cd..4e4ebfe 100644
--- a/drivers/net/Makefile
+++ b/drivers/net/Makefile
@@ -17,6 +17,7 @@ obj-$(CONFIG_NET) += Space.o loopback.o
obj-$(CONFIG_NETCONSOLE) += netconsole.o
obj-$(CONFIG_PHYLIB) += phy/
obj-$(CONFIG_RIONET) += rionet.o
+obj-$(CONFIG_NET_TEAM) += team/
obj-$(CONFIG_TUN) += tun.o
obj-$(CONFIG_VETH) += veth.o
obj-$(CONFIG_VIRTIO_NET) += virtio_net.o
diff --git a/drivers/net/team/Kconfig b/drivers/net/team/Kconfig
new file mode 100644
index 0000000..70a43a6
--- /dev/null
+++ b/drivers/net/team/Kconfig
@@ -0,0 +1,38 @@
+menuconfig NET_TEAM
+ tristate "Ethernet team driver support (EXPERIMENTAL)"
+ depends on EXPERIMENTAL
+ ---help---
+ This allows one to create virtual interfaces that teams together
+ multiple ethernet devices.
+
+ Team devices can be added using the "ip" command from the
+ iproute2 package:
+
+ "ip link add link [ address MAC ] [ NAME ] type team"
+
+ To compile this driver as a module, choose M here: the module
+ will be called team.
+
+if NET_TEAM
+
+config NET_TEAM_MODE_ROUNDROBIN
+ tristate "Round-robin mode support"
+ depends on NET_TEAM
+ ---help---
+ Basic mode where port used for transmitting packets is selected in
+ round-robin fashion using packet counter.
+
+ To compile this team mode as a module, choose M here: the module
+ will be called team_mode_roundrobin.
+
+config NET_TEAM_MODE_ACTIVEBACKUP
+ tristate "Active-backup mode support"
+ depends on NET_TEAM
+ ---help---
+ Only one port is active at a time and the rest of ports are used
+ for backup.
+
+ To compile this team mode as a module, choose M here: the module
+ will be called team_mode_activebackup.
+
+endif # NET_TEAM
diff --git a/drivers/net/team/Makefile b/drivers/net/team/Makefile
new file mode 100644
index 0000000..85f2028
--- /dev/null
+++ b/drivers/net/team/Makefile
@@ -0,0 +1,7 @@
+#
+# Makefile for the network team driver
+#
+
+obj-$(CONFIG_NET_TEAM) += team.o
+obj-$(CONFIG_NET_TEAM_MODE_ROUNDROBIN) += team_mode_roundrobin.o
+obj-$(CONFIG_NET_TEAM_MODE_ACTIVEBACKUP) += team_mode_activebackup.o
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
new file mode 100644
index 0000000..398be58
--- /dev/null
+++ b/drivers/net/team/team.c
@@ -0,0 +1,1593 @@
+/*
+ * net/drivers/team/team.c - Network team device driver
+ * Copyright (c) 2011 Jiri Pirko <jpirko@redhat.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/slab.h>
+#include <linux/rcupdate.h>
+#include <linux/errno.h>
+#include <linux/ctype.h>
+#include <linux/notifier.h>
+#include <linux/netdevice.h>
+#include <linux/if_arp.h>
+#include <linux/socket.h>
+#include <linux/etherdevice.h>
+#include <linux/rtnetlink.h>
+#include <net/rtnetlink.h>
+#include <net/genetlink.h>
+#include <net/netlink.h>
+#include <linux/if_team.h>
+
+#define DRV_NAME "team"
+
+
+/**********
+ * Helpers
+ **********/
+
+#define team_port_exists(dev) (dev->priv_flags & IFF_TEAM_PORT)
+
+static struct team_port *team_port_get_rcu(const struct net_device *dev)
+{
+ struct team_port *port = rcu_dereference(dev->rx_handler_data);
+
+ return team_port_exists(dev) ? port : NULL;
+}
+
+static struct team_port *team_port_get_rtnl(const struct net_device *dev)
+{
+ struct team_port *port = rtnl_dereference(dev->rx_handler_data);
+
+ return team_port_exists(dev) ? port : NULL;
+}
+
+/*
+ * Since the ability to change mac address for open port device is tested in
+ * team_port_add, this function can be called without control of return value
+ */
+static int __set_port_mac(struct net_device *port_dev,
+ const unsigned char *dev_addr)
+{
+ struct sockaddr addr;
+
+ memcpy(addr.sa_data, dev_addr, ETH_ALEN);
+ addr.sa_family = ARPHRD_ETHER;
+ return dev_set_mac_address(port_dev, &addr);
+}
+
+int team_port_set_orig_mac(struct team_port *port)
+{
+ return __set_port_mac(port->dev, port->orig.dev_addr);
+}
+EXPORT_SYMBOL(team_port_set_orig_mac);
+
+int team_port_set_team_mac(struct team_port *port)
+{
+ return __set_port_mac(port->dev, port->team->dev->dev_addr);
+}
+EXPORT_SYMBOL(team_port_set_team_mac);
+
+
+/*******************
+ * Options handling
+ *******************/
+
+void team_options_register(struct team *team, struct team_option *option,
+ size_t option_count)
+{
+ int i;
+
+ for (i = 0; i < option_count; i++, option++)
+ list_add_tail(&option->list, &team->option_list);
+}
+EXPORT_SYMBOL(team_options_register);
+
+static void __team_options_change_check(struct team *team,
+ struct team_option *changed_option);
+
+static void __team_options_unregister(struct team *team,
+ struct team_option *option,
+ size_t option_count)
+{
+ int i;
+
+ for (i = 0; i < option_count; i++, option++)
+ list_del(&option->list);
+}
+
+void team_options_unregister(struct team *team, struct team_option *option,
+ size_t option_count)
+{
+ __team_options_unregister(team, option, option_count);
+ __team_options_change_check(team, NULL);
+}
+EXPORT_SYMBOL(team_options_unregister);
+
+static int team_option_get(struct team *team, struct team_option *option,
+ void *arg)
+{
+ return option->getter(team, arg);
+}
+
+static int team_option_set(struct team *team, struct team_option *option,
+ void *arg)
+{
+ int err;
+
+ err = option->setter(team, arg);
+ if (err)
+ return err;
+
+ __team_options_change_check(team, option);
+ return err;
+}
+
+/****************
+ * Mode handling
+ ****************/
+
+static LIST_HEAD(mode_list);
+static DEFINE_SPINLOCK(mode_list_lock);
+
+static struct team_mode *__find_mode(const char *kind)
+{
+ struct team_mode *mode;
+
+ list_for_each_entry(mode, &mode_list, list) {
+ if (strcmp(mode->kind, kind) == 0)
+ return mode;
+ }
+ return NULL;
+}
+
+static bool is_good_mode_name(const char *name)
+{
+ while (*name != '\0') {
+ if (!isalpha(*name) && !isdigit(*name) && *name != '_')
+ return false;
+ name++;
+ }
+ return true;
+}
+
+int team_mode_register(struct team_mode *mode)
+{
+ int err = 0;
+
+ if (!is_good_mode_name(mode->kind) ||
+ mode->priv_size > TEAM_MODE_PRIV_SIZE)
+ return -EINVAL;
+ spin_lock(&mode_list_lock);
+ if (__find_mode(mode->kind)) {
+ err = -EEXIST;
+ goto unlock;
+ }
+ list_add_tail(&mode->list, &mode_list);
+unlock:
+ spin_unlock(&mode_list_lock);
+ return err;
+}
+EXPORT_SYMBOL(team_mode_register);
+
+int team_mode_unregister(struct team_mode *mode)
+{
+ spin_lock(&mode_list_lock);
+ list_del_init(&mode->list);
+ spin_unlock(&mode_list_lock);
+ return 0;
+}
+EXPORT_SYMBOL(team_mode_unregister);
+
+static struct team_mode *team_mode_get(const char *kind)
+{
+ struct team_mode *mode;
+
+ spin_lock(&mode_list_lock);
+ mode = __find_mode(kind);
+ if (!mode) {
+ spin_unlock(&mode_list_lock);
+ request_module("team-mode-%s", kind);
+ spin_lock(&mode_list_lock);
+ mode = __find_mode(kind);
+ }
+ if (mode)
+ if (!try_module_get(mode->owner))
+ mode = NULL;
+
+ spin_unlock(&mode_list_lock);
+ return mode;
+}
+
+static void team_mode_put(const char *kind)
+{
+ struct team_mode *mode;
+
+ spin_lock(&mode_list_lock);
+ mode = __find_mode(kind);
+ BUG_ON(!mode);
+ module_put(mode->owner);
+ spin_unlock(&mode_list_lock);
+}
+
+/*
+ * We can benefit from the fact that it's ensured no port is present
+ * at the time of mode change.
+ */
+static int __team_change_mode(struct team *team,
+ const struct team_mode *new_mode)
+{
+ /* Check if mode was previously set and do cleanup if so */
+ if (team->mode_kind) {
+ void (*exit_op)(struct team *team) = team->mode_ops.exit;
+
+ /* Clear ops area so no callback is called any longer */
+ memset(&team->mode_ops, 0, sizeof(struct team_mode_ops));
+
+ synchronize_rcu();
+
+ if (exit_op)
+ exit_op(team);
+ team_mode_put(team->mode_kind);
+ team->mode_kind = NULL;
+ /* zero private data area */
+ memset(&team->mode_priv, 0,
+ sizeof(struct team) - offsetof(struct team, mode_priv));
+ }
+
+ if (!new_mode)
+ return 0;
+
+ if (new_mode->ops->init) {
+ int err;
+
+ err = new_mode->ops->init(team);
+ if (err)
+ return err;
+ }
+
+ team->mode_kind = new_mode->kind;
+ memcpy(&team->mode_ops, new_mode->ops, sizeof(struct team_mode_ops));
+
+ return 0;
+}
+
+static int team_change_mode(struct team *team, const char *kind)
+{
+ struct team_mode *new_mode;
+ struct net_device *dev = team->dev;
+ int err;
+
+ if (!list_empty(&team->port_list)) {
+ netdev_err(dev, "No ports can be present during mode change\n");
+ return -EBUSY;
+ }
+
+ if (team->mode_kind && strcmp(team->mode_kind, kind) == 0) {
+ netdev_err(dev, "Unable to change to the same mode the team is in\n");
+ return -EINVAL;
+ }
+
+ new_mode = team_mode_get(kind);
+ if (!new_mode) {
+ netdev_err(dev, "Mode \"%s\" not found\n", kind);
+ return -EINVAL;
+ }
+
+ err = __team_change_mode(team, new_mode);
+ if (err) {
+ netdev_err(dev, "Failed to change to mode \"%s\"\n", kind);
+ team_mode_put(kind);
+ return err;
+ }
+
+ netdev_info(dev, "Mode changed to \"%s\"\n", kind);
+ return 0;
+}
+
+
+/************************
+ * Rx path frame handler
+ ************************/
+
+/* note: already called with rcu_read_lock */
+static rx_handler_result_t team_handle_frame(struct sk_buff **pskb)
+{
+ struct sk_buff *skb = *pskb;
+ struct team_port *port;
+ struct team *team;
+ rx_handler_result_t res = RX_HANDLER_ANOTHER;
+
+ skb = skb_share_check(skb, GFP_ATOMIC);
+ if (!skb)
+ return RX_HANDLER_CONSUMED;
+
+ *pskb = skb;
+
+ port = team_port_get_rcu(skb->dev);
+ team = port->team;
+
+ if (team->mode_ops.receive)
+ res = team->mode_ops.receive(team, port, skb);
+
+ if (res == RX_HANDLER_ANOTHER) {
+ struct team_pcpu_stats *pcpu_stats;
+
+ pcpu_stats = this_cpu_ptr(team->pcpu_stats);
+ u64_stats_update_begin(&pcpu_stats->syncp);
+ pcpu_stats->rx_packets++;
+ pcpu_stats->rx_bytes += skb->len;
+ if (skb->pkt_type == PACKET_MULTICAST)
+ pcpu_stats->rx_multicast++;
+ u64_stats_update_end(&pcpu_stats->syncp);
+
+ skb->dev = team->dev;
+ } else {
+ this_cpu_inc(team->pcpu_stats->rx_dropped);
+ }
+
+ return res;
+}
+
+
+/****************
+ * Port handling
+ ****************/
+
+static bool team_port_find(const struct team *team,
+ const struct team_port *port)
+{
+ struct team_port *cur;
+
+ list_for_each_entry(cur, &team->port_list, list)
+ if (cur == port)
+ return true;
+ return false;
+}
+
+static int team_port_list_init(struct team *team)
+{
+ int i;
+ struct hlist_head *hash;
+
+ hash = kmalloc(sizeof(*hash) * TEAM_PORT_HASHENTRIES, GFP_KERNEL);
+ if (!hash)
+ return -ENOMEM;
+
+ for (i = 0; i < TEAM_PORT_HASHENTRIES; i++)
+ INIT_HLIST_HEAD(&hash[i]);
+ team->port_hlist = hash;
+ INIT_LIST_HEAD(&team->port_list);
+ return 0;
+}
+
+static void team_port_list_fini(struct team *team)
+{
+ kfree(team->port_hlist);
+}
+
+/*
+ * Add/delete port to the team port list. Write guarded by rtnl_lock.
+ * Takes care of correct port->index setup (might be racy).
+ */
+static void team_port_list_add_port(struct team *team,
+ struct team_port *port)
+{
+ port->index = team->port_count++;
+ hlist_add_head_rcu(&port->hlist,
+ team_port_index_hash(team, port->index));
+ list_add_tail_rcu(&port->list, &team->port_list);
+}
+
+static void __reconstruct_port_hlist(struct team *team, int rm_index)
+{
+ int i;
+ struct team_port *port;
+
+ for (i = rm_index + 1; i < team->port_count; i++) {
+ port = team_get_port_by_index_rcu(team, i);
+ hlist_del_rcu(&port->hlist);
+ port->index--;
+ hlist_add_head_rcu(&port->hlist,
+ team_port_index_hash(team, port->index));
+ }
+}
+
+static void team_port_list_del_port(struct team *team,
+ struct team_port *port)
+{
+ int rm_index = port->index;
+
+ hlist_del_rcu(&port->hlist);
+ list_del_rcu(&port->list);
+ __reconstruct_port_hlist(team, rm_index);
+ team->port_count--;
+}
+
+#define TEAM_VLAN_FEATURES (NETIF_F_ALL_CSUM | NETIF_F_SG | \
+ NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \
+ NETIF_F_HIGHDMA | NETIF_F_LRO)
+
+static void __team_compute_features(struct team *team)
+{
+ struct team_port *port;
+ u32 vlan_features = TEAM_VLAN_FEATURES;
+ unsigned short max_hard_header_len = ETH_HLEN;
+
+ list_for_each_entry(port, &team->port_list, list) {
+ vlan_features = netdev_increment_features(vlan_features,
+ port->dev->vlan_features,
+ TEAM_VLAN_FEATURES);
+
+ if (port->dev->hard_header_len > max_hard_header_len)
+ max_hard_header_len = port->dev->hard_header_len;
+ }
+
+ team->dev->vlan_features = vlan_features;
+ team->dev->hard_header_len = max_hard_header_len;
+
+ netdev_change_features(team->dev);
+}
+
+static void team_compute_features(struct team *team)
+{
+ spin_lock(&team->lock);
+ __team_compute_features(team);
+ spin_unlock(&team->lock);
+}
+
+static int team_port_enter(struct team *team, struct team_port *port)
+{
+ int err = 0;
+
+ dev_hold(team->dev);
+ port->dev->priv_flags |= IFF_TEAM_PORT;
+ if (team->mode_ops.port_enter) {
+ err = team->mode_ops.port_enter(team, port);
+ if (err)
+ netdev_err(team->dev, "Device %s failed to enter team mode\n",
+ port->dev->name);
+ }
+ return err;
+}
+
+static void team_port_leave(struct team *team, struct team_port *port)
+{
+ if (team->mode_ops.port_leave)
+ team->mode_ops.port_leave(team, port);
+ port->dev->priv_flags &= ~IFF_TEAM_PORT;
+ dev_put(team->dev);
+}
+
+static void __team_port_change_check(struct team_port *port, bool linkup);
+
+static int team_port_add(struct team *team, struct net_device *port_dev)
+{
+ struct net_device *dev = team->dev;
+ struct team_port *port;
+ char *portname = port_dev->name;
+ char tmp_addr[ETH_ALEN];
+ int err;
+
+ if (port_dev->flags & IFF_LOOPBACK ||
+ port_dev->type != ARPHRD_ETHER) {
+ netdev_err(dev, "Device %s is of an unsupported type\n",
+ portname);
+ return -EINVAL;
+ }
+
+ if (team_port_exists(port_dev)) {
+ netdev_err(dev, "Device %s is already a port "
+ "of a team device\n", portname);
+ return -EBUSY;
+ }
+
+ if (port_dev->flags & IFF_UP) {
+ netdev_err(dev, "Device %s is up. Set it down before adding it as a team port\n",
+ portname);
+ return -EBUSY;
+ }
+
+ port = kzalloc(sizeof(struct team_port), GFP_KERNEL);
+ if (!port)
+ return -ENOMEM;
+
+ port->dev = port_dev;
+ port->team = team;
+
+ port->orig.mtu = port_dev->mtu;
+ err = dev_set_mtu(port_dev, dev->mtu);
+ if (err) {
+ netdev_dbg(dev, "Error %d calling dev_set_mtu\n", err);
+ goto err_set_mtu;
+ }
+
+ memcpy(port->orig.dev_addr, port_dev->dev_addr, ETH_ALEN);
+ random_ether_addr(tmp_addr);
+ err = __set_port_mac(port_dev, tmp_addr);
+ if (err) {
+ netdev_dbg(dev, "Device %s mac addr set failed\n",
+ portname);
+ goto err_set_mac_rand;
+ }
+
+ err = dev_open(port_dev);
+ if (err) {
+ netdev_dbg(dev, "Device %s opening failed\n",
+ portname);
+ goto err_dev_open;
+ }
+
+ err = team_port_set_orig_mac(port);
+ if (err) {
+ netdev_dbg(dev, "Device %s mac addr set failed - Device does not support addr change when it's opened\n",
+ portname);
+ goto err_set_mac_opened;
+ }
+
+ err = team_port_enter(team, port);
+ if (err) {
+ netdev_err(dev, "Device %s failed to enter team mode\n",
+ portname);
+ goto err_port_enter;
+ }
+
+ err = netdev_set_master(port_dev, dev);
+ if (err) {
+ netdev_err(dev, "Device %s failed to set master\n", portname);
+ goto err_set_master;
+ }
+
+ err = netdev_rx_handler_register(port_dev, team_handle_frame,
+ port);
+ if (err) {
+ netdev_err(dev, "Device %s failed to register rx_handler\n",
+ portname);
+ goto err_handler_register;
+ }
+
+ team_port_list_add_port(team, port);
+ __team_compute_features(team);
+ __team_port_change_check(port, !!netif_carrier_ok(port_dev));
+
+ netdev_info(dev, "Port device %s added\n", portname);
+
+ return 0;
+
+err_handler_register:
+ netdev_set_master(port_dev, NULL);
+
+err_set_master:
+ team_port_leave(team, port);
+
+err_port_enter:
+err_set_mac_opened:
+ dev_close(port_dev);
+
+err_dev_open:
+ team_port_set_orig_mac(port);
+
+err_set_mac_rand:
+ dev_set_mtu(port_dev, port->orig.mtu);
+
+err_set_mtu:
+ kfree(port);
+
+ return err;
+}
+
+static int team_port_del(struct team *team, struct net_device *port_dev)
+{
+ struct net_device *dev = team->dev;
+ struct team_port *port;
+ char *portname = port_dev->name;
+
+ port = team_port_get_rtnl(port_dev);
+ if (!port || !team_port_find(team, port)) {
+ netdev_err(dev, "Device %s does not act as a port of this team\n",
+ portname);
+ return -ENOENT;
+ }
+
+ __team_port_change_check(port, false);
+ team_port_list_del_port(team, port);
+ netdev_rx_handler_unregister(port_dev);
+ netdev_set_master(port_dev, NULL);
+ team_port_leave(team, port);
+ dev_close(port_dev);
+ team_port_set_orig_mac(port);
+ dev_set_mtu(port_dev, port->orig.mtu);
+ synchronize_rcu();
+ kfree(port);
+ netdev_info(dev, "Port device %s removed\n", portname);
+ __team_compute_features(team);
+
+ return 0;
+}
+
+
+/*****************
+ * Net device ops
+ *****************/
+
+static const char team_no_mode_kind[] = "*NOMODE*";
+
+static int team_mode_option_get(struct team *team, void *arg)
+{
+ const char **str = arg;
+
+ *str = team->mode_kind ? team->mode_kind : team_no_mode_kind;
+ return 0;
+}
+
+static int team_mode_option_set(struct team *team, void *arg)
+{
+ const char **str = arg;
+
+ return team_change_mode(team, *str);
+}
+
+static struct team_option team_options[] = {
+ {
+ .name = "mode",
+ .type = TEAM_OPTION_TYPE_STRING,
+ .getter = team_mode_option_get,
+ .setter = team_mode_option_set,
+ },
+};
+
+static int team_init(struct net_device *dev)
+{
+ struct team *team = netdev_priv(dev);
+ int err;
+
+ team->dev = dev;
+ spin_lock_init(&team->lock);
+
+ team->pcpu_stats = alloc_percpu(struct team_pcpu_stats);
+ if (!team->pcpu_stats)
+ return -ENOMEM;
+
+ err = team_port_list_init(team);
+ if (err)
+ goto err_port_list_init;
+
+ INIT_LIST_HEAD(&team->option_list);
+ team_options_register(team, team_options, ARRAY_SIZE(team_options));
+ netif_carrier_off(dev);
+
+ return 0;
+
+err_port_list_init:
+
+ free_percpu(team->pcpu_stats);
+
+ return err;
+}
+
+static void team_uninit(struct net_device *dev)
+{
+ struct team *team = netdev_priv(dev);
+ struct team_port *port;
+ struct team_port *tmp;
+
+ spin_lock(&team->lock);
+ list_for_each_entry_safe(port, tmp, &team->port_list, list)
+ team_port_del(team, port->dev);
+
+ __team_change_mode(team, NULL); /* cleanup */
+ __team_options_unregister(team, team_options, ARRAY_SIZE(team_options));
+ spin_unlock(&team->lock);
+}
+
+static void team_destructor(struct net_device *dev)
+{
+ struct team *team = netdev_priv(dev);
+
+ team_port_list_fini(team);
+ free_percpu(team->pcpu_stats);
+ free_netdev(dev);
+}
+
+static int team_open(struct net_device *dev)
+{
+ netif_carrier_on(dev);
+ return 0;
+}
+
+static int team_close(struct net_device *dev)
+{
+ netif_carrier_off(dev);
+ return 0;
+}
+
+/*
+ * note: already called with rcu_read_lock
+ */
+static netdev_tx_t team_xmit(struct sk_buff *skb, struct net_device *dev)
+{
+ struct team *team = netdev_priv(dev);
+ bool tx_success = false;
+ unsigned int len = skb->len;
+
+ /*
+ * Ensure transmit function is called only in case there is at least
+ * one port present.
+ */
+ if (likely(!list_empty(&team->port_list) && team->mode_ops.transmit))
+ tx_success = team->mode_ops.transmit(team, skb);
+ if (tx_success) {
+ struct team_pcpu_stats *pcpu_stats;
+
+ pcpu_stats = this_cpu_ptr(team->pcpu_stats);
+ u64_stats_update_begin(&pcpu_stats->syncp);
+ pcpu_stats->tx_packets++;
+ pcpu_stats->tx_bytes += len;
+ u64_stats_update_end(&pcpu_stats->syncp);
+ } else {
+ this_cpu_inc(team->pcpu_stats->tx_dropped);
+ }
+
+ return NETDEV_TX_OK;
+}
+
+static void team_change_rx_flags(struct net_device *dev, int change)
+{
+ struct team *team = netdev_priv(dev);
+ struct team_port *port;
+ int inc;
+
+ rcu_read_lock();
+ list_for_each_entry_rcu(port, &team->port_list, list) {
+ if (change & IFF_PROMISC) {
+ inc = dev->flags & IFF_PROMISC ? 1 : -1;
+ dev_set_promiscuity(port->dev, inc);
+ }
+ if (change & IFF_ALLMULTI) {
+ inc = dev->flags & IFF_ALLMULTI ? 1 : -1;
+ dev_set_allmulti(port->dev, inc);
+ }
+ }
+ rcu_read_unlock();
+}
+
+static void team_set_rx_mode(struct net_device *dev)
+{
+ struct team *team = netdev_priv(dev);
+ struct team_port *port;
+
+ rcu_read_lock();
+ list_for_each_entry_rcu(port, &team->port_list, list) {
+ dev_uc_sync(port->dev, dev);
+ dev_mc_sync(port->dev, dev);
+ }
+ rcu_read_unlock();
+}
+
+static int team_set_mac_address(struct net_device *dev, void *p)
+{
+ struct team *team = netdev_priv(dev);
+ struct team_port *port;
+ struct sockaddr *addr = p;
+
+ memcpy(dev->dev_addr, addr->sa_data, ETH_ALEN);
+ rcu_read_lock();
+ list_for_each_entry_rcu(port, &team->port_list, list)
+ if (team->mode_ops.port_change_mac)
+ team->mode_ops.port_change_mac(team, port);
+ rcu_read_unlock();
+ return 0;
+}
+
+static int team_change_mtu(struct net_device *dev, int new_mtu)
+{
+ struct team *team = netdev_priv(dev);
+ struct team_port *port;
+ int err;
+
+ rcu_read_lock();
+ list_for_each_entry_rcu(port, &team->port_list, list) {
+ err = dev_set_mtu(port->dev, new_mtu);
+ if (err) {
+ netdev_err(dev, "Device %s failed to change mtu",
+ port->dev->name);
+ goto unwind;
+ }
+ }
+ rcu_read_unlock();
+
+ dev->mtu = new_mtu;
+
+ return 0;
+
+unwind:
+ list_for_each_entry_continue_reverse(port, &team->port_list, list)
+ dev_set_mtu(port->dev, dev->mtu);
+
+ rcu_read_unlock();
+ return err;
+}
+
+static struct rtnl_link_stats64 *
+team_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
+{
+ struct team *team = netdev_priv(dev);
+ struct team_pcpu_stats *p;
+ u64 rx_packets, rx_bytes, rx_multicast, tx_packets, tx_bytes;
+ u32 rx_dropped = 0, tx_dropped = 0;
+ unsigned int start;
+ int i;
+
+ for_each_possible_cpu(i) {
+ p = per_cpu_ptr(team->pcpu_stats, i);
+ do {
+ start = u64_stats_fetch_begin_bh(&p->syncp);
+ rx_packets = p->rx_packets;
+ rx_bytes = p->rx_bytes;
+ rx_multicast = p->rx_multicast;
+ tx_packets = p->tx_packets;
+ tx_bytes = p->tx_bytes;
+ } while (u64_stats_fetch_retry_bh(&p->syncp, start));
+
+ stats->rx_packets += rx_packets;
+ stats->rx_bytes += rx_bytes;
+ stats->multicast += rx_multicast;
+ stats->tx_packets += tx_packets;
+ stats->tx_bytes += tx_bytes;
+ /*
+ * rx_dropped & tx_dropped are u32, updated
+ * without syncp protection.
+ */
+ rx_dropped += p->rx_dropped;
+ tx_dropped += p->tx_dropped;
+ }
+ stats->rx_dropped = rx_dropped;
+ stats->tx_dropped = tx_dropped;
+ return stats;
+}
+
+static void team_vlan_rx_add_vid(struct net_device *dev, uint16_t vid)
+{
+ struct team *team = netdev_priv(dev);
+ struct team_port *port;
+
+ rcu_read_lock();
+ list_for_each_entry_rcu(port, &team->port_list, list) {
+ const struct net_device_ops *ops = port->dev->netdev_ops;
+
+ ops->ndo_vlan_rx_add_vid(port->dev, vid);
+ }
+ rcu_read_unlock();
+}
+
+static void team_vlan_rx_kill_vid(struct net_device *dev, uint16_t vid)
+{
+ struct team *team = netdev_priv(dev);
+ struct team_port *port;
+
+ rcu_read_lock();
+ list_for_each_entry_rcu(port, &team->port_list, list) {
+ const struct net_device_ops *ops = port->dev->netdev_ops;
+
+ ops->ndo_vlan_rx_kill_vid(port->dev, vid);
+ }
+ rcu_read_unlock();
+}
+
+static int team_add_slave(struct net_device *dev, struct net_device *port_dev)
+{
+ struct team *team = netdev_priv(dev);
+ int err;
+
+ spin_lock(&team->lock);
+ err = team_port_add(team, port_dev);
+ spin_unlock(&team->lock);
+ return err;
+}
+
+static int team_del_slave(struct net_device *dev, struct net_device *port_dev)
+{
+ struct team *team = netdev_priv(dev);
+ int err;
+
+ spin_lock(&team->lock);
+ err = team_port_del(team, port_dev);
+ spin_unlock(&team->lock);
+ return err;
+}
+
+static const struct net_device_ops team_netdev_ops = {
+ .ndo_init = team_init,
+ .ndo_uninit = team_uninit,
+ .ndo_open = team_open,
+ .ndo_stop = team_close,
+ .ndo_start_xmit = team_xmit,
+ .ndo_change_rx_flags = team_change_rx_flags,
+ .ndo_set_rx_mode = team_set_rx_mode,
+ .ndo_set_mac_address = team_set_mac_address,
+ .ndo_change_mtu = team_change_mtu,
+ .ndo_get_stats64 = team_get_stats64,
+ .ndo_vlan_rx_add_vid = team_vlan_rx_add_vid,
+ .ndo_vlan_rx_kill_vid = team_vlan_rx_kill_vid,
+ .ndo_add_slave = team_add_slave,
+ .ndo_del_slave = team_del_slave,
+};
+
+
+/***********************
+ * rt netlink interface
+ ***********************/
+
+static void team_setup(struct net_device *dev)
+{
+ ether_setup(dev);
+
+ dev->netdev_ops = &team_netdev_ops;
+ dev->destructor = team_destructor;
+ dev->tx_queue_len = 0;
+ dev->flags |= IFF_MULTICAST;
+ dev->priv_flags &= ~(IFF_XMIT_DST_RELEASE | IFF_TX_SKB_SHARING);
+
+ /*
+ * Indicate we support unicast address filtering. That way core won't
+ * bring us to promisc mode in case a unicast addr is added.
+ * Let this up to underlay drivers.
+ */
+ dev->priv_flags |= IFF_UNICAST_FLT;
+
+ dev->features |= NETIF_F_LLTX;
+ dev->features |= NETIF_F_GRO;
+ dev->hw_features = NETIF_F_HW_VLAN_TX |
+ NETIF_F_HW_VLAN_RX |
+ NETIF_F_HW_VLAN_FILTER;
+
+ dev->features |= dev->hw_features;
+}
+
+static int team_newlink(struct net *src_net, struct net_device *dev,
+ struct nlattr *tb[], struct nlattr *data[])
+{
+ int err;
+
+ if (tb[IFLA_ADDRESS] == NULL)
+ random_ether_addr(dev->dev_addr);
+
+ err = register_netdevice(dev);
+ if (err)
+ return err;
+
+ return 0;
+}
+
+static int team_validate(struct nlattr *tb[], struct nlattr *data[])
+{
+ if (tb[IFLA_ADDRESS]) {
+ if (nla_len(tb[IFLA_ADDRESS]) != ETH_ALEN)
+ return -EINVAL;
+ if (!is_valid_ether_addr(nla_data(tb[IFLA_ADDRESS])))
+ return -EADDRNOTAVAIL;
+ }
+ return 0;
+}
+
+static struct rtnl_link_ops team_link_ops __read_mostly = {
+ .kind = DRV_NAME,
+ .priv_size = sizeof(struct team),
+ .setup = team_setup,
+ .newlink = team_newlink,
+ .validate = team_validate,
+};
+
+
+/***********************************
+ * Generic netlink custom interface
+ ***********************************/
+
+static struct genl_family team_nl_family = {
+ .id = GENL_ID_GENERATE,
+ .name = TEAM_GENL_NAME,
+ .version = TEAM_GENL_VERSION,
+ .maxattr = TEAM_ATTR_MAX,
+ .netnsok = true,
+};
+
+static const struct nla_policy team_nl_policy[TEAM_ATTR_MAX + 1] = {
+ [TEAM_ATTR_UNSPEC] = { .type = NLA_UNSPEC, },
+ [TEAM_ATTR_TEAM_IFINDEX] = { .type = NLA_U32 },
+ [TEAM_ATTR_LIST_OPTION] = { .type = NLA_NESTED },
+ [TEAM_ATTR_LIST_PORT] = { .type = NLA_NESTED },
+};
+
+static const struct nla_policy
+team_nl_option_policy[TEAM_ATTR_OPTION_MAX + 1] = {
+ [TEAM_ATTR_OPTION_UNSPEC] = { .type = NLA_UNSPEC, },
+ [TEAM_ATTR_OPTION_NAME] = {
+ .type = NLA_STRING,
+ .len = TEAM_STRING_MAX_LEN,
+ },
+ [TEAM_ATTR_OPTION_CHANGED] = { .type = NLA_FLAG },
+ [TEAM_ATTR_OPTION_TYPE] = { .type = NLA_U8 },
+ [TEAM_ATTR_OPTION_DATA] = {
+ .type = NLA_BINARY,
+ .len = TEAM_STRING_MAX_LEN,
+ },
+};
+
+static int team_nl_cmd_noop(struct sk_buff *skb, struct genl_info *info)
+{
+ struct sk_buff *msg;
+ void *hdr;
+ int err;
+
+ msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL);
+ if (!msg)
+ return -ENOMEM;
+
+ hdr = genlmsg_put(msg, info->snd_pid, info->snd_seq,
+ &team_nl_family, 0, TEAM_CMD_NOOP);
+ if (IS_ERR(hdr)) {
+ err = PTR_ERR(hdr);
+ goto err_msg_put;
+ }
+
+ genlmsg_end(msg, hdr);
+
+ return genlmsg_unicast(genl_info_net(info), msg, info->snd_pid);
+
+err_msg_put:
+ nlmsg_free(msg);
+
+ return err;
+}
+
+/*
+ * Netlink cmd functions should be locked by following two functions.
+ * To ensure team_uninit would not be called in between, hold rcu_read_lock
+ * all the time.
+ */
+static struct team *team_nl_team_get(struct genl_info *info)
+{
+ struct net *net = genl_info_net(info);
+ int ifindex;
+ struct net_device *dev;
+ struct team *team;
+
+ if (!info->attrs[TEAM_ATTR_TEAM_IFINDEX])
+ return NULL;
+
+ ifindex = nla_get_u32(info->attrs[TEAM_ATTR_TEAM_IFINDEX]);
+ rcu_read_lock();
+ dev = dev_get_by_index_rcu(net, ifindex);
+ if (!dev || dev->netdev_ops != &team_netdev_ops) {
+ rcu_read_unlock();
+ return NULL;
+ }
+
+ team = netdev_priv(dev);
+ spin_lock(&team->lock);
+ return team;
+}
+
+static void team_nl_team_put(struct team *team)
+{
+ spin_unlock(&team->lock);
+ rcu_read_unlock();
+}
+
+static int team_nl_send_generic(struct genl_info *info, struct team *team,
+ int (*fill_func)(struct sk_buff *skb,
+ struct genl_info *info,
+ int flags, struct team *team))
+{
+ struct sk_buff *skb;
+ int err;
+
+ skb = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL);
+ if (!skb)
+ return -ENOMEM;
+
+ err = fill_func(skb, info, NLM_F_ACK, team);
+ if (err < 0)
+ goto err_fill;
+
+ err = genlmsg_unicast(genl_info_net(info), skb, info->snd_pid);
+ return err;
+
+err_fill:
+ nlmsg_free(skb);
+ return err;
+}
+
+static int team_nl_fill_options_get_changed(struct sk_buff *skb,
+ u32 pid, u32 seq, int flags,
+ struct team *team,
+ struct team_option *changed_option)
+{
+ struct nlattr *option_list;
+ void *hdr;
+ struct team_option *option;
+
+ hdr = genlmsg_put(skb, pid, seq, &team_nl_family, flags,
+ TEAM_CMD_OPTIONS_GET);
+ if (IS_ERR(hdr))
+ return PTR_ERR(hdr);
+
+ NLA_PUT_U32(skb, TEAM_ATTR_TEAM_IFINDEX, team->dev->ifindex);
+ option_list = nla_nest_start(skb, TEAM_ATTR_LIST_OPTION);
+ if (!option_list)
+ return -EMSGSIZE;
+
+ list_for_each_entry(option, &team->option_list, list) {
+ struct nlattr *option_item;
+ long arg;
+
+ option_item = nla_nest_start(skb, TEAM_ATTR_ITEM_OPTION);
+ if (!option_item)
+ goto nla_put_failure;
+ NLA_PUT_STRING(skb, TEAM_ATTR_OPTION_NAME, option->name);
+ if (option == changed_option)
+ NLA_PUT_FLAG(skb, TEAM_ATTR_OPTION_CHANGED);
+ switch (option->type) {
+ case TEAM_OPTION_TYPE_U32:
+ NLA_PUT_U8(skb, TEAM_ATTR_OPTION_TYPE, NLA_U32);
+ team_option_get(team, option, &arg);
+ NLA_PUT_U32(skb, TEAM_ATTR_OPTION_DATA, arg);
+ break;
+ case TEAM_OPTION_TYPE_STRING:
+ NLA_PUT_U8(skb, TEAM_ATTR_OPTION_TYPE, NLA_STRING);
+ team_option_get(team, option, &arg);
+ NLA_PUT_STRING(skb, TEAM_ATTR_OPTION_DATA,
+ (char *) arg);
+ break;
+ default:
+ BUG();
+ }
+ nla_nest_end(skb, option_item);
+ }
+
+ nla_nest_end(skb, option_list);
+ return genlmsg_end(skb, hdr);
+
+nla_put_failure:
+ genlmsg_cancel(skb, hdr);
+ return -EMSGSIZE;
+}
+
+static int team_nl_fill_options_get(struct sk_buff *skb,
+ struct genl_info *info, int flags,
+ struct team *team)
+{
+ return team_nl_fill_options_get_changed(skb, info->snd_pid,
+ info->snd_seq, NLM_F_ACK,
+ team, NULL);
+}
+
+static int team_nl_cmd_options_get(struct sk_buff *skb, struct genl_info *info)
+{
+ struct team *team;
+ int err;
+
+ team = team_nl_team_get(info);
+ if (!team)
+ return -EINVAL;
+
+ err = team_nl_send_generic(info, team, team_nl_fill_options_get);
+
+ team_nl_team_put(team);
+
+ return err;
+}
+
+static int team_nl_cmd_options_set(struct sk_buff *skb, struct genl_info *info)
+{
+ struct team *team;
+ int err = 0;
+ int i;
+ struct nlattr *nl_option;
+
+ team = team_nl_team_get(info);
+ if (!team)
+ return -EINVAL;
+
+ err = -EINVAL;
+ if (!info->attrs[TEAM_ATTR_LIST_OPTION]) {
+ err = -EINVAL;
+ goto team_put;
+ }
+
+ nla_for_each_nested(nl_option, info->attrs[TEAM_ATTR_LIST_OPTION], i) {
+ struct nlattr *mode_attrs[TEAM_ATTR_OPTION_MAX + 1];
+ enum team_option_type opt_type;
+ struct team_option *option;
+ char *opt_name;
+ bool opt_found = false;
+
+ if (nla_type(nl_option) != TEAM_ATTR_ITEM_OPTION) {
+ err = -EINVAL;
+ goto team_put;
+ }
+ err = nla_parse_nested(mode_attrs, TEAM_ATTR_OPTION_MAX,
+ nl_option, team_nl_option_policy);
+ if (err)
+ goto team_put;
+ if (!mode_attrs[TEAM_ATTR_OPTION_NAME] ||
+ !mode_attrs[TEAM_ATTR_OPTION_TYPE] ||
+ !mode_attrs[TEAM_ATTR_OPTION_DATA]) {
+ err = -EINVAL;
+ goto team_put;
+ }
+ switch (nla_get_u8(mode_attrs[TEAM_ATTR_OPTION_TYPE])) {
+ case NLA_U32:
+ opt_type = TEAM_OPTION_TYPE_U32;
+ break;
+ case NLA_STRING:
+ opt_type = TEAM_OPTION_TYPE_STRING;
+ break;
+ default:
+ goto team_put;
+ }
+
+ opt_name = nla_data(mode_attrs[TEAM_ATTR_OPTION_NAME]);
+ list_for_each_entry(option, &team->option_list, list) {
+ long arg;
+ struct nlattr *opt_data_attr;
+
+ if (option->type != opt_type ||
+ strcmp(option->name, opt_name))
+ continue;
+ opt_found = true;
+ opt_data_attr = mode_attrs[TEAM_ATTR_OPTION_DATA];
+ switch (opt_type) {
+ case TEAM_OPTION_TYPE_U32:
+ arg = nla_get_u32(opt_data_attr);
+ break;
+ case TEAM_OPTION_TYPE_STRING:
+ arg = (long) nla_data(opt_data_attr);
+ break;
+ default:
+ BUG();
+ }
+ err = team_option_set(team, option, &arg);
+ if (err)
+ goto team_put;
+ }
+ if (!opt_found) {
+ err = -ENOENT;
+ goto team_put;
+ }
+ }
+
+team_put:
+ team_nl_team_put(team);
+
+ return err;
+}
+
+static int team_nl_fill_port_list_get_changed(struct sk_buff *skb,
+ u32 pid, u32 seq, int flags,
+ struct team *team,
+ struct team_port *changed_port)
+{
+ struct nlattr *port_list;
+ void *hdr;
+ struct team_port *port;
+
+ hdr = genlmsg_put(skb, pid, seq, &team_nl_family, flags,
+ TEAM_CMD_PORT_LIST_GET);
+ if (IS_ERR(hdr))
+ return PTR_ERR(hdr);
+
+ NLA_PUT_U32(skb, TEAM_ATTR_TEAM_IFINDEX, team->dev->ifindex);
+ port_list = nla_nest_start(skb, TEAM_ATTR_LIST_PORT);
+ if (!port_list)
+ return -EMSGSIZE;
+
+ list_for_each_entry_rcu(port, &team->port_list, list) {
+ struct nlattr *port_item;
+
+ port_item = nla_nest_start(skb, TEAM_ATTR_ITEM_PORT);
+ if (!port_item)
+ goto nla_put_failure;
+ NLA_PUT_U32(skb, TEAM_ATTR_PORT_IFINDEX, port->dev->ifindex);
+ if (port == changed_port)
+ NLA_PUT_FLAG(skb, TEAM_ATTR_PORT_CHANGED);
+ if (port->linkup)
+ NLA_PUT_FLAG(skb, TEAM_ATTR_PORT_LINKUP);
+ NLA_PUT_U32(skb, TEAM_ATTR_PORT_SPEED, port->speed);
+ NLA_PUT_U8(skb, TEAM_ATTR_PORT_DUPLEX, port->duplex);
+ nla_nest_end(skb, port_item);
+ }
+
+ nla_nest_end(skb, port_list);
+ return genlmsg_end(skb, hdr);
+
+nla_put_failure:
+ genlmsg_cancel(skb, hdr);
+ return -EMSGSIZE;
+}
+
+static int team_nl_fill_port_list_get(struct sk_buff *skb,
+ struct genl_info *info, int flags,
+ struct team *team)
+{
+ return team_nl_fill_port_list_get_changed(skb, info->snd_pid,
+ info->snd_seq, NLM_F_ACK,
+ team, NULL);
+}
+
+static int team_nl_cmd_port_list_get(struct sk_buff *skb,
+ struct genl_info *info)
+{
+ struct team *team;
+ int err;
+
+ team = team_nl_team_get(info);
+ if (!team)
+ return -EINVAL;
+
+ err = team_nl_send_generic(info, team, team_nl_fill_port_list_get);
+
+ team_nl_team_put(team);
+
+ return err;
+}
+
+static struct genl_ops team_nl_ops[] = {
+ {
+ .cmd = TEAM_CMD_NOOP,
+ .doit = team_nl_cmd_noop,
+ .policy = team_nl_policy,
+ },
+ {
+ .cmd = TEAM_CMD_OPTIONS_SET,
+ .doit = team_nl_cmd_options_set,
+ .policy = team_nl_policy,
+ .flags = GENL_ADMIN_PERM,
+ },
+ {
+ .cmd = TEAM_CMD_OPTIONS_GET,
+ .doit = team_nl_cmd_options_get,
+ .policy = team_nl_policy,
+ .flags = GENL_ADMIN_PERM,
+ },
+ {
+ .cmd = TEAM_CMD_PORT_LIST_GET,
+ .doit = team_nl_cmd_port_list_get,
+ .policy = team_nl_policy,
+ .flags = GENL_ADMIN_PERM,
+ },
+};
+
+static struct genl_multicast_group team_change_event_mcgrp = {
+ .name = TEAM_GENL_CHANGE_EVENT_MC_GRP_NAME,
+};
+
+static int team_nl_send_event_options_get(struct team *team,
+ struct team_option *changed_option)
+{
+ struct sk_buff *skb;
+ int err;
+ struct net *net = dev_net(team->dev);
+
+ skb = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL);
+ if (!skb)
+ return -ENOMEM;
+
+ err = team_nl_fill_options_get_changed(skb, 0, 0, 0, team,
+ changed_option);
+ if (err < 0)
+ goto err_fill;
+
+ err = genlmsg_multicast_netns(net, skb, 0, team_change_event_mcgrp.id,
+ GFP_KERNEL);
+ return err;
+
+err_fill:
+ nlmsg_free(skb);
+ return err;
+}
+
+static int team_nl_send_event_port_list_get(struct team_port *port)
+{
+ struct sk_buff *skb;
+ int err;
+ struct net *net = dev_net(port->team->dev);
+
+ skb = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL);
+ if (!skb)
+ return -ENOMEM;
+
+ err = team_nl_fill_port_list_get_changed(skb, 0, 0, 0,
+ port->team, port);
+ if (err < 0)
+ goto err_fill;
+
+ err = genlmsg_multicast_netns(net, skb, 0, team_change_event_mcgrp.id,
+ GFP_KERNEL);
+ return err;
+
+err_fill:
+ nlmsg_free(skb);
+ return err;
+}
+
+static int team_nl_init(void)
+{
+ int err;
+
+ err = genl_register_family_with_ops(&team_nl_family, team_nl_ops,
+ ARRAY_SIZE(team_nl_ops));
+ if (err)
+ return err;
+
+ err = genl_register_mc_group(&team_nl_family, &team_change_event_mcgrp);
+ if (err)
+ goto err_change_event_grp_reg;
+
+ return 0;
+
+err_change_event_grp_reg:
+ genl_unregister_family(&team_nl_family);
+
+ return err;
+}
+
+static void team_nl_fini(void)
+{
+ genl_unregister_family(&team_nl_family);
+}
+
+
+/******************
+ * Change checkers
+ ******************/
+
+static void __team_options_change_check(struct team *team,
+ struct team_option *changed_option)
+{
+ int err;
+
+ err = team_nl_send_event_options_get(team, changed_option);
+ if (err)
+ netdev_warn(team->dev, "Failed to send options change via netlink\n");
+}
+
+/* rtnl lock is held */
+static void __team_port_change_check(struct team_port *port, bool linkup)
+{
+ int err;
+
+ if (port->linkup == linkup)
+ return;
+
+ port->linkup = linkup;
+ if (linkup) {
+ struct ethtool_cmd ecmd;
+
+ err = __ethtool_get_settings(port->dev, &ecmd);
+ if (!err) {
+ port->speed = ethtool_cmd_speed(&ecmd);
+ port->duplex = ecmd.duplex;
+ goto send_event;
+ }
+ }
+ port->speed = 0;
+ port->duplex = 0;
+
+send_event:
+ err = team_nl_send_event_port_list_get(port);
+ if (err)
+ netdev_warn(port->team->dev, "Failed to send port change of device %s via netlink\n",
+ port->dev->name);
+
+}
+
+static void team_port_change_check(struct team_port *port, bool linkup)
+{
+ struct team *team = port->team;
+
+ spin_lock(&team->lock);
+ __team_port_change_check(port, linkup);
+ spin_unlock(&team->lock);
+}
+
+/************************************
+ * Net device notifier event handler
+ ************************************/
+
+static int team_device_event(struct notifier_block *unused,
+ unsigned long event, void *ptr)
+{
+ struct net_device *dev = (struct net_device *) ptr;
+ struct team_port *port;
+
+ port = team_port_get_rtnl(dev);
+ if (!port)
+ return NOTIFY_DONE;
+
+ switch (event) {
+ case NETDEV_UP:
+ if (netif_carrier_ok(dev))
+ team_port_change_check(port, true);
+ case NETDEV_DOWN:
+ team_port_change_check(port, false);
+ case NETDEV_CHANGE:
+ if (netif_running(port->dev))
+ team_port_change_check(port,
+ !!netif_carrier_ok(port->dev));
+ break;
+ case NETDEV_UNREGISTER:
+ team_del_slave(port->team->dev, dev);
+ break;
+ case NETDEV_FEAT_CHANGE:
+ team_compute_features(port->team);
+ break;
+ case NETDEV_CHANGEMTU:
+ /* Forbid to change mtu of underlaying device */
+ return NOTIFY_BAD;
+ case NETDEV_CHANGEADDR:
+ /* Forbid to change addr of underlaying device */
+ return NOTIFY_BAD;
+ case NETDEV_PRE_TYPE_CHANGE:
+ /* Forbid to change type of underlaying device */
+ return NOTIFY_BAD;
+ }
+ return NOTIFY_DONE;
+}
+
+static struct notifier_block team_notifier_block __read_mostly = {
+ .notifier_call = team_device_event,
+};
+
+
+/***********************
+ * Module init and exit
+ ***********************/
+
+static int __init team_module_init(void)
+{
+ int err;
+
+ register_netdevice_notifier(&team_notifier_block);
+
+ err = rtnl_link_register(&team_link_ops);
+ if (err)
+ goto err_rtln_reg;
+
+ err = team_nl_init();
+ if (err)
+ goto err_nl_init;
+
+ return 0;
+
+err_nl_init:
+ rtnl_link_unregister(&team_link_ops);
+
+err_rtln_reg:
+ unregister_netdevice_notifier(&team_notifier_block);
+
+ return err;
+}
+
+static void __exit team_module_exit(void)
+{
+ team_nl_fini();
+ rtnl_link_unregister(&team_link_ops);
+ unregister_netdevice_notifier(&team_notifier_block);
+}
+
+module_init(team_module_init);
+module_exit(team_module_exit);
+
+MODULE_LICENSE("GPL v2");
+MODULE_AUTHOR("Jiri Pirko <jpirko@redhat.com>");
+MODULE_DESCRIPTION("Ethernet team device driver");
+MODULE_ALIAS_RTNL_LINK(DRV_NAME);
diff --git a/drivers/net/team/team_mode_activebackup.c b/drivers/net/team/team_mode_activebackup.c
new file mode 100644
index 0000000..1aa2bfb
--- /dev/null
+++ b/drivers/net/team/team_mode_activebackup.c
@@ -0,0 +1,152 @@
+/*
+ * net/drivers/team/team_mode_activebackup.c - Active-backup mode for team
+ * Copyright (c) 2011 Jiri Pirko <jpirko@redhat.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/errno.h>
+#include <linux/netdevice.h>
+#include <net/rtnetlink.h>
+#include <linux/if_team.h>
+
+struct ab_priv {
+ struct team_port __rcu *active_port;
+};
+
+static struct ab_priv *ab_priv(struct team *team)
+{
+ return (struct ab_priv *) &team->mode_priv;
+}
+
+static rx_handler_result_t ab_receive(struct team *team, struct team_port *port,
+ struct sk_buff *skb) {
+ struct team_port *active_port;
+
+ active_port = rcu_dereference(ab_priv(team)->active_port);
+ if (active_port != port)
+ return RX_HANDLER_EXACT;
+ return RX_HANDLER_ANOTHER;
+}
+
+static bool ab_transmit(struct team *team, struct sk_buff *skb)
+{
+ struct team_port *active_port;
+
+ active_port = rcu_dereference(ab_priv(team)->active_port);
+ if (unlikely(!active_port))
+ goto drop;
+ skb->dev = active_port->dev;
+ if (dev_queue_xmit(skb))
+ return false;
+ return true;
+
+drop:
+ dev_kfree_skb(skb);
+ return false;
+}
+
+static void ab_port_leave(struct team *team, struct team_port *port)
+{
+ if (ab_priv(team)->active_port == port)
+ rcu_assign_pointer(ab_priv(team)->active_port, NULL);
+}
+
+static void ab_port_change_mac(struct team *team, struct team_port *port)
+{
+ if (ab_priv(team)->active_port == port)
+ team_port_set_team_mac(port);
+}
+
+static int ab_active_port_get(struct team *team, void *arg)
+{
+ u32 *ifindex = arg;
+
+ *ifindex = 0;
+ if (ab_priv(team)->active_port)
+ *ifindex = ab_priv(team)->active_port->dev->ifindex;
+ return 0;
+}
+
+static int ab_active_port_set(struct team *team, void *arg)
+{
+ u32 *ifindex = arg;
+ struct team_port *port;
+
+ list_for_each_entry_rcu(port, &team->port_list, list) {
+ if (port->dev->ifindex == *ifindex) {
+ struct team_port *ac_port = ab_priv(team)->active_port;
+
+ /* rtnl_lock needs to be held when setting macs */
+ rtnl_lock();
+ if (ac_port)
+ team_port_set_orig_mac(ac_port);
+ rcu_assign_pointer(ab_priv(team)->active_port, port);
+ team_port_set_team_mac(port);
+ rtnl_unlock();
+ return 0;
+ }
+ }
+ return -ENOENT;
+}
+
+static struct team_option ab_options[] = {
+ {
+ .name = "activeport",
+ .type = TEAM_OPTION_TYPE_U32,
+ .getter = ab_active_port_get,
+ .setter = ab_active_port_set,
+ },
+};
+
+int ab_init(struct team *team)
+{
+ team_options_register(team, ab_options, ARRAY_SIZE(ab_options));
+ return 0;
+}
+
+void ab_exit(struct team *team)
+{
+ team_options_unregister(team, ab_options, ARRAY_SIZE(ab_options));
+}
+
+static const struct team_mode_ops ab_mode_ops = {
+ .init = ab_init,
+ .exit = ab_exit,
+ .receive = ab_receive,
+ .transmit = ab_transmit,
+ .port_leave = ab_port_leave,
+ .port_change_mac = ab_port_change_mac,
+};
+
+static struct team_mode ab_mode = {
+ .kind = "activebackup",
+ .owner = THIS_MODULE,
+ .priv_size = sizeof(struct ab_priv),
+ .ops = &ab_mode_ops,
+};
+
+static int __init ab_init_module(void)
+{
+ return team_mode_register(&ab_mode);
+}
+
+static void __exit ab_cleanup_module(void)
+{
+ team_mode_unregister(&ab_mode);
+}
+
+module_init(ab_init_module);
+module_exit(ab_cleanup_module);
+
+MODULE_LICENSE("GPL v2");
+MODULE_AUTHOR("Jiri Pirko <jpirko@redhat.com>");
+MODULE_DESCRIPTION("Active-backup mode for team");
+MODULE_ALIAS("team-mode-activebackup");
diff --git a/drivers/net/team/team_mode_roundrobin.c b/drivers/net/team/team_mode_roundrobin.c
new file mode 100644
index 0000000..0374052
--- /dev/null
+++ b/drivers/net/team/team_mode_roundrobin.c
@@ -0,0 +1,107 @@
+/*
+ * net/drivers/team/team_mode_roundrobin.c - Round-robin mode for team
+ * Copyright (c) 2011 Jiri Pirko <jpirko@redhat.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/errno.h>
+#include <linux/netdevice.h>
+#include <linux/if_team.h>
+
+struct rr_priv {
+ unsigned int sent_packets;
+};
+
+static struct rr_priv *rr_priv(struct team *team)
+{
+ return (struct rr_priv *) &team->mode_priv;
+}
+
+static struct team_port *__get_first_port_up(struct team *team,
+ struct team_port *port)
+{
+ struct team_port *cur;
+
+ if (port->linkup)
+ return port;
+ cur = port;
+ list_for_each_entry_continue_rcu(cur, &team->port_list, list)
+ if (cur->linkup)
+ return cur;
+ list_for_each_entry_rcu(cur, &team->port_list, list) {
+ if (cur == port)
+ break;
+ if (cur->linkup)
+ return cur;
+ }
+ return NULL;
+}
+
+static bool rr_transmit(struct team *team, struct sk_buff *skb)
+{
+ struct team_port *port;
+ int port_index;
+
+ port_index = rr_priv(team)->sent_packets++ % team->port_count;
+ port = team_get_port_by_index_rcu(team, port_index);
+ port = __get_first_port_up(team, port);
+ if (unlikely(!port))
+ goto drop;
+ skb->dev = port->dev;
+ if (dev_queue_xmit(skb))
+ return false;
+ return true;
+
+drop:
+ dev_kfree_skb(skb);
+ return false;
+}
+
+static int rr_port_enter(struct team *team, struct team_port *port)
+{
+ return team_port_set_team_mac(port);
+}
+
+static void rr_port_change_mac(struct team *team, struct team_port *port)
+{
+ team_port_set_team_mac(port);
+}
+
+static const struct team_mode_ops rr_mode_ops = {
+ .transmit = rr_transmit,
+ .port_enter = rr_port_enter,
+ .port_change_mac = rr_port_change_mac,
+};
+
+static struct team_mode rr_mode = {
+ .kind = "roundrobin",
+ .owner = THIS_MODULE,
+ .priv_size = sizeof(struct rr_priv),
+ .ops = &rr_mode_ops,
+};
+
+static int __init rr_init_module(void)
+{
+ return team_mode_register(&rr_mode);
+}
+
+static void __exit rr_cleanup_module(void)
+{
+ team_mode_unregister(&rr_mode);
+}
+
+module_init(rr_init_module);
+module_exit(rr_cleanup_module);
+
+MODULE_LICENSE("GPL v2");
+MODULE_AUTHOR("Jiri Pirko <jpirko@redhat.com>");
+MODULE_DESCRIPTION("Round-robin mode for team");
+MODULE_ALIAS("team-mode-roundrobin");
diff --git a/include/linux/Kbuild b/include/linux/Kbuild
index 619b565..0b091b3 100644
--- a/include/linux/Kbuild
+++ b/include/linux/Kbuild
@@ -185,6 +185,7 @@ header-y += if_pppol2tp.h
header-y += if_pppox.h
header-y += if_slip.h
header-y += if_strip.h
+header-y += if_team.h
header-y += if_tr.h
header-y += if_tun.h
header-y += if_tunnel.h
diff --git a/include/linux/if.h b/include/linux/if.h
index db20bd4..06b6ef6 100644
--- a/include/linux/if.h
+++ b/include/linux/if.h
@@ -79,6 +79,7 @@
#define IFF_TX_SKB_SHARING 0x10000 /* The interface supports sharing
* skbs on transmit */
#define IFF_UNICAST_FLT 0x20000 /* Supports unicast filtering */
+#define IFF_TEAM_PORT 0x40000 /* device used as team port */
#define IF_GET_IFACE 0x0001 /* for querying only */
#define IF_GET_PROTO 0x0002
diff --git a/include/linux/if_team.h b/include/linux/if_team.h
new file mode 100644
index 0000000..21581a7
--- /dev/null
+++ b/include/linux/if_team.h
@@ -0,0 +1,233 @@
+/*
+ * include/linux/if_team.h - Network team device driver header
+ * Copyright (c) 2011 Jiri Pirko <jpirko@redhat.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#ifndef _LINUX_IF_TEAM_H_
+#define _LINUX_IF_TEAM_H_
+
+#ifdef __KERNEL__
+
+struct team_pcpu_stats {
+ u64 rx_packets;
+ u64 rx_bytes;
+ u64 rx_multicast;
+ u64 tx_packets;
+ u64 tx_bytes;
+ struct u64_stats_sync syncp;
+ u32 rx_dropped;
+ u32 tx_dropped;
+};
+
+struct team;
+
+struct team_port {
+ struct net_device *dev;
+ struct hlist_node hlist; /* node in hash list */
+ struct list_head list; /* node in ordinary list */
+ struct team *team;
+ int index;
+
+ /*
+ * A place for storing original values of the device before it
+ * become a port.
+ */
+ struct {
+ unsigned char dev_addr[MAX_ADDR_LEN];
+ unsigned int mtu;
+ } orig;
+
+ bool linkup;
+ u32 speed;
+ u8 duplex;
+
+ struct rcu_head rcu;
+};
+
+struct team_mode_ops {
+ int (*init)(struct team *team);
+ void (*exit)(struct team *team);
+ rx_handler_result_t (*receive)(struct team *team,
+ struct team_port *port,
+ struct sk_buff *skb);
+ bool (*transmit)(struct team *team, struct sk_buff *skb);
+ int (*port_enter)(struct team *team, struct team_port *port);
+ void (*port_leave)(struct team *team, struct team_port *port);
+ void (*port_change_mac)(struct team *team, struct team_port *port);
+};
+
+enum team_option_type {
+ TEAM_OPTION_TYPE_U32,
+ TEAM_OPTION_TYPE_STRING,
+};
+
+struct team_option {
+ struct list_head list;
+ const char *name;
+ enum team_option_type type;
+ int (*getter)(struct team *team, void *arg);
+ int (*setter)(struct team *team, void *arg);
+};
+
+struct team_mode {
+ struct list_head list;
+ const char *kind;
+ struct module *owner;
+ size_t priv_size;
+ const struct team_mode_ops *ops;
+};
+
+#define TEAM_MODE_PRIV_LONGS 4
+#define TEAM_MODE_PRIV_SIZE (sizeof(long) * TEAM_MODE_PRIV_LONGS)
+
+struct team {
+ struct net_device *dev; /* associated netdevice */
+ struct team_pcpu_stats __percpu *pcpu_stats;
+
+ spinlock_t lock; /* used for overall locking, e.g. port lists write */
+
+ /*
+ * port lists with port count
+ */
+ int port_count;
+ struct hlist_head *port_hlist;
+ struct list_head port_list;
+
+ struct list_head option_list;
+
+ const char *mode_kind;
+ struct team_mode_ops mode_ops;
+ long mode_priv[TEAM_MODE_PRIV_LONGS];
+};
+
+#define TEAM_PORT_HASHBITS 4
+#define TEAM_PORT_HASHENTRIES (1 << TEAM_PORT_HASHBITS)
+
+static inline struct hlist_head *
+team_port_index_hash(const struct team *team,
+ int port_index)
+{
+ return &team->port_hlist[port_index & (TEAM_PORT_HASHENTRIES - 1)];
+}
+
+static inline struct team_port *
+team_get_port_by_index_rcu(const struct team *team,
+ int port_index)
+{
+ struct hlist_node *p;
+ struct team_port *port;
+ struct hlist_head *head = team_port_index_hash(team, port_index);
+
+ hlist_for_each_entry_rcu(port, p, head, hlist)
+ if (port->index == port_index)
+ return port;
+ return NULL;
+}
+
+extern int team_port_set_orig_mac(struct team_port *port);
+extern int team_port_set_team_mac(struct team_port *port);
+extern void team_options_register(struct team *team,
+ struct team_option *option,
+ size_t option_count);
+extern void team_options_unregister(struct team *team,
+ struct team_option *option,
+ size_t option_count);
+extern int team_mode_register(struct team_mode *mode);
+extern int team_mode_unregister(struct team_mode *mode);
+
+#endif /* __KERNEL__ */
+
+#define TEAM_STRING_MAX_LEN 32
+
+/**********************************
+ * NETLINK_GENERIC netlink family.
+ **********************************/
+
+enum {
+ TEAM_CMD_NOOP,
+ TEAM_CMD_OPTIONS_SET,
+ TEAM_CMD_OPTIONS_GET,
+ TEAM_CMD_PORT_LIST_GET,
+
+ __TEAM_CMD_MAX,
+ TEAM_CMD_MAX = (__TEAM_CMD_MAX - 1),
+};
+
+enum {
+ TEAM_ATTR_UNSPEC,
+ TEAM_ATTR_TEAM_IFINDEX, /* u32 */
+ TEAM_ATTR_LIST_OPTION, /* nest */
+ TEAM_ATTR_LIST_PORT, /* nest */
+
+ __TEAM_ATTR_MAX,
+ TEAM_ATTR_MAX = __TEAM_ATTR_MAX - 1,
+};
+
+/* Nested layout of get/set msg:
+ *
+ * [TEAM_ATTR_LIST_OPTION]
+ * [TEAM_ATTR_ITEM_OPTION]
+ * [TEAM_ATTR_OPTION_*], ...
+ * [TEAM_ATTR_ITEM_OPTION]
+ * [TEAM_ATTR_OPTION_*], ...
+ * ...
+ * [TEAM_ATTR_LIST_PORT]
+ * [TEAM_ATTR_ITEM_PORT]
+ * [TEAM_ATTR_PORT_*], ...
+ * [TEAM_ATTR_ITEM_PORT]
+ * [TEAM_ATTR_PORT_*], ...
+ * ...
+ */
+
+enum {
+ TEAM_ATTR_ITEM_OPTION_UNSPEC,
+ TEAM_ATTR_ITEM_OPTION, /* nest */
+
+ __TEAM_ATTR_ITEM_OPTION_MAX,
+ TEAM_ATTR_ITEM_OPTION_MAX = __TEAM_ATTR_ITEM_OPTION_MAX - 1,
+};
+
+enum {
+ TEAM_ATTR_OPTION_UNSPEC,
+ TEAM_ATTR_OPTION_NAME, /* string */
+ TEAM_ATTR_OPTION_CHANGED, /* flag */
+ TEAM_ATTR_OPTION_TYPE, /* u8 */
+ TEAM_ATTR_OPTION_DATA, /* dynamic */
+
+ __TEAM_ATTR_OPTION_MAX,
+ TEAM_ATTR_OPTION_MAX = __TEAM_ATTR_OPTION_MAX - 1,
+};
+
+enum {
+ TEAM_ATTR_ITEM_PORT_UNSPEC,
+ TEAM_ATTR_ITEM_PORT, /* nest */
+
+ __TEAM_ATTR_ITEM_PORT_MAX,
+ TEAM_ATTR_ITEM_PORT_MAX = __TEAM_ATTR_ITEM_PORT_MAX - 1,
+};
+
+enum {
+ TEAM_ATTR_PORT_UNSPEC,
+ TEAM_ATTR_PORT_IFINDEX, /* u32 */
+ TEAM_ATTR_PORT_CHANGED, /* flag */
+ TEAM_ATTR_PORT_LINKUP, /* flag */
+ TEAM_ATTR_PORT_SPEED, /* u32 */
+ TEAM_ATTR_PORT_DUPLEX, /* u8 */
+
+ __TEAM_ATTR_PORT_MAX,
+ TEAM_ATTR_PORT_MAX = __TEAM_ATTR_PORT_MAX - 1,
+};
+
+/*
+ * NETLINK_GENERIC related info
+ */
+#define TEAM_GENL_NAME "team"
+#define TEAM_GENL_VERSION 0x1
+#define TEAM_GENL_CHANGE_EVENT_MC_GRP_NAME "change_event"
+
+#endif /* _LINUX_IF_TEAM_H_ */
--
1.7.6
^ permalink raw reply related
* Re: Bug#645308: tg3 broken for NetXtreme 5714S in squeeze 6.0.3 installer
From: Ben Hutchings @ 2011-10-21 12:19 UTC (permalink / raw)
To: Matt Carlson, Michael Chan; +Cc: 645308, Marc Haber, netdev
In-Reply-To: <20111021090811.GA5993@torres.zugschlus.de>
[-- Attachment #1: Type: text/plain, Size: 1788 bytes --]
On Fri, 2011-10-21 at 11:08 +0200, Marc Haber wrote:
> On Fri, Oct 21, 2011 at 11:00:46AM +0200, Marc Haber wrote:
> > On Thu, Oct 20, 2011 at 05:28:34AM +0100, Ben Hutchings wrote:
> > > I don't see any changes that would obviously change the way this device
> > > is reconfigured during a down/up cycle. There were some changes to
> > > power management that should just let the PCI core do some work that the
> > > driver used to, but it's possible that the result isn't quite the same.
> > > I built a module with those reverted; source and binary attached. Could
> > > you test that? I checked that d-i does include an insmod command.
> >
> > The squeeze 6.0.3 installer with the shipped tg3.ko replaced with
> > yours boots and networks just fine without any workaround and without
> > manual interaction.
>
> I was a bit fast on that. The interface now fails right in the middle
> of installation and needs the modprobe -r, modprobe stunt to network
> again.
Matt, Michael,
The tg3 driver has regressed for the 5714S since Linux 2.6.32. Marc
Haber found this in the backported version included in our stable
update, but also confirmed it in Linux 3.0.
Bringing the interface down and then up again (which the installer does
for some reason) can leave it unable to pass traffic (possibly after
working for a few packets) until the module is reloaded.
I asked Marc to check whether reverting the power management changes
(071697e2bcd8dff2af4d6fdd6525c2324f89553b,
d237d9ecf06a00f0ebca657958cf2a1e92940796) made a difference, but it
doesn't seem to.
There is more information in the bug log at
<http://bugs.debian.org/645308>.
Ben.
--
Ben Hutchings
Unix is many things to many people,
but it's never been everything to anybody.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 828 bytes --]
^ 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