Skip to content

Commit

Permalink
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
Browse files Browse the repository at this point in the history
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (59 commits)
  igbvf.txt: Add igbvf Documentation
  igb.txt: Add igb documentation
  e100/e1000*/igb*/ixgb*: Add missing read memory barrier
  ixgbe: fix build error with FCOE_CONFIG without DCB_CONFIG
  netxen: protect tx timeout recovery by rtnl lock
  isdn: gigaset: use after free
  isdn: gigaset: add missing unlock
  solos-pci: Fix race condition in tasklet RX handling
  pkt_sched: Fix sch_sfq vs tcf_bind_filter oops
  net: disable preemption before call smp_processor_id()
  tcp: no md5sig option size check bug
  iwlwifi: fix locking assertions
  iwlwifi: fix TX tracer
  isdn: fix information leak
  net: Fix napi_gro_frags vs netpoll path
  usbnet: remove noisy and hardly useful printk
  rtl8180: avoid potential NULL deref in rtl8180_beacon_work
  ath9k: Remove myself from the MAINTAINERS list
  libertas: scan before assocation if no BSSID was given
  libertas: fix association with some APs by using extended rates
  ...
  • Loading branch information
torvalds committed Aug 10, 2010
2 parents 0fcf12d + c4e9b56 commit f6cec0a
Show file tree
Hide file tree
Showing 80 changed files with 1,311 additions and 450 deletions.
132 changes: 132 additions & 0 deletions Documentation/networking/igb.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
Linux* Base Driver for Intel(R) Network Connection
==================================================

Intel Gigabit Linux driver.
Copyright(c) 1999 - 2010 Intel Corporation.

Contents
========

- Identifying Your Adapter
- Additional Configurations
- Support

Identifying Your Adapter
========================

This driver supports all 82575, 82576 and 82580-based Intel (R) gigabit network
connections.

For specific information on how to identify your adapter, go to the Adapter &
Driver ID Guide at:

http://support.intel.com/support/go/network/adapter/idguide.htm

Command Line Parameters
=======================

The default value for each parameter is generally the recommended setting,
unless otherwise noted.

max_vfs
-------
Valid Range: 0-7
Default Value: 0

This parameter adds support for SR-IOV. It causes the driver to spawn up to
max_vfs worth of virtual function.

Additional Configurations
=========================

Jumbo Frames
------------
Jumbo Frames support is enabled by changing the MTU to a value larger than
the default of 1500. Use the ifconfig command to increase the MTU size.
For example:

ifconfig eth<x> mtu 9000 up

This setting is not saved across reboots.

Notes:

- The maximum MTU setting for Jumbo Frames is 9216. This value coincides
with the maximum Jumbo Frames size of 9234 bytes.

- Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or
loss of link.

Ethtool
-------
The driver utilizes the ethtool interface for driver configuration and
diagnostics, as well as displaying statistical information.

http://sourceforge.net/projects/gkernel.

Enabling Wake on LAN* (WoL)
---------------------------
WoL is configured through the Ethtool* utility.

For instructions on enabling WoL with Ethtool, refer to the Ethtool man page.

WoL will be enabled on the system during the next shut down or reboot.
For this driver version, in order to enable WoL, the igb driver must be
loaded when shutting down or rebooting the system.

Wake On LAN is only supported on port A of multi-port adapters.

Wake On LAN is not supported for the Intel(R) Gigabit VT Quad Port Server
Adapter.

Multiqueue
----------
In this mode, a separate MSI-X vector is allocated for each queue and one
for "other" interrupts such as link status change and errors. All
interrupts are throttled via interrupt moderation. Interrupt moderation
must be used to avoid interrupt storms while the driver is processing one
interrupt. The moderation value should be at least as large as the expected
time for the driver to process an interrupt. Multiqueue is off by default.

REQUIREMENTS: MSI-X support is required for Multiqueue. If MSI-X is not
found, the system will fallback to MSI or to Legacy interrupts.

LRO
---
Large Receive Offload (LRO) is a technique for increasing inbound throughput
of high-bandwidth network connections by reducing CPU overhead. It works by
aggregating multiple incoming packets from a single stream into a larger
buffer before they are passed higher up the networking stack, thus reducing
the number of packets that have to be processed. LRO combines multiple
Ethernet frames into a single receive in the stack, thereby potentially
decreasing CPU utilization for receives.

NOTE: You need to have inet_lro enabled via either the CONFIG_INET_LRO or
CONFIG_INET_LRO_MODULE kernel config option. Additionally, if
CONFIG_INET_LRO_MODULE is used, the inet_lro module needs to be loaded
before the igb driver.

You can verify that the driver is using LRO by looking at these counters in
Ethtool:

lro_aggregated - count of total packets that were combined
lro_flushed - counts the number of packets flushed out of LRO
lro_no_desc - counts the number of times an LRO descriptor was not available
for the LRO packet

NOTE: IPv6 and UDP are not supported by LRO.

Support
=======

For general information, go to the Intel support website at:

www.intel.com/support/

