mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
Merge commit 'origin' into master
Manual merge of: arch/powerpc/Kconfig arch/powerpc/include/asm/page.h
This commit is contained in:
commit
a02efb906d
2652 changed files with 278337 additions and 43509 deletions
|
|
@ -40,7 +40,7 @@
|
|||
v1.14 10/15/97 Avoided waiting..discard message for fast machines -djb
|
||||
v1.15 1/31/98 Faster recovery for Tx errors. -djb
|
||||
v1.16 2/3/98 Different ID port handling to avoid sound cards. -djb
|
||||
v1.18 12Mar2001 Andrew Morton <andrewm@uow.edu.au>
|
||||
v1.18 12Mar2001 Andrew Morton
|
||||
- Avoid bogus detect of 3c590's (Andrzej Krzysztofowicz)
|
||||
- Reviewed against 1.18 from scyld.com
|
||||
v1.18a 17Nov2001 Jeff Garzik <jgarzik@pobox.com>
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ static int vortex_debug = 1;
|
|||
#include <linux/eisa.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <asm/irq.h> /* For NR_IRQS only. */
|
||||
#include <asm/irq.h> /* For nr_irqs only. */
|
||||
#include <asm/io.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
|
|
@ -1221,7 +1221,7 @@ static int __devinit vortex_probe1(struct device *gendev,
|
|||
if (print_info)
|
||||
printk(", IRQ %d\n", dev->irq);
|
||||
/* Tell them about an invalid IRQ. */
|
||||
if (dev->irq <= 0 || dev->irq >= NR_IRQS)
|
||||
if (dev->irq <= 0 || dev->irq >= nr_irqs)
|
||||
printk(KERN_WARNING " *** Warning: IRQ %d is unlikely to work! ***\n",
|
||||
dev->irq);
|
||||
|
||||
|
|
|
|||
|
|
@ -2410,7 +2410,6 @@ config IXGBE
|
|||
tristate "Intel(R) 10GbE PCI Express adapters support"
|
||||
depends on PCI && INET
|
||||
select INET_LRO
|
||||
select INTEL_IOATDMA
|
||||
---help---
|
||||
This driver supports Intel(R) 10GbE PCI Express family of
|
||||
adapters. For more information on how to identify your adapter, go
|
||||
|
|
@ -2426,6 +2425,11 @@ config IXGBE
|
|||
To compile this driver as a module, choose M here. The module
|
||||
will be called ixgbe.
|
||||
|
||||
config IXGBE_DCA
|
||||
bool
|
||||
default y
|
||||
depends on IXGBE && DCA && !(IXGBE=y && DCA=m)
|
||||
|
||||
config IXGB
|
||||
tristate "Intel(R) PRO/10GbE support"
|
||||
depends on PCI
|
||||
|
|
@ -2462,7 +2466,6 @@ config MYRI10GE
|
|||
select FW_LOADER
|
||||
select CRC32
|
||||
select INET_LRO
|
||||
select INTEL_IOATDMA
|
||||
---help---
|
||||
This driver supports Myricom Myri-10G Dual Protocol interface in
|
||||
Ethernet mode. If the eeprom on your board is not recent enough,
|
||||
|
|
@ -2474,6 +2477,11 @@ config MYRI10GE
|
|||
To compile this driver as a module, choose M here. The module
|
||||
will be called myri10ge.
|
||||
|
||||
config MYRI10GE_DCA
|
||||
bool
|
||||
default y
|
||||
depends on MYRI10GE && DCA && !(MYRI10GE=y && DCA=m)
|
||||
|
||||
config NETXEN_NIC
|
||||
tristate "NetXen Multi port (1/10) Gigabit Ethernet NIC"
|
||||
depends on PCI
|
||||
|
|
|
|||
|
|
@ -36,8 +36,7 @@
|
|||
|
||||
Alan Cox : Removed 1.2 support, added 2.1 extra counters.
|
||||
|
||||
Andrew Morton : andrewm@uow.edu.au
|
||||
: Kernel 2.3.48
|
||||
Andrew Morton : Kernel 2.3.48
|
||||
: Handle kmalloc() failures
|
||||
: Other resource allocation fixes
|
||||
: Add SMP locks
|
||||
|
|
@ -49,7 +48,7 @@
|
|||
: Fixed an out-of-mem bug in dma_rx()
|
||||
: Updated Documentation/networking/cs89x0.txt
|
||||
|
||||
Andrew Morton : andrewm@uow.edu.au / Kernel 2.3.99-pre1
|
||||
Andrew Morton : Kernel 2.3.99-pre1
|
||||
: Use skb_reserve to longword align IP header (two places)
|
||||
: Remove a delay loop from dma_rx()
|
||||
: Replace '100' with HZ
|
||||
|
|
@ -57,11 +56,11 @@
|
|||
: Added 'cs89x0_dma=N' kernel boot option
|
||||
: Correctly initialise lp->lock in non-module compile
|
||||
|
||||
Andrew Morton : andrewm@uow.edu.au / Kernel 2.3.99-pre4-1
|
||||
Andrew Morton : Kernel 2.3.99-pre4-1
|
||||
: MOD_INC/DEC race fix (see
|
||||
: http://www.uwsg.indiana.edu/hypermail/linux/kernel/0003.3/1532.html)
|
||||
|
||||
Andrew Morton : andrewm@uow.edu.au / Kernel 2.4.0-test7-pre2
|
||||
Andrew Morton : Kernel 2.4.0-test7-pre2
|
||||
: Enhanced EEPROM support to cover more devices,
|
||||
: abstracted IRQ mapping to support CONFIG_ARCH_CLPS7500 arch
|
||||
: (Jason Gunthorpe <jgg@ualberta.ca>)
|
||||
|
|
@ -156,7 +155,7 @@
|
|||
#include "cs89x0.h"
|
||||
|
||||
static char version[] __initdata =
|
||||
"cs89x0.c: v2.4.3-pre1 Russell Nelson <[email protected]>, Andrew Morton <[email protected]>\n";
|
||||
"cs89x0.c: v2.4.3-pre1 Russell Nelson <[email protected]>, Andrew Morton\n";
|
||||
|
||||
#define DRV_NAME "cs89x0"
|
||||
|
||||
|
|
@ -1877,7 +1876,7 @@ MODULE_PARM_DESC(dmasize , "(ignored)");
|
|||
MODULE_PARM_DESC(use_dma , "(ignored)");
|
||||
#endif
|
||||
|
||||
MODULE_AUTHOR("Mike Cruse, Russwll Nelson <[email protected]>, Andrew Morton <[email protected]>");
|
||||
MODULE_AUTHOR("Mike Cruse, Russwll Nelson <[email protected]>, Andrew Morton");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -416,10 +416,10 @@ static int ser12_open(struct net_device *dev)
|
|||
if (!dev || !bc)
|
||||
return -ENXIO;
|
||||
if (!dev->base_addr || dev->base_addr > 0xffff-SER12_EXTENT ||
|
||||
dev->irq < 2 || dev->irq > NR_IRQS) {
|
||||
dev->irq < 2 || dev->irq > nr_irqs) {
|
||||
printk(KERN_INFO "baycom_ser_fdx: invalid portnumber (max %u) "
|
||||
"or irq (2 <= irq <= %d)\n",
|
||||
0xffff-SER12_EXTENT, NR_IRQS);
|
||||
0xffff-SER12_EXTENT, nr_irqs);
|
||||
return -ENXIO;
|
||||
}
|
||||
if (bc->baud < 300 || bc->baud > 4800) {
|
||||
|
|
|
|||
|
|
@ -1465,7 +1465,7 @@ static void z8530_init(void)
|
|||
printk(KERN_INFO "Init Z8530 driver: %u channels, IRQ", Nchips*2);
|
||||
|
||||
flag=" ";
|
||||
for (k = 0; k < NR_IRQS; k++)
|
||||
for (k = 0; k < nr_irqs; k++)
|
||||
if (Ivec[k].used)
|
||||
{
|
||||
printk("%s%d", flag, k);
|
||||
|
|
@ -1728,7 +1728,7 @@ static int scc_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
|||
|
||||
if (hwcfg.irq == 2) hwcfg.irq = 9;
|
||||
|
||||
if (hwcfg.irq < 0 || hwcfg.irq >= NR_IRQS)
|
||||
if (hwcfg.irq < 0 || hwcfg.irq >= nr_irqs)
|
||||
return -EINVAL;
|
||||
|
||||
if (!Ivec[hwcfg.irq].used && hwcfg.irq)
|
||||
|
|
@ -2148,7 +2148,7 @@ static void __exit scc_cleanup_driver(void)
|
|||
}
|
||||
|
||||
/* To unload the port must be closed so no real IRQ pending */
|
||||
for (k=0; k < NR_IRQS ; k++)
|
||||
for (k = 0; k < nr_irqs ; k++)
|
||||
if (Ivec[k].used) free_irq(k, NULL);
|
||||
|
||||
local_irq_enable();
|
||||
|
|
|
|||
|
|
@ -540,7 +540,8 @@ static int kingsun_probe(struct usb_interface *intf,
|
|||
if (ret != 0)
|
||||
goto free_mem;
|
||||
|
||||
info("IrDA: Registered KingSun/DonShine device %s", net->name);
|
||||
dev_info(&net->dev, "IrDA: Registered KingSun/DonShine device %s\n",
|
||||
net->name);
|
||||
|
||||
usb_set_intfdata(intf, kingsun);
|
||||
|
||||
|
|
|
|||
|
|
@ -801,7 +801,8 @@ static int ks959_probe(struct usb_interface *intf,
|
|||
if (ret != 0)
|
||||
goto free_mem;
|
||||
|
||||
info("IrDA: Registered KingSun KS-959 device %s", net->name);
|
||||
dev_info(&net->dev, "IrDA: Registered KingSun KS-959 device %s\n",
|
||||
net->name);
|
||||
|
||||
usb_set_intfdata(intf, kingsun);
|
||||
|
||||
|
|
|
|||
|
|
@ -705,7 +705,8 @@ static int ksdazzle_probe(struct usb_interface *intf,
|
|||
if (ret != 0)
|
||||
goto free_mem;
|
||||
|
||||
info("IrDA: Registered KingSun/Dazzle device %s", net->name);
|
||||
dev_info(&net->dev, "IrDA: Registered KingSun/Dazzle device %s\n",
|
||||
net->name);
|
||||
|
||||
usb_set_intfdata(intf, kingsun);
|
||||
|
||||
|
|
|
|||
|
|
@ -67,9 +67,7 @@ int sirdev_get_dongle(struct sir_dev *dev, IRDA_DONGLE type)
|
|||
const struct dongle_driver *drv = NULL;
|
||||
int err = -EINVAL;
|
||||
|
||||
#ifdef CONFIG_KMOD
|
||||
request_module("irda-dongle-%d", type);
|
||||
#endif
|
||||
|
||||
if (dev->dongle_drv != NULL)
|
||||
return -EBUSY;
|
||||
|
|
|
|||
|
|
@ -506,7 +506,7 @@ static int change_speed(struct stir_cb *stir, unsigned speed)
|
|||
goto found;
|
||||
}
|
||||
|
||||
warn("%s: invalid speed %d", stir->netdev->name, speed);
|
||||
dev_warn(&stir->netdev->dev, "invalid speed %d\n", speed);
|
||||
return -EINVAL;
|
||||
|
||||
found:
|
||||
|
|
@ -598,8 +598,8 @@ static int fifo_txwait(struct stir_cb *stir, int space)
|
|||
err = read_reg(stir, REG_FIFOCTL, stir->fifo_status,
|
||||
FIFO_REGS_SIZE);
|
||||
if (unlikely(err != FIFO_REGS_SIZE)) {
|
||||
warn("%s: FIFO register read error: %d",
|
||||
stir->netdev->name, err);
|
||||
dev_warn(&stir->netdev->dev,
|
||||
"FIFO register read error: %d\n", err);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
|
@ -783,8 +783,9 @@ static int stir_transmit_thread(void *arg)
|
|||
|
||||
if (unlikely(receive_start(stir))) {
|
||||
if (net_ratelimit())
|
||||
info("%s: receive usb submit failed",
|
||||
stir->netdev->name);
|
||||
dev_info(&dev->dev,
|
||||
"%s: receive usb submit failed\n",
|
||||
stir->netdev->name);
|
||||
stir->receiving = 0;
|
||||
msleep(10);
|
||||
continue;
|
||||
|
|
@ -836,8 +837,8 @@ static void stir_rcv_irq(struct urb *urb)
|
|||
|
||||
/* in case of error, the kernel thread will restart us */
|
||||
if (err) {
|
||||
warn("%s: usb receive submit error: %d",
|
||||
stir->netdev->name, err);
|
||||
dev_warn(&stir->netdev->dev, "usb receive submit error: %d\n",
|
||||
err);
|
||||
stir->receiving = 0;
|
||||
wake_up_process(stir->thread);
|
||||
}
|
||||
|
|
@ -1073,7 +1074,8 @@ static int stir_probe(struct usb_interface *intf,
|
|||
if (ret != 0)
|
||||
goto err_out2;
|
||||
|
||||
info("IrDA: Registered SigmaTel device %s", net->name);
|
||||
dev_info(&intf->dev, "IrDA: Registered SigmaTel device %s\n",
|
||||
net->name);
|
||||
|
||||
usb_set_intfdata(intf, stir);
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@
|
|||
#include "ixgbe_type.h"
|
||||
#include "ixgbe_common.h"
|
||||
|
||||
#if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_IXGBE_DCA
|
||||
#include <linux/dca.h>
|
||||
#endif
|
||||
|
||||
|
|
@ -136,7 +136,7 @@ struct ixgbe_ring {
|
|||
* offset associated with this ring, which is different
|
||||
* for DCE and RSS modes */
|
||||
|
||||
#if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_IXGBE_DCA
|
||||
/* cpu for tx queue */
|
||||
int cpu;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ static struct pci_device_id ixgbe_pci_tbl[] = {
|
|||
};
|
||||
MODULE_DEVICE_TABLE(pci, ixgbe_pci_tbl);
|
||||
|
||||
#if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_IXGBE_DCA
|
||||
static int ixgbe_notify_dca(struct notifier_block *, unsigned long event,
|
||||
void *p);
|
||||
static struct notifier_block dca_notifier = {
|
||||
|
|
@ -296,7 +296,7 @@ done_cleaning:
|
|||
return (total_packets ? true : false);
|
||||
}
|
||||
|
||||
#if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_IXGBE_DCA
|
||||
static void ixgbe_update_rx_dca(struct ixgbe_adapter *adapter,
|
||||
struct ixgbe_ring *rx_ring)
|
||||
{
|
||||
|
|
@ -383,7 +383,7 @@ static int __ixgbe_notify_dca(struct device *dev, void *data)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_DCA or CONFIG_DCA_MODULE */
|
||||
#endif /* CONFIG_IXGBE_DCA */
|
||||
/**
|
||||
* ixgbe_receive_skb - Send a completed packet up the stack
|
||||
* @adapter: board private structure
|
||||
|
|
@ -947,7 +947,7 @@ static irqreturn_t ixgbe_msix_clean_tx(int irq, void *data)
|
|||
r_idx = find_first_bit(q_vector->txr_idx, adapter->num_tx_queues);
|
||||
for (i = 0; i < q_vector->txr_count; i++) {
|
||||
tx_ring = &(adapter->tx_ring[r_idx]);
|
||||
#if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_IXGBE_DCA
|
||||
if (adapter->flags & IXGBE_FLAG_DCA_ENABLED)
|
||||
ixgbe_update_tx_dca(adapter, tx_ring);
|
||||
#endif
|
||||
|
|
@ -1022,7 +1022,7 @@ static int ixgbe_clean_rxonly(struct napi_struct *napi, int budget)
|
|||
|
||||
r_idx = find_first_bit(q_vector->rxr_idx, adapter->num_rx_queues);
|
||||
rx_ring = &(adapter->rx_ring[r_idx]);
|
||||
#if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_IXGBE_DCA
|
||||
if (adapter->flags & IXGBE_FLAG_DCA_ENABLED)
|
||||
ixgbe_update_rx_dca(adapter, rx_ring);
|
||||
#endif
|
||||
|
|
@ -1066,7 +1066,7 @@ static int ixgbe_clean_rxonly_many(struct napi_struct *napi, int budget)
|
|||
r_idx = find_first_bit(q_vector->rxr_idx, adapter->num_rx_queues);
|
||||
for (i = 0; i < q_vector->rxr_count; i++) {
|
||||
rx_ring = &(adapter->rx_ring[r_idx]);
|
||||
#if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_IXGBE_DCA
|
||||
if (adapter->flags & IXGBE_FLAG_DCA_ENABLED)
|
||||
ixgbe_update_rx_dca(adapter, rx_ring);
|
||||
#endif
|
||||
|
|
@ -2155,7 +2155,7 @@ void ixgbe_down(struct ixgbe_adapter *adapter)
|
|||
|
||||
netif_carrier_off(netdev);
|
||||
|
||||
#if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_IXGBE_DCA
|
||||
if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) {
|
||||
adapter->flags &= ~IXGBE_FLAG_DCA_ENABLED;
|
||||
dca_remove_requester(&adapter->pdev->dev);
|
||||
|
|
@ -2167,7 +2167,7 @@ void ixgbe_down(struct ixgbe_adapter *adapter)
|
|||
ixgbe_clean_all_tx_rings(adapter);
|
||||
ixgbe_clean_all_rx_rings(adapter);
|
||||
|
||||
#if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_IXGBE_DCA
|
||||
/* since we reset the hardware DCA settings were cleared */
|
||||
if (dca_add_requester(&adapter->pdev->dev) == 0) {
|
||||
adapter->flags |= IXGBE_FLAG_DCA_ENABLED;
|
||||
|
|
@ -2193,7 +2193,7 @@ static int ixgbe_poll(struct napi_struct *napi, int budget)
|
|||
struct ixgbe_adapter *adapter = q_vector->adapter;
|
||||
int tx_cleaned, work_done = 0;
|
||||
|
||||
#if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_IXGBE_DCA
|
||||
if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) {
|
||||
ixgbe_update_tx_dca(adapter, adapter->tx_ring);
|
||||
ixgbe_update_rx_dca(adapter, adapter->rx_ring);
|
||||
|
|
@ -3922,7 +3922,7 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
|
|||
if (err)
|
||||
goto err_register;
|
||||
|
||||
#if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_IXGBE_DCA
|
||||
if (dca_add_requester(&pdev->dev) == 0) {
|
||||
adapter->flags |= IXGBE_FLAG_DCA_ENABLED;
|
||||
/* always use CB2 mode, difference is masked
|
||||
|
|
@ -3972,7 +3972,7 @@ static void __devexit ixgbe_remove(struct pci_dev *pdev)
|
|||
|
||||
flush_scheduled_work();
|
||||
|
||||
#if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_IXGBE_DCA
|
||||
if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) {
|
||||
adapter->flags &= ~IXGBE_FLAG_DCA_ENABLED;
|
||||
dca_remove_requester(&pdev->dev);
|
||||
|
|
@ -4105,10 +4105,10 @@ static int __init ixgbe_init_module(void)
|
|||
|
||||
printk(KERN_INFO "%s: %s\n", ixgbe_driver_name, ixgbe_copyright);
|
||||
|
||||
#if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_IXGBE_DCA
|
||||
dca_register_notify(&dca_notifier);
|
||||
|
||||
#endif
|
||||
|
||||
ret = pci_register_driver(&ixgbe_driver);
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -4123,13 +4123,13 @@ module_init(ixgbe_init_module);
|
|||
**/
|
||||
static void __exit ixgbe_exit_module(void)
|
||||
{
|
||||
#if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_IXGBE_DCA
|
||||
dca_unregister_notify(&dca_notifier);
|
||||
#endif
|
||||
pci_unregister_driver(&ixgbe_driver);
|
||||
}
|
||||
|
||||
#if defined(CONFIG_DCA) || defined(CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_IXGBE_DCA
|
||||
static int ixgbe_notify_dca(struct notifier_block *nb, unsigned long event,
|
||||
void *p)
|
||||
{
|
||||
|
|
@ -4140,7 +4140,7 @@ static int ixgbe_notify_dca(struct notifier_block *nb, unsigned long event,
|
|||
|
||||
return ret_val ? NOTIFY_BAD : NOTIFY_DONE;
|
||||
}
|
||||
#endif /* CONFIG_DCA or CONFIG_DCA_MODULE */
|
||||
#endif /* CONFIG_IXGBE_DCA */
|
||||
|
||||
module_exit(ixgbe_exit_module);
|
||||
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ struct myri10ge_slice_state {
|
|||
dma_addr_t fw_stats_bus;
|
||||
int watchdog_tx_done;
|
||||
int watchdog_tx_req;
|
||||
#if (defined CONFIG_DCA) || (defined CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_MYRI10GE_DCA
|
||||
int cached_dca_tag;
|
||||
int cpu;
|
||||
__be32 __iomem *dca_tag;
|
||||
|
|
@ -220,7 +220,7 @@ struct myri10ge_priv {
|
|||
int msi_enabled;
|
||||
int msix_enabled;
|
||||
struct msix_entry *msix_vectors;
|
||||
#if (defined CONFIG_DCA) || (defined CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_MYRI10GE_DCA
|
||||
int dca_enabled;
|
||||
#endif
|
||||
u32 link_state;
|
||||
|
|
@ -902,7 +902,7 @@ static int myri10ge_reset(struct myri10ge_priv *mgp)
|
|||
struct myri10ge_slice_state *ss;
|
||||
int i, status;
|
||||
size_t bytes;
|
||||
#if (defined CONFIG_DCA) || (defined CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_MYRI10GE_DCA
|
||||
unsigned long dca_tag_off;
|
||||
#endif
|
||||
|
||||
|
|
@ -1012,7 +1012,7 @@ static int myri10ge_reset(struct myri10ge_priv *mgp)
|
|||
}
|
||||
put_be32(htonl(mgp->intr_coal_delay), mgp->intr_coal_delay_ptr);
|
||||
|
||||
#if (defined CONFIG_DCA) || (defined CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_MYRI10GE_DCA
|
||||
status = myri10ge_send_cmd(mgp, MXGEFW_CMD_GET_DCA_OFFSET, &cmd, 0);
|
||||
dca_tag_off = cmd.data0;
|
||||
for (i = 0; i < mgp->num_slices; i++) {
|
||||
|
|
@ -1051,7 +1051,7 @@ static int myri10ge_reset(struct myri10ge_priv *mgp)
|
|||
return status;
|
||||
}
|
||||
|
||||
#if (defined CONFIG_DCA) || (defined CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_MYRI10GE_DCA
|
||||
static void
|
||||
myri10ge_write_dca(struct myri10ge_slice_state *ss, int cpu, int tag)
|
||||
{
|
||||
|
|
@ -1505,7 +1505,7 @@ static int myri10ge_poll(struct napi_struct *napi, int budget)
|
|||
struct net_device *netdev = ss->mgp->dev;
|
||||
int work_done;
|
||||
|
||||
#if (defined CONFIG_DCA) || (defined CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_MYRI10GE_DCA
|
||||
if (ss->mgp->dca_enabled)
|
||||
myri10ge_update_dca(ss);
|
||||
#endif
|
||||
|
|
@ -1736,7 +1736,7 @@ static const char myri10ge_gstrings_main_stats[][ETH_GSTRING_LEN] = {
|
|||
"tx_boundary", "WC", "irq", "MSI", "MSIX",
|
||||
"read_dma_bw_MBs", "write_dma_bw_MBs", "read_write_dma_bw_MBs",
|
||||
"serial_number", "watchdog_resets",
|
||||
#if (defined CONFIG_DCA) || (defined CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_MYRI10GE_DCA
|
||||
"dca_capable_firmware", "dca_device_present",
|
||||
#endif
|
||||
"link_changes", "link_up", "dropped_link_overflow",
|
||||
|
|
@ -1815,7 +1815,7 @@ myri10ge_get_ethtool_stats(struct net_device *netdev,
|
|||
data[i++] = (unsigned int)mgp->read_write_dma;
|
||||
data[i++] = (unsigned int)mgp->serial_number;
|
||||
data[i++] = (unsigned int)mgp->watchdog_resets;
|
||||
#if (defined CONFIG_DCA) || (defined CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_MYRI10GE_DCA
|
||||
data[i++] = (unsigned int)(mgp->ss[0].dca_tag != NULL);
|
||||
data[i++] = (unsigned int)(mgp->dca_enabled);
|
||||
#endif
|
||||
|
|
@ -3844,7 +3844,7 @@ static int myri10ge_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
dev_err(&pdev->dev, "failed reset\n");
|
||||
goto abort_with_slices;
|
||||
}
|
||||
#if (defined CONFIG_DCA) || (defined CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_MYRI10GE_DCA
|
||||
myri10ge_setup_dca(mgp);
|
||||
#endif
|
||||
pci_set_drvdata(pdev, mgp);
|
||||
|
|
@ -3948,7 +3948,7 @@ static void myri10ge_remove(struct pci_dev *pdev)
|
|||
netdev = mgp->dev;
|
||||
unregister_netdev(netdev);
|
||||
|
||||
#if (defined CONFIG_DCA) || (defined CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_MYRI10GE_DCA
|
||||
myri10ge_teardown_dca(mgp);
|
||||
#endif
|
||||
myri10ge_dummy_rdma(mgp, 0);
|
||||
|
|
@ -3993,7 +3993,7 @@ static struct pci_driver myri10ge_driver = {
|
|||
#endif
|
||||
};
|
||||
|
||||
#if (defined CONFIG_DCA) || (defined CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_MYRI10GE_DCA
|
||||
static int
|
||||
myri10ge_notify_dca(struct notifier_block *nb, unsigned long event, void *p)
|
||||
{
|
||||
|
|
@ -4024,7 +4024,7 @@ static __init int myri10ge_init_module(void)
|
|||
myri10ge_driver.name, myri10ge_rss_hash);
|
||||
myri10ge_rss_hash = MXGEFW_RSS_HASH_TYPE_SRC_PORT;
|
||||
}
|
||||
#if (defined CONFIG_DCA) || (defined CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_MYRI10GE_DCA
|
||||
dca_register_notify(&myri10ge_dca_notifier);
|
||||
#endif
|
||||
if (myri10ge_max_slices > MYRI10GE_MAX_SLICES)
|
||||
|
|
@ -4037,7 +4037,7 @@ module_init(myri10ge_init_module);
|
|||
|
||||
static __exit void myri10ge_cleanup_module(void)
|
||||
{
|
||||
#if (defined CONFIG_DCA) || (defined CONFIG_DCA_MODULE)
|
||||
#ifdef CONFIG_MYRI10GE_DCA
|
||||
dca_unregister_notify(&myri10ge_dca_notifier);
|
||||
#endif
|
||||
pci_unregister_driver(&myri10ge_driver);
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ config ARCNET_COM20020_CS
|
|||
|
||||
config PCMCIA_IBMTR
|
||||
tristate "IBM PCMCIA tokenring adapter support"
|
||||
depends on IBMTR!=y && TR && !64BIT
|
||||
depends on IBMTR!=y && TR
|
||||
help
|
||||
Say Y here if you intend to attach this type of Token Ring PCMCIA
|
||||
card to your computer. You then also need to say Y to "Token Ring
|
||||
|
|
|
|||
|
|
@ -309,11 +309,6 @@ void phy_disconnect(struct phy_device *phydev)
|
|||
}
|
||||
EXPORT_SYMBOL(phy_disconnect);
|
||||
|
||||
static int phy_compare_id(struct device *dev, void *data)
|
||||
{
|
||||
return strcmp((char *)data, dev->bus_id) ? 0 : 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* phy_attach - attach a network device to a particular PHY device
|
||||
* @dev: network device to attach
|
||||
|
|
@ -337,8 +332,7 @@ struct phy_device *phy_attach(struct net_device *dev,
|
|||
|
||||
/* Search the list of PHY devices on the mdio bus for the
|
||||
* PHY with the requested name */
|
||||
d = bus_find_device(bus, NULL, (void *)bus_id, phy_compare_id);
|
||||
|
||||
d = bus_find_device_by_name(bus, NULL, bus_id);
|
||||
if (d) {
|
||||
phydev = to_phy_device(d);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -866,8 +866,8 @@ static int __init ppp_init(void)
|
|||
err = PTR_ERR(ppp_class);
|
||||
goto out_chrdev;
|
||||
}
|
||||
device_create_drvdata(ppp_class, NULL, MKDEV(PPP_MAJOR, 0),
|
||||
NULL, "ppp");
|
||||
device_create(ppp_class, NULL, MKDEV(PPP_MAJOR, 0), NULL,
|
||||
"ppp");
|
||||
}
|
||||
|
||||
out:
|
||||
|
|
@ -2127,13 +2127,9 @@ ppp_set_compress(struct ppp *ppp, unsigned long arg)
|
|||
|| ccp_option[1] < 2 || ccp_option[1] > data.length)
|
||||
goto out;
|
||||
|
||||
cp = find_compressor(ccp_option[0]);
|
||||
#ifdef CONFIG_KMOD
|
||||
if (!cp) {
|
||||
request_module("ppp-compress-%d", ccp_option[0]);
|
||||
cp = find_compressor(ccp_option[0]);
|
||||
}
|
||||
#endif /* CONFIG_KMOD */
|
||||
cp = try_then_request_module(
|
||||
find_compressor(ccp_option[0]),
|
||||
"ppp-compress-%d", ccp_option[0]);
|
||||
if (!cp)
|
||||
goto out;
|
||||
|
||||
|
|
|
|||
|
|
@ -115,13 +115,8 @@ static int pppox_create(struct net *net, struct socket *sock, int protocol)
|
|||
goto out;
|
||||
|
||||
rc = -EPROTONOSUPPORT;
|
||||
#ifdef CONFIG_KMOD
|
||||
if (!pppox_protos[protocol]) {
|
||||
char buffer[32];
|
||||
sprintf(buffer, "pppox-proto-%d", protocol);
|
||||
request_module(buffer);
|
||||
}
|
||||
#endif
|
||||
if (!pppox_protos[protocol])
|
||||
request_module("pppox-proto-%d", protocol);
|
||||
if (!pppox_protos[protocol] ||
|
||||
!try_module_get(pppox_protos[protocol]->owner))
|
||||
goto out;
|
||||
|
|
|
|||
|
|
@ -1205,11 +1205,12 @@ static int sh_eth_drv_probe(struct platform_device *pdev)
|
|||
devno = 0;
|
||||
|
||||
ndev->dma = -1;
|
||||
ndev->irq = platform_get_irq(pdev, 0);
|
||||
if (ndev->irq < 0) {
|
||||
ret = platform_get_irq(pdev, 0);
|
||||
if (ret < 0) {
|
||||
ret = -ENODEV;
|
||||
goto out_release;
|
||||
}
|
||||
ndev->irq = ret;
|
||||
|
||||
SET_NETDEV_DEV(ndev, &pdev->dev);
|
||||
|
||||
|
|
|
|||
|
|
@ -456,7 +456,7 @@ static void catc_tx_timeout(struct net_device *netdev)
|
|||
{
|
||||
struct catc *catc = netdev_priv(netdev);
|
||||
|
||||
warn("Transmit timed out.");
|
||||
dev_warn(&netdev->dev, "Transmit timed out.\n");
|
||||
usb_unlink_urb(catc->tx_urb);
|
||||
}
|
||||
|
||||
|
|
@ -847,7 +847,8 @@ static int catc_probe(struct usb_interface *intf, const struct usb_device_id *id
|
|||
dbg("64k Memory\n");
|
||||
break;
|
||||
default:
|
||||
warn("Couldn't detect memory size, assuming 32k");
|
||||
dev_warn(&intf->dev,
|
||||
"Couldn't detect memory size, assuming 32k\n");
|
||||
case 0x87654321:
|
||||
catc_set_reg(catc, TxBufCount, 4);
|
||||
catc_set_reg(catc, RxBufCount, 16);
|
||||
|
|
@ -953,7 +954,8 @@ static int __init catc_init(void)
|
|||
{
|
||||
int result = usb_register(&catc_driver);
|
||||
if (result == 0)
|
||||
info(DRIVER_VERSION " " DRIVER_DESC);
|
||||
printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":"
|
||||
DRIVER_DESC "\n");
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -832,7 +832,7 @@ static int kaweth_start_xmit(struct sk_buff *skb, struct net_device *net)
|
|||
|
||||
if((res = usb_submit_urb(kaweth->tx_urb, GFP_ATOMIC)))
|
||||
{
|
||||
warn("kaweth failed tx_urb %d", res);
|
||||
dev_warn(&net->dev, "kaweth failed tx_urb %d\n", res);
|
||||
skip:
|
||||
kaweth->stats.tx_errors++;
|
||||
|
||||
|
|
@ -924,7 +924,7 @@ static void kaweth_tx_timeout(struct net_device *net)
|
|||
{
|
||||
struct kaweth_device *kaweth = netdev_priv(net);
|
||||
|
||||
warn("%s: Tx timed out. Resetting.", net->name);
|
||||
dev_warn(&net->dev, "%s: Tx timed out. Resetting.\n", net->name);
|
||||
kaweth->stats.tx_errors++;
|
||||
net->trans_start = jiffies;
|
||||
|
||||
|
|
@ -1016,10 +1016,10 @@ static int kaweth_probe(
|
|||
*/
|
||||
|
||||
if (le16_to_cpu(dev->descriptor.bcdDevice) >> 8) {
|
||||
info("Firmware present in device.");
|
||||
dev_info(&intf->dev, "Firmware present in device.\n");
|
||||
} else {
|
||||
/* Download the firmware */
|
||||
info("Downloading firmware...");
|
||||
dev_info(&intf->dev, "Downloading firmware...\n");
|
||||
kaweth->firmware_buf = (__u8 *)__get_free_page(GFP_KERNEL);
|
||||
if ((result = kaweth_download_firmware(kaweth,
|
||||
"kaweth/new_code.bin",
|
||||
|
|
@ -1061,7 +1061,7 @@ static int kaweth_probe(
|
|||
}
|
||||
|
||||
/* Device will now disappear for a moment... */
|
||||
info("Firmware loaded. I'll be back...");
|
||||
dev_info(&intf->dev, "Firmware loaded. I'll be back...\n");
|
||||
err_fw:
|
||||
free_page((unsigned long)kaweth->firmware_buf);
|
||||
free_netdev(netdev);
|
||||
|
|
@ -1075,10 +1075,10 @@ err_fw:
|
|||
goto err_free_netdev;
|
||||
}
|
||||
|
||||
info("Statistics collection: %x", kaweth->configuration.statistics_mask);
|
||||
info("Multicast filter limit: %x", kaweth->configuration.max_multicast_filters & ((1 << 15) - 1));
|
||||
info("MTU: %d", le16_to_cpu(kaweth->configuration.segment_size));
|
||||
info("Read MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x",
|
||||
dev_info(&intf->dev, "Statistics collection: %x\n", kaweth->configuration.statistics_mask);
|
||||
dev_info(&intf->dev, "Multicast filter limit: %x\n", kaweth->configuration.max_multicast_filters & ((1 << 15) - 1));
|
||||
dev_info(&intf->dev, "MTU: %d\n", le16_to_cpu(kaweth->configuration.segment_size));
|
||||
dev_info(&intf->dev, "Read MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x\n",
|
||||
(int)kaweth->configuration.hw_addr[0],
|
||||
(int)kaweth->configuration.hw_addr[1],
|
||||
(int)kaweth->configuration.hw_addr[2],
|
||||
|
|
@ -1174,7 +1174,8 @@ err_fw:
|
|||
goto err_intfdata;
|
||||
}
|
||||
|
||||
info("kaweth interface created at %s", kaweth->net->name);
|
||||
dev_info(&intf->dev, "kaweth interface created at %s\n",
|
||||
kaweth->net->name);
|
||||
|
||||
dbg("Kaweth probe returning.");
|
||||
|
||||
|
|
@ -1205,11 +1206,11 @@ static void kaweth_disconnect(struct usb_interface *intf)
|
|||
struct kaweth_device *kaweth = usb_get_intfdata(intf);
|
||||
struct net_device *netdev;
|
||||
|
||||
info("Unregistering");
|
||||
dev_info(&intf->dev, "Unregistering\n");
|
||||
|
||||
usb_set_intfdata(intf, NULL);
|
||||
if (!kaweth) {
|
||||
warn("unregistering non-existant device");
|
||||
dev_warn(&intf->dev, "unregistering non-existant device\n");
|
||||
return;
|
||||
}
|
||||
netdev = kaweth->net;
|
||||
|
|
@ -1269,7 +1270,7 @@ static int usb_start_wait_urb(struct urb *urb, int timeout, int* actual_length)
|
|||
|
||||
if (!wait_event_timeout(awd.wqh, awd.done, timeout)) {
|
||||
// timeout
|
||||
warn("usb_control/bulk_msg: timeout");
|
||||
dev_warn(&urb->dev->dev, "usb_control/bulk_msg: timeout\n");
|
||||
usb_kill_urb(urb); // remove urb safely
|
||||
status = -ETIMEDOUT;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -168,7 +168,7 @@ static int get_registers(pegasus_t * pegasus, __u16 indx, __u16 size,
|
|||
netif_device_detach(pegasus->net);
|
||||
if (netif_msg_drv(pegasus) && printk_ratelimit())
|
||||
dev_err(&pegasus->intf->dev, "%s, status %d\n",
|
||||
__FUNCTION__, ret);
|
||||
__func__, ret);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
|
@ -192,7 +192,7 @@ static int set_registers(pegasus_t * pegasus, __u16 indx, __u16 size,
|
|||
if (!buffer) {
|
||||
if (netif_msg_drv(pegasus))
|
||||
dev_warn(&pegasus->intf->dev, "out of memory in %s\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
return -ENOMEM;
|
||||
}
|
||||
memcpy(buffer, data, size);
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@ static void ctrl_callback(struct urb *urb)
|
|||
case -ENOENT:
|
||||
break;
|
||||
default:
|
||||
warn("ctrl urb status %d", urb->status);
|
||||
dev_warn(&urb->dev->dev, "ctrl urb status %d\n", urb->status);
|
||||
}
|
||||
dev = urb->context;
|
||||
clear_bit(RX_REG_SET, &dev->flags);
|
||||
|
|
@ -441,10 +441,10 @@ static void read_bulk_callback(struct urb *urb)
|
|||
case -ENOENT:
|
||||
return; /* the urb is in unlink state */
|
||||
case -ETIME:
|
||||
warn("may be reset is needed?..");
|
||||
dev_warn(&urb->dev->dev, "may be reset is needed?..\n");
|
||||
goto goon;
|
||||
default:
|
||||
warn("Rx status %d", urb->status);
|
||||
dev_warn(&urb->dev->dev, "Rx status %d\n", urb->status);
|
||||
goto goon;
|
||||
}
|
||||
|
||||
|
|
@ -538,7 +538,8 @@ static void write_bulk_callback(struct urb *urb)
|
|||
if (!netif_device_present(dev->netdev))
|
||||
return;
|
||||
if (urb->status)
|
||||
info("%s: Tx status %d", dev->netdev->name, urb->status);
|
||||
dev_info(&urb->dev->dev, "%s: Tx status %d\n",
|
||||
dev->netdev->name, urb->status);
|
||||
dev->netdev->trans_start = jiffies;
|
||||
netif_wake_queue(dev->netdev);
|
||||
}
|
||||
|
|
@ -561,7 +562,8 @@ static void intr_callback(struct urb *urb)
|
|||
return;
|
||||
/* -EPIPE: should clear the halt */
|
||||
default:
|
||||
info("%s: intr status %d", dev->netdev->name, urb->status);
|
||||
dev_info(&urb->dev->dev, "%s: intr status %d\n",
|
||||
dev->netdev->name, urb->status);
|
||||
goto resubmit;
|
||||
}
|
||||
|
||||
|
|
@ -665,7 +667,7 @@ static int enable_net_traffic(rtl8150_t * dev)
|
|||
u8 cr, tcr, rcr, msr;
|
||||
|
||||
if (!rtl8150_reset(dev)) {
|
||||
warn("%s - device reset failed", __FUNCTION__);
|
||||
dev_warn(&dev->udev->dev, "device reset failed\n");
|
||||
}
|
||||
/* RCR bit7=1 attach Rx info at the end; =0 HW CRC (which is broken) */
|
||||
rcr = 0x9e;
|
||||
|
|
@ -699,7 +701,7 @@ static struct net_device_stats *rtl8150_netdev_stats(struct net_device *dev)
|
|||
static void rtl8150_tx_timeout(struct net_device *netdev)
|
||||
{
|
||||
rtl8150_t *dev = netdev_priv(netdev);
|
||||
warn("%s: Tx timeout.", netdev->name);
|
||||
dev_warn(&netdev->dev, "Tx timeout.\n");
|
||||
usb_unlink_urb(dev->tx_urb);
|
||||
dev->stats.tx_errors++;
|
||||
}
|
||||
|
|
@ -710,12 +712,12 @@ static void rtl8150_set_multicast(struct net_device *netdev)
|
|||
netif_stop_queue(netdev);
|
||||
if (netdev->flags & IFF_PROMISC) {
|
||||
dev->rx_creg |= cpu_to_le16(0x0001);
|
||||
info("%s: promiscuous mode", netdev->name);
|
||||
dev_info(&netdev->dev, "%s: promiscuous mode\n", netdev->name);
|
||||
} else if (netdev->mc_count ||
|
||||
(netdev->flags & IFF_ALLMULTI)) {
|
||||
dev->rx_creg &= cpu_to_le16(0xfffe);
|
||||
dev->rx_creg |= cpu_to_le16(0x0002);
|
||||
info("%s: allmulti set", netdev->name);
|
||||
dev_info(&netdev->dev, "%s: allmulti set\n", netdev->name);
|
||||
} else {
|
||||
/* ~RX_MULTICAST, ~RX_PROMISCUOUS */
|
||||
dev->rx_creg &= cpu_to_le16(0x00fc);
|
||||
|
|
@ -740,7 +742,7 @@ static int rtl8150_start_xmit(struct sk_buff *skb, struct net_device *netdev)
|
|||
if (res == -ENODEV)
|
||||
netif_device_detach(dev->netdev);
|
||||
else {
|
||||
warn("failed tx_urb %d\n", res);
|
||||
dev_warn(&netdev->dev, "failed tx_urb %d\n", res);
|
||||
dev->stats.tx_errors++;
|
||||
netif_start_queue(netdev);
|
||||
}
|
||||
|
|
@ -783,7 +785,7 @@ static int rtl8150_open(struct net_device *netdev)
|
|||
if ((res = usb_submit_urb(dev->rx_urb, GFP_KERNEL))) {
|
||||
if (res == -ENODEV)
|
||||
netif_device_detach(dev->netdev);
|
||||
warn("%s: rx_urb submit failed: %d", __FUNCTION__, res);
|
||||
dev_warn(&netdev->dev, "rx_urb submit failed: %d\n", res);
|
||||
return res;
|
||||
}
|
||||
usb_fill_int_urb(dev->intr_urb, dev->udev, usb_rcvintpipe(dev->udev, 3),
|
||||
|
|
@ -792,7 +794,7 @@ static int rtl8150_open(struct net_device *netdev)
|
|||
if ((res = usb_submit_urb(dev->intr_urb, GFP_KERNEL))) {
|
||||
if (res == -ENODEV)
|
||||
netif_device_detach(dev->netdev);
|
||||
warn("%s: intr_urb submit failed: %d", __FUNCTION__, res);
|
||||
dev_warn(&netdev->dev, "intr_urb submit failed: %d\n", res);
|
||||
usb_kill_urb(dev->rx_urb);
|
||||
return res;
|
||||
}
|
||||
|
|
@ -947,7 +949,7 @@ static int rtl8150_probe(struct usb_interface *intf,
|
|||
goto out2;
|
||||
}
|
||||
|
||||
info("%s: rtl8150 is detected", netdev->name);
|
||||
dev_info(&intf->dev, "%s: rtl8150 is detected\n", netdev->name);
|
||||
|
||||
return 0;
|
||||
|
||||
|
|
@ -984,7 +986,8 @@ static void rtl8150_disconnect(struct usb_interface *intf)
|
|||
|
||||
static int __init usb_rtl8150_init(void)
|
||||
{
|
||||
info(DRIVER_DESC " " DRIVER_VERSION);
|
||||
printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":"
|
||||
DRIVER_DESC "\n");
|
||||
return usb_register(&rtl8150_driver);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -388,8 +388,8 @@ static int __init cosa_init(void)
|
|||
goto out_chrdev;
|
||||
}
|
||||
for (i = 0; i < nr_cards; i++)
|
||||
device_create_drvdata(cosa_class, NULL, MKDEV(cosa_major, i),
|
||||
NULL, "cosa%d", i);
|
||||
device_create(cosa_class, NULL, MKDEV(cosa_major, i), NULL,
|
||||
"cosa%d", i);
|
||||
err = 0;
|
||||
goto out;
|
||||
|
||||
|
|
|
|||
|
|
@ -122,7 +122,6 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
* Most functions mess with the structure
|
||||
* Disable interrupts while we do the polling
|
||||
*/
|
||||
spin_lock_irqsave(&sc->lmc_lock, flags);
|
||||
|
||||
switch (cmd) {
|
||||
/*
|
||||
|
|
@ -152,6 +151,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
break;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&sc->lmc_lock, flags);
|
||||
sc->lmc_media->set_status (sc, &ctl);
|
||||
|
||||
if(ctl.crc_length != sc->ictl.crc_length) {
|
||||
|
|
@ -161,6 +161,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
else
|
||||
sc->TxDescriptControlInit &= ~LMC_TDES_ADD_CRC_DISABLE;
|
||||
}
|
||||
spin_unlock_irqrestore(&sc->lmc_lock, flags);
|
||||
|
||||
ret = 0;
|
||||
break;
|
||||
|
|
@ -187,15 +188,18 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
break; /* no change */
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&sc->lmc_lock, flags);
|
||||
lmc_proto_close(sc);
|
||||
|
||||
sc->if_type = new_type;
|
||||
lmc_proto_attach(sc);
|
||||
ret = lmc_proto_open(sc);
|
||||
spin_unlock_irqrestore(&sc->lmc_lock, flags);
|
||||
break;
|
||||
}
|
||||
|
||||
case LMCIOCGETXINFO: /*fold01*/
|
||||
spin_lock_irqsave(&sc->lmc_lock, flags);
|
||||
sc->lmc_xinfo.Magic0 = 0xBEEFCAFE;
|
||||
|
||||
sc->lmc_xinfo.PciCardType = sc->lmc_cardtype;
|
||||
|
|
@ -208,6 +212,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
sc->lmc_xinfo.MaxFrameSize = LMC_PKT_BUF_SZ;
|
||||
sc->lmc_xinfo.link_status = sc->lmc_media->get_link_status (sc);
|
||||
sc->lmc_xinfo.mii_reg16 = lmc_mii_readreg (sc, 0, 16);
|
||||
spin_unlock_irqrestore(&sc->lmc_lock, flags);
|
||||
|
||||
sc->lmc_xinfo.Magic1 = 0xDEADBEEF;
|
||||
|
||||
|
|
@ -220,6 +225,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
break;
|
||||
|
||||
case LMCIOCGETLMCSTATS:
|
||||
spin_lock_irqsave(&sc->lmc_lock, flags);
|
||||
if (sc->lmc_cardtype == LMC_CARDTYPE_T1) {
|
||||
lmc_mii_writereg(sc, 0, 17, T1FRAMER_FERR_LSB);
|
||||
sc->extra_stats.framingBitErrorCount +=
|
||||
|
|
@ -243,6 +249,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
sc->extra_stats.severelyErroredFrameCount +=
|
||||
regVal & T1FRAMER_SEF_MASK;
|
||||
}
|
||||
spin_unlock_irqrestore(&sc->lmc_lock, flags);
|
||||
if (copy_to_user(ifr->ifr_data, &sc->lmc_device->stats,
|
||||
sizeof(sc->lmc_device->stats)) ||
|
||||
copy_to_user(ifr->ifr_data + sizeof(sc->lmc_device->stats),
|
||||
|
|
@ -258,12 +265,14 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
break;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&sc->lmc_lock, flags);
|
||||
memset(&sc->lmc_device->stats, 0, sizeof(sc->lmc_device->stats));
|
||||
memset(&sc->extra_stats, 0, sizeof(sc->extra_stats));
|
||||
sc->extra_stats.check = STATCHECK;
|
||||
sc->extra_stats.version_size = (DRIVER_VERSION << 16) +
|
||||
sizeof(sc->lmc_device->stats) + sizeof(sc->extra_stats);
|
||||
sc->extra_stats.lmc_cardtype = sc->lmc_cardtype;
|
||||
spin_unlock_irqrestore(&sc->lmc_lock, flags);
|
||||
ret = 0;
|
||||
break;
|
||||
|
||||
|
|
@ -282,8 +291,10 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
ret = -EFAULT;
|
||||
break;
|
||||
}
|
||||
spin_lock_irqsave(&sc->lmc_lock, flags);
|
||||
sc->lmc_media->set_circuit_type(sc, ctl.circuit_type);
|
||||
sc->ictl.circuit_type = ctl.circuit_type;
|
||||
spin_unlock_irqrestore(&sc->lmc_lock, flags);
|
||||
ret = 0;
|
||||
|
||||
break;
|
||||
|
|
@ -294,12 +305,14 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
break;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&sc->lmc_lock, flags);
|
||||
/* Reset driver and bring back to current state */
|
||||
printk (" REG16 before reset +%04x\n", lmc_mii_readreg (sc, 0, 16));
|
||||
lmc_running_reset (dev);
|
||||
printk (" REG16 after reset +%04x\n", lmc_mii_readreg (sc, 0, 16));
|
||||
|
||||
LMC_EVENT_LOG(LMC_EVENT_FORCEDRESET, LMC_CSR_READ (sc, csr_status), lmc_mii_readreg (sc, 0, 16));
|
||||
spin_unlock_irqrestore(&sc->lmc_lock, flags);
|
||||
|
||||
ret = 0;
|
||||
break;
|
||||
|
|
@ -338,14 +351,15 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
*/
|
||||
netif_stop_queue(dev);
|
||||
|
||||
if (copy_from_user(&xc, ifr->ifr_data, sizeof(struct lmc_xilinx_control))) {
|
||||
if (copy_from_user(&xc, ifr->ifr_data, sizeof(struct lmc_xilinx_control))) {
|
||||
ret = -EFAULT;
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch(xc.command){
|
||||
case lmc_xilinx_reset: /*fold02*/
|
||||
{
|
||||
u16 mii;
|
||||
spin_lock_irqsave(&sc->lmc_lock, flags);
|
||||
mii = lmc_mii_readreg (sc, 0, 16);
|
||||
|
||||
/*
|
||||
|
|
@ -404,6 +418,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
lmc_led_off(sc, LMC_DS3_LED2);
|
||||
}
|
||||
}
|
||||
spin_unlock_irqrestore(&sc->lmc_lock, flags);
|
||||
|
||||
|
||||
|
||||
|
|
@ -416,6 +431,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
{
|
||||
u16 mii;
|
||||
int timeout = 500000;
|
||||
spin_lock_irqsave(&sc->lmc_lock, flags);
|
||||
mii = lmc_mii_readreg (sc, 0, 16);
|
||||
|
||||
/*
|
||||
|
|
@ -451,13 +467,14 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
*/
|
||||
while( (LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0 &&
|
||||
(timeout-- > 0))
|
||||
;
|
||||
cpu_relax();
|
||||
|
||||
|
||||
/*
|
||||
* stop driving Xilinx-related signals
|
||||
*/
|
||||
lmc_gpio_mkinput(sc, 0xff);
|
||||
spin_unlock_irqrestore(&sc->lmc_lock, flags);
|
||||
|
||||
ret = 0x0;
|
||||
|
||||
|
|
@ -493,6 +510,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
|
||||
printk("%s: Starting load of data Len: %d at 0x%p == 0x%p\n", dev->name, xc.len, xc.data, data);
|
||||
|
||||
spin_lock_irqsave(&sc->lmc_lock, flags);
|
||||
lmc_gpio_mkinput(sc, 0xff);
|
||||
|
||||
/*
|
||||
|
|
@ -545,7 +563,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
*/
|
||||
while( (LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0 &&
|
||||
(timeout-- > 0))
|
||||
;
|
||||
cpu_relax();
|
||||
|
||||
printk(KERN_DEBUG "%s: Waited %d for the Xilinx to clear it's memory\n", dev->name, 500000-timeout);
|
||||
|
||||
|
|
@ -588,6 +606,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
|
||||
sc->lmc_miireg16 &= ~LMC_MII16_FIFO_RESET;
|
||||
lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
|
||||
spin_unlock_irqrestore(&sc->lmc_lock, flags);
|
||||
|
||||
kfree(data);
|
||||
|
||||
|
|
@ -611,8 +630,6 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
|
|||
break;
|
||||
}
|
||||
|
||||
spin_unlock_irqrestore(&sc->lmc_lock, flags); /*fold01*/
|
||||
|
||||
lmc_trace(dev, "lmc_ioctl out");
|
||||
|
||||
return ret;
|
||||
|
|
|
|||
|
|
@ -318,7 +318,7 @@ sbni_pci_probe( struct net_device *dev )
|
|||
continue;
|
||||
}
|
||||
|
||||
if( pci_irq_line <= 0 || pci_irq_line >= NR_IRQS )
|
||||
if (pci_irq_line <= 0 || pci_irq_line >= nr_irqs)
|
||||
printk( KERN_WARNING " WARNING: The PCI BIOS assigned "
|
||||
"this PCI card to IRQ %d, which is unlikely "
|
||||
"to work!.\n"
|
||||
|
|
|
|||
|
|
@ -1640,6 +1640,11 @@ static int ath9k_ampdu_action(struct ieee80211_hw *hw,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int ath9k_no_fragmentation(struct ieee80211_hw *hw, u32 value)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
static struct ieee80211_ops ath9k_ops = {
|
||||
.tx = ath9k_tx,
|
||||
.start = ath9k_start,
|
||||
|
|
@ -1664,7 +1669,8 @@ static struct ieee80211_ops ath9k_ops = {
|
|||
.get_tsf = ath9k_get_tsf,
|
||||
.reset_tsf = ath9k_reset_tsf,
|
||||
.tx_last_beacon = NULL,
|
||||
.ampdu_action = ath9k_ampdu_action
|
||||
.ampdu_action = ath9k_ampdu_action,
|
||||
.set_frag_threshold = ath9k_no_fragmentation,
|
||||
};
|
||||
|
||||
static int ath_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
|
|
|
|||
|
|
@ -833,12 +833,12 @@ static int iwl5000_hw_set_hw_params(struct iwl_priv *priv)
|
|||
switch (priv->hw_rev & CSR_HW_REV_TYPE_MSK) {
|
||||
case CSR_HW_REV_TYPE_5100:
|
||||
case CSR_HW_REV_TYPE_5300:
|
||||
/* 5X00 wants in Celsius */
|
||||
case CSR_HW_REV_TYPE_5350:
|
||||
/* 5X00 and 5350 wants in Celsius */
|
||||
priv->hw_params.ct_kill_threshold = CT_KILL_THRESHOLD;
|
||||
break;
|
||||
case CSR_HW_REV_TYPE_5150:
|
||||
case CSR_HW_REV_TYPE_5350:
|
||||
/* 5X50 wants in Kelvin */
|
||||
/* 5150 wants in Kelvin */
|
||||
priv->hw_params.ct_kill_threshold =
|
||||
CELSIUS_TO_KELVIN(CT_KILL_THRESHOLD);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -2422,7 +2422,7 @@ static void rs_free_sta(void *priv_r, struct ieee80211_sta *sta,
|
|||
void *priv_sta)
|
||||
{
|
||||
struct iwl_lq_sta *lq_sta = priv_sta;
|
||||
struct iwl_priv *priv = priv_r;
|
||||
struct iwl_priv *priv __maybe_unused = priv_r;
|
||||
|
||||
IWL_DEBUG_RATE("enter\n");
|
||||
kfree(lq_sta);
|
||||
|
|
|
|||
|
|
@ -823,7 +823,9 @@ int lbs_update_channel(struct lbs_private *priv)
|
|||
int lbs_set_channel(struct lbs_private *priv, u8 channel)
|
||||
{
|
||||
struct cmd_ds_802_11_rf_channel cmd;
|
||||
#ifdef DEBUG
|
||||
u8 old_channel = priv->curbssparams.channel;
|
||||
#endif
|
||||
int ret = 0;
|
||||
|
||||
lbs_deb_enter(LBS_DEB_CMD);
|
||||
|
|
|
|||
|
|
@ -533,11 +533,11 @@ static int __init init_mac80211_hwsim(void)
|
|||
data = hw->priv;
|
||||
data->hw = hw;
|
||||
|
||||
data->dev = device_create_drvdata(hwsim_class, NULL, 0, hw,
|
||||
"hwsim%d", i);
|
||||
data->dev = device_create(hwsim_class, NULL, 0, hw,
|
||||
"hwsim%d", i);
|
||||
if (IS_ERR(data->dev)) {
|
||||
printk(KERN_DEBUG
|
||||
"mac80211_hwsim: device_create_drvdata "
|
||||
"mac80211_hwsim: device_create "
|
||||
"failed (%ld)\n", PTR_ERR(data->dev));
|
||||
err = -ENOMEM;
|
||||
goto failed_drvdata;
|
||||
|
|
|
|||
|
|
@ -378,6 +378,7 @@ static int orinoco_cs_resume(struct pcmcia_device *link)
|
|||
struct orinoco_private *priv = netdev_priv(dev);
|
||||
struct orinoco_pccard *card = priv->card;
|
||||
int err = 0;
|
||||
unsigned long flags;
|
||||
|
||||
if (! test_bit(0, &card->hard_reset_in_progress)) {
|
||||
err = orinoco_reinit_firmware(dev);
|
||||
|
|
@ -387,7 +388,7 @@ static int orinoco_cs_resume(struct pcmcia_device *link)
|
|||
return -EIO;
|
||||
}
|
||||
|
||||
spin_lock(&priv->lock);
|
||||
spin_lock_irqsave(&priv->lock, flags);
|
||||
|
||||
netif_device_attach(dev);
|
||||
priv->hw_unavailable--;
|
||||
|
|
@ -399,7 +400,7 @@ static int orinoco_cs_resume(struct pcmcia_device *link)
|
|||
dev->name, err);
|
||||
}
|
||||
|
||||
spin_unlock(&priv->lock);
|
||||
spin_unlock_irqrestore(&priv->lock, flags);
|
||||
}
|
||||
|
||||
return err;
|
||||
|
|
|
|||
|
|
@ -479,7 +479,6 @@ static int p54_parse_eeprom(struct ieee80211_hw *dev, void *eeprom, int len)
|
|||
printk(KERN_ERR "p54: eeprom parse failed!\n");
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(p54_parse_eeprom);
|
||||
|
||||
static int p54_rssi_to_dbm(struct ieee80211_hw *dev, int rssi)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ static struct usb_device_id p54u_table[] __devinitdata = {
|
|||
{USB_DEVICE(0x0846, 0x4200)}, /* Netgear WG121 */
|
||||
{USB_DEVICE(0x0846, 0x4210)}, /* Netgear WG121 the second ? */
|
||||
{USB_DEVICE(0x0846, 0x4220)}, /* Netgear WG111 */
|
||||
{USB_DEVICE(0x09aa, 0x1000)}, /* Spinnaker Proto board */
|
||||
{USB_DEVICE(0x0cde, 0x0006)}, /* Medion 40900, Roper Europe */
|
||||
{USB_DEVICE(0x124a, 0x4023)}, /* Shuttle PN15, Airvast WM168g, IOGear GWU513 */
|
||||
{USB_DEVICE(0x1915, 0x2234)}, /* Linksys WUSB54G OEM */
|
||||
|
|
@ -63,8 +64,8 @@ static struct usb_device_id p54u_table[] __devinitdata = {
|
|||
{USB_DEVICE(0x0cde, 0x0006)}, /* Medion MD40900 */
|
||||
{USB_DEVICE(0x0cde, 0x0008)}, /* Sagem XG703A */
|
||||
{USB_DEVICE(0x0d8e, 0x3762)}, /* DLink DWL-G120 Cohiba */
|
||||
{USB_DEVICE(0x09aa, 0x1000)}, /* Spinnaker Proto board */
|
||||
{USB_DEVICE(0x124a, 0x4025)}, /* IOGear GWU513 (GW3887IK chip) */
|
||||
{USB_DEVICE(0x1260, 0xee22)}, /* SMC 2862W-G version 2 */
|
||||
{USB_DEVICE(0x13b1, 0x000a)}, /* Linksys WUSB54G ver 2 */
|
||||
{USB_DEVICE(0x13B1, 0x000C)}, /* Linksys WUSB54AG */
|
||||
{USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */
|
||||
|
|
|
|||
|
|
@ -374,7 +374,7 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb)
|
|||
struct queue_entry *entry = rt2x00queue_get_entry(queue, Q_INDEX);
|
||||
struct txentry_desc txdesc;
|
||||
struct skb_frame_desc *skbdesc;
|
||||
unsigned int iv_len;
|
||||
unsigned int iv_len = 0;
|
||||
|
||||
if (unlikely(rt2x00queue_full(queue)))
|
||||
return -EINVAL;
|
||||
|
|
@ -395,6 +395,9 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb)
|
|||
entry->skb = skb;
|
||||
rt2x00queue_create_tx_descriptor(entry, &txdesc);
|
||||
|
||||
if (IEEE80211_SKB_CB(skb)->control.hw_key != NULL)
|
||||
iv_len = IEEE80211_SKB_CB(skb)->control.hw_key->iv_len;
|
||||
|
||||
/*
|
||||
* All information is retreived from the skb->cb array,
|
||||
* now we should claim ownership of the driver part of that
|
||||
|
|
@ -410,9 +413,7 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb)
|
|||
* the frame so we can provide it to the driver seperately.
|
||||
*/
|
||||
if (test_bit(ENTRY_TXD_ENCRYPT, &txdesc.flags) &&
|
||||
!test_bit(ENTRY_TXD_ENCRYPT_IV, &txdesc.flags) &&
|
||||
(IEEE80211_SKB_CB(skb)->control.hw_key != NULL)) {
|
||||
iv_len = IEEE80211_SKB_CB(skb)->control.hw_key->iv_len;
|
||||
!test_bit(ENTRY_TXD_ENCRYPT_IV, &txdesc.flags)) {
|
||||
rt2x00crypto_tx_remove_iv(skb, iv_len);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,10 +33,13 @@ MODULE_LICENSE("GPL");
|
|||
static struct usb_device_id rtl8187_table[] __devinitdata = {
|
||||
/* Asus */
|
||||
{USB_DEVICE(0x0b05, 0x171d), .driver_info = DEVICE_RTL8187},
|
||||
/* Belkin */
|
||||
{USB_DEVICE(0x050d, 0x705e), .driver_info = DEVICE_RTL8187B},
|
||||
/* Realtek */
|
||||
{USB_DEVICE(0x0bda, 0x8187), .driver_info = DEVICE_RTL8187},
|
||||
{USB_DEVICE(0x0bda, 0x8189), .driver_info = DEVICE_RTL8187B},
|
||||
{USB_DEVICE(0x0bda, 0x8197), .driver_info = DEVICE_RTL8187B},
|
||||
{USB_DEVICE(0x0bda, 0x8198), .driver_info = DEVICE_RTL8187B},
|
||||
/* Netgear */
|
||||
{USB_DEVICE(0x0846, 0x6100), .driver_info = DEVICE_RTL8187},
|
||||
{USB_DEVICE(0x0846, 0x6a00), .driver_info = DEVICE_RTL8187},
|
||||
|
|
|
|||
|
|
@ -426,10 +426,11 @@ spectrum_cs_suspend(struct pcmcia_device *link)
|
|||
{
|
||||
struct net_device *dev = link->priv;
|
||||
struct orinoco_private *priv = netdev_priv(dev);
|
||||
unsigned long flags;
|
||||
int err = 0;
|
||||
|
||||
/* Mark the device as stopped, to block IO until later */
|
||||
spin_lock(&priv->lock);
|
||||
spin_lock_irqsave(&priv->lock, flags);
|
||||
|
||||
err = __orinoco_down(dev);
|
||||
if (err)
|
||||
|
|
@ -439,7 +440,7 @@ spectrum_cs_suspend(struct pcmcia_device *link)
|
|||
netif_device_detach(dev);
|
||||
priv->hw_unavailable++;
|
||||
|
||||
spin_unlock(&priv->lock);
|
||||
spin_unlock_irqrestore(&priv->lock, flags);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -239,11 +239,14 @@ static void xennet_alloc_rx_buffers(struct net_device *dev)
|
|||
*/
|
||||
batch_target = np->rx_target - (req_prod - np->rx.rsp_cons);
|
||||
for (i = skb_queue_len(&np->rx_batch); i < batch_target; i++) {
|
||||
skb = __netdev_alloc_skb(dev, RX_COPY_THRESHOLD,
|
||||
skb = __netdev_alloc_skb(dev, RX_COPY_THRESHOLD + NET_IP_ALIGN,
|
||||
GFP_ATOMIC | __GFP_NOWARN);
|
||||
if (unlikely(!skb))
|
||||
goto no_skb;
|
||||
|
||||
/* Align ip header to a 16 bytes boundary */
|
||||
skb_reserve(skb, NET_IP_ALIGN);
|
||||
|
||||
page = alloc_page(GFP_ATOMIC | __GFP_NOWARN);
|
||||
if (!page) {
|
||||
kfree_skb(skb);
|
||||
|
|
@ -471,7 +474,7 @@ static int xennet_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||
unsigned int offset = offset_in_page(data);
|
||||
unsigned int len = skb_headlen(skb);
|
||||
|
||||
frags += (offset + len + PAGE_SIZE - 1) / PAGE_SIZE;
|
||||
frags += DIV_ROUND_UP(offset + len, PAGE_SIZE);
|
||||
if (unlikely(frags > MAX_SKB_FRAGS + 1)) {
|
||||
printk(KERN_ALERT "xennet: skb rides the rocket: %d frags\n",
|
||||
frags);
|
||||
|
|
|
|||
Loading…
Reference in a new issue