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