24 Aug, 2009

1 commit


23 Aug, 2009

1 commit


22 Aug, 2009

2 commits


20 Aug, 2009

2 commits

  • When ibm_newemac netdev instance is shutdown with "ifconfig down",
    the netdev interface does not go properly down. netif_carrier_ok()
    keeps returning TRUE even after "ifconfig down".

    The problem can be seen when ibm_newemac instances are slaves of
    a bonding interface. The bonding interface code uses netif_carrier_ok()
    to determine the link status of its slaves. When ibm_newemac slave is
    shutdown with "ifconfig down", the bonding interface won't detect any
    link status change because netif_carrier_ok() keeps returning TRUE.

    Signed-off-by: Petri Gynther
    Signed-off-by: David S. Miller

    Petri Gynther
     
  • Fix build errors due to missing Kconfig select of CRC32:

    ks8851.c:(.text+0x7d2ee): undefined reference to `crc32_le'
    ks8851.c:(.text+0x7d2f5): undefined reference to `bitrev32'

    Signed-off-by: Randy Dunlap
    Signed-off-by: David S. Miller

    Randy Dunlap
     

19 Aug, 2009

3 commits


18 Aug, 2009

4 commits

  • In 5e140dfc1fe87eae27846f193086724806b33c7d "net: reorder struct Qdisc
    for better SMP performance" the definition of struct gnet_stats_basic
    changed incompatibly, as copies of this struct are shipped to
    userland via netlink.

    Restoring old behavior is not welcome, for performance reason.

    Fix is to use a private structure for kernel, and
    teach gnet_stats_copy_basic() to convert from kernel to user land,
    using legacy structure (struct gnet_stats_basic)

    Based on a report and initial patch from Michael Spang.

    Reported-by: Michael Spang
    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • The static variable used by nr_call_to_digi might result in corruption if
    multiple threads are trying to usee a node or neighbour via ioctl. Fixed
    by having the caller pass a structure in. This is safe because nr_add_node
    rsp. nr_add_neigh will allocate a permanent structure, if needed.

    Signed-off-by: Ralf Baechle
    Signed-off-by: David S. Miller

    Ralf Baechle
     
  • If key is 4 that is an array out of bounds.

    Reported-by: Dan Carpenter
    Signed-off-by: John W. Linville

    John W. Linville
     
  • The key todo lock can be taken from different locks
    that require it to be _bh to avoid lock inversion
    due to (soft)irqs.

    This should fix the two problems reported by Bob and
    Gabor:
    http://mid.gmane.org/20090619113049.GB18956@hash.localnet
    http://mid.gmane.org/4A3FA376.8020307@openwrt.org

    Signed-off-by: Johannes Berg
    Cc: Bob Copeland
    Cc: Gabor Juhos
    Signed-off-by: John W. Linville

    Johannes Berg
     

16 Aug, 2009

