[v3,1/8] security: add support for DOCSIS protocol
Checks
Commit Message
Add support for DOCSIS protocol to rte_security library. This support
currently comprises the combination of Crypto and CRC operations.
Signed-off-by: David Coyle <david.coyle@intel.com>
Signed-off-by: Mairtin o Loingsigh <mairtin.oloingsigh@intel.com>
---
lib/librte_security/rte_security.c | 5 ++++
lib/librte_security/rte_security.h | 38 ++++++++++++++++++++++++++++++
2 files changed, 43 insertions(+)
Comments
>
> Add support for DOCSIS protocol to rte_security library. This support
> currently comprises the combination of Crypto and CRC operations.
>
> Signed-off-by: David Coyle <david.coyle@intel.com>
> Signed-off-by: Mairtin o Loingsigh <mairtin.oloingsigh@intel.com>
> ---
With the documentation comments in the last patch.
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
@@ -173,6 +173,11 @@ rte_security_capability_get(struct rte_security_ctx *instance,
if (capability->pdcp.domain ==
idx->pdcp.domain)
return capability;
+ } else if (idx->protocol ==
+ RTE_SECURITY_PROTOCOL_DOCSIS) {
+ if (capability->docsis.direction ==
+ idx->docsis.direction)
+ return capability;
}
}
}
@@ -293,6 +293,28 @@ struct rte_security_pdcp_xform {
uint32_t hfn_ovrd;
};
+/** DOCSIS direction */
+enum rte_security_docsis_direction {
+ RTE_SECURITY_DOCSIS_UPLINK,
+ /**< Uplink
+ * - Decryption, followed by CRC Verification
+ */
+ RTE_SECURITY_DOCSIS_DOWNLINK,
+ /**< Downlink
+ * - CRC Generation, followed by Encryption
+ */
+};
+
+/**
+ * DOCSIS security session configuration.
+ *
+ * This structure contains data required to create a DOCSIS security session.
+ */
+struct rte_security_docsis_xform {
+ enum rte_security_docsis_direction direction;
+ /**< DOCSIS direction */
+};
+
/**
* Security session action type.
*/
@@ -325,6 +347,8 @@ enum rte_security_session_protocol {
/**< MACSec Protocol */
RTE_SECURITY_PROTOCOL_PDCP,
/**< PDCP Protocol */
+ RTE_SECURITY_PROTOCOL_DOCSIS,
+ /**< DOCSIS Protocol */
};
/**
@@ -340,6 +364,7 @@ struct rte_security_session_conf {
struct rte_security_ipsec_xform ipsec;
struct rte_security_macsec_xform macsec;
struct rte_security_pdcp_xform pdcp;
+ struct rte_security_docsis_xform docsis;
};
/**< Configuration parameters for security session */
struct rte_crypto_sym_xform *crypto_xform;
@@ -523,6 +548,10 @@ struct rte_security_pdcp_stats {
uint64_t reserved;
};
+struct rte_security_docsis_stats {
+ uint64_t reserved;
+};
+
struct rte_security_stats {
enum rte_security_session_protocol protocol;
/**< Security protocol to be configured */
@@ -532,6 +561,7 @@ struct rte_security_stats {
struct rte_security_macsec_stats macsec;
struct rte_security_ipsec_stats ipsec;
struct rte_security_pdcp_stats pdcp;
+ struct rte_security_docsis_stats docsis;
};
};
@@ -591,6 +621,11 @@ struct rte_security_capability {
/**< Capability flags, see RTE_SECURITY_PDCP_* */
} pdcp;
/**< PDCP capability */
+ struct {
+ enum rte_security_docsis_direction direction;
+ /**< DOCSIS direction */
+ } docsis;
+ /**< DOCSIS capability */
};
const struct rte_cryptodev_capabilities *crypto_capabilities;
@@ -649,6 +684,9 @@ struct rte_security_capability_idx {
enum rte_security_pdcp_domain domain;
uint32_t capa_flags;
} pdcp;
+ struct {
+ enum rte_security_docsis_direction direction;
+ } docsis;
};
};