Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 9 Oct 2014 01:40:54 +0000 (21:40 -0400)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 9 Oct 2014 01:40:54 +0000 (21:40 -0400)
Pull networking updates from David Miller:
 "Most notable changes in here:

   1) By far the biggest accomplishment, thanks to a large range of
      contributors, is the addition of multi-send for transmit.  This is
      the result of discussions back in Chicago, and the hard work of
      several individuals.

      Now, when the ->ndo_start_xmit() method of a driver sees
      skb->xmit_more as true, it can choose to defer the doorbell
      telling the driver to start processing the new TX queue entires.

      skb->xmit_more means that the generic networking is guaranteed to
      call the driver immediately with another SKB to send.

      There is logic added to the qdisc layer to dequeue multiple
      packets at a time, and the handling mis-predicted offloads in
      software is now done with no locks held.

      Finally, pktgen is extended to have a "burst" parameter that can
      be used to test a multi-send implementation.

      Several drivers have xmit_more support: i40e, igb, ixgbe, mlx4,
      virtio_net

      Adding support is almost trivial, so export more drivers to
      support this optimization soon.

      I want to thank, in no particular or implied order, Jesper
      Dangaard Brouer, Eric Dumazet, Alexander Duyck, Tom Herbert, Jamal
      Hadi Salim, John Fastabend, Florian Westphal, Daniel Borkmann,
      David Tat, Hannes Frederic Sowa, and Rusty Russell.

   2) PTP and timestamping support in bnx2x, from Michal Kalderon.

   3) Allow adjusting the rx_copybreak threshold for a driver via
      ethtool, and add rx_copybreak support to enic driver.  From
      Govindarajulu Varadarajan.

   4) Significant enhancements to the generic PHY layer and the bcm7xxx
      driver in particular (EEE support, auto power down, etc.) from
      Florian Fainelli.

   5) Allow raw buffers to be used for flow dissection, allowing drivers
      to determine the optimal "linear pull" size for devices that DMA
      into pools of pages.  The objective is to get exactly the
      necessary amount of headers into the linear SKB area pre-pulled,
      but no more.  The new interface drivers use is eth_get_headlen().
      From WANG Cong, with driver conversions (several had their own
      by-hand duplicated implementations) by Alexander Duyck and Eric
      Dumazet.

   6) Support checksumming more smoothly and efficiently for
      encapsulations, and add "foo over UDP" facility.  From Tom
      Herbert.

   7) Add Broadcom SF2 switch driver to DSA layer, from Florian
      Fainelli.

   8) eBPF now can load programs via a system call and has an extensive
      testsuite.  Alexei Starovoitov and Daniel Borkmann.

   9) Major overhaul of the packet scheduler to use RCU in several major
      areas such as the classifiers and rate estimators.  From John
      Fastabend.

  10) Add driver for Intel FM10000 Ethernet Switch, from Alexander
      Duyck.

  11) Rearrange TCP_SKB_CB() to reduce cache line misses, from Eric
      Dumazet.

  12) Add Datacenter TCP congestion control algorithm support, From
      Florian Westphal.

  13) Reorganize sk_buff so that __copy_skb_header() is significantly
      faster.  From Eric Dumazet"

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1558 commits)
  netlabel: directly return netlbl_unlabel_genl_init()
  net: add netdev_txq_bql_{enqueue, complete}_prefetchw() helpers
  net: description of dma_cookie cause make xmldocs warning
  cxgb4: clean up a type issue
  cxgb4: potential shift wrapping bug
  i40e: skb->xmit_more support
  net: fs_enet: Add NAPI TX
  net: fs_enet: Remove non NAPI RX
  r8169:add support for RTL8168EP
  net_sched: copy exts->type in tcf_exts_change()
  wimax: convert printk to pr_foo()
  af_unix: remove 0 assignment on static
  ipv6: Do not warn for informational ICMP messages, regardless of type.
  Update Intel Ethernet Driver maintainers list
  bridge: Save frag_max_size between PRE_ROUTING and POST_ROUTING
  tipc: fix bug in multicast congestion handling
  net: better IFF_XMIT_DST_RELEASE support
  net/mlx4_en: remove NETDEV_TX_BUSY
  3c59x: fix bad split of cpu_to_le32(pci_map_single())
  net: bcmgenet: fix Tx ring priority programming
  ...

