18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#ifndef _SCSI_SCSI_REQUEST_H 38c2ecf20Sopenharmony_ci#define _SCSI_SCSI_REQUEST_H 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci#include <linux/blk-mq.h> 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#define BLK_MAX_CDB 16 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_cistruct scsi_request { 108c2ecf20Sopenharmony_ci unsigned char __cmd[BLK_MAX_CDB]; 118c2ecf20Sopenharmony_ci unsigned char *cmd; 128c2ecf20Sopenharmony_ci unsigned short cmd_len; 138c2ecf20Sopenharmony_ci int result; 148c2ecf20Sopenharmony_ci unsigned int sense_len; 158c2ecf20Sopenharmony_ci unsigned int resid_len; /* residual count */ 168c2ecf20Sopenharmony_ci int retries; 178c2ecf20Sopenharmony_ci void *sense; 188c2ecf20Sopenharmony_ci}; 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_cistatic inline struct scsi_request *scsi_req(struct request *rq) 218c2ecf20Sopenharmony_ci{ 228c2ecf20Sopenharmony_ci return blk_mq_rq_to_pdu(rq); 238c2ecf20Sopenharmony_ci} 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_cistatic inline void scsi_req_free_cmd(struct scsi_request *req) 268c2ecf20Sopenharmony_ci{ 278c2ecf20Sopenharmony_ci if (req->cmd != req->__cmd) 288c2ecf20Sopenharmony_ci kfree(req->cmd); 298c2ecf20Sopenharmony_ci} 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_civoid scsi_req_init(struct scsi_request *req); 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci#endif /* _SCSI_SCSI_REQUEST_H */ 34