7 commits

  • commit 111b9dc5 ("e1000e: add aer support") introduces pcie aer
    support for e1000e, but it is not reasonable to disable it in
    e1000_remove but enable it in e1000_resume. This patch enables aer
    support in e1000_probe.

    Signed-off-by: Xiaotian Feng
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Xiaotian Feng
     
  • With manageability (Intel AMT) enabled via BIOS, PHY wakeup does not get
    configured on newer parts which use PHY wakeup vs. MAC wakeup which causes
    WoL to not work. The driver should configure PHY wakeup whether or not
    manageability is enabled.

    Signed-off-by: Bruce Allan
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Bruce Allan
     
  • The slow path ulp_init and ulp_exit calls to the bnx2i driver
    are sleepable calls and therefore should not be protected using
    rcu_read_lock. Fix it by using mutex and refcount during these
    calls. cnic_unregister_driver() will now wait for the refcount
    to go to zero before completing the call.

    Signed-off-by: Michael Chan
    Reviewed-by: Benjamin Li
    Signed-off-by: David S. Miller

    Michael Chan
     
  • The slow path ulp_start and ulp_stop calls to the bnx2i driver
    are sleepable calls and therefore should not be protected using
    rcu_read_lock. Fix it by using mutex and setting a bit during
    these calls. cnic_unregister_device() will now wait for the bit
    to clear before completing the call.

    Signed-off-by: Michael Chan
    Reviewed-by: Benjamin Li
    Signed-off-by: David S. Miller

    Michael Chan
     
  • The slow path calls to the cnic driver are sleepable calls so we
    cannot use rcu_read_lock(). Use mutex for these slow path calls
    instead.

    Signed-off-by: Michael Chan
    Reviewed-by: Benjamin Li
    Signed-off-by: David S. Miller

    Michael Chan
     
  • Register and unregister with bnx2 during NETDEV_UP and NETDEV_DOWN
    events. This simplifies the sequence of events and allows locking
    fixes in the next patch.

    Signed-off-by: Michael Chan
    Reviewed-by: Benjamin Li
    Signed-off-by: David S. Miller

    Michael Chan
     
  • When the cnic driver tries to grab a symbol from bnx2 when bnx2 is
    running init code, symbol_get() will succeed but symbol_put_addr()
    will hit BUG() a moment later. module_text_address() fails because
    bnx2 is still in init code.

    This is fixed by using symbol_put() instead which does the exact
    opposite of symbol_get().

    Signed-off-by: Michael Chan
    Signed-off-by: David S. Miller

    Michael Chan
     

15 Aug, 2009

5 commits


14 Aug, 2009

