1. 17 Feb, 2017 33 commits
    • David S. Miller's avatar
      Merge branch 'bpf-misc' · a2b4eb55
      David S. Miller authored
      Daniel Borkmann says:
      
      ====================
      Misc BPF improvements
      
      This last series for this window adds various misc
      improvements to BPF, one is to mark registered map and
      prog types as __ro_after_init, another one for removing
      cBPF stubs in eBPF JITs and moving the stub to the core
      and last also improving JITs is to make generated images
      visible to the kernel and kallsyms, so they can be
      seen in traces. For details, please have a look at the
      individual patches.
      
      Thanks a lot!
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a2b4eb55
    • Daniel Borkmann's avatar
      bpf: make jited programs visible in traces · 74451e66
      Daniel Borkmann authored
      Long standing issue with JITed programs is that stack traces from
      function tracing check whether a given address is kernel code
      through {__,}kernel_text_address(), which checks for code in core
      kernel, modules and dynamically allocated ftrace trampolines. But
      what is still missing is BPF JITed programs (interpreted programs
      are not an issue as __bpf_prog_run() will be attributed to them),
      thus when a stack trace is triggered, the code walking the stack
      won't see any of the JITed ones. The same for address correlation
      done from user space via reading /proc/kallsyms. This is read by
      tools like perf, but the latter is also useful for permanent live
      tracing with eBPF itself in combination with stack maps when other
      eBPF types are part of the callchain. See offwaketime example on
      dumping stack from a map.
      
      This work tries to tackle that issue by making the addresses and
      symbols known to the kernel. The lookup from *kernel_text_address()
      is implemented through a latched RB tree that can be read under
      RCU in fast-path that is also shared for symbol/size/offset lookup
      for a specific given address in kallsyms. The slow-path iteration
      through all symbols in the seq file done via RCU list, which holds
      a tiny fraction of all exported ksyms, usually below 0.1 percent.
      Function symbols are exported as bpf_prog_<tag>, in order to aide
      debugging and attribution. This facility is currently enabled for
      root-only when bpf_jit_kallsyms is set to 1, and disabled if hardening
      is active in any mode. The rationale behind this is that still a lot
      of systems ship with world read permissions on kallsyms thus addresses
      should not get suddenly exposed for them. If that situation gets
      much better in future, we always have the option to change the
      default on this. Likewise, unprivileged programs are not allowed
      to add entries there either, but that is less of a concern as most
      such programs types relevant in this context are for root-only anyway.
      If enabled, call graphs and stack traces will then show a correct
      attribution; one example is illustrated below, where the trace is
      now visible in tooling such as perf script --kallsyms=/proc/kallsyms
      and friends.
      
      Before:
      
        7fff8166889d bpf_clone_redirect+0x80007f0020ed (/lib/modules/4.9.0-rc8+/build/vmlinux)
               f5d80 __sendmsg_nocancel+0xffff006451f1a007 (/usr/lib64/libc-2.18.so)
      
      After:
      
        7fff816688b7 bpf_clone_redirect+0x80007f002107 (/lib/modules/4.9.0-rc8+/build/vmlinux)
        7fffa0575728 bpf_prog_33c45a467c9e061a+0x8000600020fb (/lib/modules/4.9.0-rc8+/build/vmlinux)
        7fffa07ef1fc cls_bpf_classify+0x8000600020dc (/lib/modules/4.9.0-rc8+/build/vmlinux)
        7fff81678b68 tc_classify+0x80007f002078 (/lib/modules/4.9.0-rc8+/build/vmlinux)
        7fff8164d40b __netif_receive_skb_core+0x80007f0025fb (/lib/modules/4.9.0-rc8+/build/vmlinux)
        7fff8164d718 __netif_receive_skb+0x80007f002018 (/lib/modules/4.9.0-rc8+/build/vmlinux)
        7fff8164e565 process_backlog+0x80007f002095 (/lib/modules/4.9.0-rc8+/build/vmlinux)
        7fff8164dc71 net_rx_action+0x80007f002231 (/lib/modules/4.9.0-rc8+/build/vmlinux)
        7fff81767461 __softirqentry_text_start+0x80007f0020d1 (/lib/modules/4.9.0-rc8+/build/vmlinux)
        7fff817658ac do_softirq_own_stack+0x80007f00201c (/lib/modules/4.9.0-rc8+/build/vmlinux)
        7fff810a2c20 do_softirq+0x80007f002050 (/lib/modules/4.9.0-rc8+/build/vmlinux)
        7fff810a2cb5 __local_bh_enable_ip+0x80007f002085 (/lib/modules/4.9.0-rc8+/build/vmlinux)
        7fff8168d452 ip_finish_output2+0x80007f002152 (/lib/modules/4.9.0-rc8+/build/vmlinux)
        7fff8168ea3d ip_finish_output+0x80007f00217d (/lib/modules/4.9.0-rc8+/build/vmlinux)
        7fff8168f2af ip_output+0x80007f00203f (/lib/modules/4.9.0-rc8+/build/vmlinux)
        [...]
        7fff81005854 do_syscall_64+0x80007f002054 (/lib/modules/4.9.0-rc8+/build/vmlinux)
        7fff817649eb return_from_SYSCALL_64+0x80007f002000 (/lib/modules/4.9.0-rc8+/build/vmlinux)
               f5d80 __sendmsg_nocancel+0xffff01c484812007 (/usr/lib64/libc-2.18.so)
      Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      74451e66
    • Daniel Borkmann's avatar
      bpf: remove stubs for cBPF from arch code · 9383191d
      Daniel Borkmann authored
      Remove the dummy bpf_jit_compile() stubs for eBPF JITs and make
      that a single __weak function in the core that can be overridden
      similarly to the eBPF one. Also remove stale pr_err() mentions
      of bpf_jit_compile.
      Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9383191d
    • Daniel Borkmann's avatar
      bpf: mark all registered map/prog types as __ro_after_init · c78f8bdf
      Daniel Borkmann authored
      All map types and prog types are registered to the BPF core through
      bpf_register_map_type() and bpf_register_prog_type() during init and
      remain unchanged thereafter. As by design we don't (and never will)
      have any pluggable code that can register to that at any later point
      in time, lets mark all the existing bpf_{map,prog}_type_list objects
      in the tree as __ro_after_init, so they can be moved to read-only
      section from then onwards.
      Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c78f8bdf
    • Roopa Prabhu's avatar
      bridge: vlan_tunnel: explicitly reset metadata attrs to NULL on failure · afcb50ba
      Roopa Prabhu authored
      Fixes: efa5356b ("bridge: per vlan dst_metadata netlink support")
      Signed-off-by: default avatarRoopa Prabhu <roopa@cumulusnetworks.com>
      Reviewed-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      afcb50ba
    • Tobias Klauser's avatar
      net: bgmac: store MAC address directly in netdev->dev_addr · 6850f8b5
      Tobias Klauser authored
      After commit 34a5102c ("net: bgmac: allocate struct bgmac just once
      & don't copy it") the mac_addr member of struct bgmac is no longer
      necessary to pass the MAC address to bgmac_enet_probe(). Instead it can
      directly be stored in netdev->dev_addr.
      
      Also use eth_hw_addr_random() instead of eth_random_addr() in case a
      random MAC is nedded. This will make sure netdev->addr_assign_type will
      be properly set.
      Signed-off-by: default avatarTobias Klauser <tklauser@distanz.ch>
      Acked-by: default avatarJon Mason <jon.mason@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6850f8b5
    • David S. Miller's avatar
      Merge tag 'wireless-drivers-next-for-davem-2017-02-16' of... · 3105dfb2
      David S. Miller authored
      Merge tag 'wireless-drivers-next-for-davem-2017-02-16' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next
      
      Kalle Valo says:
      
      ====================
      wireless-drivers-next patches for 4.11
      
      Mostly small fixes, not really any new features.
      
      Major changes:
      
      ath10k
      
      * when trying older firmware versions don't confuse user with error messages
      
      ath9k
      
      * fix crash in AP mode (regression)
      * fix relayfs crash (regression)
      * fix initialisation with AR9340 and AR9550
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3105dfb2
    • Tobias Klauser's avatar
      net: ethoc: Use eth_hw_addr_random() · 6d6a505a
      Tobias Klauser authored
      Use eth_hw_addr_random() to set a random dev_addr and update
      addr_assign_type instead of open-coding it.
      Signed-off-by: default avatarTobias Klauser <tklauser@distanz.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6d6a505a
    • David S. Miller's avatar
      Merge branch 'rhashtable-allocation-failure-during-insertion' · e1c151a4
      David S. Miller authored
      Herbert Xu says:
      
      ====================
      rhashtable: Handle table allocation failure during insertion
      
      v2 -
      
      Added Ack to patch 2.
      Fixed RCU annotation in code path executed by rehasher by using
      rht_dereference_bucket.
      
      v1 -
      
      This series tackles the problem of table allocation failures during
      insertion.  The issue is that we cannot vmalloc during insertion.
      This series deals with this by introducing nested tables.
      
      The first two patches removes manual hash table walks which cannot
      work on a nested table.
      
      The final patch introduces nested tables.
      
      I've tested this with test_rhashtable and it appears to work.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e1c151a4
    • Herbert Xu's avatar
      rhashtable: Add nested tables · da20420f
      Herbert Xu authored
      This patch adds code that handles GFP_ATOMIC kmalloc failure on
      insertion.  As we cannot use vmalloc, we solve it by making our
      hash table nested.  That is, we allocate single pages at each level
      and reach our desired table size by nesting them.
      
      When a nested table is created, only a single page is allocated
      at the top-level.  Lower levels are allocated on demand during
      insertion.  Therefore for each insertion to succeed, only two
      (non-consecutive) pages are needed.
      
      After a nested table is created, a rehash will be scheduled in
      order to switch to a vmalloced table as soon as possible.  Also,
      the rehash code will never rehash into a nested table.  If we
      detect a nested table during a rehash, the rehash will be aborted
      and a new rehash will be scheduled.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      da20420f
    • Herbert Xu's avatar
      tipc: Fix tipc_sk_reinit race conditions · 40f9f439
      Herbert Xu authored
      There are two problems with the function tipc_sk_reinit.  Firstly
      it's doing a manual walk over an rhashtable.  This is broken as
      an rhashtable can be resized and if you manually walk over it
      during a resize then you may miss entries.
      
      Secondly it's missing memory barriers as previously the code used
      spinlocks which provide the barriers implicitly.
      
      This patch fixes both problems.
      
      Fixes: 07f6c4bc ("tipc: convert tipc reference table to...")
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Acked-by: default avatarYing Xue <ying.xue@windriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      40f9f439
    • Herbert Xu's avatar
      gfs2: Use rhashtable walk interface in glock_hash_walk · 98687f42
      Herbert Xu authored
      The function glock_hash_walk walks the rhashtable by hand.  This
      is broken because if it catches the hash table in the middle of
      a rehash, then it will miss entries.
      
      This patch replaces the manual walk by using the rhashtable walk
      interface.
      
      Fixes: 88ffbf3e ("GFS2: Use resizable hash table for glocks")
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      98687f42
    • Jisheng Zhang's avatar
      net: mvneta: make mvneta_eth_tool_ops static · 4581be42
      Jisheng Zhang authored
      The mvneta_eth_tool_ops is only used internally in mvneta driver, so
      make it static.
      Signed-off-by: default avatarJisheng Zhang <jszhang@marvell.com>
      Acked-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4581be42
    • David S. Miller's avatar
      Merge branch 'net-sched-reflect-hw-offload-in-classifiers' · 4b5026ad
      David S. Miller authored
      Or Gerlitz says:
      
      ====================
      net/sched: Reflect HW offload status in classifiers
      
      Currently there is no way of querying whether a filter is
      offloaded to HW or not when using "both" policy (where none
      of skip_sw or skip_hw flags are set by user-space).
      
      Added two new flags, "in hw" and "not in hw" such that user space
      can determine if a filter is actually offloaded to hw. The "in hw"
      UAPI semantics was chosen so it's similar to the "skip hw" flag logic.
      
      If none of these two flags are set, this signals running
      over older kernel.
      
      As an example, add one vlan push + fwd rule, one matchall rule and one u32 rule
      without any flags, and another vlan + fwd skip_sw rule, such that the different TC
      classifier attempt to offload all of them -- all over mlx5 SRIOV VF rep:
      
      	flower skip_sw indev eth2_0 src_mac e4:11:22:33:44:50 dst_mac e4:1d:2d:a5:f3:9d
      	action vlan push id 52 action mirred egress redirect dev eth2
      
      	flower indev eth2_0 src_mac e4:11:22:33:44:50 dst_mac e4:11:22:33:44:51
      	action vlan push id 53 action mirred egress redirect dev eth2
      
      	u32 ht 800: flowid 800:1 match ip src 192.168.1.0/24 action drop
      
      Since that VF rep doesn't offload matchall/u32 and can currently offload
      only one vlan push rule we expect three of the rules not to be offloaded:
      
      filter protocol ip pref 99 u32
      filter protocol ip pref 99 u32 fh 800: ht divisor 1
      filter protocol ip pref 99 u32 fh 800::1 order 1 key ht 800 bkt 0 flowid 800:1 not in_hw
        match c0a80100/ffffff00 at 12
      	action order 1: gact action drop
      	 random type none pass val 0
      	 index 8 ref 1 bind 1
      
      filter protocol all pref 49150 matchall
      filter protocol all pref 49150 matchall handle 0x1
        not in_hw
      	action order 1: mirred (Egress Mirror to device veth1) pipe
       	index 27 ref 1 bind 1
      
      filter protocol ip pref 49151 flower
      filter protocol ip pref 49151 flower handle 0x1
        indev eth2_0
        dst_mac e4:11:22:33:44:51
        src_mac e4:11:22:33:44:50
        eth_type ipv4
        not in_hw
      	action order 1:  vlan push id 53 protocol 802.1Q priority 0 pipe
      	 index 20 ref 1 bind 1
      
      	action order 2: mirred (Egress Redirect to device eth2) stolen
       	index 26 ref 1 bind 1
      
      filter protocol ip pref 49152 flower
      filter protocol ip pref 49152 flower handle 0x1
        indev eth2_0
        dst_mac e4:1d:2d:a5:f3:9d
        src_mac e4:11:22:33:44:50
        eth_type ipv4
        skip_sw
        in_hw
      	action order 1:  vlan push id 52 protocol 802.1Q priority 0 pipe
      	 index 19 ref 1 bind 1
      
      	action order 2: mirred (Egress Redirect to device eth2) stolen
       	index 25 ref 1 bind 1
      
      v3 --> v4 changes:
       - removed extra parenthesis (Dave)
      
      v2 --> v3 changes:
       - fixed the matchall dump flags patch to do proper checks (Jakub)
       - added the same proper checks to flower where they were missing
       - that flower patch was added as #1 and hence all the other patches are offed-by-one
      
      v1 --> v2 changes:
       - applied feedback from Jakub and Dave -- where none of the skip flags were set,
         the suggested approach didn't allow user space to distringuish between old kernel
         to a case when offloading to HW worked fine.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4b5026ad
    • Or Gerlitz's avatar
      net/sched: cls_bpf: Reflect HW offload status · 5cecb6cc
      Or Gerlitz authored
      BPF classifier support for the "in hw" offloading flags.
      Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Reviewed-by: default avatarAmir Vadai <amir@vadai.me>
      Acked-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5cecb6cc
    • Or Gerlitz's avatar
      net/sched: cls_u32: Reflect HW offload status · 24d3dc6d
      Or Gerlitz authored
      U32 support for the "in hw" offloading flags.
      Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Reviewed-by: default avatarAmir Vadai <amir@vadai.me>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      24d3dc6d
    • Or Gerlitz's avatar
      net/sched: cls_matchall: Reflect HW offloading status · c7d2b2f5
      Or Gerlitz authored
      Matchall support for the "in hw" offloading flags.
      Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Reviewed-by: default avatarAmir Vadai <amir@vadai.me>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c7d2b2f5
    • Or Gerlitz's avatar
      net/sched: cls_flower: Reflect HW offload status · 55593960
      Or Gerlitz authored
      Flower support for the "in hw" offloading flags.
      Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Reviewed-by: default avatarAmir Vadai <amir@vadai.me>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      55593960
    • Or Gerlitz's avatar
      net/sched: Reflect HW offload status · e696028a
      Or Gerlitz authored
      Currently there is no way of querying whether a filter is
      offloaded to HW or not when using "both" policy (where none
      of skip_sw or skip_hw flags are set by user-space).
      
      Add two new flags, "in hw" and "not in hw" such that user
      space can determine if a filter is actually offloaded to
      hw or not. The "in hw" UAPI semantics was chosen so it's
      similar to the "skip hw" flag logic.
      
      If none of these two flags are set, this signals running
      over older kernel.
      Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Reviewed-by: default avatarAmir Vadai <amir@vadai.me>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e696028a
    • Or Gerlitz's avatar
      net/sched: cls_matchall: Dump the classifier flags · 7a335ada
      Or Gerlitz authored
      The classifier flags are not dumped to user-space, do that.
      Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Acked-by: default avatarYotam Gigi <yotamg@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7a335ada
    • Or Gerlitz's avatar
      net/sched: cls_flower: Properly handle classifier flags dumping · 749e6720
      Or Gerlitz authored
      Dump the classifier flags only if non zero and make sure to check
      the return status of the handler that puts them into the netlink msg.
      Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      749e6720
    • Philippe Reynes's avatar
      net: oki-semi: pch_gbe: use new api ethtool_{get|set}_link_ksettings · ad8e963c
      Philippe Reynes authored
      The ethtool api {get|set}_settings is deprecated.
      We move this driver to new api {get|set}_link_ksettings.
      
      As I don't have the hardware, I'd be very pleased if
      someone may test this patch.
      Signed-off-by: default avatarPhilippe Reynes <tremyfr@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ad8e963c
    • Ivan Khoronzhuk's avatar
      net: ethernet: ti: cpsw: correct ale dev to cpsw · 9fe9aa0b
      Ivan Khoronzhuk authored
      The ale is a property of cpsw, so change dev to cpsw->dev,
      aka pdev->dev, to be consistent.
      Signed-off-by: default avatarIvan Khoronzhuk <ivan.khoronzhuk@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9fe9aa0b
    • Philippe Reynes's avatar
      net: nvidia: forcedeth: use new api ethtool_{get|set}_link_ksettings · 0fa9e289
      Philippe Reynes authored
      The ethtool api {get|set}_settings is deprecated.
      We move this driver to new api {get|set}_link_ksettings.
      
      As I don't have the hardware, I'd be very pleased if
      someone may test this patch.
      Signed-off-by: default avatarPhilippe Reynes <tremyfr@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0fa9e289
    • David S. Miller's avatar
      Merge branch 'ptp-attribute-cleanup' · af6e2b5b
      David S. Miller authored
      Dmitry Torokhov says:
      
      ====================
      PTP attribute handling cleanup
      
      PTP core was creating some attributes, such as "period" and "fifo", and the
      entire "pins" attribute group, after creating class deevice, which creates
      a race for userspace: uevent may arrive before all attributes are created.
      
      This series of patches switches PTP to use is_visible() to control
      visibility of attributes in a group, and device_create_with_groups() to
      ensure that attributes are created before we notify userspace of a new
      device.
      
      v2:
      - added Richard's acked-by to patch #1
      - removed use of kmalloc_array in favor of kcalloc in patch #2 at
        Richard's request
      - added a cover letter
      
      v1:
      - initial patch set
      ====================
      Acked-by: default avatarRichard Cochran <richardcochran@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      af6e2b5b
    • Dmitry Torokhov's avatar
      ptp: create "pins" together with the rest of attributes · 85a66e55
      Dmitry Torokhov authored
      Let's switch to using device_create_with_groups(), which will allow us to
      create "pins" attribute group together with the rest of ptp device
      attributes, and before userspace gets notified about ptp device creation.
      Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      85a66e55
    • Dmitry Torokhov's avatar
      ptp: use is_visible method to hide unused attributes · af59e717
      Dmitry Torokhov authored
      Instead of creating selected attributes after the device is created (and
      after userspace potentially seen uevent), lets use attribute group
      is_visible() method to control which attributes are shown. This will allow
      us to create all attributes (except "pins" group, which will be taken care
      of later) before userspace gets notified about new ptp class device.
      Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      af59e717
    • Dmitry Torokhov's avatar
      ptp: use kcalloc when allocating arrays · 6f7aa56b
      Dmitry Torokhov authored
      kcalloc is more semantically correct when allocating arrays of objects, and
      overflow-safe.
      Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6f7aa56b
    • Dmitry Torokhov's avatar
      ptp: do not explicitly set drvdata in ptp_clock_register() · 882f312d
      Dmitry Torokhov authored
      We do not need explicitly call dev_set_drvdata(), as it is done for us by
      device_create().
      Acked-by: default avatarRichard Cochran <richardcochran@gmail.com>
      Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      882f312d
    • Eric Dumazet's avatar
      mlx4: do not fire tasklet unless necessary · 01f0f425
      Eric Dumazet authored
      All rx and rx netdev interrupts are handled by respectively
      by mlx4_en_rx_irq() and mlx4_en_tx_irq() which simply schedule a NAPI.
      
      But mlx4_eq_int() also fires a tasklet to service all items that were
      queued via mlx4_add_cq_to_tasklet(), but this handler was not called
      unless user cqe was handled.
      
      This is very confusing, as "mpstat -I SCPU ..." show huge number of
      tasklet invocations.
      
      This patch saves this overhead, by carefully firing the tasklet directly
      from mlx4_add_cq_to_tasklet(), removing four atomic operations per IRQ.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Tariq Toukan <tariqt@mellanox.com>
      Cc: Saeed Mahameed <saeedm@mellanox.com>
      Acked-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      01f0f425
    • David S. Miller's avatar
      Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next · 99d5ceee
      David S. Miller authored
      Steffen Klassert says:
      
      ====================
      pull request (net-next): ipsec-next 2017-02-16
      
      1) Make struct xfrm_input_afinfo const, nothing writes to it.
         From Florian Westphal.
      
      2) Remove all places that write to the afinfo policy backend
         and make the struct const then.
         From Florian Westphal.
      
      3) Prepare for packet consuming gro callbacks and add
         ESP GRO handlers. ESP packets can be decapsulated
         at the GRO layer then. It saves a round through
         the stack for each ESP packet.
      
      Please note that this has a merge coflict between commit
      
      63fca65d ("net: add confirm_neigh method to dst_ops")
      
      from net-next and
      
      3d7d25a6 ("xfrm: policy: remove garbage_collect callback")
      a2817d8b ("xfrm: policy: remove family field")
      
      from ipsec-next.
      
      The conflict can be solved as it is done in linux-next.
      
      Please pull or let me know if there are problems.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      99d5ceee
    • David S. Miller's avatar
      Merge branch '10GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue · 5237b9dd
      David S. Miller authored
      Jeff Kirsher says:
      
      ====================
      10GbE Intel Wired LAN Driver Updates 2017-02-16
      
      This series contains updates to ixgbe only.
      
      Tony updates the driver to advertise 2.5Gb and 5.0Gb if the adapter
      supports it.
      
      Stephen Hemminger renames our dcbnl_ops since it is global to
      ixgbe_dcbnl_ops to avoid namespace issues.
      
      Mark updates the driver version based on the recent changes.
      
      Alex has the remainder of the changes, starting with consolidating
      functions that represent logical steps in the receive process so we can
      later update them more easily (and align with igb).  Modify the receive
      path to only synchronize the length of the frame versus the entire buffer.
      Provided performance improvements by adding support for
      DMA_ATTR_SKIP_CPU_SYNC and DMA_ATTR_WEAK_ORDERING.  Also made additional
      performance gains by batching the page count updates instead of doing
      them one at a time.  Adjusted the receive path to use 3k buffers with
      8k backing them in order to support build_skb with jumbo frames.  Made
      additional driver improvements by using the length of the packet instead
      of the DD status to determine if a new descriptor is ready to be
      processed, which cuts down on reads.  To reduce code duplication, pulled
      apart the receive path into separate functions.  Added support for
      providing a buffer with headroom and tailroom to allow for shared info
      for NET_SKB_PAD and NET_IP_ALIGN.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5237b9dd
    • David S. Miller's avatar
  2. 16 Feb, 2017 7 commits