Commit 1851532f authored by Vincent Mailhol's avatar Vincent Mailhol Committed by Marc Kleine-Budde

can: slcan: export slcan_ethtool_ops and remove slcan_set_ethtool_ops()

The function slcan_set_ethtool_ops() does one thing: populate
net_device::ethtool_ops. Instead, it is possible to directly assign
this field and remove one function call and slightly reduce the object
size. To do so, export slcan_ethtool_ops so it becomes visible to
sclan-core.c.

This patch reduces the footprint by 14 bytes:

| $ ./scripts/bloat-o-meter drivers/net/can/slcan/slcan.{old,new}.o
| drivers/net/can/slcan/slcan.o
| add/remove: 0/1 grow/shrink: 1/0 up/down: 15/-29 (-14)
| Function                                     old     new   delta
| slcan_open                                  1010    1025     +15
| slcan_set_ethtool_ops                         29       -     -29
| Total: Before=11115, After=11101, chg -0.13%
Signed-off-by: default avatarVincent Mailhol <mailhol.vincent@wanadoo.fr>
Link: https://lore.kernel.org/all/20220727104939.279022-2-mailhol.vincent@wanadoo.frSigned-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent a6e6231a
...@@ -866,8 +866,8 @@ static struct slcan *slc_alloc(void) ...@@ -866,8 +866,8 @@ static struct slcan *slc_alloc(void)
snprintf(dev->name, sizeof(dev->name), "slcan%d", i); snprintf(dev->name, sizeof(dev->name), "slcan%d", i);
dev->netdev_ops = &slc_netdev_ops; dev->netdev_ops = &slc_netdev_ops;
dev->ethtool_ops = &slcan_ethtool_ops;
dev->base_addr = i; dev->base_addr = i;
slcan_set_ethtool_ops(dev);
sl = netdev_priv(dev); sl = netdev_priv(dev);
/* Initialize channel control data */ /* Initialize channel control data */
......
...@@ -52,14 +52,9 @@ static int slcan_get_sset_count(struct net_device *netdev, int sset) ...@@ -52,14 +52,9 @@ static int slcan_get_sset_count(struct net_device *netdev, int sset)
} }
} }
static const struct ethtool_ops slcan_ethtool_ops = { const struct ethtool_ops slcan_ethtool_ops = {
.get_strings = slcan_get_strings, .get_strings = slcan_get_strings,
.get_priv_flags = slcan_get_priv_flags, .get_priv_flags = slcan_get_priv_flags,
.set_priv_flags = slcan_set_priv_flags, .set_priv_flags = slcan_set_priv_flags,
.get_sset_count = slcan_get_sset_count, .get_sset_count = slcan_get_sset_count,
}; };
void slcan_set_ethtool_ops(struct net_device *netdev)
{
netdev->ethtool_ops = &slcan_ethtool_ops;
}
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
bool slcan_err_rst_on_open(struct net_device *ndev); bool slcan_err_rst_on_open(struct net_device *ndev);
int slcan_enable_err_rst_on_open(struct net_device *ndev, bool on); int slcan_enable_err_rst_on_open(struct net_device *ndev, bool on);
void slcan_set_ethtool_ops(struct net_device *ndev);
extern const struct ethtool_ops slcan_ethtool_ops;
#endif /* _SLCAN_H */ #endif /* _SLCAN_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment