1. 31 Aug, 2016 7 commits
  2. 19 Aug, 2016 10 commits
  3. 18 Aug, 2016 2 commits
    • David S. Miller's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 60747ef4
      David S. Miller authored
      Minor overlapping changes for both merge conflicts.
      
      Resolution work done by Stephen Rothwell was used
      as a reference.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      60747ef4
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 184ca823
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) Buffers powersave frame test is reversed in cfg80211, fix from Felix
          Fietkau.
      
       2) Remove bogus WARN_ON in openvswitch, from Jarno Rajahalme.
      
       3) Fix some tg3 ethtool logic bugs, and one that would cause no
          interrupts to be generated when rx-coalescing is set to 0.  From
          Satish Baddipadige and Siva Reddy Kallam.
      
       4) QLCNIC mailbox corruption and napi budget handling fix from Manish
          Chopra.
      
       5) Fix fib_trie logic when walking the trie during /proc/net/route
          output than can access a stale node pointer.  From David Forster.
      
       6) Several sctp_diag fixes from Phil Sutter.
      
       7) PAUSE frame handling fixes in mlxsw driver from Ido Schimmel.
      
       8) Checksum fixup fixes in bpf from Daniel Borkmann.
      
       9) Memork leaks in nfnetlink, from Liping Zhang.
      
      10) Use after free in rxrpc, from David Howells.
      
      11) Use after free in new skb_array code of macvtap driver, from Jason
          Wang.
      
      12) Calipso resource leak, from Colin Ian King.
      
      13) mediatek bug fixes (missing stats sync init, etc.) from Sean Wang.
      
      14) Fix bpf non-linear packet write helpers, from Daniel Borkmann.
      
      15) Fix lockdep splats in macsec, from Sabrina Dubroca.
      
      16) hv_netvsc bug fixes from Vitaly Kuznetsov, mostly to do with VF
          handling.
      
      17) Various tc-action bug fixes, from CONG Wang.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (116 commits)
        net_sched: allow flushing tc police actions
        net_sched: unify the init logic for act_police
        net_sched: convert tcf_exts from list to pointer array
        net_sched: move tc offload macros to pkt_cls.h
        net_sched: fix a typo in tc_for_each_action()
        net_sched: remove an unnecessary list_del()
        net_sched: remove the leftover cleanup_a()
        mlxsw: spectrum: Allow packets to be trapped from any PG
        mlxsw: spectrum: Unmap 802.1Q FID before destroying it
        mlxsw: spectrum: Add missing rollbacks in error path
        mlxsw: reg: Fix missing op field fill-up
        mlxsw: spectrum: Trap loop-backed packets
        mlxsw: spectrum: Add missing packet traps
        mlxsw: spectrum: Mark port as active before registering it
        mlxsw: spectrum: Create PVID vPort before registering netdevice
        mlxsw: spectrum: Remove redundant errors from the code
        mlxsw: spectrum: Don't return upon error in removal path
        i40e: check for and deal with non-contiguous TCs
        ixgbe: Re-enable ability to toggle VLAN filtering
        ixgbe: Force VLNCTRL.VFE to be set in all VMDq paths
        ...
      184ca823
  4. 17 Aug, 2016 21 commits
    • David S. Miller's avatar
      Merge branch 'strparser' · 48433419
      David S. Miller authored
      Tom Herbert says:
      
      ====================
      strp: Stream parser for messages
      
      This patch set introduces a utility for parsing application layer
      protocol messages in a TCP stream. This is a generalization of the
      mechanism implemented of Kernel Connection Multiplexor.
      
      This patch set adapts KCM to use the strparser. We expect that kTLS
      can use this mechanism also. RDS would probably be another candidate
      to use a common stream parsing mechanism.
      
      The API includes a context structure, a set of callbacks, utility
      functions, and a data ready function. The callbacks include
      a parse_msg function that is called to perform parsing (e.g.
      BPF parsing in case of KCM), and a rcv_msg function that is called
      when a full message has been completed.
      
      For strparser we specify the return codes from the parser to allow
      the backend to indicate that control of the socket should be
      transferred back to userspace to handle some exceptions in the
      stream: The return values are:
      
            >0 : indicates length of successfully parsed message
             0  : indicates more data must be received to parse the message
             -ESTRPIPE : current message should not be processed by the
                kernel, return control of the socket to userspace which
                can proceed to read the messages itself
             other < 0 : Error is parsing, give control back to userspace
                assuming that synchronization is lost and the stream
                is unrecoverable (application expected to close TCP socket)
      
      There is one issue I haven't been able to fully resolve. If parse_msg
      returns ESTRPIPE (wants control back to userspace) the parser may
      already have consumed some bytes of the message. There is no way to
      put bytes back into the TCP receive queue and tcp_read_sock does not
      allow an easy way to peek messages. In lieu of a better solution, we
      return ENODATA on the socket to indicate that the data stream is
      unrecoverable (application needs to close socket). This condition
      should only happen if an application layer message header is split
      across two skbuffs and parsing just the first skbuff wasn't sufficient
      to determine the that transfer to userspace is needed.
      
      This patch set contains:
      
        - strparser implementation
        - changes to kcm to use strparser
        - strparser.txt documentation
      
      v2:
        - Add copyright notice to C files
        - Remove GPL module license from strparser.c
        - Add report of rxpause
      
      v3:
        - Restore GPL module license
        - Use EXPORT_SYMBOL_GPL
      
      v4:
        - Removed unused function, changed another to be static as suggested
          by davem
        - Rewoked data_ready to be called from upper layer, no longer requires
          taking over socket data_ready callback as suggested by Lance Chao
      
      Tested:
        - Ran a KCM thrash test for 24 hours. No behavioral or performance
          differences observed.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      48433419
    • Tom Herbert's avatar
      strparser: Documentation · adcce4d5
      Tom Herbert authored
      Signed-off-by: default avatarTom Herbert <tom@herbertland.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      adcce4d5
    • Tom Herbert's avatar
      kcm: Use stream parser · 9b73896a
      Tom Herbert authored
      Adapt KCM to use the stream parser. This mostly involves removing
      the RX handling and setting up the strparser using the interface.
      Signed-off-by: default avatarTom Herbert <tom@herbertland.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9b73896a
    • Tom Herbert's avatar
      strparser: Stream parser for messages · 43a0c675
      Tom Herbert authored
      This patch introduces a utility for parsing application layer protocol
      messages in a TCP stream. This is a generalization of the mechanism
      implemented of Kernel Connection Multiplexor.
      
      The API includes a context structure, a set of callbacks, utility
      functions, and a data ready function.
      
      A stream parser instance is defined by a strparse structure that
      is bound to a TCP socket. The function to initialize the structure
      is:
      
      int strp_init(struct strparser *strp, struct sock *csk,
                    struct strp_callbacks *cb);
      
      csk is the TCP socket being bound to and cb are the parser callbacks.
      
      The upper layer calls strp_tcp_data_ready when data is ready on the lower
      socket for strparser to process. This should be called from a data_ready
      callback that is set on the socket:
      
      void strp_tcp_data_ready(struct strparser *strp);
      
      A parser is bound to a TCP socket by setting data_ready function to
      strp_tcp_data_ready so that all receive indications on the socket
      go through the parser. This is assumes that sk_user_data is set to
      the strparser structure.
      
      There are four callbacks.
       - parse_msg is called to parse the message (returns length or error).
       - rcv_msg is called when a complete message has been received
       - read_sock_done is called when data_ready function exits
       - abort_parser is called to abort the parser
      
      The input to parse_msg is an skbuff which contains next message under
      construction. The backend processing of parse_msg will parse the
      application layer protocol headers to determine the length of
      the message in the stream. The possible return values are:
      
         >0 : indicates length of successfully parsed message
         0  : indicates more data must be received to parse the message
         -ESTRPIPE : current message should not be processed by the
            kernel, return control of the socket to userspace which
            can proceed to read the messages itself
         other < 0 : Error is parsing, give control back to userspace
            assuming that synchronzation is lost and the stream
            is unrecoverable (application expected to close TCP socket)
      
      In the case of error return (< 0) strparse will stop the parser
      and report and error to userspace. The application must deal
      with the error. To handle the error the strparser is unbound
      from the TCP socket. If the error indicates that the stream
      TCP socket is at recoverable point (ESTRPIPE) then the application
      can read the TCP socket to process the stream. Once the application
      has dealt with the exceptions in the stream, it may again bind the
      socket to a strparser to continue data operations.
      
      Note that ENODATA may be returned to the application. In this case
      parse_msg returned -ESTRPIPE, however strparser was unable to maintain
      synchronization of the stream (i.e. some of the message in question
      was already read by the parser).
      
      strp_pause and strp_unpause are used to provide flow control. For
      instance, if rcv_msg is called but the upper layer can't immediately
      consume the message it can hold the message and pause strparser.
      Signed-off-by: default avatarTom Herbert <tom@herbertland.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      43a0c675
    • Thierry Reding's avatar
      net: ipconfig: Fix more use after free · d2d371ae
      Thierry Reding authored
      While commit 9c706a49 ("net: ipconfig: fix use after free") avoids
      the use after free, the resulting code still ends up calling both the
      ic_setup_if() and ic_setup_routes() after calling ic_close_devs(), and
      access to the device is still required.
      
      Move the call to ic_close_devs() to the very end of the function.
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d2d371ae
    • David S. Miller's avatar
      Merge branch 'tc_action-fixes' · b96c22c0
      David S. Miller authored
      Cong Wang says:
      
      ====================
      net_sched: tc action fixes and updates
      
      This patchset fixes a few regressions caused by the previous
      code refactor and more. Thanks to Jamal for catching them!
      
      Note, patch 3/7 and 4/7 are not strictly necessary for this patchset,
      I just want to carry them together.
      
      ---
      v4: adjust an indention for Jamal
          add two more patches
      
      v3: avoid list for fast path, suggested by Jamal
      
      v2: replace flex_array with regular dynamic array
          keep tcf_action_stats_update() in act_api.h
          fix macro typos found by Amir
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b96c22c0
    • Roman Mashak's avatar
      net_sched: allow flushing tc police actions · b5ac8518
      Roman Mashak authored
      The act_police uses its own code to walk the
      action hashtable, which leads to that we could
      not flush standalone tc police actions, so just
      switch to tcf_generic_walker() like other actions.
      
      (Joint work from Roman and Cong.)
      Signed-off-by: default avatarRoman Mashak <mrv@mojatatu.com>
      Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b5ac8518
    • WANG Cong's avatar
      net_sched: unify the init logic for act_police · 0852e455
      WANG Cong authored
      Jamal reported a crash when we create a police action
      with a specific index, this is because the init logic
      is not correct, we should always create one for this
      case. Just unify the logic with other tc actions.
      
      Fixes: a03e6fe5 ("act_police: fix a crash during removal")
      Reported-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0852e455
    • WANG Cong's avatar
      net_sched: convert tcf_exts from list to pointer array · 22dc13c8
      WANG Cong authored
      As pointed out by Jamal, an action could be shared by
      multiple filters, so we can't use list to chain them
      any more after we get rid of the original tc_action.
      Instead, we could just save pointers to these actions
      in tcf_exts, since they are refcount'ed, so convert
      the list to an array of pointers.
      
      The "ugly" part is the action API still accepts list
      as a parameter, I just introduce a helper function to
      convert the array of pointers to a list, instead of
      relying on the C99 feature to iterate the array.
      
      Fixes: a85a970a ("net_sched: move tc_action into tcf_common")
      Reported-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
      Cc: Jamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      22dc13c8
    • WANG Cong's avatar
      net_sched: move tc offload macros to pkt_cls.h · 2734437e
      WANG Cong authored
      struct tcf_exts belongs to filters, should not be visible
      to plain tc actions.
      
      Cc: Ido Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2734437e
    • WANG Cong's avatar
      net_sched: fix a typo in tc_for_each_action() · 0c23c3e7
      WANG Cong authored
      It is harmless because all users pass 'a' to this macro.
      
      Fixes: 00175aec ("net/sched: Macro instead of CONFIG_NET_CLS_ACT ifdef")
      Cc: Amir Vadai <amir@vadai.me>
      Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0c23c3e7
    • WANG Cong's avatar
      net_sched: remove an unnecessary list_del() · 824a7e88
      WANG Cong authored
      This list_del() for tc action is not needed actually,
      because we only use this list to chain bulk operations,
      therefore should not be carried for latter operations.
      
      Fixes: ec0595cc ("net_sched: get rid of struct tcf_common")
      Cc: Jamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      824a7e88
    • WANG Cong's avatar
      net_sched: remove the leftover cleanup_a() · f07fed82
      WANG Cong authored
      After refactoring tc_action into tcf_common, we no
      longer need to cleanup temporary "actions" in list,
      they are permanently stored in the hashtable.
      
      Fixes: a85a970a ("net_sched: move tc_action into tcf_common")
      Reported-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
      Cc: Jamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f07fed82
    • David S. Miller's avatar
      Merge tag 'batadv-next-for-davem-20160816' of git://git.open-mesh.org/linux-merge · 00062a93
      David S. Miller authored
      Simon Wunderlich says:
      
      ====================
      pull request for net-next: batman-adv 2016-08-16
      
      This feature patchset is all about adding netlink support, which should
      supersede our debugfs configuration interface in the long run. It is
      especially necessary when batman-adv should be used in different
      namespaces, since debugfs can not differentiate between those.
      
      More specifically, the following changes are included:
      
       - Two fixes for namespace handling by Andrew Lunn, checking also the
         namespaces for parent interfaces, and supress debugfs entries
         for non-default netns
      
       - Implement various netlink commands for the new interface, by
         Matthias Schiffer, Andrew Lunn, Sven Eckelmann and Simon Wunderlich
         (13 patches):
          * routing algorithm list
          * hardif list
          * translation tables (local and global)
          * TTVN for the translation tables
          * originator and neighbor tables for B.A.T.M.A.N. IV
            and B.A.T.M.A.N. V
          * gateway dump functionality for B.A.T.M.A.N. IV
            and B.A.T.M.A.N. V
          * Bridge Loop Avoidance claims, and corresponding BLA group
          * Bridge Loop Avoidance backbone tables
      
       - Finally, mark batman-adv as netns compatible, by Andrew Lunn (1 patch)
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      00062a93
    • David S. Miller's avatar
      Merge branch '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-queue · f4abf05f
      David S. Miller authored
      Jeff Kirsher says:
      
      ====================
      Intel Wired LAN Driver Updates 2016-08-16
      
      This series contains fixes to e1000e, igb, ixgbe and i40e.
      
      Kshitiz Gupta provides a fix for igb to resolve the PHY delay compensation
      math in several functions.
      
      Jarod Wilson provides a fix for e1000e which had to broken up into 2
      patches, first is prepares the driver for expanding the list of NICs
      that have occasional ~10 hour clock jumps when being used for PTP.
      Second patch actually fixes i218 silicon which has been experiencing
      the clock jumps while using PTP.
      
      Alex provides 2 patches for ixgbe now that he is back at Intel.  First
      fixes setting VLNCTRL.VFE bit, which was left unchanged in earlier patches
      which resulted in disabling VLAN filtering for all the VFs.  Second
      corrects the support for disabling the VLAN tag filtering via the
      feature bit.
      
      Lastly, David fixes i40e which was causing a kernel panic when
      non-contiguous traffic classes or traffic classes not starting with TC0,
      were configured on a link partner switch.  To fix this, changed the
      logic when determining the total number of TCs enabled.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f4abf05f
    • David S. Miller's avatar
      Merge branch 'mlxsw-fixes' · 647f28c7
      David S. Miller authored
      Jiri Pirko says:
      
      ====================
      mlxsw: IPv4 UC router fixes
      
      Ido says:
      Patches 1-3 fix a long standing problem in the driver's init sequence,
      which manifests itself quite often when routing daemons try to configure
      an IP address on registered netdevs that don't yet have an associated
      vPort.
      
      Patches 4-9 add missing packet traps for the router to work properly and
      also fix ordering issue following the recent changes to the driver's init
      sequence.
      
      The last patch isn't related to the router, but fixes a general problem
      in which under certain conditions packets aren't trapped to CPU.
      
      v1->v2:
      - Change order of patch 7
      - Add patch 6 following Ilan's comment
      - Add patchset name and cover letter
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      647f28c7
    • Ido Schimmel's avatar
      mlxsw: spectrum: Allow packets to be trapped from any PG · 9ffcc372
      Ido Schimmel authored
      When packets enter the device they are classified to a priority group
      (PG) buffer based on their PCP value. After their egress port and
      traffic class are determined they are moved to the switch's shared
      buffer and await transmission, if:
      
      (Ingress{Port}.Usage < Thres && Ingress{Port,PG}.Usage < Thres &&
       Egress{Port}.Usage < Thres && Egress{Port,TC}.Usage < Thres)
      ||
      (Ingress{Port}.Usage < Min || Ingress{Port,PG} < Min ||
       Egress{Port}.Usage < Min || Egress{Port,TC}.Usage < Min)
      
      Packets scheduled to transmission through CPU port (trapped to CPU) use
      traffic class 7, which has a zero maximum and minimum quotas. However,
      when such packets arrive from PG 0 they are admitted to the shared
      buffer as PG 0 has a non-zero minimum quota.
      
      Allow all packets to be trapped to the CPU - regardless of the PG they
      were classified to - by assigning a 10KB minimum quota for CPU port and
      TC7.
      
      Fixes: 8e8dfe9f ("mlxsw: spectrum: Add IEEE 802.1Qaz ETS support")
      Reported-by: default avatarTamir Winetroub <tamirw@mellanox.com>
      Tested-by: default avatarTamir Winetroub <tamirw@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9ffcc372
    • Ido Schimmel's avatar
      mlxsw: spectrum: Unmap 802.1Q FID before destroying it · 8168287b
      Ido Schimmel authored
      Before destroying the 802.1Q FID we should first remove the VID-to-FID
      mapping. This makes mlxsw_sp_fid_destroy() symmetric with regards to
      mlxsw_sp_fid_create().
      
      Fixes: 14d39461 ("mlxsw: spectrum: Use per-FID struct for the VLAN-aware bridge")
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8168287b
    • Ido Schimmel's avatar
      mlxsw: spectrum: Add missing rollbacks in error path · 0583272d
      Ido Schimmel authored
      While going over the code I noticed we are missing two rollbacks in the
      port's creation error path. Add them and adjust the place of one of them
      in the port's removal sequence so that both are symmetric.
      
      Fixes: 56ade8fe ("mlxsw: spectrum: Add initial support for Spectrum ASIC")
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0583272d
    • Jiri Pirko's avatar
      mlxsw: reg: Fix missing op field fill-up · 0e7df1a2
      Jiri Pirko authored
      Ralue pack function needs to set op, otherwise it is 0 for add always.
      
      Fixes: d5a1c749 ("mlxsw: reg: Add Router Algorithmic LPM Unicast Entry Register definition")
      Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0e7df1a2
    • Ido Schimmel's avatar
      mlxsw: spectrum: Trap loop-backed packets · a94a614f
      Ido Schimmel authored
      One of the conditions to generate an ICMP Redirect Message is that "the
      packet is being forwarded out the same physical interface that it was
      received from" (RFC 1812).
      
      Therefore, we need to be able to trap such packets and let the kernel
      decide what to do with them.
      
      For each RIF, enable the loop-back filter, which will raise the LBERROR
      trap whenever the ingress RIF equals the egress RIF.
      
      Fixes: 99724c18 ("mlxsw: spectrum: Introduce support for router interfaces")
      Reported-by: default avatarIlan Tayari <ilant@mellanox.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a94a614f