diff options
26 files changed, 167 insertions, 103 deletions
diff --git a/Documentation/filesystems/directory-locking b/Documentation/filesystems/directory-locking index d7099a9266fb..ff7b611abf33 100644 --- a/Documentation/filesystems/directory-locking +++ b/Documentation/filesystems/directory-locking | |||
@@ -1,5 +1,6 @@ | |||
1 | Locking scheme used for directory operations is based on two | 1 | Locking scheme used for directory operations is based on two |
2 | kinds of locks - per-inode (->i_sem) and per-filesystem (->s_vfs_rename_sem). | 2 | kinds of locks - per-inode (->i_mutex) and per-filesystem |
3 | (->s_vfs_rename_mutex). | ||
3 | 4 | ||
4 | For our purposes all operations fall in 5 classes: | 5 | For our purposes all operations fall in 5 classes: |
5 | 6 | ||
@@ -63,7 +64,7 @@ objects - A < B iff A is an ancestor of B. | |||
63 | attempt to acquire some lock and already holds at least one lock. Let's | 64 | attempt to acquire some lock and already holds at least one lock. Let's |
64 | consider the set of contended locks. First of all, filesystem lock is | 65 | consider the set of contended locks. First of all, filesystem lock is |
65 | not contended, since any process blocked on it is not holding any locks. | 66 | not contended, since any process blocked on it is not holding any locks. |
66 | Thus all processes are blocked on ->i_sem. | 67 | Thus all processes are blocked on ->i_mutex. |
67 | 68 | ||
68 | Non-directory objects are not contended due to (3). Thus link | 69 | Non-directory objects are not contended due to (3). Thus link |
69 | creation can't be a part of deadlock - it can't be blocked on source | 70 | creation can't be a part of deadlock - it can't be blocked on source |
diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting index 5531694059ab..dac45c92d872 100644 --- a/Documentation/filesystems/porting +++ b/Documentation/filesystems/porting | |||
@@ -107,7 +107,7 @@ free to drop it... | |||
107 | --- | 107 | --- |
108 | [informational] | 108 | [informational] |
109 | 109 | ||
110 | ->link() callers hold ->i_sem on the object we are linking to. Some of your | 110 | ->link() callers hold ->i_mutex on the object we are linking to. Some of your |
111 | problems might be over... | 111 | problems might be over... |
112 | 112 | ||
113 | --- | 113 | --- |
@@ -130,9 +130,9 @@ went in - and hadn't been documented ;-/). Just remove it from fs_flags | |||
130 | --- | 130 | --- |
131 | [mandatory] | 131 | [mandatory] |
132 | 132 | ||
133 | ->setattr() is called without BKL now. Caller _always_ holds ->i_sem, so | 133 | ->setattr() is called without BKL now. Caller _always_ holds ->i_mutex, so |
134 | watch for ->i_sem-grabbing code that might be used by your ->setattr(). | 134 | watch for ->i_mutex-grabbing code that might be used by your ->setattr(). |
135 | Callers of notify_change() need ->i_sem now. | 135 | Callers of notify_change() need ->i_mutex now. |
136 | 136 | ||
137 | --- | 137 | --- |
138 | [recommended] | 138 | [recommended] |
diff --git a/arch/ia64/kernel/acpi-processor.c b/arch/ia64/kernel/acpi-processor.c index 4d4993a47e55..5a216c019924 100644 --- a/arch/ia64/kernel/acpi-processor.c +++ b/arch/ia64/kernel/acpi-processor.c | |||
@@ -44,7 +44,7 @@ static void init_intel_pdc(struct acpi_processor *pr) | |||
44 | 44 | ||
45 | buf[0] = ACPI_PDC_REVISION_ID; | 45 | buf[0] = ACPI_PDC_REVISION_ID; |
46 | buf[1] = 1; | 46 | buf[1] = 1; |
47 | buf[2] |= ACPI_PDC_EST_CAPABILITY_SMP; | 47 | buf[2] = ACPI_PDC_EST_CAPABILITY_SMP; |
48 | 48 | ||
49 | obj->type = ACPI_TYPE_BUFFER; | 49 | obj->type = ACPI_TYPE_BUFFER; |
50 | obj->buffer.length = 12; | 50 | obj->buffer.length = 12; |
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index c4784494970e..103dd8edda71 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
@@ -67,7 +67,8 @@ EXPORT_SYMBOL(pm_power_off); | |||
67 | unsigned int acpi_cpei_override; | 67 | unsigned int acpi_cpei_override; |
68 | unsigned int acpi_cpei_phys_cpuid; | 68 | unsigned int acpi_cpei_phys_cpuid; |
69 | 69 | ||
70 | const char *acpi_get_sysname(void) | 70 | const char __init * |
71 | acpi_get_sysname(void) | ||
71 | { | 72 | { |
72 | #ifdef CONFIG_IA64_GENERIC | 73 | #ifdef CONFIG_IA64_GENERIC |
73 | unsigned long rsdp_phys; | 74 | unsigned long rsdp_phys; |
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c index 542958079f1b..3c9d8e6089cf 100644 --- a/arch/ia64/kernel/smpboot.c +++ b/arch/ia64/kernel/smpboot.c | |||
@@ -370,7 +370,7 @@ smp_setup_percpu_timer (void) | |||
370 | { | 370 | { |
371 | } | 371 | } |
372 | 372 | ||
373 | static void __devinit | 373 | static void __cpuinit |
374 | smp_callin (void) | 374 | smp_callin (void) |
375 | { | 375 | { |
376 | int cpuid, phys_id, itc_master; | 376 | int cpuid, phys_id, itc_master; |
@@ -456,7 +456,7 @@ smp_callin (void) | |||
456 | /* | 456 | /* |
457 | * Activate a secondary processor. head.S calls this. | 457 | * Activate a secondary processor. head.S calls this. |
458 | */ | 458 | */ |
459 | int __devinit | 459 | int __cpuinit |
460 | start_secondary (void *unused) | 460 | start_secondary (void *unused) |
461 | { | 461 | { |
462 | /* Early console may use I/O ports */ | 462 | /* Early console may use I/O ports */ |
diff --git a/arch/mips/sgi-ip32/Makefile b/arch/mips/sgi-ip32/Makefile index 7e1416768a60..60f0227425e7 100644 --- a/arch/mips/sgi-ip32/Makefile +++ b/arch/mips/sgi-ip32/Makefile | |||
@@ -3,5 +3,5 @@ | |||
3 | # under Linux. | 3 | # under Linux. |
4 | # | 4 | # |
5 | 5 | ||
6 | obj-y += ip32-berr.o ip32-irq.o ip32-setup.o ip32-reset.o \ | 6 | obj-y += ip32-berr.o ip32-irq.o ip32-platform.o ip32-setup.o ip32-reset.o \ |
7 | crime.o ip32-memory.o | 7 | crime.o ip32-memory.o |
diff --git a/arch/mips/sgi-ip32/ip32-platform.c b/arch/mips/sgi-ip32/ip32-platform.c new file mode 100644 index 000000000000..120b15932caf --- /dev/null +++ b/arch/mips/sgi-ip32/ip32-platform.c | |||
@@ -0,0 +1,20 @@ | |||
1 | #include <linux/init.h> | ||
2 | #include <linux/platform_device.h> | ||
3 | |||
4 | static __init int meth_devinit(void) | ||
5 | { | ||
6 | struct platform_device *pd; | ||
7 | int ret; | ||
8 | |||
9 | pd = platform_device_alloc("meth", -1); | ||
10 | if (!pd) | ||
11 | return -ENOMEM; | ||
12 | |||
13 | ret = platform_device_add(pd); | ||
14 | if (ret) | ||
15 | platform_device_put(pd); | ||
16 | |||
17 | return ret; | ||
18 | } | ||
19 | |||
20 | device_initcall(meth_devinit); | ||
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c index 0458811010fd..9c07b88631be 100644 --- a/drivers/ata/ata_piix.c +++ b/drivers/ata/ata_piix.c | |||
@@ -578,6 +578,7 @@ static const struct ich_laptop ich_laptop[] = { | |||
578 | { 0x27DF, 0x0005, 0x0280 }, /* ICH7 on Acer 5602WLMi */ | 578 | { 0x27DF, 0x0005, 0x0280 }, /* ICH7 on Acer 5602WLMi */ |
579 | { 0x27DF, 0x1025, 0x0110 }, /* ICH7 on Acer 3682WLMi */ | 579 | { 0x27DF, 0x1025, 0x0110 }, /* ICH7 on Acer 3682WLMi */ |
580 | { 0x27DF, 0x1043, 0x1267 }, /* ICH7 on Asus W5F */ | 580 | { 0x27DF, 0x1043, 0x1267 }, /* ICH7 on Asus W5F */ |
581 | { 0x24CA, 0x1025, 0x0061 }, /* ICH4 on ACER Aspire 2023WLMi */ | ||
581 | /* end marker */ | 582 | /* end marker */ |
582 | { 0, } | 583 | { 0, } |
583 | }; | 584 | }; |
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index a6de57e02047..3ca9c610c110 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
@@ -3022,7 +3022,7 @@ int ata_wait_ready(struct ata_port *ap, unsigned long deadline) | |||
3022 | 3022 | ||
3023 | if (!(status & ATA_BUSY)) | 3023 | if (!(status & ATA_BUSY)) |
3024 | return 0; | 3024 | return 0; |
3025 | if (status == 0xff) | 3025 | if (!ata_port_online(ap) && status == 0xff) |
3026 | return -ENODEV; | 3026 | return -ENODEV; |
3027 | if (time_after(now, deadline)) | 3027 | if (time_after(now, deadline)) |
3028 | return -EBUSY; | 3028 | return -EBUSY; |
@@ -3368,7 +3368,7 @@ int ata_std_prereset(struct ata_port *ap, unsigned long deadline) | |||
3368 | */ | 3368 | */ |
3369 | if (!(ap->flags & ATA_FLAG_SKIP_D2H_BSY) && !ata_port_offline(ap)) { | 3369 | if (!(ap->flags & ATA_FLAG_SKIP_D2H_BSY) && !ata_port_offline(ap)) { |
3370 | rc = ata_wait_ready(ap, deadline); | 3370 | rc = ata_wait_ready(ap, deadline); |
3371 | if (rc) { | 3371 | if (rc && rc != -ENODEV) { |
3372 | ata_port_printk(ap, KERN_WARNING, "device not ready " | 3372 | ata_port_printk(ap, KERN_WARNING, "device not ready " |
3373 | "(errno=%d), forcing hardreset\n", rc); | 3373 | "(errno=%d), forcing hardreset\n", rc); |
3374 | ehc->i.action |= ATA_EH_HARDRESET; | 3374 | ehc->i.action |= ATA_EH_HARDRESET; |
diff --git a/drivers/ata/pata_hpt3x2n.c b/drivers/ata/pata_hpt3x2n.c index f25154aed75d..e947433cb37d 100644 --- a/drivers/ata/pata_hpt3x2n.c +++ b/drivers/ata/pata_hpt3x2n.c | |||
@@ -521,8 +521,8 @@ static int hpt3x2n_init_one(struct pci_dev *dev, const struct pci_device_id *id) | |||
521 | /* 371N if rev > 1 */ | 521 | /* 371N if rev > 1 */ |
522 | break; | 522 | break; |
523 | case PCI_DEVICE_ID_TTI_HPT372: | 523 | case PCI_DEVICE_ID_TTI_HPT372: |
524 | /* 372N if rev >= 1*/ | 524 | /* 372N if rev >= 2*/ |
525 | if (class_rev == 0) | 525 | if (class_rev < 2) |
526 | return -ENODEV; | 526 | return -ENODEV; |
527 | break; | 527 | break; |
528 | case PCI_DEVICE_ID_TTI_HPT302: | 528 | case PCI_DEVICE_ID_TTI_HPT302: |
diff --git a/drivers/ata/pata_sis.c b/drivers/ata/pata_sis.c index f2231267e011..ec3ae9375015 100644 --- a/drivers/ata/pata_sis.c +++ b/drivers/ata/pata_sis.c | |||
@@ -73,14 +73,14 @@ static int sis_short_ata40(struct pci_dev *dev) | |||
73 | } | 73 | } |
74 | 74 | ||
75 | /** | 75 | /** |
76 | * sis_port_base - return PCI configuration base for dev | 76 | * sis_old_port_base - return PCI configuration base for dev |
77 | * @adev: device | 77 | * @adev: device |
78 | * | 78 | * |
79 | * Returns the base of the PCI configuration registers for this port | 79 | * Returns the base of the PCI configuration registers for this port |
80 | * number. | 80 | * number. |
81 | */ | 81 | */ |
82 | 82 | ||
83 | static int sis_port_base(struct ata_device *adev) | 83 | static int sis_old_port_base(struct ata_device *adev) |
84 | { | 84 | { |
85 | return 0x40 + (4 * adev->ap->port_no) + (2 * adev->devno); | 85 | return 0x40 + (4 * adev->ap->port_no) + (2 * adev->devno); |
86 | } | 86 | } |
@@ -211,7 +211,7 @@ static void sis_set_fifo(struct ata_port *ap, struct ata_device *adev) | |||
211 | static void sis_old_set_piomode (struct ata_port *ap, struct ata_device *adev) | 211 | static void sis_old_set_piomode (struct ata_port *ap, struct ata_device *adev) |
212 | { | 212 | { |
213 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); | 213 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); |
214 | int port = sis_port_base(adev); | 214 | int port = sis_old_port_base(adev); |
215 | u8 t1, t2; | 215 | u8 t1, t2; |
216 | int speed = adev->pio_mode - XFER_PIO_0; | 216 | int speed = adev->pio_mode - XFER_PIO_0; |
217 | 217 | ||
@@ -248,7 +248,7 @@ static void sis_old_set_piomode (struct ata_port *ap, struct ata_device *adev) | |||
248 | static void sis_100_set_piomode (struct ata_port *ap, struct ata_device *adev) | 248 | static void sis_100_set_piomode (struct ata_port *ap, struct ata_device *adev) |
249 | { | 249 | { |
250 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); | 250 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); |
251 | int port = sis_port_base(adev); | 251 | int port = sis_old_port_base(adev); |
252 | int speed = adev->pio_mode - XFER_PIO_0; | 252 | int speed = adev->pio_mode - XFER_PIO_0; |
253 | 253 | ||
254 | const u8 actrec[] = { 0x00, 0x67, 0x44, 0x33, 0x31 }; | 254 | const u8 actrec[] = { 0x00, 0x67, 0x44, 0x33, 0x31 }; |
@@ -328,7 +328,7 @@ static void sis_old_set_dmamode (struct ata_port *ap, struct ata_device *adev) | |||
328 | { | 328 | { |
329 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); | 329 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); |
330 | int speed = adev->dma_mode - XFER_MW_DMA_0; | 330 | int speed = adev->dma_mode - XFER_MW_DMA_0; |
331 | int drive_pci = sis_port_base(adev); | 331 | int drive_pci = sis_old_port_base(adev); |
332 | u16 timing; | 332 | u16 timing; |
333 | 333 | ||
334 | const u16 mwdma_bits[] = { 0x707, 0x202, 0x202 }; | 334 | const u16 mwdma_bits[] = { 0x707, 0x202, 0x202 }; |
@@ -367,7 +367,7 @@ static void sis_66_set_dmamode (struct ata_port *ap, struct ata_device *adev) | |||
367 | { | 367 | { |
368 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); | 368 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); |
369 | int speed = adev->dma_mode - XFER_MW_DMA_0; | 369 | int speed = adev->dma_mode - XFER_MW_DMA_0; |
370 | int drive_pci = sis_port_base(adev); | 370 | int drive_pci = sis_old_port_base(adev); |
371 | u16 timing; | 371 | u16 timing; |
372 | 372 | ||
373 | const u16 mwdma_bits[] = { 0x707, 0x202, 0x202 }; | 373 | const u16 mwdma_bits[] = { 0x707, 0x202, 0x202 }; |
@@ -378,12 +378,12 @@ static void sis_66_set_dmamode (struct ata_port *ap, struct ata_device *adev) | |||
378 | if (adev->dma_mode < XFER_UDMA_0) { | 378 | if (adev->dma_mode < XFER_UDMA_0) { |
379 | /* bits 3-0 hold recovery timing bits 8-10 active timing and | 379 | /* bits 3-0 hold recovery timing bits 8-10 active timing and |
380 | the higer bits are dependant on the device, bit 15 udma */ | 380 | the higer bits are dependant on the device, bit 15 udma */ |
381 | timing &= ~ 0x870F; | 381 | timing &= ~0x870F; |
382 | timing |= mwdma_bits[speed]; | 382 | timing |= mwdma_bits[speed]; |
383 | } else { | 383 | } else { |
384 | /* Bit 15 is UDMA on/off, bit 12-14 are cycle time */ | 384 | /* Bit 15 is UDMA on/off, bit 12-14 are cycle time */ |
385 | speed = adev->dma_mode - XFER_UDMA_0; | 385 | speed = adev->dma_mode - XFER_UDMA_0; |
386 | timing &= ~0x6000; | 386 | timing &= ~0xF000; |
387 | timing |= udma_bits[speed]; | 387 | timing |= udma_bits[speed]; |
388 | } | 388 | } |
389 | pci_write_config_word(pdev, drive_pci, timing); | 389 | pci_write_config_word(pdev, drive_pci, timing); |
@@ -405,22 +405,22 @@ static void sis_100_set_dmamode (struct ata_port *ap, struct ata_device *adev) | |||
405 | { | 405 | { |
406 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); | 406 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); |
407 | int speed = adev->dma_mode - XFER_MW_DMA_0; | 407 | int speed = adev->dma_mode - XFER_MW_DMA_0; |
408 | int drive_pci = sis_port_base(adev); | 408 | int drive_pci = sis_old_port_base(adev); |
409 | u16 timing; | 409 | u8 timing; |
410 | 410 | ||
411 | const u16 udma_bits[] = { 0x8B00, 0x8700, 0x8500, 0x8300, 0x8200, 0x8100}; | 411 | const u8 udma_bits[] = { 0x8B, 0x87, 0x85, 0x83, 0x82, 0x81}; |
412 | 412 | ||
413 | pci_read_config_word(pdev, drive_pci, &timing); | 413 | pci_read_config_byte(pdev, drive_pci + 1, &timing); |
414 | 414 | ||
415 | if (adev->dma_mode < XFER_UDMA_0) { | 415 | if (adev->dma_mode < XFER_UDMA_0) { |
416 | /* NOT SUPPORTED YET: NEED DATA SHEET. DITTO IN OLD DRIVER */ | 416 | /* NOT SUPPORTED YET: NEED DATA SHEET. DITTO IN OLD DRIVER */ |
417 | } else { | 417 | } else { |
418 | /* Bit 15 is UDMA on/off, bit 12-14 are cycle time */ | 418 | /* Bit 7 is UDMA on/off, bit 0-3 are cycle time */ |
419 | speed = adev->dma_mode - XFER_UDMA_0; | 419 | speed = adev->dma_mode - XFER_UDMA_0; |
420 | timing &= ~0x0F00; | 420 | timing &= ~0x8F; |
421 | timing |= udma_bits[speed]; | 421 | timing |= udma_bits[speed]; |
422 | } | 422 | } |
423 | pci_write_config_word(pdev, drive_pci, timing); | 423 | pci_write_config_byte(pdev, drive_pci + 1, timing); |
424 | } | 424 | } |
425 | 425 | ||
426 | /** | 426 | /** |
@@ -440,22 +440,22 @@ static void sis_133_early_set_dmamode (struct ata_port *ap, struct ata_device *a | |||
440 | { | 440 | { |
441 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); | 441 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); |
442 | int speed = adev->dma_mode - XFER_MW_DMA_0; | 442 | int speed = adev->dma_mode - XFER_MW_DMA_0; |
443 | int drive_pci = sis_port_base(adev); | 443 | int drive_pci = sis_old_port_base(adev); |
444 | u16 timing; | 444 | u8 timing; |
445 | 445 | /* Low 4 bits are timing */ | |
446 | static const u16 udma_bits[] = { 0x8F00, 0x8A00, 0x8700, 0x8500, 0x8300, 0x8200, 0x8100}; | 446 | static const u8 udma_bits[] = { 0x8F, 0x8A, 0x87, 0x85, 0x83, 0x82, 0x81}; |
447 | 447 | ||
448 | pci_read_config_word(pdev, drive_pci, &timing); | 448 | pci_read_config_byte(pdev, drive_pci + 1, &timing); |
449 | 449 | ||
450 | if (adev->dma_mode < XFER_UDMA_0) { | 450 | if (adev->dma_mode < XFER_UDMA_0) { |
451 | /* NOT SUPPORTED YET: NEED DATA SHEET. DITTO IN OLD DRIVER */ | 451 | /* NOT SUPPORTED YET: NEED DATA SHEET. DITTO IN OLD DRIVER */ |
452 | } else { | 452 | } else { |
453 | /* Bit 15 is UDMA on/off, bit 12-14 are cycle time */ | 453 | /* Bit 7 is UDMA on/off, bit 0-3 are cycle time */ |
454 | speed = adev->dma_mode - XFER_UDMA_0; | 454 | speed = adev->dma_mode - XFER_UDMA_0; |
455 | timing &= ~0x0F00; | 455 | timing &= ~0x8F; |
456 | timing |= udma_bits[speed]; | 456 | timing |= udma_bits[speed]; |
457 | } | 457 | } |
458 | pci_write_config_word(pdev, drive_pci, timing); | 458 | pci_write_config_byte(pdev, drive_pci + 1, timing); |
459 | } | 459 | } |
460 | 460 | ||
461 | /** | 461 | /** |
diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.c index e4c71f76bd55..708dfc0c716b 100644 --- a/drivers/ata/pata_via.c +++ b/drivers/ata/pata_via.c | |||
@@ -60,6 +60,7 @@ | |||
60 | #include <linux/delay.h> | 60 | #include <linux/delay.h> |
61 | #include <scsi/scsi_host.h> | 61 | #include <scsi/scsi_host.h> |
62 | #include <linux/libata.h> | 62 | #include <linux/libata.h> |
63 | #include <linux/dmi.h> | ||
63 | 64 | ||
64 | #define DRV_NAME "pata_via" | 65 | #define DRV_NAME "pata_via" |
65 | #define DRV_VERSION "0.3.1" | 66 | #define DRV_VERSION "0.3.1" |
@@ -122,6 +123,31 @@ static const struct via_isa_bridge { | |||
122 | { NULL } | 123 | { NULL } |
123 | }; | 124 | }; |
124 | 125 | ||
126 | |||
127 | /* | ||
128 | * Cable special cases | ||
129 | */ | ||
130 | |||
131 | static struct dmi_system_id cable_dmi_table[] = { | ||
132 | { | ||
133 | .ident = "Acer Ferrari 3400", | ||
134 | .matches = { | ||
135 | DMI_MATCH(DMI_BOARD_VENDOR, "Acer,Inc."), | ||
136 | DMI_MATCH(DMI_BOARD_NAME, "Ferrari 3400"), | ||
137 | }, | ||
138 | }, | ||
139 | { } | ||
140 | }; | ||
141 | |||
142 | static int via_cable_override(struct pci_dev *pdev) | ||
143 | { | ||
144 | /* Systems by DMI */ | ||
145 | if (dmi_check_system(cable_dmi_table)) | ||
146 | return 1; | ||
147 | return 0; | ||
148 | } | ||
149 | |||
150 | |||
125 | /** | 151 | /** |
126 | * via_cable_detect - cable detection | 152 | * via_cable_detect - cable detection |
127 | * @ap: ATA port | 153 | * @ap: ATA port |
@@ -139,6 +165,9 @@ static int via_cable_detect(struct ata_port *ap) { | |||
139 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); | 165 | struct pci_dev *pdev = to_pci_dev(ap->host->dev); |
140 | u32 ata66; | 166 | u32 ata66; |
141 | 167 | ||
168 | if (via_cable_override(pdev)) | ||
169 | return ATA_CBL_PATA40_SHORT; | ||
170 | |||
142 | /* Early chips are 40 wire */ | 171 | /* Early chips are 40 wire */ |
143 | if ((config->flags & VIA_UDMA) < VIA_UDMA_66) | 172 | if ((config->flags & VIA_UDMA) < VIA_UDMA_66) |
144 | return ATA_CBL_PATA40; | 173 | return ATA_CBL_PATA40; |
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index c5baa197bc08..30fd479fea5e 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig | |||
@@ -2218,7 +2218,7 @@ config SK98LIN | |||
2218 | 2218 | ||
2219 | config VIA_VELOCITY | 2219 | config VIA_VELOCITY |
2220 | tristate "VIA Velocity support" | 2220 | tristate "VIA Velocity support" |
2221 | depends on NET_PCI && PCI | 2221 | depends on PCI |
2222 | select CRC32 | 2222 | select CRC32 |
2223 | select CRC_CCITT | 2223 | select CRC_CCITT |
2224 | select MII | 2224 | select MII |
diff --git a/drivers/net/chelsio/suni1x10gexp_regs.h b/drivers/net/chelsio/suni1x10gexp_regs.h index 269d097dd927..d0f87d82566a 100644 --- a/drivers/net/chelsio/suni1x10gexp_regs.h +++ b/drivers/net/chelsio/suni1x10gexp_regs.h | |||
@@ -105,7 +105,7 @@ | |||
105 | #define mSUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_LOW(filterId) (0x204A + mSUNI1x10GEXP_MAC_FILTER_OFFSET(filterId)) | 105 | #define mSUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_LOW(filterId) (0x204A + mSUNI1x10GEXP_MAC_FILTER_OFFSET(filterId)) |
106 | #define mSUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_MID(filterId) (0x204B + mSUNI1x10GEXP_MAC_FILTER_OFFSET(filterId)) | 106 | #define mSUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_MID(filterId) (0x204B + mSUNI1x10GEXP_MAC_FILTER_OFFSET(filterId)) |
107 | #define mSUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_HIGH(filterId)(0x204C + mSUNI1x10GEXP_MAC_FILTER_OFFSET(filterId)) | 107 | #define mSUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_HIGH(filterId)(0x204C + mSUNI1x10GEXP_MAC_FILTER_OFFSET(filterId)) |
108 | #define mSUNI1x10GEXP_REG_RXXG_EXACT_MATCH_VID(filterId) (0x2062 + mSUNI1x10GEXP_MAC_VID_FILTER_OFFSET(filterId) | 108 | #define mSUNI1x10GEXP_REG_RXXG_EXACT_MATCH_VID(filterId) (0x2062 + mSUNI1x10GEXP_MAC_VID_FILTER_OFFSET(filterId)) |
109 | #define SUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_0_LOW 0x204A | 109 | #define SUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_0_LOW 0x204A |
110 | #define SUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_0_MID 0x204B | 110 | #define SUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_0_MID 0x204B |
111 | #define SUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_0_HIGH 0x204C | 111 | #define SUNI1x10GEXP_REG_RXXG_EXACT_MATCH_ADDR_0_HIGH 0x204C |
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c index 7a018027fcc0..4154fd000746 100644 --- a/drivers/net/forcedeth.c +++ b/drivers/net/forcedeth.c | |||
@@ -195,7 +195,7 @@ enum { | |||
195 | #define NVREG_IRQ_TX_FORCED 0x0100 | 195 | #define NVREG_IRQ_TX_FORCED 0x0100 |
196 | #define NVREG_IRQ_RECOVER_ERROR 0x8000 | 196 | #define NVREG_IRQ_RECOVER_ERROR 0x8000 |
197 | #define NVREG_IRQMASK_THROUGHPUT 0x00df | 197 | #define NVREG_IRQMASK_THROUGHPUT 0x00df |
198 | #define NVREG_IRQMASK_CPU 0x0040 | 198 | #define NVREG_IRQMASK_CPU 0x0060 |
199 | #define NVREG_IRQ_TX_ALL (NVREG_IRQ_TX_ERR|NVREG_IRQ_TX_OK|NVREG_IRQ_TX_FORCED) | 199 | #define NVREG_IRQ_TX_ALL (NVREG_IRQ_TX_ERR|NVREG_IRQ_TX_OK|NVREG_IRQ_TX_FORCED) |
200 | #define NVREG_IRQ_RX_ALL (NVREG_IRQ_RX_ERROR|NVREG_IRQ_RX|NVREG_IRQ_RX_NOBUF|NVREG_IRQ_RX_FORCED) | 200 | #define NVREG_IRQ_RX_ALL (NVREG_IRQ_RX_ERROR|NVREG_IRQ_RX|NVREG_IRQ_RX_NOBUF|NVREG_IRQ_RX_FORCED) |
201 | #define NVREG_IRQ_OTHER (NVREG_IRQ_TIMER|NVREG_IRQ_LINK|NVREG_IRQ_RECOVER_ERROR) | 201 | #define NVREG_IRQ_OTHER (NVREG_IRQ_TIMER|NVREG_IRQ_LINK|NVREG_IRQ_RECOVER_ERROR) |
diff --git a/drivers/net/meth.c b/drivers/net/meth.c index 0343ea12b299..92b403bf38b0 100644 --- a/drivers/net/meth.c +++ b/drivers/net/meth.c | |||
@@ -8,15 +8,16 @@ | |||
8 | * as published by the Free Software Foundation; either version | 8 | * as published by the Free Software Foundation; either version |
9 | * 2 of the License, or (at your option) any later version. | 9 | * 2 of the License, or (at your option) any later version. |
10 | */ | 10 | */ |
11 | #include <linux/module.h> | ||
12 | #include <linux/init.h> | ||
13 | |||
14 | #include <linux/kernel.h> /* printk() */ | ||
15 | #include <linux/delay.h> | 11 | #include <linux/delay.h> |
12 | #include <linux/dma-mapping.h> | ||
13 | #include <linux/init.h> | ||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/module.h> | ||
16 | #include <linux/platform_device.h> | ||
16 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
17 | #include <linux/errno.h> /* error codes */ | 18 | #include <linux/errno.h> |
18 | #include <linux/types.h> /* size_t */ | 19 | #include <linux/types.h> |
19 | #include <linux/interrupt.h> /* mark_bh */ | 20 | #include <linux/interrupt.h> |
20 | 21 | ||
21 | #include <linux/in.h> | 22 | #include <linux/in.h> |
22 | #include <linux/in6.h> | 23 | #include <linux/in6.h> |
@@ -33,7 +34,6 @@ | |||
33 | 34 | ||
34 | #include <asm/io.h> | 35 | #include <asm/io.h> |
35 | #include <asm/scatterlist.h> | 36 | #include <asm/scatterlist.h> |
36 | #include <linux/dma-mapping.h> | ||
37 | 37 | ||
38 | #include "meth.h" | 38 | #include "meth.h" |
39 | 39 | ||
@@ -51,8 +51,6 @@ | |||
51 | 51 | ||
52 | 52 | ||
53 | static const char *meth_str="SGI O2 Fast Ethernet"; | 53 | static const char *meth_str="SGI O2 Fast Ethernet"; |
54 | MODULE_AUTHOR("Ilya Volynets <ilya@theIlya.com>"); | ||
55 | MODULE_DESCRIPTION("SGI O2 Builtin Fast Ethernet driver"); | ||
56 | 54 | ||
57 | #define HAVE_TX_TIMEOUT | 55 | #define HAVE_TX_TIMEOUT |
58 | /* The maximum time waited (in jiffies) before assuming a Tx failed. (400ms) */ | 56 | /* The maximum time waited (in jiffies) before assuming a Tx failed. (400ms) */ |
@@ -784,15 +782,15 @@ static struct net_device_stats *meth_stats(struct net_device *dev) | |||
784 | /* | 782 | /* |
785 | * The init function. | 783 | * The init function. |
786 | */ | 784 | */ |
787 | static struct net_device *meth_init(void) | 785 | static int __init meth_probe(struct platform_device *pdev) |
788 | { | 786 | { |
789 | struct net_device *dev; | 787 | struct net_device *dev; |
790 | struct meth_private *priv; | 788 | struct meth_private *priv; |
791 | int ret; | 789 | int err; |
792 | 790 | ||
793 | dev = alloc_etherdev(sizeof(struct meth_private)); | 791 | dev = alloc_etherdev(sizeof(struct meth_private)); |
794 | if (!dev) | 792 | if (!dev) |
795 | return ERR_PTR(-ENOMEM); | 793 | return -ENOMEM; |
796 | 794 | ||
797 | dev->open = meth_open; | 795 | dev->open = meth_open; |
798 | dev->stop = meth_release; | 796 | dev->stop = meth_release; |
@@ -808,11 +806,12 @@ static struct net_device *meth_init(void) | |||
808 | 806 | ||
809 | priv = netdev_priv(dev); | 807 | priv = netdev_priv(dev); |
810 | spin_lock_init(&priv->meth_lock); | 808 | spin_lock_init(&priv->meth_lock); |
809 | SET_NETDEV_DEV(dev, &pdev->dev); | ||
811 | 810 | ||
812 | ret = register_netdev(dev); | 811 | err = register_netdev(dev); |
813 | if (ret) { | 812 | if (err) { |
814 | free_netdev(dev); | 813 | free_netdev(dev); |
815 | return ERR_PTR(ret); | 814 | return err; |
816 | } | 815 | } |
817 | 816 | ||
818 | printk(KERN_INFO "%s: SGI MACE Ethernet rev. %d\n", | 817 | printk(KERN_INFO "%s: SGI MACE Ethernet rev. %d\n", |
@@ -820,21 +819,44 @@ static struct net_device *meth_init(void) | |||
820 | return 0; | 819 | return 0; |
821 | } | 820 | } |
822 | 821 | ||
823 | static struct net_device *meth_dev; | 822 | static int __exit meth_remove(struct platform_device *pdev) |
823 | { | ||
824 | struct net_device *dev = platform_get_drvdata(pdev); | ||
825 | |||
826 | unregister_netdev(dev); | ||
827 | free_netdev(dev); | ||
828 | platform_set_drvdata(pdev, NULL); | ||
829 | |||
830 | return 0; | ||
831 | } | ||
832 | |||
833 | static struct platform_driver meth_driver = { | ||
834 | .probe = meth_probe, | ||
835 | .remove = __devexit_p(meth_remove), | ||
836 | .driver = { | ||
837 | .name = "meth", | ||
838 | } | ||
839 | }; | ||
824 | 840 | ||
825 | static int __init meth_init_module(void) | 841 | static int __init meth_init_module(void) |
826 | { | 842 | { |
827 | meth_dev = meth_init(); | 843 | int err; |
828 | if (IS_ERR(meth_dev)) | 844 | |
829 | return PTR_ERR(meth_dev); | 845 | err = platform_driver_register(&meth_driver); |
830 | return 0; | 846 | if (err) |
847 | printk(KERN_ERR "Driver registration failed\n"); | ||
848 | |||
849 | return err; | ||
831 | } | 850 | } |
832 | 851 | ||
833 | static void __exit meth_exit_module(void) | 852 | static void __exit meth_exit_module(void) |
834 | { | 853 | { |
835 | unregister_netdev(meth_dev); | 854 | platform_driver_unregister(&meth_driver); |
836 | free_netdev(meth_dev); | ||
837 | } | 855 | } |
838 | 856 | ||
839 | module_init(meth_init_module); | 857 | module_init(meth_init_module); |
840 | module_exit(meth_exit_module); | 858 | module_exit(meth_exit_module); |
859 | |||
860 | MODULE_AUTHOR("Ilya Volynets <ilya@theIlya.com>"); | ||
861 | MODULE_DESCRIPTION("SGI O2 Builtin Fast Ethernet driver"); | ||
862 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/net/phy/fixed.c b/drivers/net/phy/fixed.c index 68c99b4c5255..bb966911a137 100644 --- a/drivers/net/phy/fixed.c +++ b/drivers/net/phy/fixed.c | |||
@@ -89,6 +89,7 @@ EXPORT_SYMBOL(fixed_mdio_set_link_update); | |||
89 | /*----------------------------------------------------------------------------- | 89 | /*----------------------------------------------------------------------------- |
90 | * This is used for updating internal mii regs from the status | 90 | * This is used for updating internal mii regs from the status |
91 | *-----------------------------------------------------------------------------*/ | 91 | *-----------------------------------------------------------------------------*/ |
92 | #if defined(CONFIG_FIXED_MII_100_FDX) || defined(CONFIG_FIXED_MII_10_FDX) | ||
92 | static int fixed_mdio_update_regs(struct fixed_info *fixed) | 93 | static int fixed_mdio_update_regs(struct fixed_info *fixed) |
93 | { | 94 | { |
94 | u16 *regs = fixed->regs; | 95 | u16 *regs = fixed->regs; |
@@ -165,6 +166,7 @@ static int fixed_mii_reset(struct mii_bus *bus) | |||
165 | /*nothing here - no way/need to reset it*/ | 166 | /*nothing here - no way/need to reset it*/ |
166 | return 0; | 167 | return 0; |
167 | } | 168 | } |
169 | #endif | ||
168 | 170 | ||
169 | static int fixed_config_aneg(struct phy_device *phydev) | 171 | static int fixed_config_aneg(struct phy_device *phydev) |
170 | { | 172 | { |
@@ -194,6 +196,7 @@ static struct phy_driver fixed_mdio_driver = { | |||
194 | * number is used to create multiple fixed PHYs, so that several devices can | 196 | * number is used to create multiple fixed PHYs, so that several devices can |
195 | * utilize them simultaneously. | 197 | * utilize them simultaneously. |
196 | *-----------------------------------------------------------------------------*/ | 198 | *-----------------------------------------------------------------------------*/ |
199 | #if defined(CONFIG_FIXED_MII_100_FDX) || defined(CONFIG_FIXED_MII_10_FDX) | ||
197 | static int fixed_mdio_register_device(int number, int speed, int duplex) | 200 | static int fixed_mdio_register_device(int number, int speed, int duplex) |
198 | { | 201 | { |
199 | struct mii_bus *new_bus; | 202 | struct mii_bus *new_bus; |
@@ -301,6 +304,7 @@ device_create_fail: | |||
301 | 304 | ||
302 | return err; | 305 | return err; |
303 | } | 306 | } |
307 | #endif | ||
304 | 308 | ||
305 | 309 | ||
306 | MODULE_DESCRIPTION("Fixed PHY device & driver for PAL"); | 310 | MODULE_DESCRIPTION("Fixed PHY device & driver for PAL"); |
diff --git a/drivers/net/spider_net.c b/drivers/net/spider_net.c index c3964c3d89d9..ef84d7c757a0 100644 --- a/drivers/net/spider_net.c +++ b/drivers/net/spider_net.c | |||
@@ -1014,12 +1014,12 @@ spider_net_pass_skb_up(struct spider_net_descr *descr, | |||
1014 | */ | 1014 | */ |
1015 | } | 1015 | } |
1016 | 1016 | ||
1017 | /* pass skb up to stack */ | ||
1018 | netif_receive_skb(skb); | ||
1019 | |||
1020 | /* update netdevice statistics */ | 1017 | /* update netdevice statistics */ |
1021 | card->netdev_stats.rx_packets++; | 1018 | card->netdev_stats.rx_packets++; |
1022 | card->netdev_stats.rx_bytes += skb->len; | 1019 | card->netdev_stats.rx_bytes += skb->len; |
1020 | |||
1021 | /* pass skb up to stack */ | ||
1022 | netif_receive_skb(skb); | ||
1023 | } | 1023 | } |
1024 | 1024 | ||
1025 | #ifdef DEBUG | 1025 | #ifdef DEBUG |
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c index c2ccbd098f53..18b731bb4da1 100644 --- a/drivers/net/ucc_geth.c +++ b/drivers/net/ucc_geth.c | |||
@@ -23,11 +23,8 @@ | |||
23 | #include <linux/skbuff.h> | 23 | #include <linux/skbuff.h> |
24 | #include <linux/spinlock.h> | 24 | #include <linux/spinlock.h> |
25 | #include <linux/mm.h> | 25 | #include <linux/mm.h> |
26 | #include <linux/ethtool.h> | ||
27 | #include <linux/delay.h> | ||
28 | #include <linux/dma-mapping.h> | 26 | #include <linux/dma-mapping.h> |
29 | #include <linux/fsl_devices.h> | 27 | #include <linux/fsl_devices.h> |
30 | #include <linux/ethtool.h> | ||
31 | #include <linux/mii.h> | 28 | #include <linux/mii.h> |
32 | #include <linux/phy.h> | 29 | #include <linux/phy.h> |
33 | #include <linux/workqueue.h> | 30 | #include <linux/workqueue.h> |
diff --git a/drivers/net/ucc_geth_mii.c b/drivers/net/ucc_geth_mii.c index f96966d4bcc2..7bcb82f50cf7 100644 --- a/drivers/net/ucc_geth_mii.c +++ b/drivers/net/ucc_geth_mii.c | |||
@@ -260,8 +260,6 @@ static struct of_device_id uec_mdio_match[] = { | |||
260 | {}, | 260 | {}, |
261 | }; | 261 | }; |
262 | 262 | ||
263 | MODULE_DEVICE_TABLE(of, uec_mdio_match); | ||
264 | |||
265 | static struct of_platform_driver uec_mdio_driver = { | 263 | static struct of_platform_driver uec_mdio_driver = { |
266 | .name = DRV_NAME, | 264 | .name = DRV_NAME, |
267 | .probe = uec_mdio_probe, | 265 | .probe = uec_mdio_probe, |
diff --git a/drivers/net/usb/asix.c b/drivers/net/usb/asix.c index d5ef97bc4d01..6d95cacd5284 100644 --- a/drivers/net/usb/asix.c +++ b/drivers/net/usb/asix.c | |||
@@ -1458,6 +1458,10 @@ static const struct usb_device_id products [] = { | |||
1458 | // IO-DATA ETG-US2 | 1458 | // IO-DATA ETG-US2 |
1459 | USB_DEVICE (0x04bb, 0x0930), | 1459 | USB_DEVICE (0x04bb, 0x0930), |
1460 | .driver_info = (unsigned long) &ax88178_info, | 1460 | .driver_info = (unsigned long) &ax88178_info, |
1461 | }, { | ||
1462 | // Belkin F5D5055 | ||
1463 | USB_DEVICE(0x050d, 0x5055), | ||
1464 | .driver_info = (unsigned long) &ax88178_info, | ||
1461 | }, | 1465 | }, |
1462 | { }, // END | 1466 | { }, // END |
1463 | }; | 1467 | }; |
diff --git a/drivers/net/wireless/libertas/decl.h b/drivers/net/wireless/libertas/decl.h index 606bdd002be7..dfe27642322c 100644 --- a/drivers/net/wireless/libertas/decl.h +++ b/drivers/net/wireless/libertas/decl.h | |||
@@ -46,7 +46,7 @@ u32 libertas_index_to_data_rate(u8 index); | |||
46 | u8 libertas_data_rate_to_index(u32 rate); | 46 | u8 libertas_data_rate_to_index(u32 rate); |
47 | void libertas_get_fwversion(wlan_adapter * adapter, char *fwversion, int maxlen); | 47 | void libertas_get_fwversion(wlan_adapter * adapter, char *fwversion, int maxlen); |
48 | 48 | ||
49 | int libertas_upload_rx_packet(wlan_private * priv, struct sk_buff *skb); | 49 | void libertas_upload_rx_packet(wlan_private * priv, struct sk_buff *skb); |
50 | 50 | ||
51 | /** The proc fs interface */ | 51 | /** The proc fs interface */ |
52 | int libertas_process_rx_command(wlan_private * priv); | 52 | int libertas_process_rx_command(wlan_private * priv); |
diff --git a/drivers/net/wireless/libertas/fw.c b/drivers/net/wireless/libertas/fw.c index 441123c85e62..5c63c9b1659c 100644 --- a/drivers/net/wireless/libertas/fw.c +++ b/drivers/net/wireless/libertas/fw.c | |||
@@ -333,18 +333,22 @@ static void command_timer_fn(unsigned long data) | |||
333 | unsigned long flags; | 333 | unsigned long flags; |
334 | 334 | ||
335 | ptempnode = adapter->cur_cmd; | 335 | ptempnode = adapter->cur_cmd; |
336 | if (ptempnode == NULL) { | ||
337 | lbs_pr_debug(1, "PTempnode Empty\n"); | ||
338 | return; | ||
339 | } | ||
340 | |||
336 | cmd = (struct cmd_ds_command *)ptempnode->bufvirtualaddr; | 341 | cmd = (struct cmd_ds_command *)ptempnode->bufvirtualaddr; |
342 | if (!cmd) { | ||
343 | lbs_pr_debug(1, "cmd is NULL\n"); | ||
344 | return; | ||
345 | } | ||
337 | 346 | ||
338 | lbs_pr_info("command_timer_fn fired (%x)\n", cmd->command); | 347 | lbs_pr_info("command_timer_fn fired (%x)\n", cmd->command); |
339 | 348 | ||
340 | if (!adapter->fw_ready) | 349 | if (!adapter->fw_ready) |
341 | return; | 350 | return; |
342 | 351 | ||
343 | if (ptempnode == NULL) { | ||
344 | lbs_pr_debug(1, "PTempnode Empty\n"); | ||
345 | return; | ||
346 | } | ||
347 | |||
348 | spin_lock_irqsave(&adapter->driver_lock, flags); | 352 | spin_lock_irqsave(&adapter->driver_lock, flags); |
349 | adapter->cur_cmd = NULL; | 353 | adapter->cur_cmd = NULL; |
350 | spin_unlock_irqrestore(&adapter->driver_lock, flags); | 354 | spin_unlock_irqrestore(&adapter->driver_lock, flags); |
diff --git a/drivers/net/wireless/libertas/rx.c b/drivers/net/wireless/libertas/rx.c index d17924f764e5..96619a32951b 100644 --- a/drivers/net/wireless/libertas/rx.c +++ b/drivers/net/wireless/libertas/rx.c | |||
@@ -136,7 +136,7 @@ static void wlan_compute_rssi(wlan_private * priv, struct rxpd *p_rx_pd) | |||
136 | LEAVE(); | 136 | LEAVE(); |
137 | } | 137 | } |
138 | 138 | ||
139 | int libertas_upload_rx_packet(wlan_private * priv, struct sk_buff *skb) | 139 | void libertas_upload_rx_packet(wlan_private * priv, struct sk_buff *skb) |
140 | { | 140 | { |
141 | lbs_pr_debug(1, "skb->data=%p\n", skb->data); | 141 | lbs_pr_debug(1, "skb->data=%p\n", skb->data); |
142 | 142 | ||
@@ -148,8 +148,6 @@ int libertas_upload_rx_packet(wlan_private * priv, struct sk_buff *skb) | |||
148 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 148 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
149 | 149 | ||
150 | netif_rx(skb); | 150 | netif_rx(skb); |
151 | |||
152 | return 0; | ||
153 | } | 151 | } |
154 | 152 | ||
155 | /** | 153 | /** |
@@ -269,15 +267,11 @@ int libertas_process_rxed_packet(wlan_private * priv, struct sk_buff *skb) | |||
269 | wlan_compute_rssi(priv, p_rx_pd); | 267 | wlan_compute_rssi(priv, p_rx_pd); |
270 | 268 | ||
271 | lbs_pr_debug(1, "RX Data: size of actual packet = %d\n", skb->len); | 269 | lbs_pr_debug(1, "RX Data: size of actual packet = %d\n", skb->len); |
272 | if (libertas_upload_rx_packet(priv, skb)) { | ||
273 | lbs_pr_debug(1, "RX error: libertas_upload_rx_packet" | ||
274 | " returns failure\n"); | ||
275 | ret = -1; | ||
276 | goto done; | ||
277 | } | ||
278 | priv->stats.rx_bytes += skb->len; | 270 | priv->stats.rx_bytes += skb->len; |
279 | priv->stats.rx_packets++; | 271 | priv->stats.rx_packets++; |
280 | 272 | ||
273 | libertas_upload_rx_packet(priv, skb); | ||
274 | |||
281 | ret = 0; | 275 | ret = 0; |
282 | done: | 276 | done: |
283 | LEAVE(); | 277 | LEAVE(); |
@@ -438,22 +432,14 @@ static int process_rxed_802_11_packet(wlan_private * priv, struct sk_buff *skb) | |||
438 | wlan_compute_rssi(priv, prxpd); | 432 | wlan_compute_rssi(priv, prxpd); |
439 | 433 | ||
440 | lbs_pr_debug(1, "RX Data: size of actual packet = %d\n", skb->len); | 434 | lbs_pr_debug(1, "RX Data: size of actual packet = %d\n", skb->len); |
441 | |||
442 | if (libertas_upload_rx_packet(priv, skb)) { | ||
443 | lbs_pr_debug(1, "RX error: libertas_upload_rx_packet " | ||
444 | "returns failure\n"); | ||
445 | ret = -1; | ||
446 | goto done; | ||
447 | } | ||
448 | |||
449 | priv->stats.rx_bytes += skb->len; | 435 | priv->stats.rx_bytes += skb->len; |
450 | priv->stats.rx_packets++; | 436 | priv->stats.rx_packets++; |
451 | 437 | ||
438 | libertas_upload_rx_packet(priv, skb); | ||
439 | |||
452 | ret = 0; | 440 | ret = 0; |
453 | done: | 441 | done: |
454 | LEAVE(); | 442 | LEAVE(); |
455 | 443 | ||
456 | skb->protocol = __constant_htons(0x0019); /* ETH_P_80211_RAW */ | ||
457 | |||
458 | return (ret); | 444 | return (ret); |
459 | } | 445 | } |
diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h index 14fae1fa87df..7f30cce52857 100644 --- a/include/asm-generic/bug.h +++ b/include/asm-generic/bug.h | |||
@@ -35,7 +35,7 @@ struct bug_entry { | |||
35 | #define WARN_ON(condition) ({ \ | 35 | #define WARN_ON(condition) ({ \ |
36 | typeof(condition) __ret_warn_on = (condition); \ | 36 | typeof(condition) __ret_warn_on = (condition); \ |
37 | if (unlikely(__ret_warn_on)) { \ | 37 | if (unlikely(__ret_warn_on)) { \ |
38 | printk("BUG: at %s:%d %s()\n", __FILE__, \ | 38 | printk("WARNING: at %s:%d %s()\n", __FILE__, \ |
39 | __LINE__, __FUNCTION__); \ | 39 | __LINE__, __FUNCTION__); \ |
40 | dump_stack(); \ | 40 | dump_stack(); \ |
41 | } \ | 41 | } \ |
diff --git a/include/asm-ia64/acpi.h b/include/asm-ia64/acpi.h index 5d03792d4f65..5b526357d178 100644 --- a/include/asm-ia64/acpi.h +++ b/include/asm-ia64/acpi.h | |||
@@ -30,6 +30,8 @@ | |||
30 | 30 | ||
31 | #ifdef __KERNEL__ | 31 | #ifdef __KERNEL__ |
32 | 32 | ||
33 | #include <acpi/pdc_intel.h> | ||
34 | |||
33 | #include <linux/init.h> | 35 | #include <linux/init.h> |
34 | #include <linux/numa.h> | 36 | #include <linux/numa.h> |
35 | #include <asm/system.h> | 37 | #include <asm/system.h> |
@@ -119,11 +121,6 @@ extern int __devinitdata pxm_to_nid_map[MAX_PXM_DOMAINS]; | |||
119 | extern int __initdata nid_to_pxm_map[MAX_NUMNODES]; | 121 | extern int __initdata nid_to_pxm_map[MAX_NUMNODES]; |
120 | #endif | 122 | #endif |
121 | 123 | ||
122 | /* | ||
123 | * Refer Intel ACPI _PDC support document for bit definitions | ||
124 | */ | ||
125 | #define ACPI_PDC_EST_CAPABILITY_SMP 0x8 | ||
126 | |||
127 | #endif /*__KERNEL__*/ | 124 | #endif /*__KERNEL__*/ |
128 | 125 | ||
129 | #endif /*_ASM_ACPI_H*/ | 126 | #endif /*_ASM_ACPI_H*/ |