Messages in this thread | | | Subject | Re: [PATCH 2/8] bnx2x: adopt bnx2x_validate_addr() to .ndo_validate_addr changes | From | "Dmitry Kravkov" <> | Date | Wed, 29 Feb 2012 19:20:26 +0200 |
| |
On Wed, 2012-02-29 at 18:08 +0100, Danny Kukawka wrote: > On Mittwoch, 29. Februar 2012, Dmitry Kravkov wrote: > > On Wed, 2012-02-29 at 16:42 +0100, Danny Kukawka wrote: > > > Adopted bnx2x_validate_addr() to changes in .ndo_validate_addr, > > > handle second parameter to be validated. > > > > > > Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de> > > > --- > > > 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.c > > > b/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; > } >
| |