return "MLX5_EVENT_TYPE_NIC_VPORT_CHANGE";
        case MLX5_EVENT_TYPE_FPGA_ERROR:
                return "MLX5_EVENT_TYPE_FPGA_ERROR";
+       case MLX5_EVENT_TYPE_FPGA_QP_ERROR:
+               return "MLX5_EVENT_TYPE_FPGA_QP_ERROR";
        case MLX5_EVENT_TYPE_GENERAL_EVENT:
                return "MLX5_EVENT_TYPE_GENERAL_EVENT";
        default:
                        break;
 
                case MLX5_EVENT_TYPE_FPGA_ERROR:
+               case MLX5_EVENT_TYPE_FPGA_QP_ERROR:
                        mlx5_fpga_event(dev, eqe->type, &eqe->data.raw);
                        break;
 
                async_event_mask |= (1ull << MLX5_EVENT_TYPE_PPS_EVENT);
 
        if (MLX5_CAP_GEN(dev, fpga))
-               async_event_mask |= (1ull << MLX5_EVENT_TYPE_FPGA_ERROR);
+               async_event_mask |= (1ull << MLX5_EVENT_TYPE_FPGA_ERROR) |
+                                   (1ull << MLX5_EVENT_TYPE_FPGA_QP_ERROR);
        if (MLX5_CAP_GEN_MAX(dev, dct))
                async_event_mask |= (1ull << MLX5_EVENT_TYPE_DCT_DRAINED);
 
-
        if (MLX5_CAP_GEN(dev, temp_warn_event))
                async_event_mask |= (1ull << MLX5_EVENT_TYPE_TEMP_WARN_EVENT);
 
 
        MLX5_EVENT_TYPE_DCT_DRAINED        = 0x1c,
 
        MLX5_EVENT_TYPE_FPGA_ERROR         = 0x20,
+       MLX5_EVENT_TYPE_FPGA_QP_ERROR      = 0x21,
 };
 
 enum {
 
        MLX5_EVENT_TYPE_CODING_COMMAND_INTERFACE_COMPLETION        = 0xa,
        MLX5_EVENT_TYPE_CODING_PAGE_REQUEST                        = 0xb,
        MLX5_EVENT_TYPE_CODING_FPGA_ERROR                          = 0x20,
+       MLX5_EVENT_TYPE_CODING_FPGA_QP_ERROR                       = 0x21
 };
 
 enum {
 
        u8         dropped_cmd[0x40];
 };
 
+enum {
+       MLX5_FPGA_QP_ERROR_EVENT_SYNDROME_RETRY_COUNTER_EXPIRED  = 0x1,
+       MLX5_FPGA_QP_ERROR_EVENT_SYNDROME_RNR_EXPIRED            = 0x2,
+};
+
+struct mlx5_ifc_fpga_qp_error_event_bits {
+       u8         reserved_at_0[0x40];
+
+       u8         reserved_at_40[0x18];
+       u8         syndrome[0x8];
+
+       u8         reserved_at_60[0x60];
+
+       u8         reserved_at_c0[0x8];
+       u8         fpga_qpn[0x18];
+};
 enum mlx5_ifc_fpga_ipsec_response_syndrome {
        MLX5_FPGA_IPSEC_RESPONSE_SUCCESS = 0,
        MLX5_FPGA_IPSEC_RESPONSE_ILLEGAL_REQUEST = 1,