Commit 25431e90 authored by Linus Torvalds's avatar Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
  sunrpc: fix rdma dependencies
  e1000: Fix PCI enable to honor the need_ioport flag
  sgi-xp: link XPNET's net_device_ops to its net_device structure
  pcnet_cs: Fix misuse of the equality operator.
  hso: add new device id's
  dca: redesign locks to fix deadlocks
  cassini/sungem: limit reaches -1, but 0 tested
  net: variables reach -1, but 0 tested
  qlge: bugfix: Add missing netif_napi_del call.
  qlge: bugfix: Add flash offset for second port.
  qlge: bugfix: Fix endian issue when reading flash.
  udp: increments sk_drops in __udp_queue_rcv_skb()
  net: Fix userland breakage wrt. linux/if_tunnel.h
  net: packet socket packet_lookup_frame fix
parents 0d7a063f 55128bc2
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
#include <linux/device.h> #include <linux/device.h>
#include <linux/dca.h> #include <linux/dca.h>
#define DCA_VERSION "1.4" #define DCA_VERSION "1.8"
MODULE_VERSION(DCA_VERSION); MODULE_VERSION(DCA_VERSION);
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
...@@ -60,16 +60,17 @@ int dca_add_requester(struct device *dev) ...@@ -60,16 +60,17 @@ int dca_add_requester(struct device *dev)
{ {
struct dca_provider *dca; struct dca_provider *dca;
int err, slot = -ENODEV; int err, slot = -ENODEV;
unsigned long flags;
if (!dev) if (!dev)
return -EFAULT; return -EFAULT;
spin_lock(&dca_lock); spin_lock_irqsave(&dca_lock, flags);
/* check if the requester has not been added already */ /* check if the requester has not been added already */
dca = dca_find_provider_by_dev(dev); dca = dca_find_provider_by_dev(dev);
if (dca) { if (dca) {
spin_unlock(&dca_lock); spin_unlock_irqrestore(&dca_lock, flags);
return -EEXIST; return -EEXIST;
} }
...@@ -78,19 +79,21 @@ int dca_add_requester(struct device *dev) ...@@ -78,19 +79,21 @@ int dca_add_requester(struct device *dev)
if (slot >= 0) if (slot >= 0)
break; break;
} }
if (slot < 0) {
spin_unlock(&dca_lock); spin_unlock_irqrestore(&dca_lock, flags);
if (slot < 0)
return slot; return slot;
}
err = dca_sysfs_add_req(dca, dev, slot); err = dca_sysfs_add_req(dca, dev, slot);
if (err) { if (err) {
dca->ops->remove_requester(dca, dev); spin_lock_irqsave(&dca_lock, flags);
spin_unlock(&dca_lock); if (dca == dca_find_provider_by_dev(dev))
dca->ops->remove_requester(dca, dev);
spin_unlock_irqrestore(&dca_lock, flags);
return err; return err;
} }
spin_unlock(&dca_lock);
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(dca_add_requester); EXPORT_SYMBOL_GPL(dca_add_requester);
...@@ -103,25 +106,25 @@ int dca_remove_requester(struct device *dev) ...@@ -103,25 +106,25 @@ int dca_remove_requester(struct device *dev)
{ {
struct dca_provider *dca; struct dca_provider *dca;
int slot; int slot;
unsigned long flags;
if (!dev) if (!dev)
return -EFAULT; return -EFAULT;
spin_lock(&dca_lock); spin_lock_irqsave(&dca_lock, flags);
dca = dca_find_provider_by_dev(dev); dca = dca_find_provider_by_dev(dev);
if (!dca) { if (!dca) {
spin_unlock(&dca_lock); spin_unlock_irqrestore(&dca_lock, flags);
return -ENODEV; return -ENODEV;
} }
slot = dca->ops->remove_requester(dca, dev); slot = dca->ops->remove_requester(dca, dev);
if (slot < 0) { spin_unlock_irqrestore(&dca_lock, flags);
spin_unlock(&dca_lock);
if (slot < 0)
return slot; return slot;
}
dca_sysfs_remove_req(dca, slot); dca_sysfs_remove_req(dca, slot);
spin_unlock(&dca_lock);
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(dca_remove_requester); EXPORT_SYMBOL_GPL(dca_remove_requester);
...@@ -135,17 +138,18 @@ u8 dca_common_get_tag(struct device *dev, int cpu) ...@@ -135,17 +138,18 @@ u8 dca_common_get_tag(struct device *dev, int cpu)
{ {
struct dca_provider *dca; struct dca_provider *dca;
u8 tag; u8 tag;
unsigned long flags;
spin_lock(&dca_lock); spin_lock_irqsave(&dca_lock, flags);
dca = dca_find_provider_by_dev(dev); dca = dca_find_provider_by_dev(dev);
if (!dca) { if (!dca) {
spin_unlock(&dca_lock); spin_unlock_irqrestore(&dca_lock, flags);
return -ENODEV; return -ENODEV;
} }
tag = dca->ops->get_tag(dca, dev, cpu); tag = dca->ops->get_tag(dca, dev, cpu);
spin_unlock(&dca_lock); spin_unlock_irqrestore(&dca_lock, flags);
return tag; return tag;
} }
...@@ -217,11 +221,16 @@ static BLOCKING_NOTIFIER_HEAD(dca_provider_chain); ...@@ -217,11 +221,16 @@ static BLOCKING_NOTIFIER_HEAD(dca_provider_chain);
int register_dca_provider(struct dca_provider *dca, struct device *dev) int register_dca_provider(struct dca_provider *dca, struct device *dev)
{ {
int err; int err;
unsigned long flags;
err = dca_sysfs_add_provider(dca, dev); err = dca_sysfs_add_provider(dca, dev);
if (err) if (err)
return err; return err;
spin_lock_irqsave(&dca_lock, flags);
list_add(&dca->node, &dca_providers); list_add(&dca->node, &dca_providers);
spin_unlock_irqrestore(&dca_lock, flags);
blocking_notifier_call_chain(&dca_provider_chain, blocking_notifier_call_chain(&dca_provider_chain,
DCA_PROVIDER_ADD, NULL); DCA_PROVIDER_ADD, NULL);
return 0; return 0;
...@@ -234,9 +243,15 @@ EXPORT_SYMBOL_GPL(register_dca_provider); ...@@ -234,9 +243,15 @@ EXPORT_SYMBOL_GPL(register_dca_provider);
*/ */
void unregister_dca_provider(struct dca_provider *dca) void unregister_dca_provider(struct dca_provider *dca)
{ {
unsigned long flags;
blocking_notifier_call_chain(&dca_provider_chain, blocking_notifier_call_chain(&dca_provider_chain,
DCA_PROVIDER_REMOVE, NULL); DCA_PROVIDER_REMOVE, NULL);
spin_lock_irqsave(&dca_lock, flags);
list_del(&dca->node); list_del(&dca->node);
spin_unlock_irqrestore(&dca_lock, flags);
dca_sysfs_remove_provider(dca); dca_sysfs_remove_provider(dca);
} }
EXPORT_SYMBOL_GPL(unregister_dca_provider); EXPORT_SYMBOL_GPL(unregister_dca_provider);
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* License. See the file "COPYING" in the main directory of this archive * License. See the file "COPYING" in the main directory of this archive
* for more details. * for more details.
* *
* Copyright (C) 1999-2008 Silicon Graphics, Inc. All rights reserved. * Copyright (C) 1999-2009 Silicon Graphics, Inc. All rights reserved.
*/ */
/* /*
...@@ -551,6 +551,7 @@ xpnet_init(void) ...@@ -551,6 +551,7 @@ xpnet_init(void)
netif_carrier_off(xpnet_device); netif_carrier_off(xpnet_device);
xpnet_device->netdev_ops = &xpnet_netdev_ops;
xpnet_device->mtu = XPNET_DEF_MTU; xpnet_device->mtu = XPNET_DEF_MTU;
/* /*
......
...@@ -806,7 +806,7 @@ static int cas_reset_mii_phy(struct cas *cp) ...@@ -806,7 +806,7 @@ static int cas_reset_mii_phy(struct cas *cp)
cas_phy_write(cp, MII_BMCR, BMCR_RESET); cas_phy_write(cp, MII_BMCR, BMCR_RESET);
udelay(100); udelay(100);
while (limit--) { while (--limit) {
val = cas_phy_read(cp, MII_BMCR); val = cas_phy_read(cp, MII_BMCR);
if ((val & BMCR_RESET) == 0) if ((val & BMCR_RESET) == 0)
break; break;
...@@ -979,7 +979,7 @@ static void cas_phy_init(struct cas *cp) ...@@ -979,7 +979,7 @@ static void cas_phy_init(struct cas *cp)
writel(val, cp->regs + REG_PCS_MII_CTRL); writel(val, cp->regs + REG_PCS_MII_CTRL);
limit = STOP_TRIES; limit = STOP_TRIES;
while (limit-- > 0) { while (--limit > 0) {
udelay(10); udelay(10);
if ((readl(cp->regs + REG_PCS_MII_CTRL) & if ((readl(cp->regs + REG_PCS_MII_CTRL) &
PCS_MII_RESET) == 0) PCS_MII_RESET) == 0)
......
...@@ -940,7 +940,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev, ...@@ -940,7 +940,7 @@ static int __devinit e1000_probe(struct pci_dev *pdev,
err = pci_enable_device(pdev); err = pci_enable_device(pdev);
} else { } else {
bars = pci_select_bars(pdev, IORESOURCE_MEM); bars = pci_select_bars(pdev, IORESOURCE_MEM);
err = pci_enable_device(pdev); err = pci_enable_device_mem(pdev);
} }
if (err) if (err)
return err; return err;
......
...@@ -60,7 +60,7 @@ int emac_mii_reset_phy(struct mii_phy *phy) ...@@ -60,7 +60,7 @@ int emac_mii_reset_phy(struct mii_phy *phy)
udelay(300); udelay(300);
while (limit--) { while (--limit) {
val = phy_read(phy, MII_BMCR); val = phy_read(phy, MII_BMCR);
if (val >= 0 && (val & BMCR_RESET) == 0) if (val >= 0 && (val & BMCR_RESET) == 0)
break; break;
...@@ -84,7 +84,7 @@ int emac_mii_reset_gpcs(struct mii_phy *phy) ...@@ -84,7 +84,7 @@ int emac_mii_reset_gpcs(struct mii_phy *phy)
udelay(300); udelay(300);
while (limit--) { while (--limit) {
val = gpcs_phy_read(phy, MII_BMCR); val = gpcs_phy_read(phy, MII_BMCR);
if (val >= 0 && (val & BMCR_RESET) == 0) if (val >= 0 && (val & BMCR_RESET) == 0)
break; break;
......
...@@ -586,7 +586,7 @@ static int pcnet_config(struct pcmcia_device *link) ...@@ -586,7 +586,7 @@ static int pcnet_config(struct pcmcia_device *link)
} }
if ((link->conf.ConfigBase == 0x03c0) if ((link->conf.ConfigBase == 0x03c0)
&& (link->manf_id == 0x149) && (link->card_id = 0xc1ab)) { && (link->manf_id == 0x149) && (link->card_id == 0xc1ab)) {
printk(KERN_INFO "pcnet_cs: this is an AX88190 card!\n"); printk(KERN_INFO "pcnet_cs: this is an AX88190 card!\n");
printk(KERN_INFO "pcnet_cs: use axnet_cs instead.\n"); printk(KERN_INFO "pcnet_cs: use axnet_cs instead.\n");
goto failed; goto failed;
......
...@@ -787,12 +787,12 @@ struct mbox_params { ...@@ -787,12 +787,12 @@ struct mbox_params {
struct flash_params { struct flash_params {
u8 dev_id_str[4]; u8 dev_id_str[4];
u16 size; __le16 size;
u16 csum; __le16 csum;
u16 ver; __le16 ver;
u16 sub_dev_id; __le16 sub_dev_id;
u8 mac_addr[6]; u8 mac_addr[6];
u16 res; __le16 res;
}; };
......
...@@ -641,7 +641,7 @@ static void ql_enable_all_completion_interrupts(struct ql_adapter *qdev) ...@@ -641,7 +641,7 @@ static void ql_enable_all_completion_interrupts(struct ql_adapter *qdev)
} }
static int ql_read_flash_word(struct ql_adapter *qdev, int offset, u32 *data) static int ql_read_flash_word(struct ql_adapter *qdev, int offset, __le32 *data)
{ {
int status = 0; int status = 0;
/* wait for reg to come ready */ /* wait for reg to come ready */
...@@ -656,8 +656,11 @@ static int ql_read_flash_word(struct ql_adapter *qdev, int offset, u32 *data) ...@@ -656,8 +656,11 @@ static int ql_read_flash_word(struct ql_adapter *qdev, int offset, u32 *data)
FLASH_ADDR, FLASH_ADDR_RDY, FLASH_ADDR_ERR); FLASH_ADDR, FLASH_ADDR_RDY, FLASH_ADDR_ERR);
if (status) if (status)
goto exit; goto exit;
/* get the data */ /* This data is stored on flash as an array of
*data = ql_read32(qdev, FLASH_DATA); * __le32. Since ql_read32() returns cpu endian
* we need to swap it back.
*/
*data = cpu_to_le32(ql_read32(qdev, FLASH_DATA));
exit: exit:
return status; return status;
} }
...@@ -666,13 +669,20 @@ static int ql_get_flash_params(struct ql_adapter *qdev) ...@@ -666,13 +669,20 @@ static int ql_get_flash_params(struct ql_adapter *qdev)
{ {
int i; int i;
int status; int status;
u32 *p = (u32 *)&qdev->flash; __le32 *p = (__le32 *)&qdev->flash;
u32 offset = 0;
/* Second function's parameters follow the first
* function's.
*/
if (qdev->func)
offset = sizeof(qdev->flash) / sizeof(u32);
if (ql_sem_spinlock(qdev, SEM_FLASH_MASK)) if (ql_sem_spinlock(qdev, SEM_FLASH_MASK))
return -ETIMEDOUT; return -ETIMEDOUT;
for (i = 0; i < sizeof(qdev->flash) / sizeof(u32); i++, p++) { for (i = 0; i < sizeof(qdev->flash) / sizeof(u32); i++, p++) {
status = ql_read_flash_word(qdev, i, p); status = ql_read_flash_word(qdev, i+offset, p);
if (status) { if (status) {
QPRINTK(qdev, IFUP, ERR, "Error reading flash.\n"); QPRINTK(qdev, IFUP, ERR, "Error reading flash.\n");
goto exit; goto exit;
...@@ -3826,7 +3836,7 @@ static int qlge_suspend(struct pci_dev *pdev, pm_message_t state) ...@@ -3826,7 +3836,7 @@ static int qlge_suspend(struct pci_dev *pdev, pm_message_t state)
{ {
struct net_device *ndev = pci_get_drvdata(pdev); struct net_device *ndev = pci_get_drvdata(pdev);
struct ql_adapter *qdev = netdev_priv(ndev); struct ql_adapter *qdev = netdev_priv(ndev);
int err; int err, i;
netif_device_detach(ndev); netif_device_detach(ndev);
...@@ -3836,6 +3846,9 @@ static int qlge_suspend(struct pci_dev *pdev, pm_message_t state) ...@@ -3836,6 +3846,9 @@ static int qlge_suspend(struct pci_dev *pdev, pm_message_t state)
return err; return err;
} }
for (i = qdev->rss_ring_first_cq_id; i < qdev->rx_ring_count; i++)
netif_napi_del(&qdev->rx_ring[i].napi);
err = pci_save_state(pdev); err = pci_save_state(pdev);
if (err) if (err)
return err; return err;
......
...@@ -220,9 +220,9 @@ static void smc911x_reset(struct net_device *dev) ...@@ -220,9 +220,9 @@ static void smc911x_reset(struct net_device *dev)
/* make sure EEPROM has finished loading before setting GPIO_CFG */ /* make sure EEPROM has finished loading before setting GPIO_CFG */
timeout=1000; timeout=1000;
while ( timeout-- && (SMC_GET_E2P_CMD(lp) & E2P_CMD_EPC_BUSY_)) { while (--timeout && (SMC_GET_E2P_CMD(lp) & E2P_CMD_EPC_BUSY_))
udelay(10); udelay(10);
}
if (timeout == 0){ if (timeout == 0){
PRINTK("%s: smc911x_reset timeout waiting for EEPROM busy\n", dev->name); PRINTK("%s: smc911x_reset timeout waiting for EEPROM busy\n", dev->name);
return; return;
......
...@@ -498,7 +498,7 @@ static void smsc9420_check_mac_address(struct net_device *dev) ...@@ -498,7 +498,7 @@ static void smsc9420_check_mac_address(struct net_device *dev)
static void smsc9420_stop_tx(struct smsc9420_pdata *pd) static void smsc9420_stop_tx(struct smsc9420_pdata *pd)
{ {
u32 dmac_control, mac_cr, dma_intr_ena; u32 dmac_control, mac_cr, dma_intr_ena;
int timeOut = 1000; int timeout = 1000;
/* disable TX DMAC */ /* disable TX DMAC */
dmac_control = smsc9420_reg_read(pd, DMAC_CONTROL); dmac_control = smsc9420_reg_read(pd, DMAC_CONTROL);
...@@ -506,13 +506,13 @@ static void smsc9420_stop_tx(struct smsc9420_pdata *pd) ...@@ -506,13 +506,13 @@ static void smsc9420_stop_tx(struct smsc9420_pdata *pd)
smsc9420_reg_write(pd, DMAC_CONTROL, dmac_control); smsc9420_reg_write(pd, DMAC_CONTROL, dmac_control);
/* Wait max 10ms for transmit process to stop */ /* Wait max 10ms for transmit process to stop */
while (timeOut--) { while (--timeout) {
if (smsc9420_reg_read(pd, DMAC_STATUS) & DMAC_STS_TS_) if (smsc9420_reg_read(pd, DMAC_STATUS) & DMAC_STS_TS_)
break; break;
udelay(10); udelay(10);
} }
if (!timeOut) if (!timeout)
smsc_warn(IFDOWN, "TX DMAC failed to stop"); smsc_warn(IFDOWN, "TX DMAC failed to stop");
/* ACK Tx DMAC stop bit */ /* ACK Tx DMAC stop bit */
...@@ -596,7 +596,7 @@ static void smsc9420_free_rx_ring(struct smsc9420_pdata *pd) ...@@ -596,7 +596,7 @@ static void smsc9420_free_rx_ring(struct smsc9420_pdata *pd)
static void smsc9420_stop_rx(struct smsc9420_pdata *pd) static void smsc9420_stop_rx(struct smsc9420_pdata *pd)
{ {
int timeOut = 1000; int timeout = 1000;
u32 mac_cr, dmac_control, dma_intr_ena; u32 mac_cr, dmac_control, dma_intr_ena;
/* mask RX DMAC interrupts */ /* mask RX DMAC interrupts */
...@@ -617,13 +617,13 @@ static void smsc9420_stop_rx(struct smsc9420_pdata *pd) ...@@ -617,13 +617,13 @@ static void smsc9420_stop_rx(struct smsc9420_pdata *pd)
smsc9420_pci_flush_write(pd); smsc9420_pci_flush_write(pd);
/* wait up to 10ms for receive to stop */ /* wait up to 10ms for receive to stop */
while (timeOut--) { while (--timeout) {
if (smsc9420_reg_read(pd, DMAC_STATUS) & DMAC_STS_RS_) if (smsc9420_reg_read(pd, DMAC_STATUS) & DMAC_STS_RS_)
break; break;
udelay(10); udelay(10);
} }
if (!timeOut) if (!timeout)
smsc_warn(IFDOWN, "RX DMAC did not stop! timeout."); smsc_warn(IFDOWN, "RX DMAC did not stop! timeout.");
/* ACK the Rx DMAC stop bit */ /* ACK the Rx DMAC stop bit */
......
...@@ -148,7 +148,7 @@ static u16 __phy_read(struct gem *gp, int phy_addr, int reg) ...@@ -148,7 +148,7 @@ static u16 __phy_read(struct gem *gp, int phy_addr, int reg)
cmd |= (MIF_FRAME_TAMSB); cmd |= (MIF_FRAME_TAMSB);
writel(cmd, gp->regs + MIF_FRAME); writel(cmd, gp->regs + MIF_FRAME);
while (limit--) { while (--limit) {
cmd = readl(gp->regs + MIF_FRAME); cmd = readl(gp->regs + MIF_FRAME);
if (cmd & MIF_FRAME_TALSB) if (cmd & MIF_FRAME_TALSB)
break; break;
......
...@@ -79,7 +79,7 @@ static int reset_one_mii_phy(struct mii_phy* phy, int phy_id) ...@@ -79,7 +79,7 @@ static int reset_one_mii_phy(struct mii_phy* phy, int phy_id)
udelay(100); udelay(100);
while (limit--) { while (--limit) {
val = __phy_read(phy, phy_id, MII_BMCR); val = __phy_read(phy, phy_id, MII_BMCR);
if ((val & BMCR_RESET) == 0) if ((val & BMCR_RESET) == 0)
break; break;
......
...@@ -227,7 +227,7 @@ static int qe_init(struct sunqe *qep, int from_irq) ...@@ -227,7 +227,7 @@ static int qe_init(struct sunqe *qep, int from_irq)
if (!(sbus_readb(mregs + MREGS_PHYCONFIG) & MREGS_PHYCONFIG_LTESTDIS)) { if (!(sbus_readb(mregs + MREGS_PHYCONFIG) & MREGS_PHYCONFIG_LTESTDIS)) {
int tries = 50; int tries = 50;
while (tries--) { while (--tries) {
u8 tmp; u8 tmp;
mdelay(5); mdelay(5);
......
...@@ -1237,7 +1237,7 @@ static void tsi108_init_phy(struct net_device *dev) ...@@ -1237,7 +1237,7 @@ static void tsi108_init_phy(struct net_device *dev)
spin_lock_irqsave(&phy_lock, flags); spin_lock_irqsave(&phy_lock, flags);
tsi108_write_mii(data, MII_BMCR, BMCR_RESET); tsi108_write_mii(data, MII_BMCR, BMCR_RESET);
while (i--){ while (--i) {
if(!(tsi108_read_mii(data, MII_BMCR) & BMCR_RESET)) if(!(tsi108_read_mii(data, MII_BMCR) & BMCR_RESET))
break; break;
udelay(10); udelay(10);
......
...@@ -392,7 +392,7 @@ static void de_rx (struct de_private *de) ...@@ -392,7 +392,7 @@ static void de_rx (struct de_private *de)
unsigned drop = 0; unsigned drop = 0;
int rc; int rc;
while (rx_work--) { while (--rx_work) {
u32 status, len; u32 status, len;
dma_addr_t mapping; dma_addr_t mapping;
struct sk_buff *skb, *copy_skb; struct sk_buff *skb, *copy_skb;
......
...@@ -455,6 +455,7 @@ static const struct usb_device_id hso_ids[] = { ...@@ -455,6 +455,7 @@ static const struct usb_device_id hso_ids[] = {
{icon321_port_device(0x0af0, 0xd033)}, /* Icon-322 */ {icon321_port_device(0x0af0, 0xd033)}, /* Icon-322 */
{USB_DEVICE(0x0af0, 0x7301)}, /* GE40x */ {USB_DEVICE(0x0af0, 0x7301)}, /* GE40x */
{USB_DEVICE(0x0af0, 0x7361)}, /* GE40x */ {USB_DEVICE(0x0af0, 0x7361)}, /* GE40x */
{USB_DEVICE(0x0af0, 0x7381)}, /* GE40x */
{USB_DEVICE(0x0af0, 0x7401)}, /* GI 0401 */ {USB_DEVICE(0x0af0, 0x7401)}, /* GI 0401 */
{USB_DEVICE(0x0af0, 0x7501)}, /* GTM 382 */ {USB_DEVICE(0x0af0, 0x7501)}, /* GTM 382 */
{USB_DEVICE(0x0af0, 0x7601)}, /* GE40x */ {USB_DEVICE(0x0af0, 0x7601)}, /* GE40x */
...@@ -462,7 +463,8 @@ static const struct usb_device_id hso_ids[] = { ...@@ -462,7 +463,8 @@ static const struct usb_device_id hso_ids[] = {
{USB_DEVICE(0x0af0, 0x7801)}, {USB_DEVICE(0x0af0, 0x7801)},
{USB_DEVICE(0x0af0, 0x7901)}, {USB_DEVICE(0x0af0, 0x7901)},
{USB_DEVICE(0x0af0, 0x7361)}, {USB_DEVICE(0x0af0, 0x7361)},
{icon321_port_device(0x0af0, 0xd051)}, {USB_DEVICE(0x0af0, 0xd057)},
{USB_DEVICE(0x0af0, 0xd055)},
{} {}
}; };
MODULE_DEVICE_TABLE(usb, hso_ids); MODULE_DEVICE_TABLE(usb, hso_ids);
......
...@@ -90,7 +90,6 @@ header-y += if_ppp.h ...@@ -90,7 +90,6 @@ header-y += if_ppp.h
header-y += if_slip.h header-y += if_slip.h
header-y += if_strip.h header-y += if_strip.h
header-y += if_tun.h header-y += if_tun.h
header-y += if_tunnel.h
header-y += in_route.h header-y += in_route.h
header-y += ioctl.h header-y += ioctl.h
header-y += ip6_tunnel.h header-y += ip6_tunnel.h
...@@ -236,6 +235,7 @@ unifdef-y += if_phonet.h ...@@ -236,6 +235,7 @@ unifdef-y += if_phonet.h
unifdef-y += if_pppol2tp.h unifdef-y += if_pppol2tp.h
unifdef-y += if_pppox.h unifdef-y += if_pppox.h
unifdef-y += if_tr.h unifdef-y += if_tr.h
unifdef-y += if_tunnel.h
unifdef-y += if_vlan.h unifdef-y += if_vlan.h
unifdef-y += igmp.h unifdef-y += igmp.h
unifdef-y += inet_diag.h unifdef-y += inet_diag.h
......
...@@ -2,7 +2,10 @@ ...@@ -2,7 +2,10 @@
#define _IF_TUNNEL_H_ #define _IF_TUNNEL_H_
#include <linux/types.h> #include <linux/types.h>
#ifdef __KERNEL__
#include <linux/ip.h> #include <linux/ip.h>
#endif
#define SIOCGETTUNNEL (SIOCDEVPRIVATE + 0) #define SIOCGETTUNNEL (SIOCDEVPRIVATE + 0)
#define SIOCADDTUNNEL (SIOCDEVPRIVATE + 1) #define SIOCADDTUNNEL (SIOCDEVPRIVATE + 1)
......
...@@ -1015,9 +1015,11 @@ static int __udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) ...@@ -1015,9 +1015,11 @@ static int __udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
if ((rc = sock_queue_rcv_skb(sk, skb)) < 0) { if ((rc = sock_queue_rcv_skb(sk, skb)) < 0) {
/* Note that an ENOMEM error is charged twice */ /* Note that an ENOMEM error is charged twice */
if (rc == -ENOMEM) if (rc == -ENOMEM) {
UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS, UDP_INC_STATS_BH(sock_net(sk), UDP_MIB_RCVBUFERRORS,
is_udplite); is_udplite);
atomic_inc(&sk->sk_drops);
}
goto drop; goto drop;
} }
......
...@@ -222,13 +222,13 @@ static void *packet_lookup_frame(struct packet_sock *po, unsigned int position, ...@@ -222,13 +222,13 @@ static void *packet_lookup_frame(struct packet_sock *po, unsigned int position,
h.raw = po->pg_vec[pg_vec_pos] + (frame_offset * po->frame_size); h.raw = po->pg_vec[pg_vec_pos] + (frame_offset * po->frame_size);
switch (po->tp_version) { switch (po->tp_version) {
case TPACKET_V1: case TPACKET_V1:
if (status != h.h1->tp_status ? TP_STATUS_USER : if (status != (h.h1->tp_status ? TP_STATUS_USER :
TP_STATUS_KERNEL) TP_STATUS_KERNEL))
return NULL; return NULL;
break; break;
case TPACKET_V2: case TPACKET_V2:
if (status != h.h2->tp_status ? TP_STATUS_USER : if (status != (h.h2->tp_status ? TP_STATUS_USER :
TP_STATUS_KERNEL) TP_STATUS_KERNEL))
return NULL; return NULL;
break; break;
} }
......
...@@ -6,7 +6,7 @@ config SUNRPC_GSS ...@@ -6,7 +6,7 @@ config SUNRPC_GSS
config SUNRPC_XPRT_RDMA config SUNRPC_XPRT_RDMA
tristate tristate
depends on SUNRPC && INFINIBAND && EXPERIMENTAL depends on SUNRPC && INFINIBAND && INFINIBAND_ADDR_TRANS && EXPERIMENTAL
default SUNRPC && INFINIBAND default SUNRPC && INFINIBAND
help help
This option allows the NFS client and server to support This option allows the NFS client and server to support
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment