Re: [PATCH 2/8] bnx2x: adopt bnx2x_validate_addr() to .ndo_validate_addr changes
From: Dmitry Kravkov <hidden>
Date: 2012-02-29 17:20:37
Also in:
lkml
On Wed, 2012-02-29 at 18:08 +0100, Danny Kukawka wrote:
On Mittwoch, 29. Februar 2012, Dmitry Kravkov wrote:quoted
On Wed, 2012-02-29 at 16:42 +0100, Danny Kukawka wrote:quoted
Adopted bnx2x_validate_addr() to changes in .ndo_validate_addr, handle second parameter to be validated. Signed-off-by: Danny Kukawka <redacted> --- drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 13 ++++++++++--- 1 files changed, 10 insertions(+), 3 deletions(-)diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.cb/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c index b4afef6..d25ef1e 100644--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c@@ -10532,12 +10532,19 @@ static void poll_bnx2x(struct net_device *dev) } #endif -static int bnx2x_validate_addr(struct net_device *dev) +static int bnx2x_validate_addr(struct net_device *dev, void *addr) { struct bnx2x *bp = netdev_priv(dev); + struct sockaddr *saddr; - if (!bnx2x_is_valid_ether_addr(bp, dev->dev_addr)) - return -EADDRNOTAVAIL; + if (addr) { + saddr = addr; + if (!bnx2x_is_valid_ether_addr(bp, saddr->sa_data)) + return -EADDRNOTAVAIL; + } else { + if (!bnx2x_is_valid_ether_addr(bp, dev->dev_addr)) + return -EADDRNOTAVAIL; + } return 0; }Isn't it preferred to calculate the correct address for test and then call bnx2x_is_valid_ether_addr() at the end?Do you mean something like this:
BUT:
int eth_validate_addr(struct net_device *dev, void *addr)
{You still need to extract bp here: struct bnx2x *bp = netdev_priv(dev);
u8 *vaddr;
if (addr)
vaddr = ((struct sockaddr *) addr)->sa_data;
else
vaddr = dev->dev_addr;
if (!is_valid_ether_addr(vaddr))and call internal function here: if (!bnx2x_is_valid_ether_addr(bp, vaddr))
return -EADDRNOTAVAIL; return 0; }