Skip to content
  1. May 03, 2012
    • Gerard Lledo's avatar
      sungem: Fix WakeOnLan · 5a8887d3
      Gerard Lledo authored
      
      
      WakeOnLan was broken in this driver because gp->asleep_wol is a 1-bit
      bitfield and it was being assigned WAKE_MAGIC, which is (1 << 5).
      gp->asleep_wol remains 0 and the machine never wakes up.  Fixed by casting
      gp->wake_on_lan to bool.  Tested on an iBook G4.
      
      Signed-off-by: default avatarGerard Lledo <gerard.lledo@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5a8887d3
    • Eric Dumazet's avatar
      tcp: change tcp_adv_win_scale and tcp_rmem[2] · b49960a0
      Eric Dumazet authored
      
      
      tcp_adv_win_scale default value is 2, meaning we expect a good citizen
      skb to have skb->len / skb->truesize ratio of 75% (3/4)
      
      In 2.6 kernels we (mis)accounted for typical MSS=1460 frame :
      1536 + 64 + 256 = 1856 'estimated truesize', and 1856 * 3/4 = 1392.
      So these skbs were considered as not bloated.
      
      With recent truesize fixes, a typical MSS=1460 frame truesize is now the
      more precise :
      2048 + 256 = 2304. But 2304 * 3/4 = 1728.
      So these skb are not good citizen anymore, because 1460 < 1728
      
      (GRO can escape this problem because it build skbs with a too low
      truesize.)
      
      This also means tcp advertises a too optimistic window for a given
      allocated rcvspace : When receiving frames, sk_rmem_alloc can hit
      sk_rcvbuf limit and we call tcp_prune_queue()/tcp_collapse() too often,
      especially when application is slow to drain its receive queue or in
      case of losses (netperf is fast, scp is slow). This is a major latency
      source.
      
      We should adjust the len/truesize ratio to 50% instead of 75%
      
      This patch :
      
      1) changes tcp_adv_win_scale default to 1 instead of 2
      
      2) increase tcp_rmem[2] limit from 4MB to 6MB to take into account
      better truesize tracking and to allow autotuning tcp receive window to
      reach same value than before. Note that same amount of kernel memory is
      consumed compared to 2.6 kernels.
      
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Neal Cardwell <ncardwell@google.com>
      Cc: Tom Herbert <therbert@google.com>
      Cc: Yuchung Cheng <ycheng@google.com>
      Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b49960a0
    • Sasha Levin's avatar
      net: l2tp: unlock socket lock before returning from l2tp_ip_sendmsg · 84768edb
      Sasha Levin authored
      l2tp_ip_sendmsg could return without releasing socket lock, making it all the
      way to userspace, and generating the following warning:
      
      [  130.891594] ================================================
      [  130.894569] [ BUG: lock held when returning to user space! ]
      [  130.897257] 3.4.0-rc5-next-20120501-sasha #104 Tainted: G        W
      [  130.900336] ------------------------------------------------
      [  130.902996] trinity/8384 is leaving the kernel with locks still held!
      [  130.906106] 1 lock held by trinity/8384:
      [  130.907924]  #0:  (sk_lock-AF_INET){+.+.+.}, at: [<ffffffff82b9503f>] l2tp_ip_sendmsg+0x2f/0x550
      
      Introduced by commit 2f16270f
      
       ("l2tp: Fix locking in l2tp_ip.c").
      
      Signed-off-by: default avatarSasha Levin <levinsasha928@gmail.com>
      Acked-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      84768edb
    • Neil Horman's avatar
      drop_monitor: prevent init path from scheduling on the wrong cpu · 4fdcfa12
      Neil Horman authored
      
      
      I just noticed after some recent updates, that the init path for the drop
      monitor protocol has a minor error.  drop monitor maintains a per cpu structure,
      that gets initalized from a single cpu.  Normally this is fine, as the protocol
      isn't in use yet, but I recently made a change that causes a failed skb
      allocation to reschedule itself .  Given the current code, the implication is
      that this workqueue reschedule will take place on the wrong cpu.  If drop
      monitor is used early during the boot process, its possible that two cpus will
      access a single per-cpu structure in parallel, possibly leading to data
      corruption.
      
      This patch fixes the situation, by storing the cpu number that a given instance
      of this per-cpu data should be accessed from.  In the case of a need for a
      reschedule, the cpu stored in the struct is assigned the rescheule, rather than
      the currently executing cpu
      
      Tested successfully by myself.
      
      Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      CC: David Miller <davem@davemloft.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4fdcfa12
    • tom.leiming@gmail.com's avatar
      usbnet: fix failure handling in usbnet_probe · a4723848
      tom.leiming@gmail.com authored
      
      
      If register_netdev returns failure, the dev->interrupt and
      its transfer buffer should be released, so just fix it.
      
      Signed-off-by: default avatarMing Lei <tom.leiming@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a4723848
    • tom.leiming@gmail.com's avatar
      usbnet: fix leak of transfer buffer of dev->interrupt · 720f3d7c
      tom.leiming@gmail.com authored
      
      
      The transfer buffer of dev->interrupt is allocated in .probe path,
      but not freed in .disconnet path, so mark the interrupt URB as
      URB_FREE_BUFFER to free the buffer when the URB is destroyed.
      
      Signed-off-by: default avatarMing Lei <tom.leiming@gmail.com>
      Acked-by: default avatarOliver Neukum <oneukum@suse.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      720f3d7c
    • Joakim Tjernlund's avatar
      ucc_geth: Add 16 bytes to max TX frame for VLANs · 70f8002d
      Joakim Tjernlund authored
      
      
      Creating a VLAN interface on top of ucc_geth adds 4 bytes
      to the frame and the HW controller is not prepared to
      TX a frame bigger than 1518 bytes which is 4 bytes too
      small for a full VLAN frame. Add 16 bytes which will handle
      the a simple VLAN and leaves 12 bytes for future expansion.
      
      Signed-off-by: default avatarJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      70f8002d
    • Joakim Tjernlund's avatar
      net: ucc_geth, increase no. of HW RX descriptors · 5bbdc057
      Joakim Tjernlund authored
      
      
      In a busy network we see ucc_geth is dropping RX pkgs every now
      and then. Increase the RX queues HW descriptors from
      16 to 32 to deal with this.
      
      Signed-off-by: default avatarJoakim Tjernlund <Joakim.Tjernlund@transmode.se>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5bbdc057
  2. May 02, 2012
  3. May 01, 2012
  4. Apr 30, 2012
  5. Apr 28, 2012
    • Neil Horman's avatar
      drop_monitor: Make updating data->skb smp safe · 3885ca78
      Neil Horman authored
      
      
      Eric Dumazet pointed out to me that the drop_monitor protocol has some holes in
      its smp protections.  Specifically, its possible to replace data->skb while its
      being written.  This patch corrects that by making data->skb an rcu protected
      variable.  That will prevent it from being overwritten while a tracepoint is
      modifying it.
      
      Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      Reported-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      CC: David Miller <davem@davemloft.net>
      Acked-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3885ca78
    • Neil Horman's avatar
      drop_monitor: fix sleeping in invalid context warning · cde2e9a6
      Neil Horman authored
      
      
      Eric Dumazet pointed out this warning in the drop_monitor protocol to me:
      
      [   38.352571] BUG: sleeping function called from invalid context at kernel/mutex.c:85
      [   38.352576] in_atomic(): 1, irqs_disabled(): 0, pid: 4415, name: dropwatch
      [   38.352580] Pid: 4415, comm: dropwatch Not tainted 3.4.0-rc2+ #71
      [   38.352582] Call Trace:
      [   38.352592]  [<ffffffff8153aaf0>] ? trace_napi_poll_hit+0xd0/0xd0
      [   38.352599]  [<ffffffff81063f2a>] __might_sleep+0xca/0xf0
      [   38.352606]  [<ffffffff81655b16>] mutex_lock+0x26/0x50
      [   38.352610]  [<ffffffff8153aaf0>] ? trace_napi_poll_hit+0xd0/0xd0
      [   38.352616]  [<ffffffff810b72d9>] tracepoint_probe_register+0x29/0x90
      [   38.352621]  [<ffffffff8153a585>] set_all_monitor_traces+0x105/0x170
      [   38.352625]  [<ffffffff8153a8ca>] net_dm_cmd_trace+0x2a/0x40
      [   38.352630]  [<ffffffff8154a81a>] genl_rcv_msg+0x21a/0x2b0
      [   38.352636]  [<ffffffff810f8029>] ? zone_statistics+0x99/0xc0
      [   38.352640]  [<ffffffff8154a600>] ? genl_rcv+0x30/0x30
      [   38.352645]  [<ffffffff8154a059>] netlink_rcv_skb+0xa9/0xd0
      [   38.352649]  [<ffffffff8154a5f0>] genl_rcv+0x20/0x30
      [   38.352653]  [<ffffffff81549a7e>] netlink_unicast+0x1ae/0x1f0
      [   38.352658]  [<ffffffff81549d76>] netlink_sendmsg+0x2b6/0x310
      [   38.352663]  [<ffffffff8150824f>] sock_sendmsg+0x10f/0x130
      [   38.352668]  [<ffffffff8150abe0>] ? move_addr_to_kernel+0x60/0xb0
      [   38.352673]  [<ffffffff81515f04>] ? verify_iovec+0x64/0xe0
      [   38.352677]  [<ffffffff81509c46>] __sys_sendmsg+0x386/0x390
      [   38.352682]  [<ffffffff810ffaf9>] ? handle_mm_fault+0x139/0x210
      [   38.352687]  [<ffffffff8165b5bc>] ? do_page_fault+0x1ec/0x4f0
      [   38.352693]  [<ffffffff8106ba4d>] ? set_next_entity+0x9d/0xb0
      [   38.352699]  [<ffffffff81310b49>] ? tty_ldisc_deref+0x9/0x10
      [   38.352703]  [<ffffffff8106d363>] ? pick_next_task_fair+0x63/0x140
      [   38.352708]  [<ffffffff8150b8d4>] sys_sendmsg+0x44/0x80
      [   38.352713]  [<ffffffff8165f8e2>] system_call_fastpath+0x16/0x1b
      
      It stems from holding a spinlock (trace_state_lock) while attempting to register
      or unregister tracepoint hooks, making in_atomic() true in this context, leading
      to the warning when the tracepoint calls might_sleep() while its taking a mutex.
      Since we only use the trace_state_lock to prevent trace protocol state races, as
      well as hardware stat list updates on an rcu write side, we can just convert the
      spinlock to a mutex to avoid this problem.
      
      Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      Reported-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      CC: David Miller <davem@davemloft.net>
      Acked-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cde2e9a6
    • Grazvydas Ignotas's avatar
      wl1251: fix crash on remove due to leftover work item · 4c1bcdb5
      Grazvydas Ignotas authored
      
      
      This driver currently leaves elp_work behind when stopping, which
      occasionally results in data corruption because work function ends
      up accessing freed memory, typical symptoms of this are various
      worker_thread crashes. Fix it by cancelling elp_work.
      
      Cc: stable@vger.kernel.org # v2.6.37+
      Signed-off-by: default avatarGrazvydas Ignotas <notasas@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      4c1bcdb5
    • Grazvydas Ignotas's avatar
      wl1251: fix crash on remove due to premature kfree · 328c32f0
      Grazvydas Ignotas authored
      
      
      Currently SDIO glue frees it's own structure before calling
      wl1251_free_hw(), which in turn calls ieee80211_unregister_hw().
      The later call may result in a need to communicate with the chip
      to stop it (as it happens now if the interface is still up before
      rmmod), which means calls are made back to the glue, resulting in
      freed memory access.
      
      Fix this by freeing glue data last.
      
      Cc: stable@vger.kernel.org # v2.6.37+
      Signed-off-by: default avatarGrazvydas Ignotas <notasas@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      328c32f0
    • Seth Forshee's avatar
      b43: only reload config after successful initialization · dbdedbdf
      Seth Forshee authored
      Commit 2a190322 (b43: reload phy and bss settings after core restarts)
      introduced an unconditional call to b43_op_config() at the end of
      b43_op_start(). When firmware fails to load this can wedge the system.
      There's no need to reload the configuration after a failed
      initialization anyway, so only make the call if initialization was
      successful.
      
      BugLink: http://bugs.launchpad.net/bugs/950295
      
      
      Cc: Felix Fietkau <nbd@openwrt.org>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarSeth Forshee <seth.forshee@canonical.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      dbdedbdf
    • Wey-Yi Guy's avatar
      iwlwifi: use 6000G2B for 6030 device series · 1ed2ec37
      Wey-Yi Guy authored
      
      
      "iwlwifi: use correct released ucode version" change
      the ucode api ok from 6000G2 to 6000G2B, but it shall belong
      to 6030 device series, not the 6005 device series. Fix it
      
      Cc: stable@vger.kernel.org #3.3+
      Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      1ed2ec37