ethtool: Implement ethtool_puts()

Use strscpy() to implement ethtool_puts().

Functionally the same as ethtool_sprintf() when it's used with two
arguments or with just "%s" format specifier.

Signed-off-by: Justin Stitt <justinstitt@google.com>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Madhuri Sripada <madhuri.sripada@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
justinstitt@google.com 2023-12-06 23:16:10 +00:00 committed by David S. Miller
parent 09b4894783
commit 2a48c635fd
2 changed files with 20 additions and 0 deletions

View File

@ -1061,6 +1061,19 @@ int ethtool_get_ts_info_by_layer(struct net_device *dev, struct ethtool_ts_info
*/
extern __printf(2, 3) void ethtool_sprintf(u8 **data, const char *fmt, ...);
/**
* ethtool_puts - Write string to ethtool string data
* @data: Pointer to a pointer to the start of string to update
* @str: String to write
*
* Write string to *data without a trailing newline. Update *data
* to point at start of next string.
*
* Prefer this function to ethtool_sprintf() when given only
* two arguments or if @fmt is just "%s".
*/
extern void ethtool_puts(u8 **data, const char *str);
/* Link mode to forced speed capabilities maps */
struct ethtool_forced_speed_map {
u32 speed;

View File

@ -1994,6 +1994,13 @@ __printf(2, 3) void ethtool_sprintf(u8 **data, const char *fmt, ...)
}
EXPORT_SYMBOL(ethtool_sprintf);
void ethtool_puts(u8 **data, const char *str)
{
strscpy(*data, str, ETH_GSTRING_LEN);
*data += ETH_GSTRING_LEN;
}
EXPORT_SYMBOL(ethtool_puts);
static int ethtool_phys_id(struct net_device *dev, void __user *useraddr)
{
struct ethtool_value id;