8 commits

  • Change rt2x00_rf_read() and rt2x00_rf_write() to subtract 1 from the rf
    register number. This is needed because the rf registers are enumerated
    starting with one. The size of the rf register cache is just enough to
    hold all registers, so writing to the highest register was corrupting
    memory. Add a check to make sure that the rf register number is valid.

    Signed-off-by: Pavel Roskin
    Cc: stable@kernel.org
    Acked-by: Ivo van Doorn
    Signed-off-by: John W. Linville

    Pavel Roskin
     
  • Traffic received with a priority tag (VID = 0) and non-zero priority value was
    incorrectly handled by the VLAN packet code path due to a check on zero for
    the whole VLAN tag instead of just the VID.

    This patch masked out the priority field when checking the vlan tag for
    received VLAN packets.

    Signed-off-by: Lucy Liu
    Acked-by: Peter P Waskiewicz Jr
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Lucy Liu
     
  • We return the ddp->len in ixgbe_fcoe_ddp() to indicate the length of data that
    have been DDPed. However, it is possible that the length is 0, e.g., for SCSI
    READ, the FCP_RSP may come back w/ SCSI status 0x28 as Task Set Full with no FCP
    data for DDP. In ixgbe_fcoe_ddp(), we return 0 to indicate not passing DDPed
    packets to upper layer. Therefore in the case of ddp->len being 0 upon FCP_RSP,
    we do not want to return the 0 ddp->len as we want FCP_RSP to be always
    delivered to the upper layer. This patch fixes this bug by setting rc only if
    ddp->len is non-zero.

    Signed-off-by: Yi Zou
    Acked-by: Peter P Waskiewicz Jr
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Yi Zou
     
  • o Defer napi resouce allocation to device attach.

    o Free napi resources and delete napi during detach.

    This ensures right behavior across firmware reset.

    Signed-off-by: Dhananjay Phadke
    Signed-off-by: David S. Miller

    Dhananjay Phadke
     
  • o Remove private workqueue in the driver, move all
    scheduled tasks to keventd workqueues. This makes
    ports (interfaces) of same / different NIC boards
    independent, in terms of their link watchdog and
    reset tasks.

    o Move quick checks for link status and temperature
    in timer callback, schedule watchdog task only if
    link status changed or temperature reached critical
    threshold.

    This also fixes deadlock when thermal panic occurs,
    watchdog work was flushing workqueue that it was
    sitting on.

    Signed-off-by: Amit Kumar Salecha
    Signed-off-by: Dhananjay Phadke
    Signed-off-by: David S. Miller

    Amit Kumar Salecha
     
  • Currently setting rx-usecs when the interface is in legacy interrupt
    mode it is not immediate. We were only setting EITR for each MSIx
    vector and since this count would be zero for legacy mode it wasn't
    set until after a reset. This patch corrects that by checking what
    mode we are in and then setting EITR accordingly.

    Signed-off-by: Don Skidmore
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Don Skidmore
     
  • For 'real' hardware CAN devices the netlink interface is used to set CAN
    specific communication parameters. Real CAN hardware can not be created with
    the ip tool ...

    The invocation of 'ip link add type can' lead to an oops as the standard rtnl
    newlink function was called:

    http://bugzilla.kernel.org/show_bug.cgi?id=13954

    This patch adds a private newlink function for the CAN device driver interface
    that unconditionally returns -EOPNOTSUPP.

    Signed-off-by: Oliver Hartkopp
    Reported-by: Dmitry Eremin-Solenikov
    CC: Patrick McHardy
    CC: Wolfgang Grandegger
    Signed-off-by: David S. Miller

    Oliver Hartkopp
     
  • We splice skbs from the pending queue for a TID
    onto the local pending queue when tearing down a
    block ack request. This is not necessary unless we
    actually have received a request to start a block ack
    request (rate control, for example). If we never received
    that request we should not be splicing the tid pending
    queue as it would be null, causing a panic.

    Not sure yet how exactly we allowed through a call when the
    tid state does not have at least HT_ADDBA_REQUESTED_MSK set,
    that will require some further review as it is not quite
    obvious.

    For more information see the bug report:

    http://bugzilla.kernel.org/show_bug.cgi?id=13922

    This fixes this oops:

    BUG: unable to handle kernel NULL pointer dereference at 00000030
    IP: [] ieee80211_agg_splice_packets+0x40/0xc0 [mac80211]
    *pdpt = 0000000002d1e001 *pde = 0000000000000000
    Thread overran stack, or stack corrupted
    Oops: 0000 [#1] SMP
    last sysfs file: /sys/module/aes_generic/initstate
    Modules linked in:

    Pid: 0, comm: swapper Not tainted (2.6.31-rc5-wl #2) Dell DV051
    EIP: 0060:[] EFLAGS: 00010292 CPU: 0
    EIP is at ieee80211_agg_splice_packets+0x40/0xc0 [mac80211]
    EAX: 00000030 EBX: 0000004c ECX: 00000003 EDX: 00000000
    ESI: c1c98000 EDI: f745a1c0 EBP: c076be58 ESP: c076be38
    DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
    Process swapper (pid: 0, ti=c076a000 task=c0709160 task.ti=c076a000)
    Stack:
    Call Trace:
    [] ? ieee80211_stop_tx_ba_cb+0xab/0x150 [mac80211]
    [] ? ieee80211_tasklet_handler+0xce/0x110 [mac80211]
    [] ? net_rx_action+0xef/0x1d0
    [] ? tasklet_action+0x58/0xc0
    [] ? __do_softirq+0xc2/0x190
    [] ? handle_IRQ_event+0x58/0x140
    [] ? ack_apic_level+0x7e/0x270
    [] ? do_softirq+0x3d/0x40
    [] ? irq_exit+0x65/0x90
    [] ? do_IRQ+0x4f/0xc0
    [] ? irq_exit+0x7d/0x90
    [] ? smp_apic_timer_interrupt+0x57/0x90
    [] ? common_interrupt+0x29/0x30
    [] ? mwait_idle+0xbe/0x100
    [] ? cpu_idle+0x52/0x90
    [] ? rest_init+0x55/0x60
    [] ? start_kernel+0x315/0x37d
    [] ? unknown_bootoption+0x0/0x1f9
    [] ? i386_start_kernel+0x79/0x81
    Code:
    EIP: [] ieee80211_agg_splice_packets+0x40/0xc0 [mac80211] SS:ESP 0068:c076be38
    CR2: 0000000000000030

    Cc: stable@kernel.org
    Testedy-by: Jack Lau
    Signed-off-by: Luis R. Rodriguez
    Signed-off-by: John W. Linville

    Luis R. Rodriguez
     

13 Aug, 2009

2 commits


11 Aug, 2009

2 commits


10 Aug, 2009

3 commits