or the Intel Wired Networking project hosted by Sourceforge at:

http://sourceforge.net/projects/e1000

If an issue is identified with the released source code on the supported
kernel with a supported adapter, email the specific information related
to the issue to [email protected]
78 changes: 78 additions & 0 deletions Documentation/networking/igbvf.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
Linux* Base Driver for Intel(R) Network Connection
==================================================

Intel Gigabit Linux driver.
Copyright(c) 1999 - 2010 Intel Corporation.

Contents
========

- Identifying Your Adapter
- Additional Configurations
- Support

This file describes the igbvf Linux* Base Driver for Intel Network Connection.

The igbvf driver supports 82576-based virtual function devices that can only
be activated on kernels that support SR-IOV. SR-IOV requires the correct
platform and OS support.

The igbvf driver requires the igb driver, version 2.0 or later. The igbvf
driver supports virtual functions generated by the igb driver with a max_vfs
value of 1 or greater. For more information on the max_vfs parameter refer
to the README included with the igb driver.

The guest OS loading the igbvf driver must support MSI-X interrupts.

This driver is only supported as a loadable module at this time. Intel is
not supplying patches against the kernel source to allow for static linking
of the driver. For questions related to hardware requirements, refer to the
documentation supplied with your Intel Gigabit adapter. All hardware
requirements listed apply to use with Linux.

Instructions on updating ethtool can be found in the section "Additional
Configurations" later in this document.

VLANs: There is a limit of a total of 32 shared VLANs to 1 or more VFs.

Identifying Your Adapter
========================

The igbvf driver supports 82576-based virtual function devices that can only
be activated on kernels that support SR-IOV.

For more information on how to identify your adapter, go to the Adapter &
Driver ID Guide at:

http://support.intel.com/support/go/network/adapter/idguide.htm

For the latest Intel network drivers for Linux, refer to the following
website. In the search field, enter your adapter name or type, or use the
networking link on the left to search for your adapter:

http://downloadcenter.intel.com/scripts-df-external/Support_Intel.aspx

Additional Configurations
=========================

Ethtool
-------
The driver utilizes the ethtool interface for driver configuration and
diagnostics, as well as displaying statistical information.

http://sourceforge.net/projects/gkernel.

Support
=======

For general information, go to the Intel support website at:

http://support.intel.com

or the Intel Wired Networking project hosted by Sourceforge at:

http://sourceforge.net/projects/e1000

If an issue is identified with the released source code on the supported
kernel with a supported adapter, email the specific information related
to the issue to [email protected]
1 change: 0 additions & 1 deletion MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -1085,7 +1085,6 @@ F: drivers/net/wireless/ath/ath5k/
ATHEROS ATH9K WIRELESS DRIVER
M: "Luis R. Rodriguez" <[email protected]>
M: Jouni Malinen <[email protected]>
M: Sujith Manoharan <[email protected]>
M: Vasanthakumar Thiagarajan <[email protected]>
M: Senthil Balasubramanian <[email protected]>
L: [email protected]
Expand Down
7 changes: 6 additions & 1 deletion drivers/atm/solos-pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -781,7 +781,8 @@ static struct atm_vcc *find_vcc(struct atm_dev *dev, short vpi, int vci)
sk_for_each(s, node, head) {
vcc = atm_sk(s);
if (vcc->dev == dev && vcc->vci == vci &&
vcc->vpi == vpi && vcc->qos.rxtp.traffic_class != ATM_NONE)
vcc->vpi == vpi && vcc->qos.rxtp.traffic_class != ATM_NONE &&
test_bit(ATM_VF_READY, &vcc->flags))
goto out;
}
vcc = NULL;
Expand Down Expand Up @@ -907,6 +908,10 @@ static void pclose(struct atm_vcc *vcc)
clear_bit(ATM_VF_ADDR, &vcc->flags);
clear_bit(ATM_VF_READY, &vcc->flags);

/* Hold up vcc_destroy_socket() (our caller) until solos_bh() in the
tasklet has finished processing any incoming packets (and, more to
the point, using the vcc pointer). */
tasklet_unlock_wait(&card->tlet);
return;
}

Expand Down
2 changes: 1 addition & 1 deletion drivers/char/pcmcia/ipwireless/network.c
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ static int ipwireless_ppp_ioctl(struct ppp_channel *ppp_channel,
return err;
}

