libibverbs (1.1.8-1) unstable; urgency=low

  * New upstream release.
    - XRC support
    - Flow steering support
    - Generic infrastructure for further "verbs extensions"
  * Update to Standards-Version: 3.9.5.

 -- Roland Dreier <rbd@debian.org>  Mon, 05 May 2014 09:50:44 -0700

libibverbs (1.1.7-1) unstable; urgency=low

  * New upstream release.
    - Add raw QP support
    - Further support for new IB link speeds
    - Other miscellaneous fixes
  * Update maintainer and remove DM-Upload-Allowed now that I'm a DD.

 -- Roland Dreier <rbd@debian.org>  Wed, 29 Jan 2014 13:02:21 -0800

libibverbs (1.1.6-1) unstable; urgency=low

  * Don't use brace expansion for {a,so} in libibverbs-dev.install
  * New upstream releases.
    - Add IBoE support
    - Add ibv_devinfo support for displaying extended speeds (FDR, etc)

 -- Roland Dreier <roland@digitalvampire.org>  Wed, 21 Dec 2011 16:35:08 -0800

libibverbs (1.1.5-1) unstable; urgency=low

  * Switch to dpkg-source 3.0 (quilt) format.
  * New upstream releases.
    - Fix handling of madvise() failures
    - Add path record definitions to sa.h
    - Handle huge pages for fork support/madvise
    - Fix crash if no devices and ibv_get_device_list() called multiple times
  * Update maintainer and set DM-Upload-Allowed to yes.  (Closes: #632106)
  * Don't ship .la files.
  * Update to Standards-Version: 3.9.2.

 -- Roland Dreier <roland@digitalvampire.org>  Wed, 29 Jun 2011 23:57:34 -0700

libibverbs (1.1.3-2) unstable; urgency=low

  * Add override_dh_strip target to get debugging information actually
    put into the -dbg package.

 -- Roland Dreier <rolandd@cisco.com>  Wed, 11 Nov 2009 14:44:51 -0800

libibverbs (1.1.3-1) unstable; urgency=low

  * New upstream release.
    - Don't use enums for bit flags (avoid C++ annoyances)
    - Return some errors via errno instead of stderr
  * Move -dbg package to section debug.
  * Update to Standards-Version: 3.8.3 (no changes needed).
  * Change build system from cdbs to debhelper 7.

 -- Roland Dreier <rolandd@cisco.com>  Thu, 29 Oct 2009 14:19:02 -0700

libibverbs (1.1.2-1) unstable; urgency=low

  * New upstream release.
    - Fix memory registration failure cause by too-big madvise()
    - Fix many Valgrind false positives
    - Add functions to convert enum values to strings
  * Replace deprecated ${Source-Version} with ${binary:Version}
  * Use DEB_DH_MAKESHLIBS_ARGS_ALL to pass appropriate -V option to
    dh_makeshlibs, since new symbols were added in libibverbs 1.1.2.
    (Closes: #465435)
  * Add debian/watch file.
  * Update control file to talk about generic RDMA and iWARP, not just
    InfiniBand, since libibverbs works with both IB and iWARP.
  * Acknowledge NMU (Closes: #442638).

 -- Roland Dreier <rolandd@cisco.com>  Fri, 18 Apr 2008 15:08:52 -0700

libibverbs (1.1.1-1.1) unstable; urgency=low

  * Non-maintainer upload.
  * Re-generated autotools files to fix double build bug, closes: #442638
  * Bumped Standards-Version to 3.7.3, no change needed.

 -- Michael Meskes <meskes@debian.org>  Mon, 14 Apr 2008 10:07:58 +0000

libibverbs (1.1.1-1) unstable; urgency=low

  * New upstream release.
    - Initialize state of newly created QPs to RESET (fixes problems
      with libmlx4/ConnectX HCAs).
    - Don't warn root about RLIMIT_MEMLOCK, since it doesn't matter.
    - Fix free() errors in ibv_xx_pingpong examples.

 -- Roland Dreier <rolandd@cisco.com>  Fri, 15 Jun 2007 12:49:02 -0700

libibverbs (1.1-1) unstable; urgency=low

  * New upstream release.
    - Add support for use of fork() in applications.
    - Add manual pages documenting API in section 3.
    - New method of finding and loading device-specific drivers.
    - Add basic support for iWARP devices.
    - Provide compatible ABI for applications linked against libibverbs 1.0.
  * Update libtool during build to avoid setting RPATH in binaries on amd64.

 -- Roland Dreier <rolandd@cisco.com>  Sat, 28 Apr 2007 14:15:29 -0700

libibverbs (1.0.4-1) unstable; urgency=low

  * New upstream release.
    - Fix static linking so it has a chance of working.
    - Fix cut-and-paste error in sparc mb() macro.
    - Other miscellaneous fixes.
  * Improve package description.

 -- Roland Dreier <rolandd@cisco.com>  Tue, 31 Oct 2006 15:04:33 -0800
	
libibverbs (1.0.3-1) unstable; urgency=low

  * Change priority to extra, since libibverbs depends on libsysfs2, which
    has priority extra.  (Debian policy section 2.5 states that a package
    may not depend on another package of lower priority)
  * New upstream release:
    - For sparc, only generate membar instruction if compiling for V9
      instruction set.  (Closes: #365559)
    - Reduce (but not yet eliminate) dependency on libsysfs.
    - Deprecate some ib_XXX symbol names and introduce ibv_XXX
      replacements for internal consistency.
    - Other minor fixes.
  * Update to Standards-Version: 3.7.2.

 -- Roland Dreier <rolandd@cisco.com>  Tue,  2 May 2006 15:33:14 -0700

libibverbs (1.0.2-1) unstable; urgency=low

  * Initial Release.  (Closes: #325752)

 -- Roland Dreier <rolandd@cisco.com>  Wed, 15 Feb 2006 11:21:59 -0700