30 files changed:
1  2 
Documentation/networking/filter.txt
Documentation/networking/ip-sysctl.txt
Documentation/networking/timestamping/Makefile
MAINTAINERS
arch/arm/boot/dts/am33xx.dtsi
arch/arm/boot/dts/imx6sx.dtsi
arch/arm/boot/dts/rk3188-radxarock.dts
arch/arm/boot/dts/rk3188.dtsi
arch/arm/boot/dts/rk3xxx.dtsi
drivers/net/ethernet/mellanox/mlx4/cmd.c
drivers/net/ethernet/qlogic/qlcnic/qlcnic_hw.c
drivers/net/wireless/libertas/cfg.c
drivers/staging/rtl8723au/core/rtw_mlme_ext.c
drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c
include/linux/skbuff.h
include/linux/tcp.h
include/net/sock.h
include/net/tcp.h
kernel/sys_ni.c
lib/rhashtable.c
net/core/dev.c
net/core/sock.c
net/dccp/proto.c
net/ipv4/sysctl_net_ipv4.c
net/ipv4/tcp.c
net/ipv4/tcp_input.c
net/ipv4/tcp_ipv4.c
net/ipv6/tcp_ipv6.c
net/mac802154/wpan.c
net/netfilter/ipset/ip_set_core.c

Simple merge
index 52ac67da931516873f3039613ff139c1d7b5d6bd,95e239c7007646cec7e3ee8646926a02af89f0ff..8c20dfaa4d6ee91341ac782179127274e8abde61
@@@ -1,8 -1,20 +1,14 @@@
 -# kbuild trick to avoid linker error. Can be omitted if a module is built.
 -obj- := dummy.o
 -
+ # To compile, from the source root
+ #
+ #    make headers_install
+ #    make M=documentation
  # List of programs to build
- hostprogs-y := hwtstamp_config timestamping
 -hostprogs-y := timestamping txtimestamp hwtstamp_config
++hostprogs-y := hwtstamp_config timestamping txtimestamp
  
  # Tell kbuild to always build the programs
  always := $(hostprogs-y)
  
  HOSTCFLAGS_timestamping.o += -I$(objtree)/usr/include
+ HOSTCFLAGS_txtimestamp.o += -I$(objtree)/usr/include
  HOSTCFLAGS_hwtstamp_config.o += -I$(objtree)/usr/include
 -
 -clean:
 -      rm -f timestamping txtimestamp hwtstamp_config
diff --cc MAINTAINERS
Simple merge
index abe530f7029634e715a7392b40cab387b4d2abfa,13e44b0f5adc202a822516b6174fa91b219c7869..831810583823b78f735a11b354c715461f376401
                        };
                };
  
+               cm: syscon@44e10000 {
+                       compatible = "ti,am33xx-controlmodule", "syscon";
+                       reg = <0x44e10000 0x800>;
+               };
                intc: interrupt-controller@48200000 {
 -                      compatible = "ti,omap2-intc";
 +                      compatible = "ti,am33xx-intc";
                        interrupt-controller;
                        #interrupt-cells = <1>;
 -                      ti,intc-size = <128>;
                        reg = <0x48200000 0x1000>;
                };
  
Simple merge
index 39f66e349445b400dab2fe6e02d4c1decacd8c1e,d63d685ea6cc9614ede71e7fbcd5755931036311..15910c9ddbc7c6cb33c30904a4107b387693e132
                startup-delay-us = <100000>;
                vin-supply = <&vcc_io>;
        };
 +
 +      vcc_host: usb-host-regulator {
 +              compatible = "regulator-fixed";
 +              enable-active-high;
 +              gpio = <&gpio0 3 GPIO_ACTIVE_HIGH>;
 +              pinctrl-names = "default";
 +              pinctrl-0 = <&host_vbus_drv>;
 +              regulator-name = "host-pwr";
 +              regulator-min-microvolt = <5000000>;
 +              regulator-max-microvolt = <5000000>;
 +              regulator-always-on;
 +              regulator-boot-on;
 +      };
  };
  
