1. 23 Aug, 2016 1 commit
  2. 04 Aug, 2016 1 commit
    • Krzysztof Kozlowski's avatar
      dma-mapping: use unsigned long for dma_attrs · 00085f1e
      Krzysztof Kozlowski authored
      The dma-mapping core and the implementations do not change the DMA
      attributes passed by pointer.  Thus the pointer can point to const data.
      However the attributes do not have to be a bitfield.  Instead unsigned
      long will do fine:
      
      1. This is just simpler.  Both in terms of reading the code and setting
         attributes.  Instead of initializing local attributes on the stack
         and passing pointer to it to dma_set_attr(), just set the bits.
      
      2. It brings safeness and checking for const correctness because the
         attributes are passed by value.
      
      Semantic patches for this change (at least most of them):
      
          virtual patch
          virtual context
      
          @r@
          identifier f, attrs;
      
          @@
          f(...,
          - struct dma_attrs *attrs
          + unsigned long attrs
          , ...)
          {
          ...
          }
      
          @@
          identifier r.f;
          @@
          f(...,
          - NULL
          + 0
           )
      
      and
      
          // Options: --all-includes
          virtual patch
          virtual context
      
          @r@
          identifier f, attrs;
          type t;
      
          @@
          t f(..., struct dma_attrs *attrs);
      
          @@
          identifier r.f;
          @@
          f(...,
          - NULL
          + 0
           )
      
      Link: http://lkml.kernel.org/r/1468399300-5399-2-git-send-email-k.kozlowski@samsung.comSigned-off-by: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Acked-by: default avatarVineet Gupta <vgupta@synopsys.com>
      Acked-by: default avatarRobin Murphy <robin.murphy@arm.com>
      Acked-by: default avatarHans-Christian Noren Egtvedt <egtvedt@samfundet.no>
      Acked-by: Mark Salter <msalter@redhat.com> [c6x]
      Acked-by: Jesper Nilsson <jesper.nilsson@axis.com> [cris]
      Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> [drm]
      Reviewed-by: default avatarBart Van Assche <bart.vanassche@sandisk.com>
      Acked-by: Joerg Roedel <jroedel@suse.de> [iommu]
      Acked-by: Fabien Dessenne <fabien.dessenne@st.com> [bdisp]
      Reviewed-by: Marek Szyprowski <m.szyprowski@samsung.com> [vb2-core]
      Acked-by: David Vrabel <david.vrabel@citrix.com> [xen]
      Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> [xen swiotlb]
      Acked-by: Joerg Roedel <jroedel@suse.de> [iommu]
      Acked-by: Richard Kuo <rkuo@codeaurora.org> [hexagon]
      Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> [m68k]
      Acked-by: Gerald Schaefer <gerald.schaefer@de.ibm.com> [s390]
      Acked-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
      Acked-by: Hans-Christian Noren Egtvedt <egtvedt@samfundet.no> [avr32]
      Acked-by: Vineet Gupta <vgupta@synopsys.com> [arc]
      Acked-by: Robin Murphy <robin.murphy@arm.com> [arm64 and dma-iommu]
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      00085f1e
  3. 02 Aug, 2016 1 commit
  4. 23 Jun, 2016 7 commits
  5. 07 Jun, 2016 2 commits
  6. 26 May, 2016 1 commit
    • Christoph Lameter's avatar
      IB/core: Make device counter infrastructure dynamic · b40f4757
      Christoph Lameter authored
      In practice, each RDMA device has a unique set of counters that the
      hardware implements.  Having a central set of counters that they must
      all adhere to is limiting and causes many useful counters to not be
      available.
      
      Therefore we create a dynamic counter registration infrastructure.
      
      The driver must implement a stats structure allocation routine, in
      which the driver must place the directory name it wants, a list of
      names for all of the counters, an array of u64 counters themselves,
      plus a few generic configuration options.
      
      We then implement a core routine to create a sysfs file for each
      of the named stats elements, and a core routine to retrieve the
      stats when any of the sysfs attribute files are read.
      
      To avoid excessive beating on the stats generation routine in the
      drivers, the core code also caches the stats for a short period of
      time so that someone attempting to read all of the stats in a
      given device's directory will not result in a stats generation
      call per file read.
      
      Future work will attempt to standardize just the shared stats
      elements, and possibly add a method to get the stats via netlink
      in addition to sysfs.
      Signed-off-by: default avatarChristoph Lameter <cl@linux.com>
      Signed-off-by: default avatarMark Bloch <markb@mellanox.com>
      Reviewed-by: default avatarSteve Wise <swise@opengridcomputing.com>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      [ Add caching, make structure names more informative, add i40iw support,
        other significant rewrites from the original patch ]
      b40f4757
  7. 13 May, 2016 9 commits
  8. 21 Mar, 2016 4 commits
    • Eli Cohen's avatar
      IB/core: Add interfaces to control VF attributes · 50174a7f
      Eli Cohen authored
      Following the practice exercised for network devices which allow the PF
      net device to configure attributes of its virtual functions, we
      introduce the following functions to be used by IPoIB which is the
      network driver implementation for IB devices.
      
      ib_set_vf_link_state - set the policy for a VF link. More below.
      ib_get_vf_config - read configuration information of a VF
      ib_get_vf_stats - read VF statistics
      ib_set_vf_guid - set the node or port GUID of a VF
      
      Also add an indication in the device cap flags that indicates that this
      IB devices is based on a virtual function.
      
      A VF shares the physical port with the PF and other VFs. When setting
      the link state we have three options:
      
      1. Auto - in this mode, the virtual port follows the state of the
         physical port and becomes active only if the physical port's state is
         active. In all other cases it remains in a Down state.
      2. Down - sets the state of the virtual port to Down
      3. Up - causes the virtual port to transition into Initialize state if
         it was not already in this state. A virtualization aware subnet manager
         can then bring the state of the port into the Active state.
      Signed-off-by: default avatarEli Cohen <eli@mellanox.com>
      Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      50174a7f
    • Eli Cohen's avatar
      IB/core: Support accessing SA in virtualized environment · a0c1b2a3
      Eli Cohen authored
      Per the ongoing standardisation process, when virtual HCAs are present
      in a network, traffic is routed based on a destination GID. In order to
      access the SA we use the well known SA GID.
      
      We also add a GRH required boolean field to the port attributes which is
      used to report to the verbs consumer whether this port is connected to a
      virtual network. We use this field to realize whether we need to create
      an address vector with GRH to access the subnet administrator. We clear
      the port attributes struct before calling the hardware driver to make
      sure the default remains that GRH is not required.
      Signed-off-by: default avatarEli Cohen <eli@mellanox.com>
      Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      a0c1b2a3
    • Eli Cohen's avatar
      IB/core: Add subnet prefix to port info · fad61ad4
      Eli Cohen authored
      The subnet prefix is a part of the port_info MAD returned and should be
      available at the ib_port_attr struct. We define it here and provide a
      default implementation in case the hardware driver does not provide one.
      The subnet prefix is required when creating the address vector to access
      the SA in networks where GRH must be used.
      Signed-off-by: default avatarEli Cohen <eli@mellanox.com>
      Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      fad61ad4
    • Leon Romanovsky's avatar
      IB/{core, ulp} Support above 32 possible device capability flags · fb532d6a
      Leon Romanovsky authored
      The old bitwise device_cap_flags variable was limited to u32 which
      has all bits already defined. In order to overcome it, we converted
      device_cap_flags variable to be u64 type.
      Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
      Reviewed-by: default avatarMatan Barak <matanb@mellanox.com>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      fb532d6a
  9. 10 Mar, 2016 1 commit
  10. 04 Mar, 2016 1 commit
  11. 01 Mar, 2016 1 commit
  12. 29 Feb, 2016 2 commits
    • Marina Varshaver's avatar
      IB/core: Add don't trap flag to flow creation · a3100a78
      Marina Varshaver authored
      Don't trap flag (i.e. IB_FLOW_ATTR_FLAGS_DONT_TRAP) indicates that QP
      will receive traffic, but will not steal it.
      
      When a packet matches a flow steering rule that was created with
      the don't trap flag, the QPs assigned to this rule will get this
      packet, but matching will continue to other equal/lower priority
      rules. This will let other QPs assigned to those rules to get the
      packet too.
      
      If both don't trap rule and other rules have the same priority
      and match the same packet, the behavior is undefined.
      
      The don't trap flag can't be set with default rule types
      (i.e. IB_FLOW_ATTR_ALL_DEFAULT, IB_FLOW_ATTR_MC_DEFAULT) as default rules
      don't have rules after them and don't trap has no meaning here.
      Signed-off-by: default avatarMarina Varshaver <marinav@mellanox.com>
      Reviewed-by: default avatarMatan Barak <matanb@mellanox.com>
      Reviewed-by: default avatarYishai Hadas <yishaih@mellanox.com>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      a3100a78
    • Steve Wise's avatar
      IB: new common API for draining queues · 765d6774
      Steve Wise authored
      Add provider-specific drain_sq/drain_rq functions for providers needing
      special drain logic.
      
      Add static functions __ib_drain_sq() and __ib_drain_rq() which post noop
      WRs to the SQ or RQ and block until their completions are processed.
      This ensures the applications completions for work requests posted prior
      to the drain work request have all been processed.
      
      Add API functions ib_drain_sq(), ib_drain_rq(), and ib_drain_qp().
      
      For the drain logic to work, the caller must:
      
      ensure there is room in the CQ(s) and QP for the drain work request
      and completion.
      
      allocate the CQ using ib_alloc_cq() and the CQ poll context cannot be
      IB_POLL_DIRECT.
      
      ensure that there are no other contexts that are posting WRs concurrently.
      Otherwise the drain is not guaranteed.
      Reviewed-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarSteve Wise <swise@opengridcomputing.com>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      765d6774
  13. 19 Jan, 2016 1 commit
  14. 23 Dec, 2015 8 commits