static struct ppp_channel_ops ipwireless_ppp_channel_ops = {
static const struct ppp_channel_ops ipwireless_ppp_channel_ops = {
.start_xmit = ipwireless_ppp_start_xmit,
.ioctl = ipwireless_ppp_ioctl
};
Expand Down
6 changes: 4 additions & 2 deletions drivers/isdn/gigaset/bas-gigaset.c
Original file line number Diff line number Diff line change
Expand Up @@ -1914,11 +1914,13 @@ static int gigaset_write_cmd(struct cardstate *cs, struct cmdbuf_t *cb)
* The next command will reopen the AT channel automatically.
*/
if (cb->len == 3 && !memcmp(cb->buf, "+++", 3)) {
kfree(cb);
rc = req_submit(cs->bcs, HD_CLOSE_ATCHANNEL, 0, BAS_TIMEOUT);
if (cb->wake_tasklet)
tasklet_schedule(cb->wake_tasklet);
return rc < 0 ? rc : cb->len;
if (!rc)
rc = cb->len;
kfree(cb);
return rc;
}

spin_lock_irqsave(&cs->cmdlock, flags);
Expand Down
1 change: 1 addition & 0 deletions drivers/isdn/gigaset/capi.c
Original file line number Diff line number Diff line change
Expand Up @@ -1052,6 +1052,7 @@ static inline void remove_appl_from_channel(struct bc_state *bcs,
do {
if (bcap->bcnext == ap) {
bcap->bcnext = bcap->bcnext->bcnext;
spin_unlock_irqrestore(&bcs->aplock, flags);
return;
}
bcap = bcap->bcnext;
Expand Down
10 changes: 5 additions & 5 deletions drivers/isdn/sc/ioctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ int sc_ioctl(int card, scs_ioctl *data)
pr_debug("%s: SCIOGETSPID: ioctl received\n",
sc_adapter[card]->devicename);

spid = kmalloc(SCIOC_SPIDSIZE, GFP_KERNEL);
spid = kzalloc(SCIOC_SPIDSIZE, GFP_KERNEL);
if (!spid) {
kfree(rcvmsg);
return -ENOMEM;
Expand All @@ -194,7 +194,7 @@ int sc_ioctl(int card, scs_ioctl *data)
kfree(rcvmsg);
return status;
}
strcpy(spid, rcvmsg->msg_data.byte_array);
strlcpy(spid, rcvmsg->msg_data.byte_array, SCIOC_SPIDSIZE);

/*
* Package the switch type and send to user space
Expand Down Expand Up @@ -266,12 +266,12 @@ int sc_ioctl(int card, scs_ioctl *data)
return status;
}

dn = kmalloc(SCIOC_DNSIZE, GFP_KERNEL);
dn = kzalloc(SCIOC_DNSIZE, GFP_KERNEL);
if (!dn) {
kfree(rcvmsg);
return -ENOMEM;
}
strcpy(dn, rcvmsg->msg_data.byte_array);
strlcpy(dn, rcvmsg->msg_data.byte_array, SCIOC_DNSIZE);
kfree(rcvmsg);

/*
Expand Down Expand Up @@ -337,7 +337,7 @@ int sc_ioctl(int card, scs_ioctl *data)
pr_debug("%s: SCIOSTAT: ioctl received\n",
sc_adapter[card]->devicename);

bi = kmalloc (sizeof(boardInfo), GFP_KERNEL);
bi = kzalloc(sizeof(boardInfo), GFP_KERNEL);
if (!bi) {
kfree(rcvmsg);
return -ENOMEM;
Expand Down
25 changes: 13 additions & 12 deletions drivers/net/cxgb3/cxgb3_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -3198,17 +3198,17 @@ static int __devinit init_one(struct pci_dev *pdev,
}
}

err = pci_request_regions(pdev, DRV_NAME);
err = pci_enable_device(pdev);
if (err) {
/* Just info, some other driver may have claimed the device. */
dev_info(&pdev->dev, "cannot obtain PCI resources\n");
return err;
dev_err(&pdev->dev, "cannot enable PCI device\n");
goto out;
}

err = pci_enable_device(pdev);
err = pci_request_regions(pdev, DRV_NAME);
if (err) {
dev_err(&pdev->dev, "cannot enable PCI device\n");
goto out_release_regions;
/* Just info, some other driver may have claimed the device. */
dev_info(&pdev->dev, "cannot obtain PCI resources\n");
goto out_disable_device;
}

if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) {
Expand All @@ -3217,11 +3217,11 @@ static int __devinit init_one(struct pci_dev *pdev,
if (err) {
dev_err(&pdev->dev, "unable to obtain 64-bit DMA for "
"coherent allocations\n");
goto out_disable_device;
goto out_release_regions;
}
} else if ((err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) != 0) {
dev_err(&pdev->dev, "no usable DMA configuration\n");
goto out_disable_device;
goto out_release_regions;
}

pci_set_master(pdev);
Expand All @@ -3234,7 +3234,7 @@ static int __devinit init_one(struct pci_dev *pdev,
adapter = kzalloc(sizeof(*adapter), GFP_KERNEL);
if (!adapter) {
err = -ENOMEM;
goto out_disable_device;
goto out_release_regions;
}

adapter->nofail_skb =
Expand Down Expand Up @@ -3370,11 +3370,12 @@ static int __devinit init_one(struct pci_dev *pdev,
out_free_adapter:
kfree(adapter);

out_disable_device:
pci_disable_device(pdev);
out_release_regions:
pci_release_regions(pdev);
out_disable_device:
pci_disable_device(pdev);
pci_set_drvdata(pdev, NULL);
out:
return err;
}

Expand Down
Loading

0 comments on commit f6cec0a

Please sign in to comment.