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: Vincent Mailhol <mailhol.vincent@wanadoo.fr> Link: https://lore.kernel.org/all/20220727104939.279022-2-mailhol.vincent@wanadoo.fr Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
a6e6231ac1
commit
1851532fd3
@ -866,8 +866,8 @@ static struct slcan *slc_alloc(void)
|
||||
|
||||
snprintf(dev->name, sizeof(dev->name), "slcan%d", i);
|
||||
dev->netdev_ops = &slc_netdev_ops;
|
||||
dev->ethtool_ops = &slcan_ethtool_ops;
|
||||
dev->base_addr = i;
|
||||
slcan_set_ethtool_ops(dev);
|
||||
sl = netdev_priv(dev);
|
||||
|
||||
/* Initialize channel control data */
|
||||
|
@ -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_priv_flags = slcan_get_priv_flags,
|
||||
.set_priv_flags = slcan_set_priv_flags,
|
||||
.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 @@
|
||||
|
||||
bool slcan_err_rst_on_open(struct net_device *ndev);
|
||||
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 */
|
||||
|
Loading…
x
Reference in New Issue
Block a user