We previously returned -ENODEV for devices that don't support ATS (except
that we always returned 0 for VFs, whether or not they support ATS).
For consistency, always return -EINVAL (not -ENODEV) if the device doesn't
support ATS. Return zero for VFs that support ATS.
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Joerg Roedel <jroedel@suse.de>
*/
int pci_ats_queue_depth(struct pci_dev *dev)
{
+ if (!dev->ats_cap)
+ return -EINVAL;
+
if (dev->is_virtfn)
return 0;
- if (dev->ats_cap)
- return dev->ats_qdep;
-
- return -ENODEV;
+ return dev->ats_qdep;
}
EXPORT_SYMBOL_GPL(pci_ats_queue_depth);