)]}'
{
  "commit": "1cf24dcef4e1dd0c34d8c39b09a9ce9a01accc72",
  "tree": "31fc9b6019990693eac87713c15a97b5571932ee",
  "parents": [
    "97d7ec0c410e89ece852e768b8bfd42d4d5822fd"
  ],
  "author": {
    "name": "Steve Wise",
    "email": "swise@opengridcomputing.com",
    "time": "Tue Aug 06 21:04:35 2013 +0530"
  },
  "committer": {
    "name": "Roland Dreier",
    "email": "roland@purestorage.com",
    "time": "Tue Aug 13 11:55:45 2013 -0700"
  },
  "message": "RDMA/cxgb4: Fix QP flush logic\n\nThis patch makes following fixes in QP flush logic:\n\n- correctly flushes unsignaled WRs followed by a signaled WR\n- supports for flushing a CQ bound to multiple QPs\n- resets cidx_flush if a active queue starts getting HW CQEs again\n- marks WQ in error when we leave RTS. This was only being done for\n  user queues, but we need it for kernel queues too so that\n  post_send/post_recv will start returning the appropriate error\n  synchronously\n- eats unsignaled read resp CQEs. HW always inserts CQEs so we must\n  silently discard them if the read work request was unsignaled.\n- handles QP flushes with pending SW CQEs. The flush and out of order\n  completion logic has a bug where if out of order completions are\n  flushed but not yet polled by the consumer and the qp is then\n  flushed then we end up inserting duplicate completions.\n- c4iw_flush_sq() should only flush wrs that have not already been\n  flushed.  Since we already track where in the SQ we\u0027ve flushed via\n  sq.cidx_flush, just start at that point and flush any remaining.\n  This bug only caused a problem in the presence of unsignaled work\n  requests.\n\nSigned-off-by: Steve Wise \u003cswise@opengridcomputing.com\u003e\nSigned-off-by: Vipul Pandya \u003cvipul@chelsio.com\u003e\n\n[ Fixed sparse warning due to htonl/ntohl confusion.  - Roland ]\n\nSigned-off-by: Roland Dreier \u003croland@purestorage.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0f1607c8325a5bc8a03e3a5d5471d39ed5741e8b",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/cxgb4/cq.c",
      "new_id": "6657390de95621a53a7a2bbce16f10eb66d16982",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/cxgb4/cq.c"
    },
    {
      "type": "modify",
      "old_id": "b3cae9f4c80e5488a8b3bbdcdb4d149726cc7893",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/cxgb4/iw_cxgb4.h",
      "new_id": "23eaeabab93b50d483e279de2adb7175c7c29dfc",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/cxgb4/iw_cxgb4.h"
    },
    {
      "type": "modify",
      "old_id": "a4975e1654a639960b214114648593564fcb0b27",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/cxgb4/qp.c",
      "new_id": "22d1f01dd951282430f014f1227f4ccf65570afe",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/cxgb4/qp.c"
    },
    {
      "type": "modify",
      "old_id": "ebcb03bd1b72ed6003bd7ae85e88dd8ce9c5595d",
      "old_mode": 33188,
      "old_path": "drivers/infiniband/hw/cxgb4/t4.h",
      "new_id": "3a6a289b9d3e8287ad0ad54801dc7b63106c3d27",
      "new_mode": 33188,
      "new_path": "drivers/infiniband/hw/cxgb4/t4.h"
    }
  ]
}
