diff options
| author | Heiner Kallweit <hkallweit1@gmail.com> | 2026-04-02 15:30:48 +0200 |
|---|---|---|
| committer | Niklas Cassel <cassel@kernel.org> | 2026-04-02 21:01:02 +0200 |
| commit | 365da8c68739a28b44e414696a5ff0ee4c58e7d3 (patch) | |
| tree | 5334563d44d8274a40240756bdbb5eedffaf98bc /drivers/ata | |
| parent | f2122465398a875ef5a31bde85602e6dfac17a83 (diff) | |
| download | linux-next-365da8c68739a28b44e414696a5ff0ee4c58e7d3.tar.gz linux-next-365da8c68739a28b44e414696a5ff0ee4c58e7d3.zip | |
ata: libata-transport: use static struct ata_transport_internal to simplify match functions
Both matching functions can make use of static struct
ata_transport_internal. This eliminates the dependency on static
variable ata_scsi_transport_template, and it allows to remove helper
to_ata_internal(). Small drawback is that a forward declaration of
both functions is needed.
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Niklas Cassel <cassel@kernel.org>
Diffstat (limited to 'drivers/ata')
| -rw-r--r-- | drivers/ata/libata-transport.c | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/drivers/ata/libata-transport.c b/drivers/ata/libata-transport.c index 9d594562c0a7..c3055e44d87d 100644 --- a/drivers/ata/libata-transport.c +++ b/drivers/ata/libata-transport.c @@ -46,7 +46,11 @@ struct ata_internal { struct transport_container link_attr_cont; struct transport_container dev_attr_cont; }; -#define to_ata_internal(tmpl) container_of(tmpl, struct ata_internal, t) + +static int ata_tlink_match(struct attribute_container *cont, + struct device *dev); +static int ata_tdev_match(struct attribute_container *cont, + struct device *dev); #define tdev_to_device(d) \ container_of((d), struct ata_device, tdev) @@ -519,16 +523,6 @@ static bool ata_is_ata_dev(const struct device *dev) return dev->release == ata_tdev_release; } -static int ata_tdev_match(struct attribute_container *cont, - struct device *dev) -{ - struct ata_internal *i = to_ata_internal(ata_scsi_transport_template); - - if (!ata_is_ata_dev(dev)) - return 0; - return &i->dev_attr_cont.ac == cont; -} - /** * ata_tdev_free -- free an ATA transport device * @dev: struct ata_device owning the transport device to free @@ -660,16 +654,6 @@ static bool ata_is_link(const struct device *dev) return dev->release == ata_tlink_release; } -static int ata_tlink_match(struct attribute_container *cont, - struct device *dev) -{ - struct ata_internal *i = to_ata_internal(ata_scsi_transport_template); - - if (!ata_is_link(dev)) - return 0; - return &i->link_attr_cont.ac == cont; -} - /** * ata_tlink_delete -- remove an ATA link transport device * @link: struct ata_link owning the link transport device to remove @@ -762,6 +746,24 @@ static struct ata_internal ata_transport_internal = { .dev_attr_cont.ac.match = ata_tdev_match, }; +static int ata_tlink_match(struct attribute_container *cont, + struct device *dev) +{ + if (!ata_is_link(dev)) + return 0; + + return &ata_transport_internal.link_attr_cont.ac == cont; +} + +static int ata_tdev_match(struct attribute_container *cont, + struct device *dev) +{ + if (!ata_is_ata_dev(dev)) + return 0; + + return &ata_transport_internal.dev_attr_cont.ac == cont; +} + /* * Setup / Teardown code */ |
