28 Jul, 2010
1 commit
-
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
s2io: fixing DBG_PRINT() macro
ath9k: fix dma direction for map/unmap in ath_rx_tasklet
net: dev_forward_skb should call nf_reset
net sched: fix race in mirred device removal
tun: avoid BUG, dump packet on GSO errors
bonding: set device in RLB ARP packet handler
wimax/i2400m: Add PID & VID for Intel WiMAX 6250
ipv6: Don't add routes to ipv6 disabled interfaces.
net: Fix skb_copy_expand() handling of ->csum_start
net: Fix corruption of skb csum field in pskb_expand_head() of net/core/skbuff.c
macvtap: Limit packet queue length
ixgbe/igb: catch invalid VF settings
bnx2x: Advance a module version
bnx2x: Protect statistics ramrod and sequence number
bnx2x: Protect a SM state change
wireless: use netif_rx_ni in ieee80211_send_layer2_update
27 Jul, 2010
4 commits
-
Patch 9e39f7c5b311a306977c5471f9e2ce4c456aa038 changed the
DBG_PRINT() macro and the if clause was wrongly changed. It means
that currently all the DBG_PRINT are being printed, flooding the
kernel log buffer with things like:s2io: eth6: Next block at: c0000000b9c90000
s2io: eth6: In Neterion Tx routineSigned-off-by: Breno Leitao
Acked-by: Sreenivasa Honnur
Signed-off-by: David S. Miller -
For edma, we should use DMA_BIDIRECTIONAL, or else use
DMA_FROM_DEVICE.This is found to address "BUG at arch/x86/mm/physaddr.c:5"
as described here:http://lkml.org/lkml/2010/7/14/21
Signed-off-by: Ming Lei
Signed-off-by: John W. Linville -
WARNING: drivers/net/built-in.o(.data+0x24): Section mismatch in reference from
the variable dec_lance_tc_driver to the function .init.text:dec_lance_tc_probe()
The variable dec_lance_tc_driver references
the function __init dec_lance_tc_probe()
If the reference is valid then annotate the
variable with __init* or __refdata (see linux/init.h) or name the variable:
*_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console,Fixing this one results in a new mismatch:
WARNING: drivers/net/built-in.o(.devinit.text+0x14): Section mismatch in reference from the function dec_lance_tc_probe() to the function .init.text:dec_lance_probe()
The function __devinit dec_lance_tc_probe() references
a function __init dec_lance_probe().
If dec_lance_probe is only used by dec_lance_tc_probe then
annotate dec_lance_probe with a matching annotation.Signed-off-by: Ralf Baechle
25 Jul, 2010
3 commits
-
There are still some LRO cards that cause GSO errors in tun,
and BUG on this is an unfriendly way to tell the admin
to disable LRO.Further, experience shows we might have more GSO bugs lurking.
See https://bugzilla.kernel.org/show_bug.cgi?id=16413
as a recent example.
dumping a packet will make it easier to figure it out.Replace BUG with warning+dump+drop the packet to make
GSO errors in tun less critical and easier to debug.Signed-off-by: Michael S. Tsirkin
Tested-by: Alex Unigovsky
Acked-by: Herbert Xu
Signed-off-by: David S. Miller -
After:
commit 6146b1a4da98377e4abddc91ba5856bef8f23f1e
Author: Jay Vosburgh
Date: Tue Nov 4 17:51:15 2008 -0800bonding: Fix ALB mode to balance traffic on VLANs
the dev field in the RLB ARP packet handler was set to NULL to wildcard
and accommodate balancing VLANs on top of bonds.This has the side-effect of the packet handler being called against
other, non RLB-enabled bonds, and a kernel oops results when it tries to
dereference rx_hashtbl in rlb_update_entry_from_arp(), which won't be
set for those bonds, e.g. active-backup.With the __netif_receive_skb() changes from:
commit 1f3c8804acba841b5573b953f5560d2683d2db0d
Author: Andy Gospodarek
Date: Mon Dec 14 10:48:58 2009 +0000bonding: allow arp_ip_targets on separate vlans to use arp validation
frames received on VLANs correctly make their way to the bond's handler,
so we no longer need to wildcard the device.The oops can be reproduced by:
modprobe bonding
echo active-backup > /sys/class/net/bond0/bonding/mode
echo 100 > /sys/class/net/bond0/bonding/miimon
ifconfig bond0 xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx
echo +eth0 > /sys/class/net/bond0/bonding/slaves
echo +eth1 > /sys/class/net/bond0/bonding/slavesecho +bond1 > /sys/class/net/bonding_masters
echo balance-alb > /sys/class/net/bond1/bonding/mode
echo 100 > /sys/class/net/bond1/bonding/miimon
ifconfig bond1 xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx
echo +eth2 > /sys/class/net/bond1/bonding/slaves
echo +eth3 > /sys/class/net/bond1/bonding/slavesPass some traffic on bond0. Boom.
[ Tested, behaves as advertised. I do not believe a test of the bonding
mode is necessary, as there is no race between the packet handler and
the bonding mode changing (the mode can only change when the device is
closed). Also updated the log message to include the reproduction and
full commit ids. -J ]Signed-off-by: Greg Edwards
Signed-off-by: Jay Vosburgh
Acked-by: Andy Gospodarek
Signed-off-by: David S. Miller
23 Jul, 2010
2 commits
-
This version of intel wimax device was found in my IBM ThinkPad x201
Signed-off-by: Alexey Shvetsov
-
Mark Wagner reported OOM symptoms when sending UDP traffic over
a macvtap link to a kvm receiver.This appears to be caused by the fact that macvtap packet queues
are unlimited in length. This means that if the receiver can't
keep up with the rate of flow, then we will hit OOM. Of course
it gets worse if the OOM killer then decides to kill the receiver.This patch imposes a cap on the packet queue length, in the same
way as the tuntap driver, using the device TX queue length.Please note that macvtap currently has no way of giving congestion
notification, that means the software device TX queue cannot be
used and packets will always be dropped once the macvtap driver
queue fills up.This shouldn't be a great problem for the scenario where macvtap
is used to feed a kvm receiver, as the traffic is most likely
external in origin so congestion notification can't be applied
anyway.Of course, if anybody decides to complain about guest-to-guest
UDP packet loss down the track, then we may have to revisit this.Incidentally, this patch also fixes a real memory leak when
macvtap_get_queue fails.Chris Wright noticed that for this patch to work, we need a
non-zero TX queue length. This patch includes his work to change
the default macvtap TX queue length to 500.Reported-by: Mark Wagner
Signed-off-by: Herbert Xu
Acked-by: Chris Wright
Acked-by: Arnd Bergmann
Signed-off-by: David S. Miller
22 Jul, 2010
4 commits
-
Some ixgbe cards put an invalid VF device ID in the PCIe SR-IOV
capability. The ixgbe driver is only valid for PFs or non SR-IOV
hardware. It seems that the same problem could occur on igb hardware as
well, so if we discover we are trying to initialize a VF in ixbge_probe
or igb_probe, print an error and exit.Based on a patch for ixgbe from Chris Wright .
Signed-off-by: Andy Gospodarek
Cc: Chris Wright
Acked-by: Chris Wright
Acked-by: Greg Rose
Signed-off-by: David S. Miller -
Advance a module version to 1.52.53-2.
Signed-off-by: Vladislav Zolotarov
Signed-off-by: Dmitry Kravkov
Signed-off-by: Eilon Greenstein
Signed-off-by: David S. Miller -
Bug fix: Protect statistics ramrod sending code and a statistics counter update
with a spinlock. Otherwise there was a race condition that would allow sending
a statistics ramrods with the same sequence number or with sequence numbers not
in a natural order, which would cause a FW assert.Signed-off-by: Vladislav Zolotarov
Signed-off-by: Dmitry Kravkov
Signed-off-by: Eilon Greenstein
Signed-off-by: David S. Miller -
Bug fix: Protect the statistics state machine state update with a
spinlock. Otherwise there was a race condition that would cause the
statistics to stay enabled despite the fact that they were disabled in
the LINK_DOWN event handler.Signed-off-by: Vladislav Zolotarov
Signed-off-by: Dmitry Kravkov
Signed-off-by: Eilon Greenstein
Signed-off-by: David S. Miller
21 Jul, 2010
1 commit
-
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (24 commits)
bridge: Partially disable netpoll support
tcp: fix crash in tcp_xmit_retransmit_queue
IPv6: fix CoA check in RH2 input handler (mip6_rthdr_input())
ibmveth: lost IRQ while closing/opening device leads to service loss
rt2x00: Fix lockdep warning in rt2x00lib_probe_dev()
vhost: avoid pr_err on condition guest can trigger
ipmr: Don't leak memory if fib lookup fails.
vhost-net: avoid flush under lock
net: fix problem in reading sock TX queue
net/core: neighbour update Oops
net: skb_tx_hash() fix relative to skb_orphan_try()
rfs: call sock_rps_record_flow() in tcp_splice_read()
xfrm: do not assume that template resolving always returns xfrms
hostap_pci: set dev->base_addr during probe
axnet_cs: use spin_lock_irqsave in ax_interrupt
dsa: Fix Kconfig dependencies.
act_nat: not all of the ICMP packets need an IP header payload
r8169: incorrect identifier for a 8168dp
Phonet: fix skb leak in pipe endpoint accept()
Bluetooth: Update sec_level/auth_type for already existing connections
...
20 Jul, 2010
1 commit
17 Jul, 2010
2 commits
-
The order of freeing the IRQ and freeing the device in firmware
in ibmveth_close can cause the adapter to become unusable after a
subsequent ibmveth_open. Only a reboot of the OS will make the
network device usable again. This is seen when cycling the adapter
up and down while there is network activity.There is a window where an IRQ will be left unserviced (H_EOI will not
be called). The solution is to make a VIO_IRQ_DISABLE h_call, free the
device with firmware, and then call free_irq.Signed-off-by: Robert Jennings
Signed-off-by: David S. Miller -
The rt2x00dev->intf_work workqueue is never initialized when a driver is
probed for a non-existent device (in this case rt2500usb). On such a
path we call rt2x00lib_remove_dev() to free any resources initialized
during the probe before we use INIT_WORK to initialize the workqueue.
This causes lockdep to get confused since the lock used in the workqueue
hasn't been initialized yet but is now being acquired during
cancel_work_sync() called by rt2x00lib_remove_dev().Fix this by initializing the workqueue first before we attempt to probe
the device. This should make lockdep happy and avoid breaking any
assumptions about how the library cleans up after a probe fails.phy0 -> rt2x00lib_probe_dev: Error - Failed to allocate device.
INFO: trying to register non-static key.
the code is fine but needs lockdep annotation.
turning off the locking correctness validator.
Pid: 2027, comm: modprobe Not tainted 2.6.35-rc5+ #60
Call Trace:
[] register_lock_class+0x152/0x31f
[] ? usb_control_msg+0xd5/0x111
[] __lock_acquire+0xce/0xcf4
[] ? trace_hardirqs_off+0xd/0xf
[] ? _raw_spin_unlock_irqrestore+0x33/0x41
[] lock_acquire+0xd1/0xf7
[] ? __cancel_work_timer+0x99/0x17e
[] __cancel_work_timer+0xd0/0x17e
[] ? __cancel_work_timer+0x99/0x17e
[] cancel_work_sync+0xb/0xd
[] rt2x00lib_remove_dev+0x25/0xb0 [rt2x00lib]
[] rt2x00lib_probe_dev+0x380/0x3ed [rt2x00lib]
[] ? __raw_spin_lock_init+0x31/0x52
[] ? T.676+0xe/0x10 [rt2x00usb]
[] rt2x00usb_probe+0x121/0x15e [rt2x00usb]
[] usb_probe_interface+0x151/0x19e
[] driver_probe_device+0xa7/0x136
[] __driver_attach+0x4a/0x66
[] ? __driver_attach+0x0/0x66
[] bus_for_each_dev+0x54/0x89
[] driver_attach+0x19/0x1b
[] bus_add_driver+0xb4/0x204
[] driver_register+0x98/0x109
[] usb_register_driver+0xb2/0x173
[] ? rt2500usb_init+0x0/0x20 [rt2500usb]
[] rt2500usb_init+0x1e/0x20 [rt2500usb]
[] do_one_initcall+0x6d/0x17a
[] sys_init_module+0x9c/0x1e0
[] system_call_fastpath+0x16/0x1bSigned-off-by: Stephen Boyd
Signed-off-by: John W. Linville
15 Jul, 2010
1 commit
-
"hostap: Protect against initialization interrupt" (which reinstated
"wireless: hostap, fix oops due to early probing interrupt")
reintroduced Bug 16111. This is because hostap_pci wasn't setting
dev->base_addr, which is now checked in prism2_interrupt. As a result,
initialization was failing for PCI-based hostap devices. This corrects
that oversight.Signed-off-by: John W. Linville
13 Jul, 2010
2 commits
-
Use spin_lock_irqsave instead of spin_lock in ax_interrupt because
the interrupt handler can also be invoked from ei_watchdog.Signed-off-by: Ken Kawasaki
Signed-off-by: David S. Miller
12 Jul, 2010
1 commit
-
Merge error.
See CFG_METHOD_8 (0x3c800000 + 0x00300000) since version 8.002.00
of Realtek's driver.Signed-off-by: Francois Romieu
Cc: Hayes
Signed-off-by: David S. Miller
08 Jul, 2010
5 commits
-
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (35 commits)
NET: SB1250: Initialize .owner
vxge: show startup message with KERN_INFO
ll_temac: Fix missing iounmaps
bridge: Clear IPCB before possible entry into IP stack
bridge br_multicast: BUG: unable to handle kernel NULL pointer dereference
net: Fix definition of netif_vdbg() when VERBOSE_DEBUG is defined
net/ne: fix memory leak in ne_drv_probe()
xfrm: fix xfrm by MARK logic
virtio_net: fix oom handling on tx
virtio_net: do not reschedule rx refill forever
s2io: resolve statistics issues
linux/net.h: fix kernel-doc warnings
net: decreasing real_num_tx_queues needs to flush qdisc
sched: qdisc_reset_all_tx is calling qdisc_reset without qdisc_lock
qlge: fix a eeh handler to not add a pending timer
qlge: Replacing add_timer() to mod_timer()
usbnet: Set parent device early for netdev_printk()
net: Revert "rndis_host: Poll status channel before control channel"
netfilter: ip6t_REJECT: fix a dst leak in ipv6 REJECT
drivers: bluetooth: bluecard_cs.c: Fixed include error, changed to linux/io.h
... -
Signed-off-by: Ralf Baechle
drivers/net/sb1250-mac.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
Signed-off-by: David S. Miller -
The original KERN_CRIT will mess up terminals.
CC: Sreenivasa Honnur
Signed-off-by: Wu Fengguang
Signed-off-by: David S. Miller -
Fix missing iounmaps.
Signed-off-by: Denis Kirjanov
Signed-off-by: David S. Miller -
Failure cases within ath9k_hif_usb_alloc_urbs are failed
to release allocated memory.Signed-off-by: Rajkumar Manoharan
Signed-off-by: John W. Linville
06 Jul, 2010
1 commit
-
net_device allocated with alloc_eip_netdev() must be freed.
Signed-off-by: Kulikov Vasiliy
Signed-off-by: David S. Miller
03 Jul, 2010
9 commits
-
virtio net will never try to overflow the TX ring, so the only reason
add_buf may fail is out of memory. Thus, we can not stop the
device until some request completes - there's no guarantee anything
at all is outstanding.Make the error message clearer as well: error here does not
indicate queue full.Signed-off-by: Michael S. Tsirkin
Signed-off-by: Rusty Russell (...and avoid TX_BUSY)
Cc: stable@kernel.org # .34.x (s/virtqueue_/vi->svq->vq_ops->/)
Signed-off-by: David S. Miller -
We currently fill all of RX ring, then add_buf
returns ENOSPC, which gets mis-detected as an out of
memory condition and causes us to reschedule the work,
and so on forever. Fix this by oom = err == -ENOMEM;Signed-off-by: Michael S. Tsirkin
Signed-off-by: Rusty Russell
Cc: stable@kernel.org # .34.x
Signed-off-by: David S. Miller -
This patch resolves a number of issues in the statistics gathering of
the s2io driver.On Xframe adapters, the received multicast statistics counter includes
pause frames which are not indicated to the driver. This can cause
issues where the multicast packet count is higher than what has actually
been received, possibly higher than the number of packets received.The driver software counters are replaced with the adapter hardware
statistics for rx_packets, rx_bytes, and tx_bytes. It also uses the
overflow registers to determine if the statistics wrapped the 32bit
register (removing the window of having a statistic value less than the
previous call). rx_length_errors statistic now includes undersized
packets in addition to oversized packets in its counting. Finally,
rx_crc_errors are now being counted.Signed-off-by: Jon Mason
Signed-off-by: David S. Miller -
Reducing real_num_queues needs to flush the qdisc otherwise
skbs with queue_mappings greater then real_num_tx_queues can
be sent to the underlying driver.The flow for this is,
dev_queue_xmit()
dev_pick_tx()
skb_tx_hash() => hash using real_num_tx_queues
skb_set_queue_mapping()
...
qdisc_enqueue_root() => enqueue skb on txq from hash
...
dev->real_num_tx_queues -= n
...
sch_direct_xmit()
dev_hard_start_xmit()
ndo_start_xmit(skb,dev) => skb queue set with old hashskbs are enqueued on the qdisc with skb->queue_mapping set
0 < queue_mappings < real_num_tx_queues. When the driver
decreases real_num_tx_queues skb's may be dequeued from the
qdisc with a queue_mapping greater then real_num_tx_queues.This fixes a case in ixgbe where this was occurring with DCB
and FCoE. Because the driver is using queue_mapping to map
skbs to tx descriptor rings we can potentially map skbs to
rings that no longer exist.Signed-off-by: John Fastabend
Tested-by: Ross Brattain
Signed-off-by: Jeff Kirsher
Signed-off-by: David S. Miller -
On some ocasions the function qlge_io_resume() tries to add a
pending timer, which causes the system to hit the BUG() on
add_timer() function.This patch removes the timer during the EEH recovery.
Signed-off-by: Breno Leitao
Signed-off-by: Ron Mercer
Signed-off-by: David S. Miller -
Currently qlge driver calls add_timer() instead of mod_timer().
This patch changes add_timer() to mod_timer(), which seems a better
solution.Signed-off-by: Breno Leitao
Signed-off-by: Ron Mercer
Signed-off-by: David S. Miller -
netdev_printk() follows the net_device's parent device pointer, so
we must set that earlier than we previously did.Reported-by: Luís Picciochi Oliveira
Signed-off-by: Ben Hutchings
Signed-off-by: David S. Miller -
This reverts commit c17b274dc2aa538b68c1f02b01a3c4e124b435ba.
That change was reported to break rndis_wlan support for the WUSB54GS.
Reported-by: Luís Picciochi Oliveira
Signed-off-by: Ben Hutchings
Signed-off-by: David S. Miller -
When there is a firmware error or the firmware is reloaded for some other
reason we currently clear all station information, including keys
associated with them. A problem is that we do not clear some other
information regarding keys that are not stored in the station structs.The consequence of this is that when the device is reconfigured after the
firmware reload we can, among other things, run out of key indices.This fixes:
https://bugzilla.kernel.org/show_bug.cgi?id=16232
http://bugzilla.intellinuxwireless.org/show_bug.cgi?id=2221Signed-off-by: Reinette Chatre
Reviewed-by: Johannes Berg
01 Jul, 2010
3 commits
-
When two systems using bonding devices in adaptive load
balancing (ALB) communicates with each other, an endless
ping-pong of ARP replies starts between these two systems.What happens? In the ALB mode, bonding driver keeps track
of each client connected in a hash table, so it can do the
receive load balancing (RLB). This hash table is updated
when an ARP reply is received, then it scans for the client
entry, updates its MAC address and flag it to be announced
later. Therefore, two seconds later, the alb monitor runs
and send for each updated client entry two ARP replies
updating this specific client. The same process happens on
the receiving system, causing the endless ping-pong of arp
replies.See more information including the relevant functions below:
System 1 System 2
bond0 bond0ping
ARP request --------->
rlb_arp_recv ntt = 1; |
| bond_info->rx_ntt = 1; |
| |
| |
| |
| bond_alb_monitor |
| rlb_update_rx_clients |
| rlb_update_client |
| arp_create(ARPOP_REPLY) |
| send ARP reply --------------> V
| send ARP reply -------------->
| rlb_arp_recv
| rlb_update_entry_from_arp
| client_info->ntt = 1;
| bond_info->rx_ntt = 1;
| < snipped, same as in system 1>
+-------
Signed-off-by: Jay Vosburgh
Signed-off-by: David S. Miller -
Some controllers (KW, Dove) limits the TX IP/layer4 checksum offloading to a max size.
Signed-off-by: Saeed Bishara
Acked-by: Lennert Buytenhek
Signed-off-by: David S. Miller