Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6

* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6:
[PATCH] drivers cris: return on NULL dev_alloc_skb()
[PATCH] com20020 build fix
[PATCH] bonding: lockdep annotation
[PATCH] bcm43xx: Add error checking in bcm43xx_sprom_write()
[PATCH] bcm43xx: Drain TX status before starting IRQs

+32 -4
+5 -2
drivers/net/arcnet/com20020.c
··· 337 } 338 } 339 340 - #ifdef MODULE 341 - 342 EXPORT_SYMBOL(com20020_check); 343 EXPORT_SYMBOL(com20020_found); 344 345 MODULE_LICENSE("GPL"); 346 347 int init_module(void) 348 {
··· 337 } 338 } 339 340 + #if defined(CONFIG_ARCNET_COM20020_PCI_MODULE) || \ 341 + defined(CONFIG_ARCNET_COM20020_ISA_MODULE) 342 EXPORT_SYMBOL(com20020_check); 343 EXPORT_SYMBOL(com20020_found); 344 + #endif 345 346 MODULE_LICENSE("GPL"); 347 + 348 + #ifdef MODULE 349 350 int init_module(void) 351 {
+5
drivers/net/bonding/bond_main.c
··· 4692 return 0; 4693 } 4694 4695 /* Create a new bond based on the specified name and bonding parameters. 4696 * Caller must NOT hold rtnl_lock; we need to release it here before we 4697 * set up our sysfs entries. ··· 4729 if (res < 0) { 4730 goto out_bond; 4731 } 4732 if (newbond) 4733 *newbond = bond_dev->priv; 4734
··· 4692 return 0; 4693 } 4694 4695 + static struct lock_class_key bonding_netdev_xmit_lock_key; 4696 + 4697 /* Create a new bond based on the specified name and bonding parameters. 4698 * Caller must NOT hold rtnl_lock; we need to release it here before we 4699 * set up our sysfs entries. ··· 4727 if (res < 0) { 4728 goto out_bond; 4729 } 4730 + 4731 + lockdep_set_class(&bond_dev->_xmit_lock, &bonding_netdev_xmit_lock_key); 4732 + 4733 if (newbond) 4734 *newbond = bond_dev->priv; 4735
+2
drivers/net/cris/eth_v10.c
··· 509 * does not share cacheline with any other data (to avoid cache bug) 510 */ 511 RxDescList[i].skb = dev_alloc_skb(MAX_MEDIA_DATA_SIZE + 2 * L1_CACHE_BYTES); 512 RxDescList[i].descr.ctrl = 0; 513 RxDescList[i].descr.sw_len = MAX_MEDIA_DATA_SIZE; 514 RxDescList[i].descr.next = virt_to_phys(&RxDescList[i + 1]);
··· 509 * does not share cacheline with any other data (to avoid cache bug) 510 */ 511 RxDescList[i].skb = dev_alloc_skb(MAX_MEDIA_DATA_SIZE + 2 * L1_CACHE_BYTES); 512 + if (!RxDescList[i].skb) 513 + return -ENOMEM; 514 RxDescList[i].descr.ctrl = 0; 515 RxDescList[i].descr.sw_len = MAX_MEDIA_DATA_SIZE; 516 RxDescList[i].descr.next = virt_to_phys(&RxDescList[i + 1]);
+20 -2
drivers/net/wireless/bcm43xx/bcm43xx_main.c
··· 746 if (err) 747 goto err_ctlreg; 748 spromctl |= 0x10; /* SPROM WRITE enable. */ 749 - bcm43xx_pci_write_config32(bcm, BCM43xx_PCICFG_SPROMCTL, spromctl); 750 if (err) 751 goto err_ctlreg; 752 /* We must burn lots of CPU cycles here, but that does not ··· 768 mdelay(20); 769 } 770 spromctl &= ~0x10; /* SPROM WRITE enable. */ 771 - bcm43xx_pci_write_config32(bcm, BCM43xx_PCICFG_SPROMCTL, spromctl); 772 if (err) 773 goto err_ctlreg; 774 mdelay(500); ··· 1460 bcm43xx_pio_handle_xmitstatus(bcm, &stat); 1461 else 1462 bcm43xx_dma_handle_xmitstatus(bcm, &stat); 1463 } 1464 } 1465 ··· 3549 bcm43xx_macfilter_clear(bcm, BCM43xx_MACFILTER_ASSOC); 3550 bcm43xx_macfilter_set(bcm, BCM43xx_MACFILTER_SELF, (u8 *)(bcm->net_dev->dev_addr)); 3551 bcm43xx_security_init(bcm); 3552 ieee80211softmac_start(bcm->net_dev); 3553 3554 /* Let's go! Be careful after enabling the IRQs.
··· 746 if (err) 747 goto err_ctlreg; 748 spromctl |= 0x10; /* SPROM WRITE enable. */ 749 + err = bcm43xx_pci_write_config32(bcm, BCM43xx_PCICFG_SPROMCTL, spromctl); 750 if (err) 751 goto err_ctlreg; 752 /* We must burn lots of CPU cycles here, but that does not ··· 768 mdelay(20); 769 } 770 spromctl &= ~0x10; /* SPROM WRITE enable. */ 771 + err = bcm43xx_pci_write_config32(bcm, BCM43xx_PCICFG_SPROMCTL, spromctl); 772 if (err) 773 goto err_ctlreg; 774 mdelay(500); ··· 1460 bcm43xx_pio_handle_xmitstatus(bcm, &stat); 1461 else 1462 bcm43xx_dma_handle_xmitstatus(bcm, &stat); 1463 + } 1464 + } 1465 + 1466 + static void drain_txstatus_queue(struct bcm43xx_private *bcm) 1467 + { 1468 + u32 dummy; 1469 + 1470 + if (bcm->current_core->rev < 5) 1471 + return; 1472 + /* Read all entries from the microcode TXstatus FIFO 1473 + * and throw them away. 1474 + */ 1475 + while (1) { 1476 + dummy = bcm43xx_read32(bcm, BCM43xx_MMIO_XMITSTAT_0); 1477 + if (!dummy) 1478 + break; 1479 + dummy = bcm43xx_read32(bcm, BCM43xx_MMIO_XMITSTAT_1); 1480 } 1481 } 1482 ··· 3532 bcm43xx_macfilter_clear(bcm, BCM43xx_MACFILTER_ASSOC); 3533 bcm43xx_macfilter_set(bcm, BCM43xx_MACFILTER_SELF, (u8 *)(bcm->net_dev->dev_addr)); 3534 bcm43xx_security_init(bcm); 3535 + drain_txstatus_queue(bcm); 3536 ieee80211softmac_start(bcm->net_dev); 3537 3538 /* Let's go! Be careful after enabling the IRQs.