ethtool: Add common function for filling out strings
Add a function to handle the common pattern of printing a string into the ethtool strings interface and incrementing the string pointer by the ETH_GSTRING_LEN. Most of the drivers end up doing this and several have implemented their own versions of this function so it would make sense to consolidate on one implementation. Signed-off-by: Alexander Duyck <alexanderduyck@fb.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
0c88eda9f5
Коммит
7888fe53b7
|
@ -571,4 +571,13 @@ struct ethtool_phy_ops {
|
|||
*/
|
||||
void ethtool_set_ethtool_phy_ops(const struct ethtool_phy_ops *ops);
|
||||
|
||||
/**
|
||||
* ethtool_sprintf - Write formatted string to ethtool string data
|
||||
* @data: Pointer to start of string to update
|
||||
* @fmt: Format of string to write
|
||||
*
|
||||
* Write formatted string to data. Update data to point at start of
|
||||
* next string.
|
||||
*/
|
||||
extern __printf(2, 3) void ethtool_sprintf(u8 **data, const char *fmt, ...);
|
||||
#endif /* _LINUX_ETHTOOL_H */
|
||||
|
|
|
@ -1844,6 +1844,18 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
__printf(2, 3) void ethtool_sprintf(u8 **data, const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start(args, fmt);
|
||||
vsnprintf(*data, ETH_GSTRING_LEN, fmt, args);
|
||||
va_end(args);
|
||||
|
||||
*data += ETH_GSTRING_LEN;
|
||||
}
|
||||
EXPORT_SYMBOL(ethtool_sprintf);
|
||||
|
||||
static int ethtool_phys_id(struct net_device *dev, void __user *useraddr)
|
||||
{
|
||||
struct ethtool_value id;
|
||||
|
|
Загрузка…
Ссылка в новой задаче