From: Ben Hutchings <redacted>
Date: Thu, 1 Mar 2012 17:51:29 +0000
On Thu, 2012-03-01 at 17:52 +0100, Danny Kukawka wrote:
quoted
Validate the given MAC address directly in dev_set_mac_address()
if a .ndo_validate_addr function is available before calling
the .ndo_set_mac_address function.
Changed .ndo_validate_addr to take a second parameter containing
a sockaddr struct to be checked instead of the net_device dev_addr.
The behaviour of .ndo_validate_addr is now: if the second parameter
is NULL the net_device->dev_addr gets validate, if != NULL
the given parameter/sockaddr gets validated instead.
[...]
The caller is assumed to have validated the address family, so why not
just pass a pointer to the hardware address (u8 *), and get rid of the
special case for NULL?
That is, dev_set_mac_address would call:
ops->ndo_validate_addr(dev, sa->sa_data);
and dev_open would call:
ops->ndo_validate_addr(dev, dev->dev_addr);
Yes, this looks a lot better.