1. 21 6月, 2017 16 次提交
  2. 13 6月, 2017 20 次提交
  3. 12 6月, 2017 4 次提交
    • D
      Merge tag 'wireless-drivers-next-for-davem-2017-06-12' of... · 63a2f310
      David S. Miller 提交于
      Merge tag 'wireless-drivers-next-for-davem-2017-06-12' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next
      
      Kalle Valo says:
      
      ====================
      wireless-drivers-next patches for 4.13
      
      The first pull request for 4.13. We have a new driver qtnfmac, but
      also rsi driver got a support for new firmware and supporting ath10k
      SDIO devices was started.
      
      Major changes:
      
      ath10k
      
      * add initial SDIO support (still work in progress)
      
      rsi
      
      * new loading for the new firmware version
      
      rtlwifi
      
      * final patches for the new btcoex support
      
      rt2x00
      
      * add device ID for Epson WN7512BEP
      
      qtnfmac
      
      * new driver for Quantenna QSR10G chipsets
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      63a2f310
    • D
      Merge branch 'udp-reduce-cache-pressure' · 073cf9e2
      David S. Miller 提交于
      Paolo Abeni says:
      
      ====================
      udp: reduce cache pressure
      
      In the most common use case, many skb fields are not used by recvmsg(), and
      the few ones actually accessed lays on cold cachelines, which leads to several
      cache miss per packet.
      
      This patch series attempts to reduce such misses with different strategies:
      * caching the interesting fields in the scratched space
      * avoid accessing at all uninteresting fields
      * prefetching
      
      Tested using the udp_sink program by Jesper[1] as the receiver, an h/w l4 rx
      hash on the ingress nic, so that the number of ingress nic rx queues hit by the
      udp traffic could be controlled via ethtool -L.
      
      The udp_sink program was bound to the first idle cpu, to get more
      stable numbers.
      
      On a single numa node receiver:
      
      nic rx queues           vanilla                 patched kernel      delta
      1                       1850 kpps               1850 kpps           0%
      2                       2370 kpps               2700 kpps           13.9%
      16                      2000 kpps               2220 kpps           11%
      
      [1] https://github.com/netoptimizer/network-testing/blob/master/src/udp_sink.c
      
      v1 -> v2:
        - replaced secpath_reset() with skb_release_head_state()
        - changed udp_dev_scratch fields types to u{32,16} variant,
          replaced bitfield with bool
      
      v2 -> v3:
        - no changes, tested against apachebench for performances regression
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      073cf9e2
    • P
      udp: try to avoid 2 cache miss on dequeue · b65ac446
      Paolo Abeni 提交于
      when udp_recvmsg() is executed, on x86_64 and other archs, most skb
      fields are on cold cachelines.
      If the skb are linear and the kernel don't need to compute the udp
      csum, only a handful of skb fields are required by udp_recvmsg().
      Since we already use skb->dev_scratch to cache hot data, and
      there are 32 bits unused on 64 bit archs, use such field to cache
      as much data as we can, and try to prefetch on dequeue the relevant
      fields that are left out.
      
      This can save up to 2 cache miss per packet.
      
      v1 -> v2:
        - changed udp_dev_scratch fields types to u{32,16} variant,
          replaced bitfiled with bool
      Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
      Acked-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b65ac446
    • P
      udp: avoid a cache miss on dequeue · 0a463c78
      Paolo Abeni 提交于
      Since UDP no more uses sk->destructor, we can clear completely
      the skb head state before enqueuing. Amend and use
      skb_release_head_state() for that.
      
      All head states share a single cacheline, which is not
      normally used/accesses on dequeue. We can avoid entirely accessing
      such cacheline implementing and using in the UDP code a specialized
      skb free helper which ignores the skb head state.
      
      This saves a cacheline miss at skb deallocation time.
      
      v1 -> v2:
        replaced secpath_reset() with skb_release_head_state()
      Signed-off-by: NPaolo Abeni <pabeni@redhat.com>
      Acked-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0a463c78