1/*- 2 * Copyright (c) 2009 Yahoo! Inc. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 11 unchanged lines hidden (view full) --- 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 */ 26 27#include <sys/cdefs.h> |
28__FBSDID("$FreeBSD: head/sys/dev/mps/mps_sas.c 225950 2011-10-03 20:32:55Z ken $"); |
29 30/* Communications core for LSI MPT2 */ 31 32#include <sys/types.h> 33#include <sys/param.h> 34#include <sys/systm.h> 35#include <sys/kernel.h> 36#include <sys/selinfo.h> --- 1448 unchanged lines hidden (view full) --- 1485} 1486 1487static void 1488mpssas_scsiio_complete(struct mps_softc *sc, struct mps_command *cm) 1489{ 1490 MPI2_SCSI_IO_REPLY *rep; 1491 union ccb *ccb; 1492 struct mpssas_softc *sassc; |
1493 int dir = 0; 1494 1495 mps_dprint(sc, MPS_TRACE, "%s\n", __func__); 1496 1497 callout_stop(&cm->cm_callout); 1498 TAILQ_REMOVE(&sc->io_list, cm, cm_link); 1499 sc->io_cmds_active--; 1500 --- 159 unchanged lines hidden (view full) --- 1660 break; 1661 case MPI2_SCSI_STATUS_GOOD: 1662 default: 1663 break; 1664 } 1665 } 1666 1667 if (rep->SCSIState & MPI2_SCSI_STATE_AUTOSENSE_VALID) { |
1668 int sense_len; 1669 1670 if (rep->SenseCount < ccb->csio.sense_len) 1671 ccb->csio.sense_resid = ccb->csio.sense_len - 1672 rep->SenseCount; 1673 else 1674 ccb->csio.sense_resid = 0; 1675 1676 sense_len = min(rep->SenseCount, ccb->csio.sense_len - 1677 ccb->csio.sense_resid); |
1678 bcopy(cm->cm_sense, &ccb->csio.sense_data, sense_len); 1679 ccb->ccb_h.status |= CAM_AUTOSNS_VALID; 1680 } 1681 1682 if (rep->SCSIState & MPI2_SCSI_STATE_AUTOSENSE_FAILED) 1683 ccb->ccb_h.status = CAM_AUTOSENSE_FAIL; 1684 1685 if (rep->SCSIState & MPI2_SCSI_STATE_RESPONSE_INFO_VALID) --- 464 unchanged lines hidden --- |