)]}'
{
  "commit": "ea54b10c7773007e173da31fe7adcc049da33331",
  "tree": "b13b77fb3807071a5b93ece7b564f6748d962bbc",
  "parents": [
    "b57aacfa7a95328f469d0360e49289b023c47e9e"
  ],
  "author": {
    "name": "Jack Morgenstein",
    "email": "jackm@dev.mellanox.co.il",
    "time": "Mon Jan 28 10:40:59 2008 +0200"
  },
  "committer": {
    "name": "Roland Dreier",
    "email": "rolandd@cisco.com",
    "time": "Fri Feb 08 13:30:02 2008 -0800"
  },
  "message": "IB/mlx4: Use multiple WQ blocks to post smaller send WQEs\n\nConnectX HCA supports shrinking WQEs, so that a single work request\ncan be made of multiple units of wqe_shift.  This way, WRs can differ\nin size, and do not have to be a power of 2 in size, saving memory and\nspeeding up send WR posting.  Unfortunately, if we do this then the\nwqe_index field in CQEs can\u0027t be used to look up the WR ID anymore, so\nour implementation does this only if selective signaling is off.\n\nFurther, on 32-bit platforms, we can\u0027t use vmap() to make the QP\nbuffer virtually contigious. Thus we have to use constant-sized WRs to\nmake sure a WR is always fully within a single page-sized chunk.\n\nFinally, we use WRs with the NOP opcode to avoid wrapping around the\nqueue buffer in the middle of posting a WR, and we set the\nNoErrorCompletion bit to avoid getting completions with error for NOP\nWRs.  However, NEC is only supported starting with firmware 2.2.232,\nso we use constant-sized WRs for older firmware.  And, since MLX QPs\nonly support SEND, we use constant-sized WRs in this case.\n\nWhen stamping during NOP posting, do stamping following setting of the\nNOP WQE valid bit.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@dev.mellanox.co.il\u003e\nSigned-off-by: Jack Morgenstein \u003cjackm@dev.mellanox.co.il\u003e\nSigned-off-by: Roland Dreier \u003crolandd@cisco.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8ac7b973f870e28b37a7a182cb4af26f74cb8966",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/mlx4/cq.c",
      "new_id": "7360bbafbe84ec9883b665913bc76362e7a74196",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/mlx4/cq.c"
    },
    {
      "type": "modify",
      "old_id": "28697653a370f18fac368f3ecaed4c070517601c",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/mlx4/mlx4_ib.h",
      "new_id": "3726e451a327201d037016c4c40173932710d126",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/mlx4/mlx4_ib.h"
    },
    {
      "type": "modify",
      "old_id": "376db730bc75baf7a1e7b6e4eb458947312b97c0",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/mlx4/qp.c",
      "new_id": "958e205b6d7c7d5894b419ac6327b7483b900236",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/mlx4/qp.c"
    },
    {
      "type": "modify",
      "old_id": "4210ac4a8bcd8aee467c03e7ac109392936e0761",
      "old_mode": 33188,
      "old_path": "include/linux/mlx4/device.h",
      "new_id": "6cdf813cd47883b5c38b674003ea650c3a532709",
      "new_mode": 33188,
      "new_path": "include/linux/mlx4/device.h"
    },
    {
      "type": "modify",
      "old_id": "3968b943259ae26a5c85fcf2019ab33fad79c958",
      "old_mode": 33188,
      "old_path": "include/linux/mlx4/qp.h",
      "new_id": "09a2230923f2841b646a6b0f032d947db67f4275",
      "new_mode": 33188,
      "new_path": "include/linux/mlx4/qp.h"
    }
  ]
}
