Lines Matching refs:buffer
123 static void sd_read_capacity(struct scsi_disk *sdkp, unsigned char *buffer);
162 char buffer[64];
196 if (scsi_mode_sense(sdp, 0x08, 8, buffer, sizeof(buffer), SD_TIMEOUT,
199 len = min_t(size_t, sizeof(buffer), data.length - data.header_length -
201 buffer_data = buffer + data.header_length +
210 * received mode parameter buffer before doing MODE SELECT.
699 static int sd_sec_submit(void *data, u16 spsp, u8 secp, void *buffer,
713 buffer, len, NULL, NULL, SD_TIMEOUT, sdkp->max_retries, 0,
1103 * For WRITE SAME the data transferred via the DATA OUT buffer is
1107 * DATA OUT buffer so that blk_rq_map_sg sets up the proper S/G list
2017 * its value is zero, so we assume the whole buffer transferred
2282 static int sd_read_protection_type(struct scsi_disk *sdkp, unsigned char *buffer)
2288 if (scsi_device_protection(sdp) == 0 || (buffer[12] & 1) == 0) {
2293 type = ((buffer[12] >> 1) & 7) + 1; /* P_TYPE 0 = Type 1 */
2355 unsigned char *buffer)
2374 memset(buffer, 0, RC16_LEN);
2377 buffer, RC16_LEN, &sshdr,
2411 sector_size = get_unaligned_be32(&buffer[8]);
2412 lba = get_unaligned_be64(&buffer[0]);
2414 if (sd_read_protection_type(sdkp, buffer) < 0) {
2420 sdkp->physical_block_size = (1 << (buffer[13] & 0xf)) * sector_size;
2423 sdkp->rc_basis = (buffer[12] >> 4) & 0x3;
2426 alignment = ((buffer[14] & 0x3f) << 8 | buffer[15]) * sector_size;
2432 if (buffer[14] & 0x80) { /* LBPME */
2435 if (buffer[14] & 0x40) /* LBPRZ */
2446 unsigned char *buffer)
2459 memset(buffer, 0, 8);
2462 buffer, 8, &sshdr,
2488 sector_size = get_unaligned_be32(&buffer[4]);
2489 lba = get_unaligned_be32(&buffer[0]);
2522 sd_read_capacity(struct scsi_disk *sdkp, unsigned char *buffer)
2528 sector_size = read_capacity_16(sdkp, sdp, buffer);
2534 sector_size = read_capacity_10(sdkp, sdp, buffer);
2538 sector_size = read_capacity_10(sdkp, sdp, buffer);
2548 sector_size = read_capacity_16(sdkp, sdp, buffer);
2646 /* called with buffer of length 512 */
2649 unsigned char *buffer, int len, struct scsi_mode_data *data,
2652 return scsi_mode_sense(sdkp->device, dbd, modepage, buffer, len,
2659 * called with buffer of length SD_BUF_SIZE
2662 sd_read_write_protect_flag(struct scsi_disk *sdkp, unsigned char *buffer)
2676 res = sd_do_mode_sense(sdkp, 0, 0x3F, buffer, 192, &data, NULL);
2683 res = sd_do_mode_sense(sdkp, 0, 0x3F, buffer, 4, &data, NULL);
2692 res = sd_do_mode_sense(sdkp, 0, 0, buffer, 4, &data, NULL);
2698 res = sd_do_mode_sense(sdkp, 0, 0x3F, buffer, 255,
2711 sd_printk(KERN_DEBUG, sdkp, "Mode Sense: %4ph\n", buffer);
2718 * called with buffer of length SD_BUF_SIZE
2721 sd_read_cache_type(struct scsi_disk *sdkp, unsigned char *buffer)
2760 res = sd_do_mode_sense(sdkp, dbd, modepage, buffer, first_len,
2792 res = sd_do_mode_sense(sdkp, dbd, modepage, buffer, len,
2799 u8 page_code = buffer[offset] & 0x3F;
2800 u8 spf = buffer[offset] & 0x40;
2817 offset += 4 + (buffer[offset+2] << 8) +
2818 buffer[offset+3];
2820 offset += 2 + buffer[offset+1];
2835 sdkp->WCE = ((buffer[offset + 2] & 0x04) != 0);
2836 sdkp->RCD = ((buffer[offset + 2] & 0x01) != 0);
2838 sdkp->WCE = ((buffer[offset + 2] & 0x01) == 0);
2897 static void sd_read_app_tag_own(struct scsi_disk *sdkp, unsigned char *buffer)
2910 res = scsi_mode_sense(sdp, 1, 0x0a, buffer, 36, SD_TIMEOUT,
2926 if ((buffer[offset] & 0x3f) != 0x0a) {
2931 if ((buffer[offset + 5] & 0x80) == 0)
2947 unsigned char *buffer = kmalloc(vpd_len, GFP_KERNEL);
2949 if (!buffer ||
2951 scsi_get_vpd_page(sdkp->device, 0xb0, buffer, vpd_len))
2955 get_unaligned_be16(&buffer[6]) * sector_sz);
2957 sdkp->max_xfer_blocks = get_unaligned_be32(&buffer[8]);
2958 sdkp->opt_xfer_blocks = get_unaligned_be32(&buffer[12]);
2960 if (buffer[3] == 0x3c) {
2963 sdkp->max_ws_blocks = (u32)get_unaligned_be64(&buffer[36]);
2968 lba_count = get_unaligned_be32(&buffer[20]);
2969 desc_count = get_unaligned_be32(&buffer[24]);
2974 sdkp->unmap_granularity = get_unaligned_be32(&buffer[28]);
2976 if (buffer[32] & 0x80)
2978 get_unaligned_be32(&buffer[32]) & ~(1 << 31);
3000 kfree(buffer);
3010 unsigned char *buffer;
3014 buffer = kmalloc(vpd_len, GFP_KERNEL);
3016 if (!buffer ||
3018 scsi_get_vpd_page(sdkp->device, 0xb1, buffer, vpd_len))
3021 rot = get_unaligned_be16(&buffer[4]);
3032 sdkp->zoned = (buffer[8] >> 4) & 3;
3058 kfree(buffer);
3067 unsigned char *buffer;
3073 buffer = kmalloc(vpd_len, GFP_KERNEL);
3075 if (!buffer || scsi_get_vpd_page(sdkp->device, 0xb2, buffer, vpd_len))
3079 sdkp->lbpu = (buffer[5] >> 7) & 1; /* UNMAP */
3080 sdkp->lbpws = (buffer[5] >> 6) & 1; /* WRITE SAME(16) with UNMAP */
3081 sdkp->lbpws10 = (buffer[5] >> 5) & 1; /* WRITE SAME(10) with UNMAP */
3084 kfree(buffer);
3087 static void sd_read_write_same(struct scsi_disk *sdkp, unsigned char *buffer)
3097 if (scsi_report_opcode(sdev, buffer, SD_BUF_SIZE, INQUIRY) < 0) {
3107 if (!scsi_get_vpd_page(sdev, 0x89, buffer, vpd_buf_len))
3111 if (scsi_report_opcode(sdev, buffer, SD_BUF_SIZE, WRITE_SAME_16) == 1)
3114 if (scsi_report_opcode(sdev, buffer, SD_BUF_SIZE, WRITE_SAME) == 1)
3118 static void sd_read_security(struct scsi_disk *sdkp, unsigned char *buffer)
3125 if (scsi_report_opcode(sdev, buffer, SD_BUF_SIZE,
3127 scsi_report_opcode(sdev, buffer, SD_BUF_SIZE,
3195 unsigned char *buffer;
3208 buffer = kmalloc(SD_BUF_SIZE, GFP_KERNEL);
3209 if (!buffer) {
3222 sd_read_capacity(sdkp, buffer);
3237 sd_zbc_read_zones(sdkp, buffer);
3242 sd_read_write_protect_flag(sdkp, buffer);
3243 sd_read_cache_type(sdkp, buffer);
3244 sd_read_app_tag_own(sdkp, buffer);
3245 sd_read_write_same(sdkp, buffer);
3246 sd_read_security(sdkp, buffer);
3288 kfree(buffer);
3326 * @buf: output buffer
3327 * @buflen: length of the output buffer