]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge remote-tracking branch 'net-next/master'
authorStephen Rothwell <sfr@canb.auug.org.au>
Mon, 6 Jan 2014 04:34:14 +0000 (15:34 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Mon, 6 Jan 2014 04:34:14 +0000 (15:34 +1100)
Conflicts:
drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c
net/ipv6/ip6_tunnel.c
net/ipv6/ip6_vti.c

67 files changed:
1  2 
MAINTAINERS
arch/arm64/include/asm/Kbuild
arch/xtensa/include/asm/Kbuild
drivers/bluetooth/ath3k.c
drivers/bluetooth/btusb.c
drivers/net/bonding/bond_3ad.c
drivers/net/can/mscan/mpc5xxx_can.c
drivers/net/ethernet/8390/hydra.c
drivers/net/ethernet/8390/zorro8390.c
drivers/net/ethernet/arc/emac_main.c
drivers/net/ethernet/broadcom/bnx2x/bnx2x_reg.h
drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c
drivers/net/ethernet/broadcom/tg3.c
drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
drivers/net/ethernet/chelsio/cxgb4/sge.c
drivers/net/ethernet/chelsio/cxgb4/t4_hw.c
drivers/net/ethernet/freescale/fec_main.c
drivers/net/ethernet/ibm/ibmveth.c
drivers/net/ethernet/intel/e1000e/netdev.c
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
drivers/net/ethernet/qlogic/netxen/netxen_nic_init.c
drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c
drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
drivers/net/ethernet/ti/cpsw.c
drivers/net/hyperv/netvsc_drv.c
drivers/net/macvlan.c
drivers/net/phy/phy.c
drivers/net/usb/mcs7830.c
drivers/net/virtio_net.c
drivers/net/vxlan.c
drivers/net/wireless/ath/ath9k/ar9002_mac.c
drivers/net/wireless/ath/ath9k/main.c
drivers/net/wireless/rtlwifi/pci.c
drivers/net/xen-netback/common.h
drivers/net/xen-netback/interface.c
drivers/net/xen-netback/netback.c
include/linux/netdevice.h
include/linux/skbuff.h
include/net/sctp/structs.h
include/uapi/linux/pci_regs.h
net/batman-adv/translation-table.c
net/core/dev.c
net/core/neighbour.c
net/ipv4/udp.c
net/ipv6/addrconf.c
net/ipv6/ip6_output.c
net/ipv6/ip6_tunnel.c
net/ipv6/ip6_vti.c
net/ipv6/route.c
net/ipv6/sit.c
net/netfilter/ipvs/ip_vs_nfct.c
net/rose/af_rose.c
net/sched/act_csum.c
net/sched/act_gact.c
net/sched/act_ipt.c
net/sched/act_nat.c
net/sched/act_pedit.c
net/sched/act_police.c
net/sched/act_simple.c
net/sched/act_skbedit.c
net/sctp/outqueue.c
net/tipc/port.c
net/tipc/socket.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 024f8161d2fe1cccd0e97cc2a1eccd67371b8ab4,98b621fb12274d3209957527beffd16a951984fc..1fa383b8b5430743eb71411324c5133adea711e2
@@@ -75,17 -76,22 +76,22 @@@ static int qlcnic_sriov_pf_cal_res_limi
        num_vfs = sriov->num_vfs;
        max = num_vfs + 1;
        info->bit_offsets = 0xffff;
-       info->max_rx_mcast_mac_filters = res->num_rx_mcast_mac_filters;
-       num_vf_macs = QLCNIC_SRIOV_VF_MAX_MAC;
 -      info->max_tx_ques = res->num_tx_queues / max;
+       if (qlcnic_83xx_pf_check(adapter))
+               num_macs = 1;
  
        if (adapter->ahw->pci_func == func) {
-               temp = res->num_rx_mcast_mac_filters - (num_vfs * num_vf_macs);
-               info->max_rx_ucast_mac_filters = temp;
-               temp = res->num_tx_mac_filters - (num_vfs * num_vf_macs);
-               info->max_tx_mac_filters = temp;
                info->min_tx_bw = 0;
                info->max_tx_bw = MAX_BW;
 +              info->max_tx_ques = res->num_tx_queues - sriov->num_vfs;
+               temp = res->num_rx_ucast_mac_filters - num_macs * num_vfs;
+               info->max_rx_ucast_mac_filters = temp;
+               temp = res->num_tx_mac_filters - num_macs * num_vfs;
+               info->max_tx_mac_filters = temp;
+               temp = num_macs * num_vfs * QLCNIC_SRIOV_VF_MAX_MAC;
+               temp = res->num_rx_mcast_mac_filters - temp;
+               info->max_rx_mcast_mac_filters = temp;
        } else {
                id = qlcnic_sriov_func_to_index(adapter, func);
                if (id < 0)
                vp = sriov->vf_info[id].vp;
                info->min_tx_bw = vp->min_tx_bw;
                info->max_tx_bw = vp->max_tx_bw;
-               info->max_rx_ucast_mac_filters = num_vf_macs;
-               info->max_tx_mac_filters = num_vf_macs;
+               info->max_rx_ucast_mac_filters = num_macs;
+               info->max_tx_mac_filters = num_macs;
 +              info->max_tx_ques = QLCNIC_SINGLE_RING;
+               temp = num_macs * QLCNIC_SRIOV_VF_MAX_MAC;
+               info->max_rx_mcast_mac_filters = temp;
        }
  
        info->max_rx_ip_addr = res->num_destip / max;
Simple merge
Simple merge
Simple merge
index 98434b84f0415ef2bfd635ba9dc4bc2f7a9ea762,19da5ab615bd75154afe31bf4164724befab597a..76e8936ab9e463ae3fb86692cf7de85a5528e6c0
@@@ -562,11 -532,11 +532,9 @@@ phy_err
   */
  int phy_start_interrupts(struct phy_device *phydev)
  {
-       int err = 0;
        atomic_set(&phydev->irq_disable, 0);
 -      if (request_irq(phydev->irq, phy_interrupt,
 -                              IRQF_SHARED,
 -                              "phy_interrupt",
 -                              phydev) < 0) {
 +      if (request_irq(phydev->irq, phy_interrupt, 0, "phy_interrupt",
 +                      phydev) < 0) {
                pr_warn("%s: Can't get IRQ %d (PHY)\n",
                        phydev->bus->name, phydev->irq);
                phydev->irq = PHY_POLL;
Simple merge
Simple merge
Simple merge
index a366d6b4626f5fdd0bcf04b1d6b9c6063a70afbd,857ede3a999ca1a902f0a004979503cd3b40c101..741b38ddcb378e8cb17dbfe0f79f33516be75527
@@@ -154,23 -134,11 +155,24 @@@ static bool ar9002_hw_get_isr(struct at
                if ((s5_s & AR_ISR_S5_TIM_TIMER) &&
                    !(pCap->hw_caps & ATH9K_HW_CAP_AUTOSLEEP))
                        *masked |= ATH9K_INT_TIM_TIMER;
 +
 +              if (!(pCap->hw_caps & ATH9K_HW_CAP_RAC_SUPPORTED)) {
 +                      REG_WRITE(ah, AR_ISR_S5, s5_s);
 +                      isr &= ~AR_ISR_GENTMR;
 +              }
        }
  
 +      if (!(pCap->hw_caps & ATH9K_HW_CAP_RAC_SUPPORTED)) {
 +              REG_WRITE(ah, AR_ISR, isr);
 +              REG_READ(ah, AR_ISR);
 +      }
 +
 +      if (AR_SREV_9100(ah))
 +              return true;
 +
        if (sync_cause) {
-               ath9k_debug_sync_cause(common, sync_cause);
+               if (sync_cause_p)
+                       *sync_cause_p = sync_cause;
                fatal_int =
                        (sync_cause &
                         (AR_INTR_SYNC_HOST1_FATAL | AR_INTR_SYNC_HOST1_PERR))
Simple merge
Simple merge
index c47794b9d42f9bfd71d2761a48f8429a8b4633c5,ba30a6d9fefabf225631b731a1ce0fc73ea7653d..c955fc39d69ab6da7f20bae989d39ca0bc77be1e
@@@ -143,20 -136,18 +143,18 @@@ struct xenvif 
        char rx_irq_name[IFNAMSIZ+4]; /* DEVNAME-rx */
        struct xen_netif_rx_back_ring rx;
        struct sk_buff_head rx_queue;
-       /* Allow xenvif_start_xmit() to peek ahead in the rx request
-        * ring.  This is a prediction of what rx_req_cons will be
-        * once all queued skbs are put on the ring.
+       /* Set when the RX interrupt is triggered by the frontend.
+        * The worker thread may need to wake the queue.
         */
-       RING_IDX rx_req_cons_peek;
+       bool rx_event;
  
 -      /* Given MAX_BUFFER_OFFSET of 4096 the worst case is that each
 -       * head/fragment page uses 2 copy operations because it
 -       * straddles two buffers in the frontend.
 -       */
 -      struct gnttab_copy grant_copy_op[2*XEN_NETIF_RX_RING_SIZE];
 -      struct xenvif_rx_meta meta[2*XEN_NETIF_RX_RING_SIZE];
 +      /* This array is allocated seperately as it is large */
 +      struct gnttab_copy *grant_copy_op;
  
 +      /* We create one meta structure per ring request we consume, so
 +       * the maximum number is the same as the ring size.
 +       */
 +      struct xenvif_rx_meta meta[XEN_NETIF_RX_RING_SIZE];
  
        u8               fe_dev_addr[6];
  
Simple merge
index 78425554a537579b01378b99295913c1706f0b0a,611aebee4583679f4377658b65691a4e8fd0e29e..4f81ac0e2f0a718abc260df3ba4bb70732dde3c5
@@@ -606,9 -522,9 +522,9 @@@ static void xenvif_rx_action(struct xen
        BUG_ON(npo.meta_prod > ARRAY_SIZE(vif->meta));
  
        if (!npo.copy_prod)
-               return;
+               goto done;
  
 -      BUG_ON(npo.copy_prod > ARRAY_SIZE(vif->grant_copy_op));
 +      BUG_ON(npo.copy_prod > MAX_GRANT_COPY_OPS);
        gnttab_batch_copy(vif->grant_copy_op, npo.copy_prod);
  
        while ((skb = __skb_dequeue(&rxq)) != NULL) {
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/core/dev.c
Simple merge
Simple merge
diff --cc net/ipv4/udp.c
Simple merge
Simple merge
Simple merge
index 7881965a824840a763a7e1183efcf21153f87b47,02894216a46d5f594ab73b11ef6a44cd0712f292..1e5e2404f1af51c4d230ac91817bb5805f62b856
@@@ -103,25 -101,17 +101,26 @@@ struct ip6_tnl_net 
  
  static struct net_device_stats *ip6_get_stats(struct net_device *dev)
  {
-       struct pcpu_tstats tmp, sum = { 0 };
 -      struct pcpu_sw_netstats sum = { 0 };
++      struct pcpu_sw_netstats tmp, sum = { 0 };
        int i;
  
        for_each_possible_cpu(i) {
-               const struct pcpu_tstats *tstats = per_cpu_ptr(dev->tstats, i);
 +              unsigned int start;
+               const struct pcpu_sw_netstats *tstats =
+                                                  per_cpu_ptr(dev->tstats, i);
  
 -              sum.rx_packets += tstats->rx_packets;
 -              sum.rx_bytes   += tstats->rx_bytes;
 -              sum.tx_packets += tstats->tx_packets;
 -              sum.tx_bytes   += tstats->tx_bytes;
 +              do {
 +                      start = u64_stats_fetch_begin_bh(&tstats->syncp);
 +                      tmp.rx_packets = tstats->rx_packets;
 +                      tmp.rx_bytes = tstats->rx_bytes;
 +                      tmp.tx_packets = tstats->tx_packets;
 +                      tmp.tx_bytes =  tstats->tx_bytes;
 +              } while (u64_stats_fetch_retry_bh(&tstats->syncp, start));
 +
 +              sum.rx_packets += tmp.rx_packets;
 +              sum.rx_bytes   += tmp.rx_bytes;
 +              sum.tx_packets += tmp.tx_packets;
 +              sum.tx_bytes   += tmp.tx_bytes;
        }
        dev->stats.rx_packets = sum.rx_packets;
        dev->stats.rx_bytes   = sum.rx_bytes;
Simple merge
Simple merge
diff --cc net/ipv6/sit.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/tipc/port.c
Simple merge
Simple merge