nvme_fc/nvmet_fc: revise Create Association descriptor length
authorJames Smart <jsmart2021@gmail.com>
Sat, 8 Jul 2017 01:08:25 +0000 (18:08 -0700)
committerSagi Grimberg <sagi@grimberg.me>
Mon, 10 Jul 2017 06:09:57 +0000 (09:09 +0300)
Revises the Create Association LS for the amount of pad expected in 1.16.

Add defines for the minimum lengths that a target can accept (e.g. variable
pad lengths)

Signed-off-by: James Smart <james.smart@broadcom.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
include/linux/nvme-fc.h

index bc711a1..21c37e3 100644 (file)
@@ -17,6 +17,7 @@
 
 /*
  * This file contains definitions relative to FC-NVME r1.14 (16-020vB).
+ * The fcnvme_lsdesc_cr_assoc_cmd struct reflects expected r1.16 content.
  */
 
 #ifndef _NVME_FC_H
@@ -193,9 +194,21 @@ struct fcnvme_lsdesc_cr_assoc_cmd {
        uuid_t  hostid;
        u8      hostnqn[FCNVME_ASSOC_HOSTNQN_LEN];
        u8      subnqn[FCNVME_ASSOC_SUBNQN_LEN];
-       u8      rsvd632[384];
+       __be32  rsvd584[108];           /* pad to 1016 bytes,
+                                        * which makes overall LS rqst
+                                        * payload 1024 bytes
+                                        */
 };
 
+#define FCNVME_LSDESC_CRA_CMD_DESC_MINLEN      \
+               offsetof(struct fcnvme_lsdesc_cr_assoc_cmd, rsvd584)
+
+#define FCNVME_LSDESC_CRA_CMD_DESC_MIN_DESCLEN \
+               (FCNVME_LSDESC_CRA_CMD_DESC_MINLEN - \
+                offsetof(struct fcnvme_lsdesc_cr_assoc_cmd, ersp_ratio))
+
+
+
 /* FCNVME_LSDESC_CREATE_CONN_CMD */
 struct fcnvme_lsdesc_cr_conn_cmd {
        __be32  desc_tag;               /* FCNVME_LSDESC_xxx */
@@ -273,6 +286,14 @@ struct fcnvme_ls_cr_assoc_rqst {
        struct fcnvme_lsdesc_cr_assoc_cmd       assoc_cmd;
 };
 
+#define FCNVME_LSDESC_CRA_RQST_MINLEN  \
+               (offsetof(struct fcnvme_ls_cr_assoc_rqst, assoc_cmd) + \
+                       FCNVME_LSDESC_CRA_CMD_DESC_MINLEN)
+
+#define FCNVME_LSDESC_CRA_RQST_MIN_LISTLEN     \
+               FCNVME_LSDESC_CRA_CMD_DESC_MINLEN
+
+
 struct fcnvme_ls_cr_assoc_acc {
        struct fcnvme_ls_acc_hdr                hdr;
        struct fcnvme_lsdesc_assoc_id           associd;