xref: /freebsd-src/sys/dev/pms/freebsd/driver/common/lxencrypt.h (revision 2ff63af9b88c7413b7d71715b5532625752a248e)
1*4e1bc9a0SAchim Leubner /*******************************************************************************
2*4e1bc9a0SAchim Leubner *Copyright (c) 2014 PMC-Sierra, Inc.  All rights reserved.
3*4e1bc9a0SAchim Leubner *
4*4e1bc9a0SAchim Leubner *Redistribution and use in source and binary forms, with or without modification, are permitted provided
5*4e1bc9a0SAchim Leubner *that the following conditions are met:
6*4e1bc9a0SAchim Leubner *1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
7*4e1bc9a0SAchim Leubner *following disclaimer.
8*4e1bc9a0SAchim Leubner *2. Redistributions in binary form must reproduce the above copyright notice,
9*4e1bc9a0SAchim Leubner *this list of conditions and the following disclaimer in the documentation and/or other materials provided
10*4e1bc9a0SAchim Leubner *with the distribution.
11*4e1bc9a0SAchim Leubner *
12*4e1bc9a0SAchim Leubner *THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
13*4e1bc9a0SAchim Leubner *WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14*4e1bc9a0SAchim Leubner *FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
15*4e1bc9a0SAchim Leubner *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16*4e1bc9a0SAchim Leubner *NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
17*4e1bc9a0SAchim Leubner *BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
18*4e1bc9a0SAchim Leubner *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
19*4e1bc9a0SAchim Leubner *SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
20*4e1bc9a0SAchim Leubner *
21*4e1bc9a0SAchim Leubner *
22*4e1bc9a0SAchim Leubner *******************************************************************************/
23*4e1bc9a0SAchim Leubner /*******************************************************************************
24*4e1bc9a0SAchim Leubner **
25*4e1bc9a0SAchim Leubner ** Version Control Information:
26*4e1bc9a0SAchim Leubner **
27*4e1bc9a0SAchim Leubner **  $Revision: 114125 $
28*4e1bc9a0SAchim Leubner **  $Author: lindfors $
29*4e1bc9a0SAchim Leubner **  $Date: 2012-01-06 17:12:27 -0800 (Fri, 06 Jan 2012) $
30*4e1bc9a0SAchim Leubner **  $Id: lxencrypt.h 112360 2012-01-07 01:12:27Z mcleanda $
31*4e1bc9a0SAchim Leubner **
32*4e1bc9a0SAchim Leubner *******************************************************************************/
33*4e1bc9a0SAchim Leubner 
34*4e1bc9a0SAchim Leubner //#ifndef __LXENCRYPT_H__
35*4e1bc9a0SAchim Leubner //#define __LXENCRYPT_H__
36*4e1bc9a0SAchim Leubner 
37*4e1bc9a0SAchim Leubner 
38*4e1bc9a0SAchim Leubner #include <dev/pms/RefTisa/tisa/api/tiapi.h>
39*4e1bc9a0SAchim Leubner #include <dev/pms/RefTisa/tisa/api/ostiapi.h>
40*4e1bc9a0SAchim Leubner #include <dev/pms/RefTisa/tisa/api/tidefs.h>
41*4e1bc9a0SAchim Leubner #include <dev/pms/RefTisa/tisa/api/tiglobal.h>
42*4e1bc9a0SAchim Leubner #include <dev/pms/RefTisa/tisa/api/titypes.h>
43*4e1bc9a0SAchim Leubner #include <dev/pms/RefTisa/tisa/sassata/common/tdioctl.h>
44*4e1bc9a0SAchim Leubner #include <dev/pms/freebsd/driver/common/osenv.h>
45*4e1bc9a0SAchim Leubner #include <dev/pms/freebsd/driver/common/ostypes.h>
46*4e1bc9a0SAchim Leubner #include <dev/pms/freebsd/driver/common/osdebug.h>
47*4e1bc9a0SAchim Leubner #include <sys/param.h>		//zone allocation
48*4e1bc9a0SAchim Leubner #include <sys/queue.h>		//zone allocation
49*4e1bc9a0SAchim Leubner #include <vm/uma.h>		//zone allocation
50*4e1bc9a0SAchim Leubner 
51*4e1bc9a0SAchim Leubner 
52*4e1bc9a0SAchim Leubner #ifndef __LXENCRYPT_H__
53*4e1bc9a0SAchim Leubner #define __LXENCRYPT_H__
54*4e1bc9a0SAchim Leubner 
55*4e1bc9a0SAchim Leubner #define IOERR_QUEUE_DEPTH_MAX 1024
56*4e1bc9a0SAchim Leubner 
57*4e1bc9a0SAchim Leubner enum {
58*4e1bc9a0SAchim Leubner     E_SUCCESS = 0,
59*4e1bc9a0SAchim Leubner     E_DEK_INDEX,
60*4e1bc9a0SAchim Leubner     E_DEK_TABLE,
61*4e1bc9a0SAchim Leubner     E_KEK_INDEX,
62*4e1bc9a0SAchim Leubner     E_CHANNEL_INDEX,
63*4e1bc9a0SAchim Leubner     E_DEVICE_INDEX,
64*4e1bc9a0SAchim Leubner     E_LUN_INDEX,
65*4e1bc9a0SAchim Leubner     E_LBA_RANGE,
66*4e1bc9a0SAchim Leubner     E_MEMPOOL_ALLOC,
67*4e1bc9a0SAchim Leubner     E_FLAGS,
68*4e1bc9a0SAchim Leubner     E_ENCRYPTION_DISABLED,
69*4e1bc9a0SAchim Leubner     E_BAD_CIPHER_MODE,
70*4e1bc9a0SAchim Leubner     E_NO_TARGET_MAP,
71*4e1bc9a0SAchim Leubner     E_NO_LBA_MAP,
72*4e1bc9a0SAchim Leubner     E_NOT_FOUND,
73*4e1bc9a0SAchim Leubner } encrypt_error_e;
74*4e1bc9a0SAchim Leubner 
75*4e1bc9a0SAchim Leubner typedef struct ag_encrypt_ioerr_s {
76*4e1bc9a0SAchim Leubner     struct list_head *list;
77*4e1bc9a0SAchim Leubner } ag_encrypt_ioerr_t;
78*4e1bc9a0SAchim Leubner 
79*4e1bc9a0SAchim Leubner struct agtiapi_softc *pCard;
80*4e1bc9a0SAchim Leubner #ifdef ENCRYPT_ENHANCE
81*4e1bc9a0SAchim Leubner 
82*4e1bc9a0SAchim Leubner 
83*4e1bc9a0SAchim Leubner ssize_t set_dek_table_entry0(struct device *dev, struct device_attribute *attr, const char *buf, size_t len);
84*4e1bc9a0SAchim Leubner ssize_t show_dek_table_entry0(struct device *dev, struct device_attribute *attr, char *buf);
85*4e1bc9a0SAchim Leubner ssize_t set_dek_table_entry1(struct device *dev, struct device_attribute *attr, const char *buf, size_t len);
86*4e1bc9a0SAchim Leubner ssize_t show_dek_table_entry1(struct device *dev, struct device_attribute *attr, char *buf);
87*4e1bc9a0SAchim Leubner ssize_t show_kek_table(struct device *dev, struct device_attribute *attr, char *buf);
88*4e1bc9a0SAchim Leubner ssize_t show_dek_kek_map0(struct device *dev, struct device_attribute *attr, char *buf);
89*4e1bc9a0SAchim Leubner ssize_t show_dek_kek_map1(struct device *dev, struct device_attribute *attr, char *buf);
90*4e1bc9a0SAchim Leubner ssize_t show_target_dek_map(struct device *dev, struct device_attribute *attr, char *buf);
91*4e1bc9a0SAchim Leubner 
92*4e1bc9a0SAchim Leubner #endif
93*4e1bc9a0SAchim Leubner int agtiapi_SetupEncryption(struct agtiapi_softc *pCard);
94*4e1bc9a0SAchim Leubner int agtiapi_SetupEncryptionPools(struct agtiapi_softc *pCard);
95*4e1bc9a0SAchim Leubner void agtiapi_CleanupEncryption(struct agtiapi_softc *pCard);
96*4e1bc9a0SAchim Leubner void agtiapi_CleanupEncryptionPools(struct agtiapi_softc *pCard);
97*4e1bc9a0SAchim Leubner int agtiapi_SetupEncryptedIO(struct agtiapi_softc *pCard, ccb_t *pccb, unsigned long long block);
98*4e1bc9a0SAchim Leubner void agtiapi_CleanupEncryptedIO(struct agtiapi_softc *pCard, ccb_t *pccb);
99*4e1bc9a0SAchim Leubner void agtiapi_HandleEncryptedIOFailure(ag_device_t *pDev, ccb_t *pccb);
100*4e1bc9a0SAchim Leubner 
101*4e1bc9a0SAchim Leubner #endif
102*4e1bc9a0SAchim Leubner 
103