+ &emac {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&emac_xfer>, <&emac_mdio>, <&phy_int>;
+       phy = <&phy0>;
+       phy-supply = <&vcc_rmii>;
+       phy0: ethernet-phy@0 {
+               reg = <0>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
+       };
+ };
  &i2c1 {
        status = "okay";
        clock-frequency = <400000>;
                };
        };
  
 +      hym8563 {
 +              rtc_int: rtc-int {
 +                      rockchip,pins = <RK_GPIO0 0 RK_FUNC_GPIO &pcfg_pull_up>;
 +              };
 +      };
 +
+       lan8720a  {
+               phy_int: phy-int {
+                       rockchip,pins = <RK_GPIO3 26 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
        ir-receiver {
                ir_recv_pin: ir-recv-pin {
                        rockchip,pins = <RK_GPIO0 10 RK_FUNC_GPIO &pcfg_pull_none>;
index 82732f5249b27161931809836719368863ea4047,7f25bc51f2ee17ae365fa065024bd48764a5ecbd..ddaada788b4584429840953311cd806a7c2cff19
                        bias-disable;
                };
  
 +              emmc {
 +                      emmc_clk: emmc-clk {
 +                              rockchip,pins = <RK_GPIO0 24 RK_FUNC_2 &pcfg_pull_none>;
 +                      };
 +
 +                      emmc_cmd: emmc-cmd {
 +                              rockchip,pins = <RK_GPIO0 26 RK_FUNC_2 &pcfg_pull_up>;
 +                      };
 +
 +                      emmc_rst: emmc-rst {
 +                              rockchip,pins = <RK_GPIO0 27 RK_FUNC_2 &pcfg_pull_none>;
 +                      };
 +
 +                      /*
 +                       * The data pins are shared between nandc and emmc and
 +                       * not accessible through pinctrl. Also they should've
 +                       * been already set correctly by firmware, as
 +                       * flash/emmc is the boot-device.
 +                       */
 +              };
 +
+               emac {
+                       emac_xfer: emac-xfer {
+                               rockchip,pins = <RK_GPIO3 16 RK_FUNC_2 &pcfg_pull_none>, /* tx_en */
+                                               <RK_GPIO3 17 RK_FUNC_2 &pcfg_pull_none>, /* txd1 */
+                                               <RK_GPIO3 18 RK_FUNC_2 &pcfg_pull_none>, /* txd0 */
+                                               <RK_GPIO3 19 RK_FUNC_2 &pcfg_pull_none>, /* rxd0 */
+                                               <RK_GPIO3 20 RK_FUNC_2 &pcfg_pull_none>, /* rxd1 */
+                                               <RK_GPIO3 21 RK_FUNC_2 &pcfg_pull_none>, /* mac_clk */
+                                               <RK_GPIO3 22 RK_FUNC_2 &pcfg_pull_none>, /* rx_err */
+                                               <RK_GPIO3 23 RK_FUNC_2 &pcfg_pull_none>; /* crs_dvalid */
+                       };
+                       emac_mdio: emac-mdio {
+                               rockchip,pins = <RK_GPIO3 24 RK_FUNC_2 &pcfg_pull_none>,
+                                               <RK_GPIO3 25 RK_FUNC_2 &pcfg_pull_none>;
+                       };
+               };
                i2c0 {
                        i2c0_xfer: i2c0-xfer {
                                rockchip,pins = <RK_GPIO1 24 RK_FUNC_1 &pcfg_pull_none>,
index 7332d12eb565a43822b5cfcaa9e4023c3fca7770,208b1df6bcb0789b4d8418677466848e4a58de4b..499468d42adac51007f6c663c6b2e0e64cd67ef6
                status = "disabled";
        };
  
 +      usb_otg: usb@10180000 {
 +              compatible = "rockchip,rk3066-usb", "snps,dwc2";
 +              reg = <0x10180000 0x40000>;
 +              interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
 +              clocks = <&cru HCLK_OTG0>;
 +              clock-names = "otg";
 +              status = "disabled";
 +      };
 +
 +      usb_host: usb@101c0000 {
 +              compatible = "snps,dwc2";
 +              reg = <0x101c0000 0x40000>;
 +              interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
 +              clocks = <&cru HCLK_OTG1>;
 +              clock-names = "otg";
 +              status = "disabled";
 +      };
 +
+       emac: ethernet@10204000 {
+               compatible = "snps,arc-emac";
+               reg = <0x10204000 0x3c>;
+               interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               rockchip,grf = <&grf>;
+               clocks = <&cru HCLK_EMAC>, <&cru SCLK_MAC>;
+               clock-names = "hclk", "macref";
+               max-speed = <100>;
+               phy-mode = "rmii";
+               status = "disabled";
+       };
        mmc0: dwmmc@10214000 {
                compatible = "rockchip,rk2928-dw-mshc";
                reg = <0x10214000 0x1000>;
Simple merge
index a17ba0881afb241b9055c96ff35ff8578ad00903,776104ba02ce436efa3e0d13e03f075e018ad86b..3ab0749d6875c5032b12d3188b8420ac97797c8e
@@@ -577,11 -588,40 +587,37 @@@ struct sk_buff 
        __u8                    encap_hdr_csum:1;
        __u8                    csum_valid:1;
        __u8                    csum_complete_sw:1;
-       /* 2/4 bit hole (depending on ndisc_nodetype presence) */
-       kmemcheck_bitfield_end(flags2);
+       __u8                    csum_level:2;
+       __u8                    csum_bad:1;
+ #ifdef CONFIG_IPV6_NDISC_NODETYPE
+       __u8                    ndisc_nodetype:2;
+ #endif
+       __u8                    ipvs_property:1;
+       __u8                    inner_protocol_type:1;
+       /* 4 or 6 bit hole */
+ #ifdef CONFIG_NET_SCHED
+       __u16                   tc_index;       /* traffic control index */
+ #ifdef CONFIG_NET_CLS_ACT
+       __u16                   tc_verd;        /* traffic control verdict */
+ #endif
+ #endif
  
 -#if defined CONFIG_NET_DMA || defined CONFIG_NET_RX_BUSY_POLL
 -      union {
 -              unsigned int    napi_id;
 -              dma_cookie_t    dma_cookie;
 -      };
+       union {
+               __wsum          csum;
+               struct {
+                       __u16   csum_start;
+                       __u16   csum_offset;
+               };
+       };
+       __u32                   priority;
+       int                     skb_iif;
+       __u32                   hash;
+       __be16                  vlan_proto;
+       __u16                   vlan_tci;
 +#ifdef CONFIG_NET_RX_BUSY_POLL
 +      unsigned int    napi_id;
  #endif
  #ifdef CONFIG_NETWORK_SECMARK
        __u32                   secmark;
Simple merge
Simple merge
Simple merge
diff --cc kernel/sys_ni.c
Simple merge
Simple merge
diff --cc net/core/dev.c
Simple merge
diff --cc net/core/sock.c
Simple merge
Simple merge
Simple merge
diff --cc net/ipv4/tcp.c
index 8ee43ae90396f45f0cd08118d19f985439543cef,26a6f113f00c3f803ac4b4051cbbdbfcfe81aae9..461003d258ba4030b1a8aa1c49930b7a1ac94b9c
@@@ -1551,8 -1585,8 +1551,8 @@@ int tcp_read_sock(struct sock *sk, read
                        if (offset + 1 != skb->len)
                                continue;
                }
-               if (tcp_hdr(skb)->fin) {
+               if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_FIN) {
 -                      sk_eat_skb(sk, skb, false);
 +                      sk_eat_skb(sk, skb);
                        ++seq;
                        break;
                }
@@@ -1857,10 -1959,12 +1857,10 @@@ skip_copy
                if (used + offset < skb->len)
                        continue;
  
-               if (tcp_hdr(skb)->fin)
+               if (TCP_SKB_CB(skb)->tcp_flags & TCPHDR_FIN)
                        goto found_fin_ok;
 -              if (!(flags & MSG_PEEK)) {
 -                      sk_eat_skb(sk, skb, copied_early);
 -                      copied_early = false;
 -              }
 +              if (!(flags & MSG_PEEK))
 +                      sk_eat_skb(sk, skb);
                continue;
  
        found_fin_ok:
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge