]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
authorDavid S. Miller <davem@davemloft.net>
Sun, 15 Apr 2012 17:19:04 +0000 (13:19 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sun, 15 Apr 2012 17:19:04 +0000 (13:19 -0400)
Conflicts:
drivers/net/ethernet/atheros/atlx/atl1.c
drivers/net/ethernet/atheros/atlx/atl1.h

Resolved a conflict between a DMA error bug fix and NAPI
support changes in the atl1 driver.

Signed-off-by: David S. Miller <davem@davemloft.net>
1  2 
MAINTAINERS
drivers/net/ethernet/atheros/atlx/atl1.c
drivers/net/ethernet/atheros/atlx/atl1.h
drivers/net/ethernet/atheros/atlx/atlx.c
drivers/net/ethernet/intel/e1000e/ich8lan.c
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
drivers/net/ethernet/realtek/8139cp.c
drivers/net/ethernet/smsc/smsc911x.c
net/ipv6/addrconf.c
net/ipv6/ndisc.c
net/ipv6/route.c

diff --cc MAINTAINERS
Simple merge
index 7f1e498c3c06ce5200dbad0e4d2c38f60f589340,c926857e8205fd79226cc7c0f0a897d7cb65ab88..5d10884e5080fa61722c6a4907b2ef0b3cc7157c
@@@ -2504,69 -2455,72 +2504,69 @@@ static irqreturn_t atl1_intr(int irq, v
        if (!status)
                return IRQ_NONE;
  
 -      do {
 -              /* clear CMB interrupt status at once */
 -              adapter->cmb.cmb->int_stats = 0;
 -
 -              if (status & ISR_GPHY)  /* clear phy status */
 -                      atlx_clear_phy_int(adapter);
 +      /* clear CMB interrupt status at once,
 +       * but leave rx/tx interrupt status in case it should be dropped
 +       * only if rx/tx processing queued. In other case interrupt
 +       * can be lost.
 +       */
 +      adapter->cmb.cmb->int_stats = status & (ISR_CMB_TX | ISR_CMB_RX);
  
 -              /* clear ISR status, and Enable CMB DMA/Disable Interrupt */
 -              iowrite32(status | ISR_DIS_INT, adapter->hw.hw_addr + REG_ISR);
 +      if (status & ISR_GPHY)  /* clear phy status */
 +              atlx_clear_phy_int(adapter);
  
 -              /* check if SMB intr */
 -              if (status & ISR_SMB)
 -                      atl1_inc_smb(adapter);
 +      /* clear ISR status, and Enable CMB DMA/Disable Interrupt */
 +      iowrite32(status | ISR_DIS_INT, adapter->hw.hw_addr + REG_ISR);
  
 -              /* check if PCIE PHY Link down */
 -              if (status & ISR_PHY_LINKDOWN) {
 -                      if (netif_msg_intr(adapter))
 -                              dev_printk(KERN_DEBUG, &adapter->pdev->dev,
 -                                      "pcie phy link down %x\n", status);
 -                      if (netif_running(adapter->netdev)) {   /* reset MAC */
 -                              iowrite32(0, adapter->hw.hw_addr + REG_IMR);
 -                              schedule_work(&adapter->reset_dev_task);
 -                              return IRQ_HANDLED;
 -                      }
 -              }
 +      /* check if SMB intr */
 +      if (status & ISR_SMB)
 +              atl1_inc_smb(adapter);
  
 -              /* check if DMA read/write error ? */
 -              if (status & (ISR_DMAR_TO_RST | ISR_DMAW_TO_RST)) {
 -                      if (netif_msg_intr(adapter))
 -                              dev_printk(KERN_DEBUG, &adapter->pdev->dev,
 -                                      "pcie DMA r/w error (status = 0x%x)\n",
 -                                      status);
 -                      iowrite32(0, adapter->hw.hw_addr + REG_IMR);
 +      /* check if PCIE PHY Link down */
 +      if (status & ISR_PHY_LINKDOWN) {
 +              if (netif_msg_intr(adapter))
 +                      dev_printk(KERN_DEBUG, &adapter->pdev->dev,
 +                              "pcie phy link down %x\n", status);
 +              if (netif_running(adapter->netdev)) {   /* reset MAC */
 +                      atlx_irq_disable(adapter);
-                       schedule_work(&adapter->pcie_dma_to_rst_task);
+                       schedule_work(&adapter->reset_dev_task);
                        return IRQ_HANDLED;
                }
 +      }
  
 -              /* link event */
 -              if (status & ISR_GPHY) {
 -                      adapter->soft_stats.tx_carrier_errors++;
 -                      atl1_check_for_link(adapter);
 -              }
 +      /* check if DMA read/write error ? */
 +      if (status & (ISR_DMAR_TO_RST | ISR_DMAW_TO_RST)) {
 +              if (netif_msg_intr(adapter))
 +                      dev_printk(KERN_DEBUG, &adapter->pdev->dev,
 +                              "pcie DMA r/w error (status = 0x%x)\n",
 +                              status);
 +              atlx_irq_disable(adapter);
-               schedule_work(&adapter->pcie_dma_to_rst_task);
++              schedule_work(&adapter->reset_dev_task);
 +              return IRQ_HANDLED;
 +      }
  
 -              /* transmit event */
 -              if (status & ISR_CMB_TX)
 -                      atl1_intr_tx(adapter);
 -
 -              /* rx exception */
 -              if (unlikely(status & (ISR_RXF_OV | ISR_RFD_UNRUN |
 -                      ISR_RRD_OV | ISR_HOST_RFD_UNRUN |
 -                      ISR_HOST_RRD_OV | ISR_CMB_RX))) {
 -                      if (status & (ISR_RXF_OV | ISR_RFD_UNRUN |
 -                              ISR_RRD_OV | ISR_HOST_RFD_UNRUN |
 -                              ISR_HOST_RRD_OV))
 -                              if (netif_msg_intr(adapter))
 -                                      dev_printk(KERN_DEBUG,
 -                                              &adapter->pdev->dev,
 -                                              "rx exception, ISR = 0x%x\n",
 -                                              status);
 -                      atl1_intr_rx(adapter);
 -              }
 +      /* link event */
 +      if (status & ISR_GPHY) {
 +              adapter->soft_stats.tx_carrier_errors++;
 +              atl1_check_for_link(adapter);
 +      }
  
 -              if (--max_ints < 0)
 -                      break;
 +      /* transmit or receive event */
 +      if (status & (ISR_CMB_TX | ISR_CMB_RX) &&
 +          atl1_sched_rings_clean(adapter))
 +              adapter->cmb.cmb->int_stats = adapter->cmb.cmb->int_stats &
 +                                            ~(ISR_CMB_TX | ISR_CMB_RX);
  
 -      } while ((status = adapter->cmb.cmb->int_stats));
 +      /* rx exception */
 +      if (unlikely(status & (ISR_RXF_OV | ISR_RFD_UNRUN |
 +              ISR_RRD_OV | ISR_HOST_RFD_UNRUN |
 +              ISR_HOST_RRD_OV))) {
 +              if (netif_msg_intr(adapter))
 +                      dev_printk(KERN_DEBUG,
 +                              &adapter->pdev->dev,
 +                              "rx exception, ISR = 0x%x\n",
 +                              status);
 +              atl1_sched_rings_clean(adapter);
 +      }
  
        /* re-enable Interrupt */
        iowrite32(ISR_DIS_SMB | ISR_DIS_DMA, adapter->hw.hw_addr + REG_ISR);
index 1cb658b2ff923eeff3f9277a7fca65f9c3d75d3d,e04bf4d71e4657618655ac94f89da96c5cef96fa..b1fb209b9dd967ff0bcfda9d32410387b5a3d291
@@@ -762,10 -758,8 +762,10 @@@ struct atl1_adapter 
        u16 link_speed;
        u16 link_duplex;
        spinlock_t lock;
 +      struct napi_struct napi;
 +      struct work_struct tx_timeout_task;
+       struct work_struct reset_dev_task;
        struct work_struct link_chg_task;
-       struct work_struct pcie_dma_to_rst_task;
  
        struct timer_list phy_config_timer;
        bool phy_timer_pending;
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge