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