1 /*- 2 * SPDX-License-Identifier: BSD-3-Clause 3 * 4 * Definitions for the integrated RAID features LSI MPT Fusion adapters. 5 * 6 * Copyright (c) 2005, WHEEL Sp. z o.o. 7 * Copyright (c) 2004, 2005 Justin T. Gibbs 8 * All rights reserved. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions are 12 * met: 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 2. Redistributions in binary form must reproduce at minimum a disclaimer 16 * substantially similar to the "NO WARRANTY" disclaimer below 17 * ("Disclaimer") and any redistribution must be conditioned upon including 18 * a substantially similar Disclaimer requirement for further binary 19 * redistribution. 20 * 3. Neither the names of the above listed copyright holders nor the names 21 * of any contributors may be used to endorse or promote products derived 22 * from this software without specific prior written permission. 23 * 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 28 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 29 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 30 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 32 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 33 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF THE COPYRIGHT 34 * OWNER OR CONTRIBUTOR IS ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 35 */ 36 /*- 37 * Some Breakage and Bug Fixing added later. 38 * Copyright (c) 2006, by Matthew Jacob 39 * All Rights Reserved 40 * 41 * Support from LSI-Logic has also gone a great deal toward making this a 42 * workable subsystem and is gratefully acknowledged. 43 */ 44 #ifndef _MPT_RAID_H_ 45 #define _MPT_RAID_H_ 46 47 #include <cam/cam.h> 48 union ccb; 49 50 typedef enum { 51 MPT_RAID_MWCE_ON, 52 MPT_RAID_MWCE_OFF, 53 MPT_RAID_MWCE_REBUILD_ONLY, 54 MPT_RAID_MWCE_NC 55 } mpt_raid_mwce_t; 56 57 cam_status mpt_map_physdisk(struct mpt_softc *, union ccb *, target_id_t *); 58 int mpt_is_raid_member(struct mpt_softc *, target_id_t); 59 int mpt_is_raid_volume(struct mpt_softc *, target_id_t); 60 #if 0 61 cam_status 62 mpt_raid_quiesce_disk(struct mpt_softc *, struct mpt_raid_disk *, request_t *); 63 #endif 64 65 void mpt_raid_free_mem(struct mpt_softc *); 66 67 static __inline void 68 mpt_raid_wakeup(struct mpt_softc *mpt) 69 { 70 mpt->raid_wakeup++; 71 wakeup(&mpt->raid_volumes); 72 } 73 74 #define MPT_RAID_SYNC_REPORT_INTERVAL (15 * 60 * hz) 75 #define MPT_RAID_RESYNC_RATE_MAX (255) 76 #define MPT_RAID_RESYNC_RATE_MIN (1) 77 #define MPT_RAID_RESYNC_RATE_NC (0) 78 #define MPT_RAID_RESYNC_RATE_DEFAULT MPT_RAID_RESYNC_RATE_NC 79 80 #define MPT_RAID_QUEUE_DEPTH_DEFAULT (128) 81 82 #define MPT_RAID_MWCE_DEFAULT MPT_RAID_MWCE_NC 83 84 #define RAID_VOL_FOREACH(mpt, mpt_vol) \ 85 for (mpt_vol = (mpt)->raid_volumes; \ 86 mpt_vol != (mpt)->raid_volumes + (mpt)->raid_max_volumes; \ 87 mpt_vol++) 88 89 #endif /*_MPT_RAID_H_ */ 90