1. 17 Apr, 2016 2 commits
  2. 16 Apr, 2016 17 commits
  3. 15 Apr, 2016 21 commits
    • David S. Miller's avatar
      Merge branch 'sctp-diag' · 4e811b1e
      David S. Miller authored
      Xin Long says:
      
      ====================
      sctp: support sctp_diag in kernel
      
      This patchset will add sctp_diag module to implement diag interface on
      sctp in kernel.
      
      For a listening sctp endpoint, we will just dump it's ep info.
      For a sctp connection, we will the assoc info and it's ep info.
      
      The ss dump will looks like:
      
      [iproute2]# ./misc/ss --sctp  -n -l
      State      Recv-Q Send-Q   Local Address:Port       Peer Address:Port
      LISTEN     0      128      172.16.254.254:8888      *:*
      LISTEN     0      5        127.0.0.1:1234           *:*
      LISTEN     0      5        127.0.0.1:1234           *:*
        - ESTAB  0      0        127.0.0.1%lo:1234        127.0.0.1:4321
      LISTEN     0      128      172.16.254.254:8888      *:*
        - ESTAB  0      0        172.16.254.254%eth1:8888 172.16.253.253:8888
        - ESTAB  0      0        172.16.254.254%eth1:8888 172.16.1.1:8888
        - ESTAB  0      0        172.16.254.254%eth1:8888 172.16.1.2:8888
        - ESTAB  0      0        172.16.254.254%eth1:8888 172.16.2.1:8888
        - ESTAB  0      0        172.16.254.254%eth1:8888 172.16.2.2:8888
        - ESTAB  0      0        172.16.254.254%eth1:8888 172.16.3.1:8888
        - ESTAB  0      0        172.16.254.254%eth1:8888 172.16.3.2:8888
      LISTEN     0      0        127.0.0.1:4321           *:*
        - ESTAB  0      0        127.0.0.1%lo:4321        127.0.0.1:1234
      
      The entries with '- ESTAB' are the assocs, some of them may belong to
      the same endpoint. So we will dump the parent endpoint first, like the
      entry with 'LISTEN'. then dump the assocs. ep and assocs entries will
      be dumped in right order so that ss can show them in tree format easily.
      
      Besides, this patchset also simplifies sctp proc codes, cause it has
      some similar codes with sctp diag in sctp transport traversal.
      
      v1->v2:
        1. inet_diag_get_handler needs to return it as const.
        2. merge 5/7 into 2/7 of v1.
      
      v2->v3:
        do some improvements and fixes in patch 1-4, see the details in
        each patch's comment.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4e811b1e
    • Xin Long's avatar
      sctp: fix some rhashtable functions using in sctp proc/diag · 53fa1036
      Xin Long authored
      When rhashtable_walk_init return err, no release function should be
      called, and when rhashtable_walk_start return err, we should only invoke
      rhashtable_walk_exit to release the source.
      
      But now when sctp_transport_walk_start return err, we just call
      rhashtable_walk_stop/exit, and never care about if rhashtable_walk_init
      or start return err, which is so bad.
      
      We will fix it by calling rhashtable_walk_exit if rhashtable_walk_start
      return err in sctp_transport_walk_start, and if sctp_transport_walk_start
      return err, we do not need to call sctp_transport_walk_stop any more.
      
      For sctp proc, we will use 'iter->start_fail' to decide if we will call
      rhashtable_walk_stop/exit.
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      53fa1036
    • Xin Long's avatar
      sctp: merge the seq_start/next/exits in remaddrs and assocs · b5e2f4e6
      Xin Long authored
      In sctp proc, these three functions in remaddrs and assocs are the
      same. we should merge them into one.
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b5e2f4e6
    • Xin Long's avatar
      sctp: add the sctp_diag.c file · 8f840e47
      Xin Long authored
      This one will implement all the interface of inet_diag, inet_diag_handler.
      which includes sctp_diag_dump, sctp_diag_dump_one and sctp_diag_get_info.
      
      It will work as a module, and register inet_diag_handler when loading.
      
      v2->v3:
      - fix the mistake in inet_assoc_attr_size().
      
      - change inet_diag_msg_laddrs_fill() name to inet_diag_msg_sctpladdrs_fill.
      
      - change inet_diag_msg_paddrs_fill() name to inet_diag_msg_sctpaddrs_fill.
      
      - add inet_diag_msg_sctpinfo_fill() to make asoc/ep fill code clearer.
      
      - add inet_diag_msg_sctpasoc_fill() to make asoc fill code clearer.
      
      - merge inet_asoc_diag_fill() and inet_ep_diag_fill() to
        inet_sctp_diag_fill().
      
      - call sctp_diag_get_info() directly, instead by handler, cause the caller
        is in the same file with it.
      
      - call lock_sock in sctp_tsp_dump_one() to make sure we call get sctp info
        safely.
      
      - after lock_sock(sk), we should check sk != assoc->base.sk.
      
      - change mem[SK_MEMINFO_WMEM_ALLOC] to asoc->sndbuf_used for asoc dump when
        asoc->ep->sndbuf_policy is set. don't use INET_DIAG_MEMINFO attr any more.
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8f840e47
    • Xin Long's avatar
      sctp: export some functions for sctp_diag in inet_diag · cb2050a7
      Xin Long authored
      inet_diag_msg_common_fill is used to fill the diag msg common info,
      we need to use it in sctp_diag as well, so export it.
      
      inet_diag_msg_attrs_fill is used to fill some common attrs info between
      sctp diag and tcp diag.
      
      v2->v3:
      - do not need to define and export inet_diag_get_handler any more.
        cause all the functions in it are in sctp_diag.ko, we just call
        them in sctp_diag.ko.
      
      - add inet_diag_msg_attrs_fill to make codes clear.
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cb2050a7
    • Xin Long's avatar
      sctp: export some apis or variables for sctp_diag and reuse some for proc · 626d16f5
      Xin Long authored
      For some main variables in sctp.ko, we couldn't export it to other modules,
      so we have to define some api to access them.
      
      It will include sctp transport and endpoint's traversal.
      
      There are some transport traversal functions for sctp_diag, we can also
      use it for sctp_proc. cause they have the similar situation to traversal
      transport.
      
      v2->v3:
      - rhashtable_walk_init need the parameter gfp, because of recent upstrem
        update
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      626d16f5
    • Xin Long's avatar
      sctp: add sctp_info dump api for sctp_diag · 52c52a61
      Xin Long authored
      sctp_diag will dump some important details of sctp's assoc or ep, we use
      sctp_info to describe them,  sctp_get_sctp_info to get them, and export
      it to sctp_diag.ko.
      
      v2->v3:
      - we will not use list_for_each_safe in sctp_get_sctp_info, cause
        all the callers of it will use lock_sock.
      
      - fix the holes in struct sctp_info with __reserved* field.
        because sctp_diag is a new feature, and sctp_info is just for now,
        it may be changed in the future.
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      52c52a61
    • Marcelo Ricardo Leitner's avatar
      sctp: simplify sk_receive_queue locking · 311b2177
      Marcelo Ricardo Leitner authored
      SCTP already serializes access to rcvbuf through its sock lock:
      sctp_recvmsg takes it right in the start and release at the end, while
      rx path will also take the lock before doing any socket processing. On
      sctp_rcv() it will check if there is an user using the socket and, if
      there is, it will queue incoming packets to the backlog. The backlog
      processing will do the same. Even timers will do such check and
      re-schedule if an user is using the socket.
      
      Simplifying this will allow us to remove sctp_skb_list_tail and get ride
      of some expensive lockings.  The lists that it is used on are also
      mangled with functions like __skb_queue_tail and __skb_unlink in the
      same context, like on sctp_ulpq_tail_event() and sctp_clear_pd().
      sctp_close() will also purge those while using only the sock lock.
      
      Therefore the lockings performed by sctp_skb_list_tail() are not
      necessary. This patch removes this function and replaces its calls with
      just skb_queue_splice_tail_init() instead.
      
      The biggest gain is at sctp_ulpq_tail_event(), because the events always
      contain a list, even if it's queueing a single skb and this was
      triggering expensive calls to spin_lock_irqsave/_irqrestore for every
      data chunk received.
      
      As SCTP will deliver each data chunk on a corresponding recvmsg, the
      more effective the change will be.
      Before this patch, with chunks with 30 bytes:
      netperf -t SCTP_STREAM -H 192.168.1.2 -cC -l 60 -- -m 30 -S 400000
      400000 -s 400000 400000
      on a 10Gbit link with 1500 MTU:
      
      SCTP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.1 () port 0 AF_INET
      Recv   Send    Send                          Utilization       Service Demand
      Socket Socket  Message  Elapsed              Send     Recv     Send    Recv
      Size   Size    Size     Time     Throughput  local    remote   local   remote
      bytes  bytes   bytes    secs.    10^6bits/s  % S      % S      us/KB   us/KB
      
      425984 425984     30    60.00       137.45   7.34     7.36     52.504  52.608
      
      With it:
      
      SCTP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.1.1 () port 0 AF_INET
      Recv   Send    Send                          Utilization       Service Demand
      Socket Socket  Message  Elapsed              Send     Recv     Send    Recv
      Size   Size    Size     Time     Throughput  local    remote   local   remote
      bytes  bytes   bytes    secs.    10^6bits/s  % S      % S      us/KB   us/KB
      
      425984 425984     30    60.00       179.10   7.97     6.70     43.740  36.788
      Signed-off-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      311b2177
    • David S. Miller's avatar
      Merge branch 'mlx5_ifc-updates' · 936d4b41
      David S. Miller authored
      Saeed Mahameed says:
      
      ====================
      mlx5_core: mlx5_ifc updates
      
      This series include mlx5_core updates for both net-next and rdma
      trees for 4.7 kernel cycle. This is the only shared code planned
      for 4.7 between rdma and net trees. Hopefully, this will prevent
      future conflicts when merging between ib-next and net-next once
      4.7 cycle is over and merge window is opened.
      
      Both Mellanox rdma and net submissions will proceed once this series
      is applied into both trees.
      
      Future shared code will be sent to both maintainers as pull requests
      from Mellanox's kernel.org tree.
      
      We have included all the maintainers of respective drivers.
      Kindly review the change and let us know in case of any review comments.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      936d4b41
    • Saeed Mahameed's avatar
      net/mlx5: Update mlx5_ifc hardware features · 7d5e1423
      Saeed Mahameed authored
      Adding the needed mlx5_ifc hardware bits and structs
      for the following feature:
      
      * Add vport to steering commands for SRIOV ACL support
      * Add mlcr, pcmr and mcia registers for dump module EEPROM
      * Add support for FCS, baeacon led and disable_link bits to
        hca caps
      * Add CQE period mode bit in  CQ context for CQE based CQ
        moderation support
      * Add umr SQ bit for fragmented memory registration
      * Add needed bits and caps for Striding RQ support
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: default avatarMatan Barak <matanb@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7d5e1423
    • Tariq Toukan's avatar
      net/mlx5: Fix mlx5 ifc cmd_hca_cap bad offsets · e1c9c62b
      Tariq Toukan authored
      All reserved fields after early_vf_enable are off by 1, since
      early_vf_enable was not explicitly declared as array of size 1.
      
      Reserved field before cqe_zip had a wrong size, it should
      be 0x80 + 0x3f.
      
      Fixes: b0844444 ("net/mlx5_core: Introduce access function to read internal timer ")
      Fixes: b4ff3a36 ("net/mlx5: Use offset based reserved field names in the IFC header file")
      Signed-off-by: default avatarTariq Toukan <tariqt@mellanox.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: default avatarMatan Barak <matanb@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e1c9c62b
    • David S. Miller's avatar
      Merge branch 'qed-tunneling-offload' · 993feee9
      David S. Miller authored
      Manish Chopra says:
      
      ====================
      qed/qede: Add tunneling support
      
      This patch series adds support for VXLAN, GRE and GENEVE tunnels
      to be used over this driver. With this support, adapter can perform
      TSO offload, inner/outer checksums offloads on TX and RX for
      encapsulated packets.
      
      V1->V2 [ Comments from Jesse Gross incorporated ]
      * Drop general infrastructure change patch.
        "net: Make vxlan/geneve default udp ports public"
      * Remove by default Linux default UDP ports configurations in driver.
        Instead, use general registration APIs for UDP port configurations
      * Removing .ndo_features_check - we will add it later with proper change.
      
      Please consider applying this series to net-next.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      993feee9
    • Manish Chopra's avatar
      qede: Add fastpath support for tunneling · 14db81de
      Manish Chopra authored
      This patch enables netdev tunneling features and adds
      TX/RX fastpath support for tunneling in driver.
      Signed-off-by: default avatarManish Chopra <manish.chopra@qlogic.com>
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarAriel Elior <Ariel.Elior@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      14db81de
    • Manish Chopra's avatar
    • Manish Chopra's avatar
      qed/qede: Add GENEVE tunnel slowpath configuration support · 9a109dd0
      Manish Chopra authored
      This patch enables GENEVE tunnel on the adapter and
      add support for driver hooks to configure UDP ports
      for GENEVE tunnel offload to be performed by the adapter.
      Signed-off-by: default avatarManish Chopra <manish.chopra@qlogic.com>
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarAriel Elior <Ariel.Elior@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9a109dd0
    • Manish Chopra's avatar
      qed/qede: Add VXLAN tunnel slowpath configuration support · b18e170c
      Manish Chopra authored
      This patch enables VXLAN tunnel on the adapter and
      add support for driver hooks to configure UDP ports
      for VXLAN tunnel offload to be performed by the adapter.
      Signed-off-by: default avatarManish Chopra <manish.chopra@qlogic.com>
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarAriel Elior <Ariel.Elior@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b18e170c
    • Manish Chopra's avatar
      qed: Add infrastructure support for tunneling · 464f6645
      Manish Chopra authored
      This patch adds various structure/APIs needed to configure/enable different
      tunnel [VXLAN/GRE/GENEVE] parameters on the adapter.
      Signed-off-by: default avatarManish Chopra <manish.chopra@qlogic.com>
      Signed-off-by: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
      Signed-off-by: default avatarAriel Elior <Ariel.Elior@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      464f6645
    • Peter Heise's avatar
      net/hsr: Added support for HSR v1 · ee1c2797
      Peter Heise authored
      This patch adds support for the newer version 1 of the HSR
      networking standard. Version 0 is still default and the new
      version has to be selected via iproute2.
      
      Main changes are in the supervision frame handling and its
      ethertype field.
      Signed-off-by: default avatarPeter Heise <peter.heise@airbus.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ee1c2797
    • David S. Miller's avatar
      Merge branch 'tcp-synflood-perf' · 125c8d12
      David S. Miller authored
      Eric Dumazet says:
      
      ====================
      tcp: final work on SYNFLOOD behavior
      
      In the first patch, I remove the costly association of SYNACK+COOKIES
      to a listener. I believe other parts of the stack should be ready.
      
      The second patch removes a useless write into listener socket
      in tcp_rcv_state_process(), incurring false sharing in
      tcp_conn_request()
      
      Performance under SYNFLOOD goes from 3.2 Mpps to 6 Mpps.
      
      Test was using a single TCP listener, on a host with 8 RX queues
      on the NIC, and 24 cores (48 ht)
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      125c8d12
    • Eric Dumazet's avatar
      tcp: remove false sharing in tcp_rcv_state_process() · 8804b272
      Eric Dumazet authored
      Last known hot point during SYNFLOOD attack is the clearing
      of rx_opt.saw_tstamp in tcp_rcv_state_process()
      
      It is not needed for a listener, so we move it where it matters.
      
      Performance while a SYNFLOOD hits a single listener socket
      went from 5 Mpps to 6 Mpps on my test server (24 cores, 8 NIC RX queues)
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8804b272
    • Eric Dumazet's avatar
      tcp: do not mess with listener sk_wmem_alloc · b3d05147
      Eric Dumazet authored
      When removing sk_refcnt manipulation on synflood, I missed that
      using skb_set_owner_w() was racy, if sk->sk_wmem_alloc had already
      transitioned to 0.
      
      We should hold sk_refcnt instead, but this is a big deal under attack.
      (Doing so increase performance from 3.2 Mpps to 3.8 Mpps only)
      
      In this patch, I chose to not attach a socket to syncookies skb.
      
      Performance is now 5 Mpps instead of 3.2 Mpps.
      
      Following patch will remove last known false sharing in
      tcp_rcv_state_process()
      
      Fixes: 3b24d854 ("tcp/dccp: do not touch listener sk_refcnt under synflood")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b3d05147