IB: Fix modify QP checking of "current QP state" attribute
authorDotan Barak <dotanb@mellanox.co.il>
Thu, 2 Mar 2006 19:22:28 +0000 (11:22 -0800)
committerRoland Dreier <rolandd@cisco.com>
Mon, 20 Mar 2006 18:08:20 +0000 (10:08 -0800)
According to the IB spec version 1.2, section 11.2.4.2, the current
table has a couple of mistakes where it allows the current QP state
(IB_QP_CUR_STATE) attribute.  For the transitions:

  RTS -> RTS: IB_QP_CUR_STATE should be allowed for all transports
  SQD -> SQD: IB_QP_CUR_STATE should never be allowed

Signed-off-by: Dotan Barak <dotanb@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/core/verbs.c

index c69334dc8012309c13a53e258c8e0508168b74ed..cae0845f472ac60fd41b4f9684b8111924540484 100644 (file)
@@ -366,10 +366,12 @@ static const struct {
                        .opt_param = {
                                [IB_QPT_UD]  = (IB_QP_CUR_STATE                 |
                                                IB_QP_QKEY),
-                               [IB_QPT_UC]  = (IB_QP_ACCESS_FLAGS              |
+                               [IB_QPT_UC]  = (IB_QP_CUR_STATE                 |
+                                               IB_QP_ACCESS_FLAGS              |
                                                IB_QP_ALT_PATH                  |
                                                IB_QP_PATH_MIG_STATE),
-                               [IB_QPT_RC]  = (IB_QP_ACCESS_FLAGS              |
+                               [IB_QPT_RC]  = (IB_QP_CUR_STATE                 |
+                                               IB_QP_ACCESS_FLAGS              |
                                                IB_QP_ALT_PATH                  |
                                                IB_QP_PATH_MIG_STATE            |
                                                IB_QP_MIN_RNR_TIMER),
@@ -419,7 +421,6 @@ static const struct {
                                [IB_QPT_UD]  = (IB_QP_PKEY_INDEX                |
                                                IB_QP_QKEY),
                                [IB_QPT_UC]  = (IB_QP_AV                        |
-                                               IB_QP_CUR_STATE                 |
                                                IB_QP_ALT_PATH                  |
                                                IB_QP_ACCESS_FLAGS              |
                                                IB_QP_PKEY_INDEX                |
@@ -431,7 +432,6 @@ static const struct {
                                                IB_QP_RNR_RETRY                 |
                                                IB_QP_MAX_QP_RD_ATOMIC          |
                                                IB_QP_MAX_DEST_RD_ATOMIC        |
-                                               IB_QP_CUR_STATE                 |
                                                IB_QP_ALT_PATH                  |
                                                IB_QP_ACCESS_FLAGS              |
                                                IB_QP_PKEY_INDEX                |