1. 13 8月, 2008 1 次提交
    • A
      IB/ehca: Discard double CQE for one WR · 6773f079
      Alexander Schmidt 提交于
      Under rare circumstances, the ehca hardware might erroneously generate
      two CQEs for the same WQE, which is not compliant to the IB spec and
      will cause unpredictable errors like memory being freed twice. To
      avoid this problem, the driver needs to detect the second CQE and
      discard it.
      
      For this purpose, introduce an array holding as many elements as the
      SQ of the QP, called sq_map. Each sq_map entry stores a "reported"
      flag for one WQE in the SQ. When a work request is posted to the SQ,
      the respective "reported" flag is set to zero. After the arrival of a
      CQE, the flag is set to 1, which allows to detect the occurence of a
      second CQE.
      
      The mapping between WQE / CQE and the corresponding sq_map element is
      implemented by replacing the lowest 16 Bits of the wr_id with the
      index in the queue map. The original 16 Bits are stored in the sq_map
      entry and are restored when the CQE is passed to the application.
      Signed-off-by: NAlexander Schmidt <alexs@linux.vnet.ibm.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      6773f079
  2. 18 7月, 2007 1 次提交
  3. 23 9月, 2006 1 次提交