lkml.org 
[lkml]   [2019]   [Jun]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 12/13] usb-storage: set virt_boundary_mask in the scsi host
    Date
    This ensures all proper DMA layer handling is taken care of by the
    SCSI midlayer.

    Signed-off-by: Christoph Hellwig <hch@lst.de>
    ---
    drivers/usb/storage/scsiglue.c | 10 ----------
    drivers/usb/storage/usb.c | 10 ++++++++++
    2 files changed, 10 insertions(+), 10 deletions(-)

    diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c
    index 59190d88fa9f..02c3b66b3f78 100644
    --- a/drivers/usb/storage/scsiglue.c
    +++ b/drivers/usb/storage/scsiglue.c
    @@ -65,7 +65,6 @@ static const char* host_info(struct Scsi_Host *host)
    static int slave_alloc (struct scsi_device *sdev)
    {
    struct us_data *us = host_to_us(sdev->host);
    - int maxp;

    /*
    * Set the INQUIRY transfer length to 36. We don't use any of
    @@ -74,15 +73,6 @@ static int slave_alloc (struct scsi_device *sdev)
    */
    sdev->inquiry_len = 36;

    - /*
    - * USB has unusual scatter-gather requirements: the length of each
    - * scatterlist element except the last must be divisible by the
    - * Bulk maxpacket value. Fortunately this value is always a
    - * power of 2. Inform the block layer about this requirement.
    - */
    - maxp = usb_maxpacket(us->pusb_dev, us->recv_bulk_pipe, 0);
    - blk_queue_virt_boundary(sdev->request_queue, maxp - 1);
    -
    /*
    * Some host controllers may have alignment requirements.
    * We'll play it safe by requiring 512-byte alignment always.
    diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
    index 9a79cd9762f3..b0f23f4f58e3 100644
    --- a/drivers/usb/storage/usb.c
    +++ b/drivers/usb/storage/usb.c
    @@ -1050,6 +1050,16 @@ int usb_stor_probe2(struct us_data *us)
    usb_autopm_get_interface_no_resume(us->pusb_intf);
    snprintf(us->scsi_name, sizeof(us->scsi_name), "usb-storage %s",
    dev_name(&us->pusb_intf->dev));
    +
    + /*
    + * USB has unusual scatter-gather requirements: the length of each
    + * scatterlist element except the last must be divisible by the
    + * Bulk maxpacket value. Fortunately this value is always a
    + * power of 2. Inform the block layer about this requirement.
    + */
    + us_to_host(us)->virt_boundary_mask =
    + usb_maxpacket(us->pusb_dev, us->recv_bulk_pipe, 0) - 1;
    +
    result = scsi_add_host(us_to_host(us), dev);
    if (result) {
    dev_warn(dev,
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-06-05 21:11    [W:4.125 / U:0.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site