1. 08 10月, 2015 2 次提交
  2. 05 10月, 2015 2 次提交
  3. 30 9月, 2015 3 次提交
    • A
      mac802154: check on len instead mac_len · 5f2ebb3b
      Alexander Aring 提交于
      This patch change the length check to len instead of mac_len for
      checking if the frame control field is available to dereference.
      We need to change it because I saw issues with af_packet raw sockets
      and the mrf24j40 which calls this functionality. The raw socket
      functionality doesn't set the mac_len but resets the skb_mac_header to
      skb->data which is still correct. The issue occur at mrf24j40 only,
      because the driver need to evaluate the fc fields.
      Signed-off-by: NAlexander Aring <alex.aring@gmail.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      5f2ebb3b
    • A
      nl802154: add support for security layer · a26c5fd7
      Alexander Aring 提交于
      This patch adds support for accessing mac802154 llsec implementation
      over nl802154. I added for a new Kconfig entry to provide this
      functionality CONFIG_IEEE802154_NL802154_EXPERIMENTAL. This interface is
      still in development. It provides to change security parameters and
      add/del/dump entries of security tables. Later we can add also a get to
      get an entry by unique identifier.
      
      Cc: Phoebe Buckheister <phoebe.buckheister@itwm.fraunhofer.de>
      Signed-off-by: NAlexander Aring <alex.aring@gmail.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      a26c5fd7
    • A
      netlink: add nla_get for le32 and le64 · c648a013
      Alexander Aring 提交于
      This patch adds missing inline wrappers for nla_get_le32 and
      nla_get_le64. The 802.15.4 MAC byteorder is little endian and we keep
      the byteorder for fields like address configuration in the same
      byteorder as it comes from the MAC layer.
      
      To provide these fields for nl802154 userspace applications, we need
      these inline wrappers for netlink.
      
      Cc: David S. Miller <davem@davemloft.net>
      Signed-off-by: NAlexander Aring <alex.aring@gmail.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      c648a013
  4. 29 9月, 2015 1 次提交
  5. 24 9月, 2015 1 次提交
  6. 22 9月, 2015 5 次提交
    • A
      ieee802154: change needed headroom/tailroom · 87a93e4e
      Alexander Aring 提交于
      This patch cleanups needed_headroom, needed_tailroom and hard_header_len
      fields for wpan and lowpan interfaces.
      
      For wpan interfaces the worst case mac header len should be part of
      needed_headroom, currently this is set as hard_header_len, but
      hard_header_len should be set to the minimum header length which xmit
      call assumes and this is the minimum frame length of 802.15.4.
      The hard_header_len value will check inside send callbacl of AF_PACKET
      raw sockets.
      
      For lowpan interfaces, if fragmentation isn't needed the skb will
      call dev_hard_header for 802154 layer and queue it afterwards. This
      happens without new skb allocation, so we need the same headroom and
      tailroom lengths like 802154 inside 802154 6lowpan layer. At least we
      assume as minimum header length an ipv6 header size.
      Signed-off-by: NAlexander Aring <alex.aring@gmail.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      87a93e4e
    • A
      ieee802154: introduce wpan_dev_header_ops · 838b83d6
      Alexander Aring 提交于
      The current header_ops callback structure of net device are used mostly
      from 802.15.4 upper-layers. Because this callback structure is a very
      generic one, which is also used by e.g. DGRAM AF_PACKET sockets, we
      can't make this callback structure 802.15.4 specific which is currently
      is.
      
      I saw the smallest "constraint" for calling this callback with
      dev_hard_header/dev_parse_header by AF_PACKET which assign a 8 byte
      array for address void pointers. Currently 802.15.4 specific protocols
      like af802154 and 6LoWPAN will assign the "struct ieee802154_addr" as
      these parameters which is greater than 8 bytes. The current callback
      implementation for header_ops.create assumes always a complete
      "struct ieee802154_addr" which AF_PACKET can't never handled and is
      greater than 8 bytes.
      
      For that reason we introduce now a "generic" create/parse header_ops
      callback which allows handling with intra-pan extended addresses only.
      This allows a small use-case with AF_PACKET to send "somehow" a valid
      dataframe over DGRAM.
      
      To keeping the current dev_hard_header behaviour we introduce a similar
      callback structure "wpan_dev_header_ops" which contains 802.15.4 specific
      upper-layer header creation functionality, which can be called by
      wpan_dev_hard_header.
      Signed-off-by: NAlexander Aring <alex.aring@gmail.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      838b83d6
    • A
      ieee802154: header_ops: fix frame control setting · a1da67b8
      Alexander Aring 提交于
      Sometimes upper-layer protocols wants to generate a new mac header by
      filling "struct ieee802154_hdr" only. These upper-layers sets for the
      address settings the source and dest fields, but not the fc fields for
      indicate the source and dest address mode. This patch changes the
      "ieee802154_hdr_push" function so the fc address fields are set
      according the source and dest fields of "struct ieee802154_hdr".
      Signed-off-by: NAlexander Aring <alex.aring@gmail.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      a1da67b8
    • Y
      tcp: usec resolution SYN/ACK RTT · 0f1c28ae
      Yuchung Cheng 提交于
      Currently SYN/ACK RTT is measured in jiffies. For LAN the SYN/ACK
      RTT is often measured as 0ms or sometimes 1ms, which would affect
      RTT estimation and min RTT samping used by some congestion control.
      
      This patch improves SYN/ACK RTT to be usec resolution if platform
      supports it. While the timestamping of SYN/ACK is done in request
      sock, the RTT measurement is carefully arranged to avoid storing
      another u64 timestamp in tcp_sock.
      
      For regular handshake w/o SYNACK retransmission, the RTT is sampled
      right after the child socket is created and right before the request
      sock is released (tcp_check_req() in tcp_minisocks.c)
      
      For Fast Open the child socket is already created when SYN/ACK was
      sent, the RTT is sampled in tcp_rcv_state_process() after processing
      the final ACK an right before the request socket is released.
      
      If the SYN/ACK was retransmistted or SYN-cookie was used, we rely
      on TCP timestamps to measure the RTT. The sample is taken at the
      same place in tcp_rcv_state_process() after the timestamp values
      are validated in tcp_validate_incoming(). Note that we do not store
      TS echo value in request_sock for SYN-cookies, because the value
      is already stored in tp->rx_opt used by tcp_ack_update_rtt().
      
      One side benefit is that the RTT measurement now happens before
      initializing congestion control (of the passive side). Therefore
      the congestion control can use the SYN/ACK RTT.
      Signed-off-by: NYuchung Cheng <ycheng@google.com>
      Signed-off-by: NNeal Cardwell <ncardwell@google.com>
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0f1c28ae
    • U
      s390/iucv: do not use arrays as argument · 91e60eb6
      Ursula Braun 提交于
      The iucv code uses arrays as arguments. Even though this does not
      really cause a problem, it could be misleading, since the compiler
      turns array arguments into just a pointer argument. To be more
      precise this patch changes the array arguments into pointers.
      Signed-off-by: NUrsula Braun <ursula.braun@de.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      91e60eb6
  7. 18 9月, 2015 7 次提交
    • S
      Bluetooth: Add BT_ERR_RATELIMITED · e781b7f7
      Szymon Janc 提交于
      This patch adds ratelimited version of the BT_ERR macro.
      Signed-off-by: NSzymon Janc <ext.szymon.janc@tieto.com>
      Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
      e781b7f7
    • A
      bpf: add bpf_redirect() helper · 27b29f63
      Alexei Starovoitov 提交于
      Existing bpf_clone_redirect() helper clones skb before redirecting
      it to RX or TX of destination netdev.
      Introduce bpf_redirect() helper that does that without cloning.
      
      Benchmarked with two hosts using 10G ixgbe NICs.
      One host is doing line rate pktgen.
      Another host is configured as:
      $ tc qdisc add dev $dev ingress
      $ tc filter add dev $dev root pref 10 u32 match u32 0 0 flowid 1:2 \
         action bpf run object-file tcbpf1_kern.o section clone_redirect_xmit drop
      so it receives the packet on $dev and immediately xmits it on $dev + 1
      The section 'clone_redirect_xmit' in tcbpf1_kern.o file has the program
      that does bpf_clone_redirect() and performance is 2.0 Mpps
      
      $ tc filter add dev $dev root pref 10 u32 match u32 0 0 flowid 1:2 \
         action bpf run object-file tcbpf1_kern.o section redirect_xmit drop
      which is using bpf_redirect() - 2.4 Mpps
      
      and using cls_bpf with integrated actions as:
      $ tc filter add dev $dev root pref 10 \
        bpf run object-file tcbpf1_kern.o section redirect_xmit integ_act classid 1
      performance is 2.5 Mpps
      
      To summarize:
      u32+act_bpf using clone_redirect - 2.0 Mpps
      u32+act_bpf using redirect - 2.4 Mpps
      cls_bpf using redirect - 2.5 Mpps
      
      For comparison linux bridge in this setup is doing 2.1 Mpps
      and ixgbe rx + drop in ip_rcv - 7.8 Mpps
      Signed-off-by: NAlexei Starovoitov <ast@plumgrid.com>
      Acked-by: NDaniel Borkmann <daniel@iogearbox.net>
      Acked-by: NJohn Fastabend <john.r.fastabend@intel.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      27b29f63
    • D
      cls_bpf: introduce integrated actions · 045efa82
      Daniel Borkmann 提交于
      Often cls_bpf classifier is used with single action drop attached.
      Optimize this use case and let cls_bpf return both classid and action.
      For backwards compatibility reasons enable this feature under
      TCA_BPF_FLAG_ACT_DIRECT flag.
      
      Then more interesting programs like the following are easier to write:
      int cls_bpf_prog(struct __sk_buff *skb)
      {
        /* classify arp, ip, ipv6 into different traffic classes
         * and drop all other packets
         */
        switch (skb->protocol) {
        case htons(ETH_P_ARP):
          skb->tc_classid = 1;
          break;
        case htons(ETH_P_IP):
          skb->tc_classid = 2;
          break;
        case htons(ETH_P_IPV6):
          skb->tc_classid = 3;
          break;
        default:
          return TC_ACT_SHOT;
        }
      
        return TC_ACT_OK;
      }
      
      Joint work with Daniel Borkmann.
      Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
      Signed-off-by: NAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      045efa82
    • E
      tcp: provide skb->hash to synack packets · 58d607d3
      Eric Dumazet 提交于
      In commit b73c3d0e ("net: Save TX flow hash in sock and set in skbuf
      on xmit"), Tom provided a l4 hash to most outgoing TCP packets.
      
      We'd like to provide one as well for SYNACK packets, so that all packets
      of a given flow share same txhash, to later enable bonding driver to
      also use skb->hash to perform slave selection.
      
      Note that a SYNACK retransmit shuffles the tx hash, as Tom did
      in commit 265f94ff ("net: Recompute sk_txhash on negative routing
      advice") for established sockets.
      
      This has nice effect making TCP flows resilient to some kind of black
      holes, even at connection establish phase.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Cc: Tom Herbert <tom@herbertland.com>
      Cc: Mahesh Bandewar <maheshb@google.com>
      Acked-by: NTom Herbert <tom@herbertland.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      58d607d3
    • E
      netfilter: Pass net into okfn · 0c4b51f0
      Eric W. Biederman 提交于
      This is immediately motivated by the bridge code that chains functions that
      call into netfilter.  Without passing net into the okfns the bridge code would
      need to guess about the best expression for the network namespace to process
      packets in.
      
      As net is frequently one of the first things computed in continuation functions
      after netfilter has done it's job passing in the desired network namespace is in
      many cases a code simplification.
      
      To support this change the function dst_output_okfn is introduced to
      simplify passing dst_output as an okfn.  For the moment dst_output_okfn
      just silently drops the struct net.
      Signed-off-by: N"Eric W. Biederman" <ebiederm@xmission.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0c4b51f0
    • E
      net: Merge dst_output and dst_output_sk · 5a70649e
      Eric W. Biederman 提交于
      Add a sock paramter to dst_output making dst_output_sk superfluous.
      Add a skb->sk parameter to all of the callers of dst_output
      Have the callers of dst_output_sk call dst_output.
      Signed-off-by: N"Eric W. Biederman" <ebiederm@xmission.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5a70649e
    • E
      a6568b24
  8. 17 9月, 2015 6 次提交
  9. 16 9月, 2015 2 次提交
  10. 10 9月, 2015 1 次提交
    • P
      net: ipv6: use common fib_default_rule_pref · f53de1e9
      Phil Sutter 提交于
      This switches IPv6 policy routing to use the shared
      fib_default_rule_pref() function of IPv4 and DECnet. It is also used in
      multicast routing for IPv4 as well as IPv6.
      
      The motivation for this patch is a complaint about iproute2 behaving
      inconsistent between IPv4 and IPv6 when adding policy rules: Formerly,
      IPv6 rules were assigned a fixed priority of 0x3FFF whereas for IPv4 the
      assigned priority value was decreased with each rule added.
      
      Since then all users of the default_pref field have been converted to
      assign the generic function fib_default_rule_pref(), fib_nl_newrule()
      may just use it directly instead. Therefore get rid of the function
      pointer altogether and make fib_default_rule_pref() static, as it's not
      used outside fib_rules.c anymore.
      Signed-off-by: NPhil Sutter <phil@nwl.cc>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f53de1e9
  11. 09 9月, 2015 2 次提交
    • M
      memcg: move memcg_proto_active from sock.h · e752eb68
      Michal Hocko 提交于
      The only user is sock_update_memcg which is living in memcontrol.c so it
      doesn't make much sense to pollute sock.h by this inline helper.  Move it
      to memcontrol.c and open code it into its only caller.
      Signed-off-by: NMichal Hocko <mhocko@suse.com>
      Cc: Vladimir Davydov <vdavydov@parallels.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Tejun Heo <tj@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e752eb68
    • M
      memcg: export struct mem_cgroup · 33398cf2
      Michal Hocko 提交于
      mem_cgroup structure is defined in mm/memcontrol.c currently which means
      that the code outside of this file has to use external API even for
      trivial access stuff.
      
      This patch exports mm_struct with its dependencies and makes some of the
      exported functions inlines.  This even helps to reduce the code size a bit
      (make defconfig + CONFIG_MEMCG=y)
      
        text		data    bss     dec     	 hex 	filename
        12355346        1823792 1089536 15268674         e8fb42 vmlinux.before
        12354970        1823792 1089536 15268298         e8f9ca vmlinux.after
      
      This is not much (370B) but better than nothing.
      
      We also save a function call in some hot paths like callers of
      mem_cgroup_count_vm_event which is used for accounting.
      
      The patch doesn't introduce any functional changes.
      
      [vdavykov@parallels.com: inline memcg_kmem_is_active]
      [vdavykov@parallels.com: do not expose type outside of CONFIG_MEMCG]
      [akpm@linux-foundation.org: memcontrol.h needs eventfd.h for eventfd_ctx]
      [akpm@linux-foundation.org: export mem_cgroup_from_task() to modules]
      Signed-off-by: NMichal Hocko <mhocko@suse.cz>
      Reviewed-by: NVladimir Davydov <vdavydov@parallels.com>
      Suggested-by: NJohannes Weiner <hannes@cmpxchg.org>
      Cc: Tejun Heo <tj@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      33398cf2
  12. 04 9月, 2015 1 次提交
    • A
      mac80211: protect non-HT BSS when HT TDLS traffic exists · 22f66895
      Avri Altman 提交于
      HT TDLS traffic should be protected in a non-HT BSS to avoid
      collisions. Therefore, when TDLS peers join/leave, check if
      protection is (now) needed and set the ht_operation_mode of
      the virtual interface according to the HT capabilities of the
      TDLS peer(s).
      
      This works because a non-HT BSS connection never sets (or
      otherwise uses) the ht_operation_mode; it just means that
      drivers must be aware that this field applies to all HT
      traffic for this virtual interface, not just the traffic
      within the BSS. Document that.
      Signed-off-by: NAvri Altman <avri.altman@intel.com>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      22f66895
  13. 03 9月, 2015 1 次提交
    • D
      netfilter: nf_conntrack: make nf_ct_zone_dflt built-in · 62da9865
      Daniel Borkmann 提交于
      Fengguang reported, that some randconfig generated the following linker
      issue with nf_ct_zone_dflt object involved:
      
        [...]
        CC      init/version.o
        LD      init/built-in.o
        net/built-in.o: In function `ipv4_conntrack_defrag':
        nf_defrag_ipv4.c:(.text+0x93e95): undefined reference to `nf_ct_zone_dflt'
        net/built-in.o: In function `ipv6_defrag':
        nf_defrag_ipv6_hooks.c:(.text+0xe3ffe): undefined reference to `nf_ct_zone_dflt'
        make: *** [vmlinux] Error 1
      
      Given that configurations exist where we have a built-in part, which is
      accessing nf_ct_zone_dflt such as the two handlers nf_ct_defrag_user()
      and nf_ct6_defrag_user(), and a part that configures nf_conntrack as a
      module, we must move nf_ct_zone_dflt into a fixed, guaranteed built-in
      area when netfilter is configured in general.
      
      Therefore, split the more generic parts into a common header under
      include/linux/netfilter/ and move nf_ct_zone_dflt into the built-in
      section that already holds parts related to CONFIG_NF_CONNTRACK in the
      netfilter core. This fixes the issue on my side.
      
      Fixes: 308ac914 ("netfilter: nf_conntrack: push zone object into functions")
      Reported-by: NFengguang Wu <fengguang.wu@intel.com>
      Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      62da9865
  14. 02 9月, 2015 6 次提交