summaryrefslogtreecommitdiffstats
path: root/rtemsbsd/include/rtems/bsd/local/cryptodev_if.h
diff options
context:
space:
mode:
Diffstat (limited to 'rtemsbsd/include/rtems/bsd/local/cryptodev_if.h')
-rw-r--r--rtemsbsd/include/rtems/bsd/local/cryptodev_if.h36
1 files changed, 28 insertions, 8 deletions
diff --git a/rtemsbsd/include/rtems/bsd/local/cryptodev_if.h b/rtemsbsd/include/rtems/bsd/local/cryptodev_if.h
index 752527ed..a789317b 100644
--- a/rtemsbsd/include/rtems/bsd/local/cryptodev_if.h
+++ b/rtemsbsd/include/rtems/bsd/local/cryptodev_if.h
@@ -17,27 +17,43 @@
/** @brief Unique descriptor for the CRYPTODEV_NEWSESSION() method */
extern struct kobjop_desc cryptodev_newsession_desc;
/** @brief A function implementing the CRYPTODEV_NEWSESSION() method */
-typedef int cryptodev_newsession_t(device_t dev, uint32_t *sid,
+typedef int cryptodev_newsession_t(device_t dev,
+ crypto_session_t crypto_session,
struct cryptoini *cri);
+/**
+ * Crypto driver method to initialize a new session object with the given
+ * initialization parameters (cryptoini). The driver's session memory object
+ * is already allocated and zeroed, like driver softcs. It is accessed with
+ * crypto_get_driver_session().
+ */
-static __inline int CRYPTODEV_NEWSESSION(device_t dev, uint32_t *sid,
+static __inline int CRYPTODEV_NEWSESSION(device_t dev,
+ crypto_session_t crypto_session,
struct cryptoini *cri)
{
kobjop_t _m;
+ int rc;
KOBJOPLOOKUP(((kobj_t)dev)->ops,cryptodev_newsession);
- return ((cryptodev_newsession_t *) _m)(dev, sid, cri);
+ rc = ((cryptodev_newsession_t *) _m)(dev, crypto_session, cri);
+ return (rc);
}
/** @brief Unique descriptor for the CRYPTODEV_FREESESSION() method */
extern struct kobjop_desc cryptodev_freesession_desc;
/** @brief A function implementing the CRYPTODEV_FREESESSION() method */
-typedef int cryptodev_freesession_t(device_t dev, uint64_t sid);
+typedef void cryptodev_freesession_t(device_t dev,
+ crypto_session_t crypto_session);
+/**
+ * Optional crypto driver method to release any additional allocations. OCF
+ * owns session memory itself; it is zeroed before release.
+ */
-static __inline int CRYPTODEV_FREESESSION(device_t dev, uint64_t sid)
+static __inline void CRYPTODEV_FREESESSION(device_t dev,
+ crypto_session_t crypto_session)
{
kobjop_t _m;
KOBJOPLOOKUP(((kobj_t)dev)->ops,cryptodev_freesession);
- return ((cryptodev_freesession_t *) _m)(dev, sid);
+ ((cryptodev_freesession_t *) _m)(dev, crypto_session);
}
/** @brief Unique descriptor for the CRYPTODEV_PROCESS() method */
@@ -49,8 +65,10 @@ static __inline int CRYPTODEV_PROCESS(device_t dev, struct cryptop *op,
int flags)
{
kobjop_t _m;
+ int rc;
KOBJOPLOOKUP(((kobj_t)dev)->ops,cryptodev_process);
- return ((cryptodev_process_t *) _m)(dev, op, flags);
+ rc = ((cryptodev_process_t *) _m)(dev, op, flags);
+ return (rc);
}
/** @brief Unique descriptor for the CRYPTODEV_KPROCESS() method */
@@ -62,8 +80,10 @@ static __inline int CRYPTODEV_KPROCESS(device_t dev, struct cryptkop *op,
int flags)
{
kobjop_t _m;
+ int rc;
KOBJOPLOOKUP(((kobj_t)dev)->ops,cryptodev_kprocess);
- return ((cryptodev_kprocess_t *) _m)(dev, op, flags);
+ rc = ((cryptodev_kprocess_t *) _m)(dev, op, flags);
+ return (rc);
}
#endif /* _cryptodev_if_h_ */