Lines Matching refs:arr

1002 static int fill_from_dev_buffer(struct scsi_cmnd *scp, unsigned char *arr,  in fill_from_dev_buffer()  argument
1014 arr, arr_len); in fill_from_dev_buffer()
1025 static int p_fill_from_dev_buffer(struct scsi_cmnd *scp, const void *arr, in p_fill_from_dev_buffer() argument
1038 arr, arr_len, skip); in p_fill_from_dev_buffer()
1050 static int fetch_to_dev_buffer(struct scsi_cmnd *scp, unsigned char *arr, in fetch_to_dev_buffer() argument
1058 return scsi_sg_copy_to_buffer(scp, arr, arr_len); in fetch_to_dev_buffer()
1071 static int inquiry_vpd_83(unsigned char *arr, int port_group_id, in inquiry_vpd_83() argument
1081 arr[0] = 0x2; /* ASCII */ in inquiry_vpd_83()
1082 arr[1] = 0x1; in inquiry_vpd_83()
1083 arr[2] = 0x0; in inquiry_vpd_83()
1084 memcpy(&arr[4], sdebug_inq_vendor_id, 8); in inquiry_vpd_83()
1085 memcpy(&arr[12], sdebug_inq_product_id, 16); in inquiry_vpd_83()
1086 memcpy(&arr[28], dev_id_str, dev_id_str_len); in inquiry_vpd_83()
1088 arr[3] = num; in inquiry_vpd_83()
1093 arr[num++] = 0x1; /* binary (not necessarily sas) */ in inquiry_vpd_83()
1094 arr[num++] = 0xa; /* PIV=0, lu, naa */ in inquiry_vpd_83()
1095 arr[num++] = 0x0; in inquiry_vpd_83()
1096 arr[num++] = 0x12; in inquiry_vpd_83()
1097 arr[num++] = 0x10; /* uuid type=1, locally assigned */ in inquiry_vpd_83()
1098 arr[num++] = 0x0; in inquiry_vpd_83()
1099 memcpy(arr + num, lu_name, 16); in inquiry_vpd_83()
1103 arr[num++] = 0x1; /* binary (not necessarily sas) */ in inquiry_vpd_83()
1104 arr[num++] = 0x3; /* PIV=0, lu, naa */ in inquiry_vpd_83()
1105 arr[num++] = 0x0; in inquiry_vpd_83()
1106 arr[num++] = 0x8; in inquiry_vpd_83()
1107 put_unaligned_be64(naa3_comp_b + dev_id_num, arr + num); in inquiry_vpd_83()
1111 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_vpd_83()
1112 arr[num++] = 0x94; /* PIV=1, target port, rel port */ in inquiry_vpd_83()
1113 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_83()
1114 arr[num++] = 0x4; /* length */ in inquiry_vpd_83()
1115 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_83()
1116 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_83()
1117 arr[num++] = 0x0; in inquiry_vpd_83()
1118 arr[num++] = 0x1; /* relative port A */ in inquiry_vpd_83()
1121 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_vpd_83()
1122 arr[num++] = 0x93; /* piv=1, target port, naa */ in inquiry_vpd_83()
1123 arr[num++] = 0x0; in inquiry_vpd_83()
1124 arr[num++] = 0x8; in inquiry_vpd_83()
1125 put_unaligned_be64(naa3_comp_a + port_a, arr + num); in inquiry_vpd_83()
1128 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_vpd_83()
1129 arr[num++] = 0x95; /* piv=1, target port group id */ in inquiry_vpd_83()
1130 arr[num++] = 0x0; in inquiry_vpd_83()
1131 arr[num++] = 0x4; in inquiry_vpd_83()
1132 arr[num++] = 0; in inquiry_vpd_83()
1133 arr[num++] = 0; in inquiry_vpd_83()
1134 put_unaligned_be16(port_group_id, arr + num); in inquiry_vpd_83()
1137 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_vpd_83()
1138 arr[num++] = 0xa3; /* piv=1, target device, naa */ in inquiry_vpd_83()
1139 arr[num++] = 0x0; in inquiry_vpd_83()
1140 arr[num++] = 0x8; in inquiry_vpd_83()
1141 put_unaligned_be64(naa3_comp_a + target_dev_id, arr + num); in inquiry_vpd_83()
1144 arr[num++] = 0x63; /* proto=sas, UTF-8 */ in inquiry_vpd_83()
1145 arr[num++] = 0xa8; /* piv=1, target device, SCSI name string */ in inquiry_vpd_83()
1146 arr[num++] = 0x0; in inquiry_vpd_83()
1147 arr[num++] = 24; in inquiry_vpd_83()
1148 memcpy(arr + num, "naa.32222220", 12); in inquiry_vpd_83()
1151 memcpy(arr + num, b, 8); in inquiry_vpd_83()
1153 memset(arr + num, 0, 4); in inquiry_vpd_83()
1165 static int inquiry_vpd_84(unsigned char *arr) in inquiry_vpd_84() argument
1167 memcpy(arr, vpd84_data, sizeof(vpd84_data)); in inquiry_vpd_84()
1172 static int inquiry_vpd_85(unsigned char *arr) in inquiry_vpd_85() argument
1179 arr[num++] = 0x1; /* lu, storage config */ in inquiry_vpd_85()
1180 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_85()
1181 arr[num++] = 0x0; in inquiry_vpd_85()
1186 arr[num++] = plen; /* length, null termianted, padded */ in inquiry_vpd_85()
1187 memcpy(arr + num, na1, olen); in inquiry_vpd_85()
1188 memset(arr + num + olen, 0, plen - olen); in inquiry_vpd_85()
1191 arr[num++] = 0x4; /* lu, logging */ in inquiry_vpd_85()
1192 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_85()
1193 arr[num++] = 0x0; in inquiry_vpd_85()
1198 arr[num++] = plen; /* length, null terminated, padded */ in inquiry_vpd_85()
1199 memcpy(arr + num, na2, olen); in inquiry_vpd_85()
1200 memset(arr + num + olen, 0, plen - olen); in inquiry_vpd_85()
1207 static int inquiry_vpd_88(unsigned char *arr, int target_dev_id) in inquiry_vpd_88() argument
1214 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_88()
1215 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_88()
1216 arr[num++] = 0x0; in inquiry_vpd_88()
1217 arr[num++] = 0x1; /* relative port 1 (primary) */ in inquiry_vpd_88()
1218 memset(arr + num, 0, 6); in inquiry_vpd_88()
1220 arr[num++] = 0x0; in inquiry_vpd_88()
1221 arr[num++] = 12; /* length tp descriptor */ in inquiry_vpd_88()
1223 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_vpd_88()
1224 arr[num++] = 0x93; /* PIV=1, target port, NAA */ in inquiry_vpd_88()
1225 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_88()
1226 arr[num++] = 0x8; /* length */ in inquiry_vpd_88()
1227 put_unaligned_be64(naa3_comp_a + port_a, arr + num); in inquiry_vpd_88()
1229 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_88()
1230 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_88()
1231 arr[num++] = 0x0; in inquiry_vpd_88()
1232 arr[num++] = 0x2; /* relative port 2 (secondary) */ in inquiry_vpd_88()
1233 memset(arr + num, 0, 6); in inquiry_vpd_88()
1235 arr[num++] = 0x0; in inquiry_vpd_88()
1236 arr[num++] = 12; /* length tp descriptor */ in inquiry_vpd_88()
1238 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_vpd_88()
1239 arr[num++] = 0x93; /* PIV=1, target port, NAA */ in inquiry_vpd_88()
1240 arr[num++] = 0x0; /* reserved */ in inquiry_vpd_88()
1241 arr[num++] = 0x8; /* length */ in inquiry_vpd_88()
1242 put_unaligned_be64(naa3_comp_a + port_b, arr + num); in inquiry_vpd_88()
1294 static int inquiry_vpd_89(unsigned char *arr) in inquiry_vpd_89() argument
1296 memcpy(arr, vpd89_data, sizeof(vpd89_data)); in inquiry_vpd_89()
1309 static int inquiry_vpd_b0(unsigned char *arr) in inquiry_vpd_b0() argument
1313 memcpy(arr, vpdb0_data, sizeof(vpdb0_data)); in inquiry_vpd_b0()
1321 put_unaligned_be16(gran, arr + 2); in inquiry_vpd_b0()
1325 put_unaligned_be32(sdebug_store_sectors, arr + 4); in inquiry_vpd_b0()
1328 put_unaligned_be32(sdebug_opt_blks, &arr[8]); in inquiry_vpd_b0()
1332 put_unaligned_be32(sdebug_unmap_max_blocks, &arr[16]); in inquiry_vpd_b0()
1335 put_unaligned_be32(sdebug_unmap_max_desc, &arr[20]); in inquiry_vpd_b0()
1340 put_unaligned_be32(sdebug_unmap_alignment, &arr[28]); in inquiry_vpd_b0()
1341 arr[28] |= 0x80; /* UGAVALID */ in inquiry_vpd_b0()
1345 put_unaligned_be32(sdebug_unmap_granularity, &arr[24]); in inquiry_vpd_b0()
1348 put_unaligned_be64(sdebug_write_same_length, &arr[32]); in inquiry_vpd_b0()
1356 static int inquiry_vpd_b1(unsigned char *arr) in inquiry_vpd_b1() argument
1358 memset(arr, 0, 0x3c); in inquiry_vpd_b1()
1359 arr[0] = 0; in inquiry_vpd_b1()
1360 arr[1] = 1; /* non rotating medium (e.g. solid state) */ in inquiry_vpd_b1()
1361 arr[2] = 0; in inquiry_vpd_b1()
1362 arr[3] = 5; /* less than 1.8" */ in inquiry_vpd_b1()
1368 static int inquiry_vpd_b2(unsigned char *arr) in inquiry_vpd_b2() argument
1370 memset(arr, 0, 0x4); in inquiry_vpd_b2()
1371 arr[0] = 0; /* threshold exponent */ in inquiry_vpd_b2()
1373 arr[1] = 1 << 7; in inquiry_vpd_b2()
1375 arr[1] |= 1 << 6; in inquiry_vpd_b2()
1377 arr[1] |= 1 << 5; in inquiry_vpd_b2()
1379 arr[1] |= (sdebug_lbprz & 0x7) << 2; /* sbc4r07 and later */ in inquiry_vpd_b2()
1392 unsigned char *arr; in resp_inquiry() local
1398 arr = kzalloc(SDEBUG_MAX_INQ_ARR_SZ, GFP_ATOMIC); in resp_inquiry()
1399 if (! arr) in resp_inquiry()
1409 arr[0] = pq_pdt; in resp_inquiry()
1412 kfree(arr); in resp_inquiry()
1429 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1431 arr[n++] = 0x0; /* this page */ in resp_inquiry()
1432 arr[n++] = 0x80; /* unit serial number */ in resp_inquiry()
1433 arr[n++] = 0x83; /* device identification */ in resp_inquiry()
1434 arr[n++] = 0x84; /* software interface ident. */ in resp_inquiry()
1435 arr[n++] = 0x85; /* management network addresses */ in resp_inquiry()
1436 arr[n++] = 0x86; /* extended inquiry */ in resp_inquiry()
1437 arr[n++] = 0x87; /* mode page policy */ in resp_inquiry()
1438 arr[n++] = 0x88; /* SCSI ports */ in resp_inquiry()
1440 arr[n++] = 0x89; /* ATA information */ in resp_inquiry()
1441 arr[n++] = 0xb0; /* Block limits */ in resp_inquiry()
1442 arr[n++] = 0xb1; /* Block characteristics */ in resp_inquiry()
1443 arr[n++] = 0xb2; /* Logical Block Prov */ in resp_inquiry()
1445 arr[3] = n - 4; /* number of supported VPD pages */ in resp_inquiry()
1447 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1448 arr[3] = len; in resp_inquiry()
1449 memcpy(&arr[4], lu_id_str, len); in resp_inquiry()
1451 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1452 arr[3] = inquiry_vpd_83(&arr[4], port_group_id, in resp_inquiry()
1457 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1458 arr[3] = inquiry_vpd_84(&arr[4]); in resp_inquiry()
1460 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1461 arr[3] = inquiry_vpd_85(&arr[4]); in resp_inquiry()
1463 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1464 arr[3] = 0x3c; /* number of following entries */ in resp_inquiry()
1466 arr[4] = 0x4; /* SPT: GRD_CHK:1 */ in resp_inquiry()
1468 arr[4] = 0x5; /* SPT: GRD_CHK:1, REF_CHK:1 */ in resp_inquiry()
1470 arr[4] = 0x0; /* no protection stuff */ in resp_inquiry()
1471 arr[5] = 0x7; /* head of q, ordered + simple q's */ in resp_inquiry()
1473 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1474 arr[3] = 0x8; /* number of following entries */ in resp_inquiry()
1475 arr[4] = 0x2; /* disconnect-reconnect mp */ in resp_inquiry()
1476 arr[6] = 0x80; /* mlus, shared */ in resp_inquiry()
1477 arr[8] = 0x18; /* protocol specific lu */ in resp_inquiry()
1478 arr[10] = 0x82; /* mlus, per initiator port */ in resp_inquiry()
1480 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1481 arr[3] = inquiry_vpd_88(&arr[4], target_dev_id); in resp_inquiry()
1483 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1484 n = inquiry_vpd_89(&arr[4]); in resp_inquiry()
1485 put_unaligned_be16(n, arr + 2); in resp_inquiry()
1487 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1488 arr[3] = inquiry_vpd_b0(&arr[4]); in resp_inquiry()
1490 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1491 arr[3] = inquiry_vpd_b1(&arr[4]); in resp_inquiry()
1493 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1494 arr[3] = inquiry_vpd_b2(&arr[4]); in resp_inquiry()
1497 kfree(arr); in resp_inquiry()
1500 len = min(get_unaligned_be16(arr + 2) + 4, alloc_len); in resp_inquiry()
1501 ret = fill_from_dev_buffer(scp, arr, in resp_inquiry()
1503 kfree(arr); in resp_inquiry()
1507 arr[1] = sdebug_removable ? 0x80 : 0; /* Removable disk */ in resp_inquiry()
1508 arr[2] = sdebug_scsi_level; in resp_inquiry()
1509 arr[3] = 2; /* response_data_format==2 */ in resp_inquiry()
1510 arr[4] = SDEBUG_LONG_INQ_SZ - 5; in resp_inquiry()
1511 arr[5] = (int)have_dif_prot; /* PROTECT bit */ in resp_inquiry()
1513 arr[5] |= 0x10; /* claim: implicit TPGS */ in resp_inquiry()
1514 arr[6] = 0x10; /* claim: MultiP */ in resp_inquiry()
1516 arr[7] = 0xa; /* claim: LINKED + CMDQUE */ in resp_inquiry()
1517 memcpy(&arr[8], sdebug_inq_vendor_id, 8); in resp_inquiry()
1518 memcpy(&arr[16], sdebug_inq_product_id, 16); in resp_inquiry()
1519 memcpy(&arr[32], sdebug_inq_product_rev, 4); in resp_inquiry()
1521 memcpy(&arr[36], sdebug_version_date, 8); in resp_inquiry()
1523 put_unaligned_be16(0xc0, arr + 58); /* SAM-6 no version claimed */ in resp_inquiry()
1524 put_unaligned_be16(0x5c0, arr + 60); /* SPC-5 no version claimed */ in resp_inquiry()
1527 put_unaligned_be16(0x600, arr + n); in resp_inquiry()
1530 put_unaligned_be16(0x525, arr + n); in resp_inquiry()
1533 put_unaligned_be16(0x2100, arr + n); /* SPL-4 no version claimed */ in resp_inquiry()
1534 ret = fill_from_dev_buffer(scp, arr, in resp_inquiry()
1536 kfree(arr); in resp_inquiry()
1548 unsigned char arr[SCSI_SENSE_BUFFERSIZE]; in resp_requests() local
1552 memset(arr, 0, sizeof(arr)); in resp_requests()
1557 arr[0] = 0x72; in resp_requests()
1558 arr[1] = 0x0; /* NO_SENSE in sense_key */ in resp_requests()
1559 arr[2] = THRESHOLD_EXCEEDED; in resp_requests()
1560 arr[3] = 0xff; /* TEST set and MRIE==6 */ in resp_requests()
1563 arr[0] = 0x70; in resp_requests()
1564 arr[2] = 0x0; /* NO_SENSE in sense_key */ in resp_requests()
1565 arr[7] = 0xa; /* 18 byte sense buffer */ in resp_requests()
1566 arr[12] = THRESHOLD_EXCEEDED; in resp_requests()
1567 arr[13] = 0xff; /* TEST set and MRIE==6 */ in resp_requests()
1570 memcpy(arr, sbuff, SCSI_SENSE_BUFFERSIZE); in resp_requests()
1571 if (arr[0] >= 0x70 && dsense == sdebug_dsense) in resp_requests()
1573 else if (arr[0] <= 0x70) { in resp_requests()
1575 memset(arr, 0, 8); in resp_requests()
1576 arr[0] = 0x72; in resp_requests()
1579 memset(arr, 0, 18); in resp_requests()
1580 arr[0] = 0x70; in resp_requests()
1581 arr[7] = 0xa; in resp_requests()
1584 memset(arr, 0, 8); in resp_requests()
1585 arr[0] = 0x72; in resp_requests()
1586 arr[1] = sbuff[2]; /* sense key */ in resp_requests()
1587 arr[2] = sbuff[12]; /* asc */ in resp_requests()
1588 arr[3] = sbuff[13]; /* ascq */ in resp_requests()
1591 memset(arr, 0, 18); in resp_requests()
1592 arr[0] = 0x70; in resp_requests()
1593 arr[2] = sbuff[1]; in resp_requests()
1594 arr[7] = 0xa; in resp_requests()
1595 arr[12] = sbuff[1]; in resp_requests()
1596 arr[13] = sbuff[3]; in resp_requests()
1601 return fill_from_dev_buffer(scp, arr, len); in resp_requests()
1640 unsigned char arr[SDEBUG_READCAP_ARR_SZ]; in resp_readcap() local
1645 memset(arr, 0, SDEBUG_READCAP_ARR_SZ); in resp_readcap()
1648 put_unaligned_be32(capac, arr + 0); in resp_readcap()
1650 put_unaligned_be32(0xffffffff, arr + 0); in resp_readcap()
1651 put_unaligned_be16(sdebug_sector_size, arr + 6); in resp_readcap()
1652 return fill_from_dev_buffer(scp, arr, SDEBUG_READCAP_ARR_SZ); in resp_readcap()
1660 unsigned char arr[SDEBUG_READCAP16_ARR_SZ]; in resp_readcap16() local
1666 memset(arr, 0, SDEBUG_READCAP16_ARR_SZ); in resp_readcap16()
1667 put_unaligned_be64((u64)(sdebug_capacity - 1), arr + 0); in resp_readcap16()
1668 put_unaligned_be32(sdebug_sector_size, arr + 8); in resp_readcap16()
1669 arr[13] = sdebug_physblk_exp & 0xf; in resp_readcap16()
1670 arr[14] = (sdebug_lowest_aligned >> 8) & 0x3f; in resp_readcap16()
1673 arr[14] |= 0x80; /* LBPME */ in resp_readcap16()
1679 arr[14] |= 0x40; in resp_readcap16()
1682 arr[15] = sdebug_lowest_aligned & 0xff; in resp_readcap16()
1685 arr[12] = (sdebug_dif - 1) << 1; /* P_TYPE */ in resp_readcap16()
1686 arr[12] |= 1; /* PROT_EN */ in resp_readcap16()
1689 return fill_from_dev_buffer(scp, arr, in resp_readcap16()
1699 unsigned char *arr; in resp_report_tgtpgs() local
1705 arr = kzalloc(SDEBUG_MAX_TGTPGS_ARR_SZ, GFP_ATOMIC); in resp_report_tgtpgs()
1706 if (! arr) in resp_report_tgtpgs()
1726 arr[n++] = host_no % 3; /* Asymm access state */ in resp_report_tgtpgs()
1727 arr[n++] = 0x0F; /* claim: all states are supported */ in resp_report_tgtpgs()
1729 arr[n++] = 0x0; /* Active/Optimized path */ in resp_report_tgtpgs()
1730 arr[n++] = 0x01; /* only support active/optimized paths */ in resp_report_tgtpgs()
1732 put_unaligned_be16(port_group_a, arr + n); in resp_report_tgtpgs()
1734 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
1735 arr[n++] = 0; /* Status code */ in resp_report_tgtpgs()
1736 arr[n++] = 0; /* Vendor unique */ in resp_report_tgtpgs()
1737 arr[n++] = 0x1; /* One port per group */ in resp_report_tgtpgs()
1738 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
1739 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
1740 put_unaligned_be16(port_a, arr + n); in resp_report_tgtpgs()
1742 arr[n++] = 3; /* Port unavailable */ in resp_report_tgtpgs()
1743 arr[n++] = 0x08; /* claim: only unavailalbe paths are supported */ in resp_report_tgtpgs()
1744 put_unaligned_be16(port_group_b, arr + n); in resp_report_tgtpgs()
1746 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
1747 arr[n++] = 0; /* Status code */ in resp_report_tgtpgs()
1748 arr[n++] = 0; /* Vendor unique */ in resp_report_tgtpgs()
1749 arr[n++] = 0x1; /* One port per group */ in resp_report_tgtpgs()
1750 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
1751 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
1752 put_unaligned_be16(port_b, arr + n); in resp_report_tgtpgs()
1756 put_unaligned_be32(rlen, arr + 0); in resp_report_tgtpgs()
1765 ret = fill_from_dev_buffer(scp, arr, in resp_report_tgtpgs()
1767 kfree(arr); in resp_report_tgtpgs()
1781 u8 *arr; in resp_rsup_opcodes() local
1797 arr = kzalloc((a_len < 256) ? 320 : a_len + 64, GFP_ATOMIC); in resp_rsup_opcodes()
1798 if (NULL == arr) { in resp_rsup_opcodes()
1813 put_unaligned_be32(count * bump, arr); in resp_rsup_opcodes()
1819 arr[offset] = oip->opcode; in resp_rsup_opcodes()
1820 put_unaligned_be16(oip->sa, arr + offset + 2); in resp_rsup_opcodes()
1822 arr[offset + 5] |= 0x2; in resp_rsup_opcodes()
1824 arr[offset + 5] |= 0x1; in resp_rsup_opcodes()
1825 put_unaligned_be16(oip->len_mask[0], arr + offset + 6); in resp_rsup_opcodes()
1827 put_unaligned_be16(0xa, arr + offset + 8); in resp_rsup_opcodes()
1833 arr[offset] = oip->opcode; in resp_rsup_opcodes()
1834 put_unaligned_be16(oip->sa, arr + offset + 2); in resp_rsup_opcodes()
1836 arr[offset + 5] |= 0x2; in resp_rsup_opcodes()
1838 arr[offset + 5] |= 0x1; in resp_rsup_opcodes()
1840 arr + offset + 6); in resp_rsup_opcodes()
1843 arr + offset + 8); in resp_rsup_opcodes()
1862 kfree(arr); in resp_rsup_opcodes()
1869 kfree(arr); /* point at requested sa */ in resp_rsup_opcodes()
1895 put_unaligned_be16(u, arr + 2); in resp_rsup_opcodes()
1896 arr[4] = oip->opcode; in resp_rsup_opcodes()
1898 arr[4 + k] = (k < 16) ? in resp_rsup_opcodes()
1904 arr[1] = (rctd ? 0x80 : 0) | supp; in resp_rsup_opcodes()
1906 put_unaligned_be16(0xa, arr + offset); in resp_rsup_opcodes()
1912 kfree(arr); in resp_rsup_opcodes()
1917 errsts = fill_from_dev_buffer(scp, arr, len); in resp_rsup_opcodes()
1918 kfree(arr); in resp_rsup_opcodes()
1927 u8 arr[16]; in resp_rsup_tmfs() local
1930 memset(arr, 0, sizeof(arr)); in resp_rsup_tmfs()
1937 arr[0] = 0xc8; /* ATS | ATSS | LURS */ in resp_rsup_tmfs()
1938 arr[1] = 0x1; /* ITNRS */ in resp_rsup_tmfs()
1940 arr[3] = 0xc; in resp_rsup_tmfs()
1946 return fill_from_dev_buffer(scp, arr, len); in resp_rsup_tmfs()
2119 unsigned char arr[SDEBUG_MAX_MSENSE_SZ]; in resp_mode_sense() local
2135 memset(arr, 0, SDEBUG_MAX_MSENSE_SZ); in resp_mode_sense()
2150 arr[2] = dev_spec; in resp_mode_sense()
2151 arr[3] = bd_len; in resp_mode_sense()
2154 arr[3] = dev_spec; in resp_mode_sense()
2156 arr[4] = 0x1; /* set LONGLBA bit */ in resp_mode_sense()
2157 arr[7] = bd_len; /* assume 255 or less */ in resp_mode_sense()
2160 ap = arr + offset; in resp_mode_sense()
2171 ap = arr + offset; in resp_mode_sense()
2176 ap = arr + offset; in resp_mode_sense()
2265 arr[0] = offset - 1; in resp_mode_sense()
2267 put_unaligned_be16((offset - 2), arr + 0); in resp_mode_sense()
2268 return fill_from_dev_buffer(scp, arr, min(alloc_len, offset)); in resp_mode_sense()
2278 unsigned char arr[SDEBUG_MAX_MSELECT_SZ]; in resp_mode_select() local
2282 memset(arr, 0, sizeof(arr)); in resp_mode_select()
2290 res = fetch_to_dev_buffer(scp, arr, param_len); in resp_mode_select()
2297 md_len = mselect6 ? (arr[0] + 1) : (get_unaligned_be16(arr + 0) + 2); in resp_mode_select()
2298 bd_len = mselect6 ? arr[3] : get_unaligned_be16(arr + 6); in resp_mode_select()
2304 mpage = arr[off] & 0x3f; in resp_mode_select()
2305 ps = !!(arr[off] & 0x80); in resp_mode_select()
2310 spf = !!(arr[off] & 0x40); in resp_mode_select()
2311 pg_len = spf ? (get_unaligned_be16(arr + off + 2) + 4) : in resp_mode_select()
2312 (arr[off + 1] + 2); in resp_mode_select()
2320 if (caching_pg[1] == arr[off + 1]) { in resp_mode_select()
2321 memcpy(caching_pg + 2, arr + off + 2, in resp_mode_select()
2327 if (ctrl_m_pg[1] == arr[off + 1]) { in resp_mode_select()
2328 memcpy(ctrl_m_pg + 2, arr + off + 2, in resp_mode_select()
2339 if (iec_m_pg[1] == arr[off + 1]) { in resp_mode_select()
2340 memcpy(iec_m_pg + 2, arr + off + 2, in resp_mode_select()
2355 static int resp_temp_l_pg(unsigned char *arr) in resp_temp_l_pg() argument
2361 memcpy(arr, temp_l_pg, sizeof(temp_l_pg)); in resp_temp_l_pg()
2365 static int resp_ie_l_pg(unsigned char *arr) in resp_ie_l_pg() argument
2370 memcpy(arr, ie_l_pg, sizeof(ie_l_pg)); in resp_ie_l_pg()
2372 arr[4] = THRESHOLD_EXCEEDED; in resp_ie_l_pg()
2373 arr[5] = 0xff; in resp_ie_l_pg()
2384 unsigned char arr[SDEBUG_MAX_LSENSE_SZ]; in resp_log_sense() local
2387 memset(arr, 0, sizeof(arr)); in resp_log_sense()
2397 arr[0] = pcode; in resp_log_sense()
2402 arr[n++] = 0x0; /* this page */ in resp_log_sense()
2403 arr[n++] = 0xd; /* Temperature */ in resp_log_sense()
2404 arr[n++] = 0x2f; /* Informational exceptions */ in resp_log_sense()
2405 arr[3] = n - 4; in resp_log_sense()
2408 arr[3] = resp_temp_l_pg(arr + 4); in resp_log_sense()
2411 arr[3] = resp_ie_l_pg(arr + 4); in resp_log_sense()
2418 arr[0] |= 0x40; in resp_log_sense()
2419 arr[1] = subpcode; in resp_log_sense()
2423 arr[n++] = 0x0; in resp_log_sense()
2424 arr[n++] = 0x0; /* 0,0 page */ in resp_log_sense()
2425 arr[n++] = 0x0; in resp_log_sense()
2426 arr[n++] = 0xff; /* this page */ in resp_log_sense()
2427 arr[n++] = 0xd; in resp_log_sense()
2428 arr[n++] = 0x0; /* Temperature */ in resp_log_sense()
2429 arr[n++] = 0x2f; in resp_log_sense()
2430 arr[n++] = 0x0; /* Informational exceptions */ in resp_log_sense()
2431 arr[3] = n - 4; in resp_log_sense()
2435 arr[n++] = 0xd; in resp_log_sense()
2436 arr[n++] = 0x0; /* Temperature */ in resp_log_sense()
2437 arr[3] = n - 4; in resp_log_sense()
2441 arr[n++] = 0x2f; in resp_log_sense()
2442 arr[n++] = 0x0; /* Informational exceptions */ in resp_log_sense()
2443 arr[3] = n - 4; in resp_log_sense()
2453 len = min(get_unaligned_be16(arr + 2) + 4, alloc_len); in resp_log_sense()
2454 return fill_from_dev_buffer(scp, arr, in resp_log_sense()
2522 static bool comp_write_worker(u64 lba, u32 num, const u8 *arr) in comp_write_worker() argument
2533 res = !memcmp(fake_storep + (block * lb_size), arr, in comp_write_worker()
2538 res = memcmp(fake_storep, arr + ((num - rest) * lb_size), in comp_write_worker()
2542 arr += num * lb_size; in comp_write_worker()
2543 memcpy(fake_storep + (block * lb_size), arr, (num - rest) * lb_size); in comp_write_worker()
2545 memcpy(fake_storep, arr + ((num - rest) * lb_size), in comp_write_worker()
3402 u8 *arr; in resp_comp_write() local
3430 arr = kcalloc(lb_size, dnum, GFP_ATOMIC); in resp_comp_write()
3431 if (NULL == arr) { in resp_comp_write()
3442 fake_storep = arr; in resp_comp_write()
3452 if (!comp_write_worker(lba, num, arr)) { in resp_comp_write()
3461 kfree(arr); in resp_comp_write()
3535 u8 arr[SDEBUG_GET_LBA_STATUS_LEN]; in resp_get_lba_status() local
3560 memset(arr, 0, SDEBUG_GET_LBA_STATUS_LEN); in resp_get_lba_status()
3561 put_unaligned_be32(20, arr); /* Parameter Data Length */ in resp_get_lba_status()
3562 put_unaligned_be64(lba, arr + 8); /* LBA */ in resp_get_lba_status()
3563 put_unaligned_be32(num, arr + 16); /* Number of blocks */ in resp_get_lba_status()
3564 arr[20] = !mapped; /* prov_stat=0: mapped; 1: dealloc */ in resp_get_lba_status()
3566 return fill_from_dev_buffer(scp, arr, SDEBUG_GET_LBA_STATUS_LEN); in resp_get_lba_status()
3613 u8 arr[RL_BUCKET_ELEMS * sizeof(struct scsi_lun)]; in resp_report_luns() local
3667 memset(arr, 0, sizeof(arr)); in resp_report_luns()
3668 lun_p = (struct scsi_lun *)&arr[0]; in resp_report_luns()
3670 put_unaligned_be32(rlen, &arr[0]); in resp_report_luns()
3682 res = p_fill_from_dev_buffer(scp, arr, n, off_rsp); in resp_report_luns()
3692 res = p_fill_from_dev_buffer(scp, arr, j * sz_lun, off_rsp); in resp_report_luns()
4553 char arr[16]; in scsi_debug_write_info() local
4559 memcpy(arr, buffer, minLen); in scsi_debug_write_info()
4560 arr[minLen] = '\0'; in scsi_debug_write_info()
4561 if (1 != sscanf(arr, "%d", &opts)) in scsi_debug_write_info()