Lines Matching refs:arr

905 static int fill_from_dev_buffer(struct scsi_cmnd *scp, unsigned char *arr,  in fill_from_dev_buffer()  argument
917 arr, arr_len); in fill_from_dev_buffer()
924 static int fetch_to_dev_buffer(struct scsi_cmnd *scp, unsigned char *arr, in fetch_to_dev_buffer() argument
932 return scsi_sg_copy_to_buffer(scp, arr, arr_len); in fetch_to_dev_buffer()
941 static int inquiry_evpd_83(unsigned char * arr, int port_group_id, in inquiry_evpd_83() argument
951 arr[0] = 0x2; /* ASCII */ in inquiry_evpd_83()
952 arr[1] = 0x1; in inquiry_evpd_83()
953 arr[2] = 0x0; in inquiry_evpd_83()
954 memcpy(&arr[4], inq_vendor_id, 8); in inquiry_evpd_83()
955 memcpy(&arr[12], inq_product_id, 16); in inquiry_evpd_83()
956 memcpy(&arr[28], dev_id_str, dev_id_str_len); in inquiry_evpd_83()
958 arr[3] = num; in inquiry_evpd_83()
962 arr[num++] = 0x1; /* binary (not necessarily sas) */ in inquiry_evpd_83()
963 arr[num++] = 0x3; /* PIV=0, lu, naa */ in inquiry_evpd_83()
964 arr[num++] = 0x0; in inquiry_evpd_83()
965 arr[num++] = 0x8; in inquiry_evpd_83()
966 arr[num++] = 0x53; /* naa-5 ieee company id=0x333333 (fake) */ in inquiry_evpd_83()
967 arr[num++] = 0x33; in inquiry_evpd_83()
968 arr[num++] = 0x33; in inquiry_evpd_83()
969 arr[num++] = 0x30; in inquiry_evpd_83()
970 arr[num++] = (dev_id_num >> 24); in inquiry_evpd_83()
971 arr[num++] = (dev_id_num >> 16) & 0xff; in inquiry_evpd_83()
972 arr[num++] = (dev_id_num >> 8) & 0xff; in inquiry_evpd_83()
973 arr[num++] = dev_id_num & 0xff; in inquiry_evpd_83()
975 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_evpd_83()
976 arr[num++] = 0x94; /* PIV=1, target port, rel port */ in inquiry_evpd_83()
977 arr[num++] = 0x0; /* reserved */ in inquiry_evpd_83()
978 arr[num++] = 0x4; /* length */ in inquiry_evpd_83()
979 arr[num++] = 0x0; /* reserved */ in inquiry_evpd_83()
980 arr[num++] = 0x0; /* reserved */ in inquiry_evpd_83()
981 arr[num++] = 0x0; in inquiry_evpd_83()
982 arr[num++] = 0x1; /* relative port A */ in inquiry_evpd_83()
985 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_evpd_83()
986 arr[num++] = 0x93; /* piv=1, target port, naa */ in inquiry_evpd_83()
987 arr[num++] = 0x0; in inquiry_evpd_83()
988 arr[num++] = 0x8; in inquiry_evpd_83()
989 arr[num++] = 0x52; /* naa-5, company id=0x222222 (fake) */ in inquiry_evpd_83()
990 arr[num++] = 0x22; in inquiry_evpd_83()
991 arr[num++] = 0x22; in inquiry_evpd_83()
992 arr[num++] = 0x20; in inquiry_evpd_83()
993 arr[num++] = (port_a >> 24); in inquiry_evpd_83()
994 arr[num++] = (port_a >> 16) & 0xff; in inquiry_evpd_83()
995 arr[num++] = (port_a >> 8) & 0xff; in inquiry_evpd_83()
996 arr[num++] = port_a & 0xff; in inquiry_evpd_83()
998 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_evpd_83()
999 arr[num++] = 0x95; /* piv=1, target port group id */ in inquiry_evpd_83()
1000 arr[num++] = 0x0; in inquiry_evpd_83()
1001 arr[num++] = 0x4; in inquiry_evpd_83()
1002 arr[num++] = 0; in inquiry_evpd_83()
1003 arr[num++] = 0; in inquiry_evpd_83()
1004 arr[num++] = (port_group_id >> 8) & 0xff; in inquiry_evpd_83()
1005 arr[num++] = port_group_id & 0xff; in inquiry_evpd_83()
1007 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_evpd_83()
1008 arr[num++] = 0xa3; /* piv=1, target device, naa */ in inquiry_evpd_83()
1009 arr[num++] = 0x0; in inquiry_evpd_83()
1010 arr[num++] = 0x8; in inquiry_evpd_83()
1011 arr[num++] = 0x52; /* naa-5, company id=0x222222 (fake) */ in inquiry_evpd_83()
1012 arr[num++] = 0x22; in inquiry_evpd_83()
1013 arr[num++] = 0x22; in inquiry_evpd_83()
1014 arr[num++] = 0x20; in inquiry_evpd_83()
1015 arr[num++] = (target_dev_id >> 24); in inquiry_evpd_83()
1016 arr[num++] = (target_dev_id >> 16) & 0xff; in inquiry_evpd_83()
1017 arr[num++] = (target_dev_id >> 8) & 0xff; in inquiry_evpd_83()
1018 arr[num++] = target_dev_id & 0xff; in inquiry_evpd_83()
1020 arr[num++] = 0x63; /* proto=sas, UTF-8 */ in inquiry_evpd_83()
1021 arr[num++] = 0xa8; /* piv=1, target device, SCSI name string */ in inquiry_evpd_83()
1022 arr[num++] = 0x0; in inquiry_evpd_83()
1023 arr[num++] = 24; in inquiry_evpd_83()
1024 memcpy(arr + num, "naa.52222220", 12); in inquiry_evpd_83()
1027 memcpy(arr + num, b, 8); in inquiry_evpd_83()
1029 memset(arr + num, 0, 4); in inquiry_evpd_83()
1042 static int inquiry_evpd_84(unsigned char * arr) in inquiry_evpd_84() argument
1044 memcpy(arr, vpd84_data, sizeof(vpd84_data)); in inquiry_evpd_84()
1049 static int inquiry_evpd_85(unsigned char * arr) in inquiry_evpd_85() argument
1056 arr[num++] = 0x1; /* lu, storage config */ in inquiry_evpd_85()
1057 arr[num++] = 0x0; /* reserved */ in inquiry_evpd_85()
1058 arr[num++] = 0x0; in inquiry_evpd_85()
1063 arr[num++] = plen; /* length, null termianted, padded */ in inquiry_evpd_85()
1064 memcpy(arr + num, na1, olen); in inquiry_evpd_85()
1065 memset(arr + num + olen, 0, plen - olen); in inquiry_evpd_85()
1068 arr[num++] = 0x4; /* lu, logging */ in inquiry_evpd_85()
1069 arr[num++] = 0x0; /* reserved */ in inquiry_evpd_85()
1070 arr[num++] = 0x0; in inquiry_evpd_85()
1075 arr[num++] = plen; /* length, null terminated, padded */ in inquiry_evpd_85()
1076 memcpy(arr + num, na2, olen); in inquiry_evpd_85()
1077 memset(arr + num + olen, 0, plen - olen); in inquiry_evpd_85()
1084 static int inquiry_evpd_88(unsigned char * arr, int target_dev_id) in inquiry_evpd_88() argument
1091 arr[num++] = 0x0; /* reserved */ in inquiry_evpd_88()
1092 arr[num++] = 0x0; /* reserved */ in inquiry_evpd_88()
1093 arr[num++] = 0x0; in inquiry_evpd_88()
1094 arr[num++] = 0x1; /* relative port 1 (primary) */ in inquiry_evpd_88()
1095 memset(arr + num, 0, 6); in inquiry_evpd_88()
1097 arr[num++] = 0x0; in inquiry_evpd_88()
1098 arr[num++] = 12; /* length tp descriptor */ in inquiry_evpd_88()
1100 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_evpd_88()
1101 arr[num++] = 0x93; /* PIV=1, target port, NAA */ in inquiry_evpd_88()
1102 arr[num++] = 0x0; /* reserved */ in inquiry_evpd_88()
1103 arr[num++] = 0x8; /* length */ in inquiry_evpd_88()
1104 arr[num++] = 0x52; /* NAA-5, company_id=0x222222 (fake) */ in inquiry_evpd_88()
1105 arr[num++] = 0x22; in inquiry_evpd_88()
1106 arr[num++] = 0x22; in inquiry_evpd_88()
1107 arr[num++] = 0x20; in inquiry_evpd_88()
1108 arr[num++] = (port_a >> 24); in inquiry_evpd_88()
1109 arr[num++] = (port_a >> 16) & 0xff; in inquiry_evpd_88()
1110 arr[num++] = (port_a >> 8) & 0xff; in inquiry_evpd_88()
1111 arr[num++] = port_a & 0xff; in inquiry_evpd_88()
1113 arr[num++] = 0x0; /* reserved */ in inquiry_evpd_88()
1114 arr[num++] = 0x0; /* reserved */ in inquiry_evpd_88()
1115 arr[num++] = 0x0; in inquiry_evpd_88()
1116 arr[num++] = 0x2; /* relative port 2 (secondary) */ in inquiry_evpd_88()
1117 memset(arr + num, 0, 6); in inquiry_evpd_88()
1119 arr[num++] = 0x0; in inquiry_evpd_88()
1120 arr[num++] = 12; /* length tp descriptor */ in inquiry_evpd_88()
1122 arr[num++] = 0x61; /* proto=sas, binary */ in inquiry_evpd_88()
1123 arr[num++] = 0x93; /* PIV=1, target port, NAA */ in inquiry_evpd_88()
1124 arr[num++] = 0x0; /* reserved */ in inquiry_evpd_88()
1125 arr[num++] = 0x8; /* length */ in inquiry_evpd_88()
1126 arr[num++] = 0x52; /* NAA-5, company_id=0x222222 (fake) */ in inquiry_evpd_88()
1127 arr[num++] = 0x22; in inquiry_evpd_88()
1128 arr[num++] = 0x22; in inquiry_evpd_88()
1129 arr[num++] = 0x20; in inquiry_evpd_88()
1130 arr[num++] = (port_b >> 24); in inquiry_evpd_88()
1131 arr[num++] = (port_b >> 16) & 0xff; in inquiry_evpd_88()
1132 arr[num++] = (port_b >> 8) & 0xff; in inquiry_evpd_88()
1133 arr[num++] = port_b & 0xff; in inquiry_evpd_88()
1184 static int inquiry_evpd_89(unsigned char * arr) in inquiry_evpd_89() argument
1186 memcpy(arr, vpd89_data, sizeof(vpd89_data)); in inquiry_evpd_89()
1199 static int inquiry_evpd_b0(unsigned char * arr) in inquiry_evpd_b0() argument
1203 memcpy(arr, vpdb0_data, sizeof(vpdb0_data)); in inquiry_evpd_b0()
1207 arr[2] = (gran >> 8) & 0xff; in inquiry_evpd_b0()
1208 arr[3] = gran & 0xff; in inquiry_evpd_b0()
1212 arr[4] = (sdebug_store_sectors >> 24) & 0xff; in inquiry_evpd_b0()
1213 arr[5] = (sdebug_store_sectors >> 16) & 0xff; in inquiry_evpd_b0()
1214 arr[6] = (sdebug_store_sectors >> 8) & 0xff; in inquiry_evpd_b0()
1215 arr[7] = sdebug_store_sectors & 0xff; in inquiry_evpd_b0()
1219 put_unaligned_be32(scsi_debug_opt_blks, &arr[8]); in inquiry_evpd_b0()
1223 put_unaligned_be32(scsi_debug_unmap_max_blocks, &arr[16]); in inquiry_evpd_b0()
1226 put_unaligned_be32(scsi_debug_unmap_max_desc, &arr[20]); in inquiry_evpd_b0()
1231 put_unaligned_be32(scsi_debug_unmap_alignment, &arr[28]); in inquiry_evpd_b0()
1232 arr[28] |= 0x80; /* UGAVALID */ in inquiry_evpd_b0()
1236 put_unaligned_be32(scsi_debug_unmap_granularity, &arr[24]); in inquiry_evpd_b0()
1239 put_unaligned_be64(scsi_debug_write_same_length, &arr[32]); in inquiry_evpd_b0()
1247 static int inquiry_evpd_b1(unsigned char *arr) in inquiry_evpd_b1() argument
1249 memset(arr, 0, 0x3c); in inquiry_evpd_b1()
1250 arr[0] = 0; in inquiry_evpd_b1()
1251 arr[1] = 1; /* non rotating medium (e.g. solid state) */ in inquiry_evpd_b1()
1252 arr[2] = 0; in inquiry_evpd_b1()
1253 arr[3] = 5; /* less than 1.8" */ in inquiry_evpd_b1()
1259 static int inquiry_evpd_b2(unsigned char *arr) in inquiry_evpd_b2() argument
1261 memset(arr, 0, 0x4); in inquiry_evpd_b2()
1262 arr[0] = 0; /* threshold exponent */ in inquiry_evpd_b2()
1265 arr[1] = 1 << 7; in inquiry_evpd_b2()
1268 arr[1] |= 1 << 6; in inquiry_evpd_b2()
1271 arr[1] |= 1 << 5; in inquiry_evpd_b2()
1274 arr[1] |= 1 << 2; in inquiry_evpd_b2()
1285 unsigned char * arr; in resp_inquiry() local
1291 arr = kzalloc(SDEBUG_MAX_INQ_ARR_SZ, GFP_ATOMIC); in resp_inquiry()
1292 if (! arr) in resp_inquiry()
1301 arr[0] = pq_pdt; in resp_inquiry()
1304 kfree(arr); in resp_inquiry()
1321 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1323 arr[n++] = 0x0; /* this page */ in resp_inquiry()
1324 arr[n++] = 0x80; /* unit serial number */ in resp_inquiry()
1325 arr[n++] = 0x83; /* device identification */ in resp_inquiry()
1326 arr[n++] = 0x84; /* software interface ident. */ in resp_inquiry()
1327 arr[n++] = 0x85; /* management network addresses */ in resp_inquiry()
1328 arr[n++] = 0x86; /* extended inquiry */ in resp_inquiry()
1329 arr[n++] = 0x87; /* mode page policy */ in resp_inquiry()
1330 arr[n++] = 0x88; /* SCSI ports */ in resp_inquiry()
1331 arr[n++] = 0x89; /* ATA information */ in resp_inquiry()
1332 arr[n++] = 0xb0; /* Block limits (SBC) */ in resp_inquiry()
1333 arr[n++] = 0xb1; /* Block characteristics (SBC) */ in resp_inquiry()
1335 arr[n++] = 0xb2; in resp_inquiry()
1336 arr[3] = n - 4; /* number of supported VPD pages */ in resp_inquiry()
1338 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1339 arr[3] = len; in resp_inquiry()
1340 memcpy(&arr[4], lu_id_str, len); in resp_inquiry()
1342 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1343 arr[3] = inquiry_evpd_83(&arr[4], port_group_id, in resp_inquiry()
1347 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1348 arr[3] = inquiry_evpd_84(&arr[4]); in resp_inquiry()
1350 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1351 arr[3] = inquiry_evpd_85(&arr[4]); in resp_inquiry()
1353 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1354 arr[3] = 0x3c; /* number of following entries */ in resp_inquiry()
1356 arr[4] = 0x4; /* SPT: GRD_CHK:1 */ in resp_inquiry()
1358 arr[4] = 0x5; /* SPT: GRD_CHK:1, REF_CHK:1 */ in resp_inquiry()
1360 arr[4] = 0x0; /* no protection stuff */ in resp_inquiry()
1361 arr[5] = 0x7; /* head of q, ordered + simple q's */ in resp_inquiry()
1363 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1364 arr[3] = 0x8; /* number of following entries */ in resp_inquiry()
1365 arr[4] = 0x2; /* disconnect-reconnect mp */ in resp_inquiry()
1366 arr[6] = 0x80; /* mlus, shared */ in resp_inquiry()
1367 arr[8] = 0x18; /* protocol specific lu */ in resp_inquiry()
1368 arr[10] = 0x82; /* mlus, per initiator port */ in resp_inquiry()
1370 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1371 arr[3] = inquiry_evpd_88(&arr[4], target_dev_id); in resp_inquiry()
1373 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1374 n = inquiry_evpd_89(&arr[4]); in resp_inquiry()
1375 arr[2] = (n >> 8); in resp_inquiry()
1376 arr[3] = (n & 0xff); in resp_inquiry()
1378 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1379 arr[3] = inquiry_evpd_b0(&arr[4]); in resp_inquiry()
1381 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1382 arr[3] = inquiry_evpd_b1(&arr[4]); in resp_inquiry()
1384 arr[1] = cmd[2]; /*sanity */ in resp_inquiry()
1385 arr[3] = inquiry_evpd_b2(&arr[4]); in resp_inquiry()
1388 kfree(arr); in resp_inquiry()
1391 len = min(((arr[2] << 8) + arr[3]) + 4, alloc_len); in resp_inquiry()
1392 ret = fill_from_dev_buffer(scp, arr, in resp_inquiry()
1394 kfree(arr); in resp_inquiry()
1398 arr[1] = scsi_debug_removable ? 0x80 : 0; /* Removable disk */ in resp_inquiry()
1399 arr[2] = scsi_debug_scsi_level; in resp_inquiry()
1400 arr[3] = 2; /* response_data_format==2 */ in resp_inquiry()
1401 arr[4] = SDEBUG_LONG_INQ_SZ - 5; in resp_inquiry()
1402 arr[5] = scsi_debug_dif ? 1 : 0; /* PROTECT bit */ in resp_inquiry()
1404 arr[5] = 0x10; /* claim: implicit TGPS */ in resp_inquiry()
1405 arr[6] = 0x10; /* claim: MultiP */ in resp_inquiry()
1407 arr[7] = 0xa; /* claim: LINKED + CMDQUE */ in resp_inquiry()
1408 memcpy(&arr[8], inq_vendor_id, 8); in resp_inquiry()
1409 memcpy(&arr[16], inq_product_id, 16); in resp_inquiry()
1410 memcpy(&arr[32], inq_product_rev, 4); in resp_inquiry()
1412 arr[58] = 0x0; arr[59] = 0xa2; /* SAM-5 rev 4 */ in resp_inquiry()
1413 arr[60] = 0x4; arr[61] = 0x68; /* SPC-4 rev 37 */ in resp_inquiry()
1416 arr[n++] = 0x4; arr[n++] = 0xc5; /* SBC-4 rev 36 */ in resp_inquiry()
1418 arr[n++] = 0x5; arr[n++] = 0x25; /* SSC-4 rev 3 */ in resp_inquiry()
1420 arr[n++] = 0x20; arr[n++] = 0xe6; /* SPL-3 rev 7 */ in resp_inquiry()
1421 ret = fill_from_dev_buffer(scp, arr, in resp_inquiry()
1423 kfree(arr); in resp_inquiry()
1432 unsigned char arr[SCSI_SENSE_BUFFERSIZE]; in resp_requests() local
1436 memset(arr, 0, sizeof(arr)); in resp_requests()
1441 arr[0] = 0x72; in resp_requests()
1442 arr[1] = 0x0; /* NO_SENSE in sense_key */ in resp_requests()
1443 arr[2] = THRESHOLD_EXCEEDED; in resp_requests()
1444 arr[3] = 0xff; /* TEST set and MRIE==6 */ in resp_requests()
1447 arr[0] = 0x70; in resp_requests()
1448 arr[2] = 0x0; /* NO_SENSE in sense_key */ in resp_requests()
1449 arr[7] = 0xa; /* 18 byte sense buffer */ in resp_requests()
1450 arr[12] = THRESHOLD_EXCEEDED; in resp_requests()
1451 arr[13] = 0xff; /* TEST set and MRIE==6 */ in resp_requests()
1454 memcpy(arr, sbuff, SCSI_SENSE_BUFFERSIZE); in resp_requests()
1455 if (arr[0] >= 0x70 && dsense == scsi_debug_dsense) in resp_requests()
1457 else if (arr[0] <= 0x70) { in resp_requests()
1459 memset(arr, 0, 8); in resp_requests()
1460 arr[0] = 0x72; in resp_requests()
1463 memset(arr, 0, 18); in resp_requests()
1464 arr[0] = 0x70; in resp_requests()
1465 arr[7] = 0xa; in resp_requests()
1468 memset(arr, 0, 8); in resp_requests()
1469 arr[0] = 0x72; in resp_requests()
1470 arr[1] = sbuff[2]; /* sense key */ in resp_requests()
1471 arr[2] = sbuff[12]; /* asc */ in resp_requests()
1472 arr[3] = sbuff[13]; /* ascq */ in resp_requests()
1475 memset(arr, 0, 18); in resp_requests()
1476 arr[0] = 0x70; in resp_requests()
1477 arr[2] = sbuff[1]; in resp_requests()
1478 arr[7] = 0xa; in resp_requests()
1479 arr[12] = sbuff[1]; in resp_requests()
1480 arr[13] = sbuff[3]; in resp_requests()
1485 return fill_from_dev_buffer(scp, arr, len); in resp_requests()
1518 unsigned char arr[SDEBUG_READCAP_ARR_SZ]; in resp_readcap() local
1523 memset(arr, 0, SDEBUG_READCAP_ARR_SZ); in resp_readcap()
1526 arr[0] = (capac >> 24); in resp_readcap()
1527 arr[1] = (capac >> 16) & 0xff; in resp_readcap()
1528 arr[2] = (capac >> 8) & 0xff; in resp_readcap()
1529 arr[3] = capac & 0xff; in resp_readcap()
1531 arr[0] = 0xff; in resp_readcap()
1532 arr[1] = 0xff; in resp_readcap()
1533 arr[2] = 0xff; in resp_readcap()
1534 arr[3] = 0xff; in resp_readcap()
1536 arr[6] = (scsi_debug_sector_size >> 8) & 0xff; in resp_readcap()
1537 arr[7] = scsi_debug_sector_size & 0xff; in resp_readcap()
1538 return fill_from_dev_buffer(scp, arr, SDEBUG_READCAP_ARR_SZ); in resp_readcap()
1546 unsigned char arr[SDEBUG_READCAP16_ARR_SZ]; in resp_readcap16() local
1554 memset(arr, 0, SDEBUG_READCAP16_ARR_SZ); in resp_readcap16()
1557 arr[7 - k] = capac & 0xff; in resp_readcap16()
1558 arr[8] = (scsi_debug_sector_size >> 24) & 0xff; in resp_readcap16()
1559 arr[9] = (scsi_debug_sector_size >> 16) & 0xff; in resp_readcap16()
1560 arr[10] = (scsi_debug_sector_size >> 8) & 0xff; in resp_readcap16()
1561 arr[11] = scsi_debug_sector_size & 0xff; in resp_readcap16()
1562 arr[13] = scsi_debug_physblk_exp & 0xf; in resp_readcap16()
1563 arr[14] = (scsi_debug_lowest_aligned >> 8) & 0x3f; in resp_readcap16()
1566 arr[14] |= 0x80; /* LBPME */ in resp_readcap16()
1568 arr[14] |= 0x40; /* LBPRZ */ in resp_readcap16()
1571 arr[15] = scsi_debug_lowest_aligned & 0xff; in resp_readcap16()
1574 arr[12] = (scsi_debug_dif - 1) << 1; /* P_TYPE */ in resp_readcap16()
1575 arr[12] |= 1; /* PROT_EN */ in resp_readcap16()
1578 return fill_from_dev_buffer(scp, arr, in resp_readcap16()
1588 unsigned char * arr; in resp_report_tgtpgs() local
1596 arr = kzalloc(SDEBUG_MAX_TGTPGS_ARR_SZ, GFP_ATOMIC); in resp_report_tgtpgs()
1597 if (! arr) in resp_report_tgtpgs()
1617 arr[n++] = host_no % 3; /* Asymm access state */ in resp_report_tgtpgs()
1618 arr[n++] = 0x0F; /* claim: all states are supported */ in resp_report_tgtpgs()
1620 arr[n++] = 0x0; /* Active/Optimized path */ in resp_report_tgtpgs()
1621 arr[n++] = 0x01; /* claim: only support active/optimized paths */ in resp_report_tgtpgs()
1623 arr[n++] = (port_group_a >> 8) & 0xff; in resp_report_tgtpgs()
1624 arr[n++] = port_group_a & 0xff; in resp_report_tgtpgs()
1625 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
1626 arr[n++] = 0; /* Status code */ in resp_report_tgtpgs()
1627 arr[n++] = 0; /* Vendor unique */ in resp_report_tgtpgs()
1628 arr[n++] = 0x1; /* One port per group */ in resp_report_tgtpgs()
1629 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
1630 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
1631 arr[n++] = (port_a >> 8) & 0xff; in resp_report_tgtpgs()
1632 arr[n++] = port_a & 0xff; in resp_report_tgtpgs()
1633 arr[n++] = 3; /* Port unavailable */ in resp_report_tgtpgs()
1634 arr[n++] = 0x08; /* claim: only unavailalbe paths are supported */ in resp_report_tgtpgs()
1635 arr[n++] = (port_group_b >> 8) & 0xff; in resp_report_tgtpgs()
1636 arr[n++] = port_group_b & 0xff; in resp_report_tgtpgs()
1637 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
1638 arr[n++] = 0; /* Status code */ in resp_report_tgtpgs()
1639 arr[n++] = 0; /* Vendor unique */ in resp_report_tgtpgs()
1640 arr[n++] = 0x1; /* One port per group */ in resp_report_tgtpgs()
1641 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
1642 arr[n++] = 0; /* Reserved */ in resp_report_tgtpgs()
1643 arr[n++] = (port_b >> 8) & 0xff; in resp_report_tgtpgs()
1644 arr[n++] = port_b & 0xff; in resp_report_tgtpgs()
1647 arr[0] = (rlen >> 24) & 0xff; in resp_report_tgtpgs()
1648 arr[1] = (rlen >> 16) & 0xff; in resp_report_tgtpgs()
1649 arr[2] = (rlen >> 8) & 0xff; in resp_report_tgtpgs()
1650 arr[3] = rlen & 0xff; in resp_report_tgtpgs()
1659 ret = fill_from_dev_buffer(scp, arr, in resp_report_tgtpgs()
1661 kfree(arr); in resp_report_tgtpgs()
1675 u8 *arr; in resp_rsup_opcodes() local
1691 arr = kzalloc((a_len < 256) ? 320 : a_len + 64, GFP_ATOMIC); in resp_rsup_opcodes()
1692 if (NULL == arr) { in resp_rsup_opcodes()
1707 put_unaligned_be32(count * bump, arr); in resp_rsup_opcodes()
1713 arr[offset] = oip->opcode; in resp_rsup_opcodes()
1714 put_unaligned_be16(oip->sa, arr + offset + 2); in resp_rsup_opcodes()
1716 arr[offset + 5] |= 0x2; in resp_rsup_opcodes()
1718 arr[offset + 5] |= 0x1; in resp_rsup_opcodes()
1719 put_unaligned_be16(oip->len_mask[0], arr + offset + 6); in resp_rsup_opcodes()
1721 put_unaligned_be16(0xa, arr + offset + 8); in resp_rsup_opcodes()
1727 arr[offset] = oip->opcode; in resp_rsup_opcodes()
1728 put_unaligned_be16(oip->sa, arr + offset + 2); in resp_rsup_opcodes()
1730 arr[offset + 5] |= 0x2; in resp_rsup_opcodes()
1732 arr[offset + 5] |= 0x1; in resp_rsup_opcodes()
1734 arr + offset + 6); in resp_rsup_opcodes()
1737 arr + offset + 8); in resp_rsup_opcodes()
1756 kfree(arr); in resp_rsup_opcodes()
1763 kfree(arr); /* point at requested sa */ in resp_rsup_opcodes()
1789 put_unaligned_be16(u, arr + 2); in resp_rsup_opcodes()
1790 arr[4] = oip->opcode; in resp_rsup_opcodes()
1792 arr[4 + k] = (k < 16) ? in resp_rsup_opcodes()
1798 arr[1] = (rctd ? 0x80 : 0) | supp; in resp_rsup_opcodes()
1800 put_unaligned_be16(0xa, arr + offset); in resp_rsup_opcodes()
1806 kfree(arr); in resp_rsup_opcodes()
1811 errsts = fill_from_dev_buffer(scp, arr, len); in resp_rsup_opcodes()
1812 kfree(arr); in resp_rsup_opcodes()
1821 u8 arr[16]; in resp_rsup_tmfs() local
1824 memset(arr, 0, sizeof(arr)); in resp_rsup_tmfs()
1831 arr[0] = 0xc8; /* ATS | ATSS | LURS */ in resp_rsup_tmfs()
1832 arr[1] = 0x1; /* ITNRS */ in resp_rsup_tmfs()
1834 arr[3] = 0xc; in resp_rsup_tmfs()
1840 return fill_from_dev_buffer(scp, arr, len); in resp_rsup_tmfs()
2011 unsigned char arr[SDEBUG_MAX_MSENSE_SZ]; in resp_mode_sense() local
2025 memset(arr, 0, SDEBUG_MAX_MSENSE_SZ); in resp_mode_sense()
2038 arr[2] = dev_spec; in resp_mode_sense()
2039 arr[3] = bd_len; in resp_mode_sense()
2042 arr[3] = dev_spec; in resp_mode_sense()
2044 arr[4] = 0x1; /* set LONGLBA bit */ in resp_mode_sense()
2045 arr[7] = bd_len; /* assume 255 or less */ in resp_mode_sense()
2048 ap = arr + offset; in resp_mode_sense()
2067 ap = arr + offset; in resp_mode_sense()
2078 ap = arr + offset; in resp_mode_sense()
2151 arr[0] = offset - 1; in resp_mode_sense()
2153 arr[0] = ((offset - 2) >> 8) & 0xff; in resp_mode_sense()
2154 arr[1] = (offset - 2) & 0xff; in resp_mode_sense()
2156 return fill_from_dev_buffer(scp, arr, min(alloc_len, offset)); in resp_mode_sense()
2166 unsigned char arr[SDEBUG_MAX_MSELECT_SZ]; in resp_mode_select() local
2170 memset(arr, 0, sizeof(arr)); in resp_mode_select()
2178 res = fetch_to_dev_buffer(scp, arr, param_len); in resp_mode_select()
2186 md_len = mselect6 ? (arr[0] + 1) : ((arr[0] << 8) + arr[1] + 2); in resp_mode_select()
2187 bd_len = mselect6 ? arr[3] : ((arr[6] << 8) + arr[7]); in resp_mode_select()
2193 mpage = arr[off] & 0x3f; in resp_mode_select()
2194 ps = !!(arr[off] & 0x80); in resp_mode_select()
2199 spf = !!(arr[off] & 0x40); in resp_mode_select()
2200 pg_len = spf ? ((arr[off + 2] << 8) + arr[off + 3] + 4) : in resp_mode_select()
2201 (arr[off + 1] + 2); in resp_mode_select()
2209 if (caching_pg[1] == arr[off + 1]) { in resp_mode_select()
2210 memcpy(caching_pg + 2, arr + off + 2, in resp_mode_select()
2216 if (ctrl_m_pg[1] == arr[off + 1]) { in resp_mode_select()
2217 memcpy(ctrl_m_pg + 2, arr + off + 2, in resp_mode_select()
2224 if (iec_m_pg[1] == arr[off + 1]) { in resp_mode_select()
2225 memcpy(iec_m_pg + 2, arr + off + 2, in resp_mode_select()
2240 static int resp_temp_l_pg(unsigned char * arr) in resp_temp_l_pg() argument
2246 memcpy(arr, temp_l_pg, sizeof(temp_l_pg)); in resp_temp_l_pg()
2250 static int resp_ie_l_pg(unsigned char * arr) in resp_ie_l_pg() argument
2255 memcpy(arr, ie_l_pg, sizeof(ie_l_pg)); in resp_ie_l_pg()
2257 arr[4] = THRESHOLD_EXCEEDED; in resp_ie_l_pg()
2258 arr[5] = 0xff; in resp_ie_l_pg()
2269 unsigned char arr[SDEBUG_MAX_LSENSE_SZ]; in resp_log_sense() local
2272 memset(arr, 0, sizeof(arr)); in resp_log_sense()
2283 arr[0] = pcode; in resp_log_sense()
2288 arr[n++] = 0x0; /* this page */ in resp_log_sense()
2289 arr[n++] = 0xd; /* Temperature */ in resp_log_sense()
2290 arr[n++] = 0x2f; /* Informational exceptions */ in resp_log_sense()
2291 arr[3] = n - 4; in resp_log_sense()
2294 arr[3] = resp_temp_l_pg(arr + 4); in resp_log_sense()
2297 arr[3] = resp_ie_l_pg(arr + 4); in resp_log_sense()
2304 arr[0] |= 0x40; in resp_log_sense()
2305 arr[1] = subpcode; in resp_log_sense()
2309 arr[n++] = 0x0; in resp_log_sense()
2310 arr[n++] = 0x0; /* 0,0 page */ in resp_log_sense()
2311 arr[n++] = 0x0; in resp_log_sense()
2312 arr[n++] = 0xff; /* this page */ in resp_log_sense()
2313 arr[n++] = 0xd; in resp_log_sense()
2314 arr[n++] = 0x0; /* Temperature */ in resp_log_sense()
2315 arr[n++] = 0x2f; in resp_log_sense()
2316 arr[n++] = 0x0; /* Informational exceptions */ in resp_log_sense()
2317 arr[3] = n - 4; in resp_log_sense()
2321 arr[n++] = 0xd; in resp_log_sense()
2322 arr[n++] = 0x0; /* Temperature */ in resp_log_sense()
2323 arr[3] = n - 4; in resp_log_sense()
2327 arr[n++] = 0x2f; in resp_log_sense()
2328 arr[n++] = 0x0; /* Informational exceptions */ in resp_log_sense()
2329 arr[3] = n - 4; in resp_log_sense()
2339 len = min(((arr[2] << 8) + arr[3]) + 4, alloc_len); in resp_log_sense()
2340 return fill_from_dev_buffer(scp, arr, in resp_log_sense()
2405 comp_write_worker(u64 lba, u32 num, const u8 *arr) in comp_write_worker() argument
2416 res = !memcmp(fake_storep + (block * lb_size), arr, in comp_write_worker()
2421 res = memcmp(fake_storep, arr + ((num - rest) * lb_size), in comp_write_worker()
2425 arr += num * lb_size; in comp_write_worker()
2426 memcpy(fake_storep + (block * lb_size), arr, (num - rest) * lb_size); in comp_write_worker()
2428 memcpy(fake_storep, arr + ((num - rest) * lb_size), in comp_write_worker()
3141 u8 *arr; in resp_comp_write() local
3178 arr = kzalloc(dnum * lb_size, GFP_ATOMIC); in resp_comp_write()
3179 if (NULL == arr) { in resp_comp_write()
3190 fake_storep = arr; in resp_comp_write()
3201 if (!comp_write_worker(lba, num, arr)) { in resp_comp_write()
3210 kfree(arr); in resp_comp_write()
3285 u8 arr[SDEBUG_GET_LBA_STATUS_LEN]; in resp_get_lba_status() local
3310 memset(arr, 0, SDEBUG_GET_LBA_STATUS_LEN); in resp_get_lba_status()
3311 put_unaligned_be32(20, arr); /* Parameter Data Length */ in resp_get_lba_status()
3312 put_unaligned_be64(lba, arr + 8); /* LBA */ in resp_get_lba_status()
3313 put_unaligned_be32(num, arr + 16); /* Number of blocks */ in resp_get_lba_status()
3314 arr[20] = !mapped; /* prov_stat=0: mapped; 1: dealloc */ in resp_get_lba_status()
3316 return fill_from_dev_buffer(scp, arr, SDEBUG_GET_LBA_STATUS_LEN); in resp_get_lba_status()
3330 unsigned char arr[SDEBUG_RLUN_ARR_SZ]; in resp_report_luns() local
3341 memset(arr, 0, SDEBUG_RLUN_ARR_SZ); in resp_report_luns()
3349 arr[2] = ((sizeof(struct scsi_lun) * num) >> 8) & 0xff; in resp_report_luns()
3350 arr[3] = (sizeof(struct scsi_lun) * num) & 0xff; in resp_report_luns()
3357 one_lun = (struct scsi_lun *) &arr[8]; in resp_report_luns()
3358 max_addr = arr + SDEBUG_RLUN_ARR_SZ; in resp_report_luns()
3373 alloc_len = (unsigned char *)(one_lun + i) - arr; in resp_report_luns()
3374 return fill_from_dev_buffer(scp, arr, in resp_report_luns()
4173 char arr[16]; in scsi_debug_write_info() local
4179 memcpy(arr, buffer, minLen); in scsi_debug_write_info()
4180 arr[minLen] = '\0'; in scsi_debug_write_info()
4181 if (1 != sscanf(arr, "%d", &opts)) in scsi_debug_write_info()