1. 14 9月, 2018 4 次提交
  2. 13 9月, 2018 10 次提交
  3. 12 9月, 2018 1 次提交
  4. 11 9月, 2018 7 次提交
  5. 06 9月, 2018 13 次提交
    • D
      qed*: Utilize FW 8.37.7.0 · a3f72307
      Denis Bolotin 提交于
      This patch adds a new qed firmware with fixes and support for new features.
      
      Fixes:
      - Fix a rare case of device crash with iWARP, iSCSI or FCoE offload.
      - Fix GRE tunneled traffic when iWARP offload is enabled.
      - Fix RoCE failure in ib_send_bw when using inline data.
      - Fix latency optimization flow for inline WQEs.
      - BigBear 100G fix
      
      RDMA:
      - Reduce task context size.
      - Application page sizes above 2GB support.
      - Performance improvements.
      
      ETH:
      - Tenant DCB support.
      - Replace RSS indirection table update interface.
      
      Misc:
      - Debug Tools changes.
      Signed-off-by: NDenis Bolotin <denis.bolotin@cavium.com>
      Signed-off-by: NAriel Elior <ariel.elior@cavium.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a3f72307
    • C
      if_link: add IFLA_TARGET_NETNSID alias · 19d8f1ad
      Christian Brauner 提交于
      This adds IFLA_TARGET_NETNSID as an alias for IFLA_IF_NETNSID for
      RTM_*LINK requests.
      The new name is clearer and also aligns with the newly introduced
      IFA_TARGET_NETNSID propert for RTM_*ADDR requests.
      Signed-off-by: NChristian Brauner <christian@brauner.io>
      Suggested-by: NNicolas Dichtel <nicolas.dichtel@6wind.com>
      Cc: Jiri Benc <jbenc@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      19d8f1ad
    • C
      if_addr: add IFA_TARGET_NETNSID · 9f3c057c
      Christian Brauner 提交于
      This adds a new IFA_TARGET_NETNSID property to be used by address
      families such as PF_INET and PF_INET6.
      The IFA_TARGET_NETNSID property can be used to send a network namespace
      identifier as part of a request. If a IFA_TARGET_NETNSID property is
      identified it will be used to retrieve the target network namespace in
      which the request is to be made.
      Signed-off-by: NChristian Brauner <christian@brauner.io>
      Cc: Jiri Benc <jbenc@redhat.com>
      Cc: Nicolas Dichtel <nicolas.dichtel@6wind.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9f3c057c
    • C
      rtnetlink: add rtnl_get_net_ns_capable() · c383edc4
      Christian Brauner 提交于
      get_target_net() will be used in follow-up patches in ipv{4,6} codepaths to
      retrieve network namespaces based on network namespace identifiers. So
      remove the static declaration and export in the rtnetlink header. Also,
      rename it to rtnl_get_net_ns_capable() to make it obvious what this
      function is doing.
      Export rtnl_get_net_ns_capable() so it can be used when ipv6 is built as
      a module.
      Signed-off-by: NChristian Brauner <christian@brauner.io>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c383edc4
    • V
      packet: add sockopt to ignore outgoing packets · fa788d98
      Vincent Whitchurch 提交于
      Currently, the only way to ignore outgoing packets on a packet socket is
      via the BPF filter.  With MSG_ZEROCOPY, packets that are looped into
      AF_PACKET are copied in dev_queue_xmit_nit(), and this copy happens even
      if the filter run from packet_rcv() would reject them.  So the presence
      of a packet socket on the interface takes away the benefits of
      MSG_ZEROCOPY, even if the packet socket is not interested in outgoing
      packets.  (Even when MSG_ZEROCOPY is not used, the skb is unnecessarily
      cloned, but the cost for that is much lower.)
      
      Add a socket option to allow AF_PACKET sockets to ignore outgoing
      packets to solve this.  Note that the *BSDs already have something
      similar: BIOCSSEESENT/BIOCSDIRECTION and BIOCSDIRFILT.
      
      The first intended user is lldpd.
      Signed-off-by: NVincent Whitchurch <vincent.whitchurch@axis.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      fa788d98
    • S
      net/mlx5e: Replace PTP clock lock from RW lock to seq lock · 64109f1d
      Shay Agroskin 提交于
      Changed "priv.clock.lock" lock from 'rw_lock' to 'seq_lock'
      in order to improve packet rate performance.
      
      Tested on Intel(R) Xeon(R) CPU E5-2660 v2 @ 2.20GHz.
      Sent 64b packets between two peers connected by ConnectX-5,
      and measured packet rate for the receiver in three modes:
      	no time-stamping (base rate)
      	time-stamping using rw_lock (old lock) for critical region
      	time-stamping using seq_lock (new lock) for critical region
      Only the receiver time stamped its packets.
      
      The measured packet rate improvements are:
      
      	Single flow (multiple TX rings to single RX ring):
      		without timestamping:	  4.26 (M packets)/sec
      		with rw-lock (old lock):  4.1  (M packets)/sec
      		with seq-lock (new lock): 4.16 (M packets)/sec
      		1.46% improvement
      
      	Multiple flows (multiple TX rings to six RX rings):
      		without timestamping: 	  22   (M packets)/sec
      		with rw-lock (old lock):  11.7 (M packets)/sec
      		with seq-lock (new lock): 21.3 (M packets)/sec
      		82.05% improvement
      
      The packet rate improvement is due to the lack of atomic operations
      for the 'readers' by the seq-lock.
      Since there are much more 'readers' than 'writers' contention
      on this lock, almost all atomic operations are saved.
      this results in a dramatic decrease in overall
      cache misses.
      Signed-off-by: NShay Agroskin <shayag@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      64109f1d
    • V
      net/mlx5: Add flow counters idr · 12d6066c
      Vlad Buslov 提交于
      Previous patch in series changed flow counter storage structure from
      rb_tree to linked list in order to improve flow counter traversal
      performance. The drawback of such solution is that flow counter lookup by
      id becomes linear in complexity.
      
      Store pointers to flow counters in idr in order to improve lookup
      performance to logarithmic again. Idr is non-intrusive data structure and
      doesn't require extending flow counter struct with new elements. This means
      that idr can be used for lookup, while linked list from previous patch is
      used for traversal, and struct mlx5_fc size is <= 2 cache lines.
      Signed-off-by: NVlad Buslov <vladbu@mellanox.com>
      Acked-by: NAmir Vadai <amir@vadai.me>
      Reviewed-by: NPaul Blakey <paulb@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      12d6066c
    • V
      net/mlx5: Store flow counters in a list · 9aff93d7
      Vlad Buslov 提交于
      In order to improve performance of flow counter stats query loop that
      traverses all configured flow counters, replace rb_tree with double-linked
      list. This change improves performance of traversing flow counters by
      removing the tree traversal. (profiling data showed that call to rb_next
      was most top CPU consumer)
      
      However, lookup of flow flow counter in list becomes linear, instead of
      logarithmic. This problem is fixed by next patch in series, which adds idr
      for fast lookup. Idr is to be used because it is not an intrusive data
      structure and doesn't require adding any new members to struct mlx5_fc,
      which allows its control data part to stay <= 1 cache line in size.
      Signed-off-by: NVlad Buslov <vladbu@mellanox.com>
      Acked-by: NAmir Vadai <amir@vadai.me>
      Reviewed-by: NPaul Blakey <paulb@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      9aff93d7
    • V
      net/mlx5: Add new list to store deleted flow counters · 6e5e2283
      Vlad Buslov 提交于
      In order to prevent flow counters stats work function from traversing whole
      flow counters tree while searching for deleted flow counters, new list to
      store deleted flow counters is added to struct mlx5_fc_stats. Lockless
      NULL-terminated single linked list data type is used due to following
      reasons:
       - This use case only needs to add single element to list and
       remove/iterate whole list. Lockless list doesn't require any additional
       synchronization for these operations.
       - First cache line of flow counter data structure only has space to store
       single additional pointer, which precludes usage of double linked list.
      
      Remove flow counter 'deleted' flag that is no longer needed.
      Signed-off-by: NVlad Buslov <vladbu@mellanox.com>
      Acked-by: NAmir Vadai <amir@vadai.me>
      Reviewed-by: NPaul Blakey <paulb@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      6e5e2283
    • V
      net/mlx5: Change flow counters addlist type to single linked list · 83033688
      Vlad Buslov 提交于
      In order to prevent flow counters stats work function from traversing whole
      flow counters tree while searching for deleted flow counters, new list to
      store deleted flow counters will be added to struct mlx5_fc_stats. However,
      the flow counter structure itself has no space left to store any more data
      in first cache line. To free space that is needed to store additional list
      node, convert current addlist double linked list (two pointers per node) to
      atomic single linked list (one pointer per node).
      
      Lockless NULL-terminated single linked list data type doesn't require any
      additional external synchronization for operations used by flow counters
      module (add single new element, remove all elements from list and traverse
      them). Remove addlist_lock that is no longer needed.
      Signed-off-by: NVlad Buslov <vladbu@mellanox.com>
      Acked-by: NAmir Vadai <amir@vadai.me>
      Reviewed-by: NPaul Blakey <paulb@mellanox.com>
      Reviewed-by: NRoi Dayan <roid@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      83033688
    • T
      net/mlx5: Use u16 for Work Queue buffer strides offset · a0903622
      Tariq Toukan 提交于
      Minimal stride size is 16.
      Hence, the number of strides in a fragment (of PAGE_SIZE)
      is <= PAGE_SIZE / 16 <= 4K.
      
      u16 is sufficient to represent this.
      
      Fixes: d7037ad7 ("net/mlx5: Fix QP fragmented buffer allocation")
      Signed-off-by: NTariq Toukan <tariqt@mellanox.com>
      Reviewed-by: NEran Ben Elisha <eranbe@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      a0903622
    • T
      net/mlx5: Use u16 for Work Queue buffer fragment size · 8d71e818
      Tariq Toukan 提交于
      Minimal stride size is 16.
      Hence, the number of strides in a fragment (of PAGE_SIZE)
      is <= PAGE_SIZE / 16 <= 4K.
      
      u16 is sufficient to represent this.
      
      Fixes: 388ca8be ("IB/mlx5: Implement fragmented completion queue (CQ)")
      Signed-off-by: NTariq Toukan <tariqt@mellanox.com>
      Reviewed-by: NEran Ben Elisha <eranbe@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      8d71e818
    • J
      net/mlx5: Fix use-after-free in self-healing flow · 76d5581c
      Jack Morgenstein 提交于
      When the mlx5 health mechanism detects a problem while the driver
      is in the middle of init_one or remove_one, the driver needs to prevent
      the health mechanism from scheduling future work; if future work
      is scheduled, there is a problem with use-after-free: the system WQ
      tries to run the work item (which has been freed) at the scheduled
      future time.
      
      Prevent this by disabling work item scheduling in the health mechanism
      when the driver is in the middle of init_one() or remove_one().
      
      Fixes: e126ba97 ("mlx5: Add driver for Mellanox Connect-IB adapters")
      Signed-off-by: NJack Morgenstein <jackm@dev.mellanox.co.il>
      Reviewed-by: NFeras Daoud <ferasda@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      76d5581c
  6. 05 9月, 2018 5 次提交