Re: [PATCH V4 09/11] mmc: block: Add CQE support

Adrian Hunter
2017-07-24T06:50:43Z

On 22/07/17 12:26, Shawn Lin wrote:
> Hi Adrian,
>
> On 2017/7/21 17:49, Adrian Hunter wrote:
>> Add CQE support to the block driver, including:
>> - optionally using DCMD for flush requests
>
> That doesn't seem to be fact when I was looking into
> patch 10 as it always fire DCMD with QBR whenever seeing
> !mrq->data. Do I miss something?

The function that decides how to issue a request is mmc_cqe_issue_type()
which checks mmc_cqe_can_dcmd().

<SNIP>

>> +static inline bool mmc_cqe_can_dcmd(struct mmc_host *host)
>> +{
>> + return host->caps2 & MMC_CAP2_CQE_DCMD;
>> +}
>> +
>> +enum mmc_issue_type mmc_cqe_issue_type(struct mmc_host *host,
>> + struct request *req)
>> +{
>> + switch (req_op(req)) {
>> + case REQ_OP_DRV_IN:
>> + case REQ_OP_DRV_OUT:
>> + case REQ_OP_DISCARD:
>> + case REQ_OP_SECURE_ERASE:
>> + return MMC_ISSUE_SYNC;
>> + case REQ_OP_FLUSH:
>> + return mmc_cqe_can_dcmd(host) ? MMC_ISSUE_DCMD : MMC_ISSUE_SYNC;
>> + default:
>> + return MMC_ISSUE_ASYNC;
>> + }
>> +}