Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Apr 2021 15:12:14 -0500
From:      Kyle Evans <kevans@freebsd.org>
To:        Kevin Bowling <kevin.bowling@kev009.com>
Cc:        Ronald Klop <ronald-lists@klop.ws>, Kevin Bowling <kbowling@freebsd.org>,  src-committers <src-committers@freebsd.org>,  "<dev-commits-src-all@freebsd.org>" <dev-commits-src-all@freebsd.org>, dev-commits-src-main@freebsd.org
Subject:   Re: git: 68a46f11eada - main - e1000: Restore VF interface random MAC
Message-ID:  <CACNAnaFnp5HNX09GDi3C%2BOtUCjB=bAymfMfvyFL35dzvr6CFRQ@mail.gmail.com>
In-Reply-To: <CAK7dMtCLj2h2W5pyf1t7aD7QO1k66TSAX9abE4-KuD2cSJqJ7g@mail.gmail.com>
References:  <202104151848.13FImMA5091035@gitrepo.freebsd.org> <5b50b23a-71cd-5221-c905-ccffe841bc98@klop.ws> <CACNAnaFzdufDyvuafqu%2BUsDSfsJwjQhRew5iG1-gUsyAv45xXg@mail.gmail.com> <CAK7dMtCLj2h2W5pyf1t7aD7QO1k66TSAX9abE4-KuD2cSJqJ7g@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
I think it'd be the right choice, but it needs a little work first.
e.g., it's not a good fit right now for VMs that don't use loader, for
instance, because it relies on the hostuuid actually being somewhat
unique or else it generates the same MAC address across different VMs
and you end up with conflicts in the broadcast domain. I think there's
a good argument to make for having it check if the hostuuid is the
default all-0 hostuuid and just generating a random address as this
does right now. I might go ahead and prepare such a change and
document the KPI in the process.

On Thu, Apr 15, 2021 at 3:06 PM Kevin Bowling <kevin.bowling@kev009.com> wrote:
>
> I would like to discuss this further, it crossed my mind, but none of
> the intel drivers currently use it.  If this is the right KPI I think
> a review should be prepared that updates e1000, ixgbe (ixv), ixl
> (iavf) in one go.
>
> Regards,
> Kevin
>
> On Thu, Apr 15, 2021 at 12:36 PM Kyle Evans <kevans@freebsd.org> wrote:
> >
> > On Thu, Apr 15, 2021 at 2:32 PM Ronald Klop <ronald-lists@klop.ws> wrote:
> > >
> > > On 4/15/21 8:48 PM, Kevin Bowling wrote:
> > > > The branch main has been updated by kbowling (ports committer):
> > > >
> > > > URL: https://cgit.FreeBSD.org/src/commit/?id=68a46f11eadab48a1da9e3d3900569a6a1ce142e
> > > >
> > > > commit 68a46f11eadab48a1da9e3d3900569a6a1ce142e
> > > > Author:     Kevin Bowling <kbowling@FreeBSD.org>
> > > > AuthorDate: 2021-04-15 18:45:02 +0000
> > > > Commit:     Kevin Bowling <kbowling@FreeBSD.org>
> > > > CommitDate: 2021-04-15 18:45:02 +0000
> > > >
> > > >      e1000: Restore VF interface random MAC
> > > >
> > > >      Restore 525e07418c77 after the iflib conversion of igb(4). This
> > > >      reenables random MAC address generation when attaching to a VF with a
> > > >      zeroed MAC.
> > > >
> > > >      PR:             253535
> > > >      Reported by:    Balaev PA <mail@void.so>
> > > >      Reviewed by:    markj
> > > >      MFC after:      2 weeks
> > > >      Differential Revision:  https://reviews.freebsd.org/D29785
> > > > ---
> > > >   sys/dev/e1000/if_em.c | 21 ++++++++++++++++++---
> > > >   1 file changed, 18 insertions(+), 3 deletions(-)
> > > >
> > > > diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c
> > > > index 6f022c80c01c..79a617b3342f 100644
> > > > --- a/sys/dev/e1000/if_em.c
> > > > +++ b/sys/dev/e1000/if_em.c
> > > > @@ -1061,9 +1061,17 @@ em_if_attach_pre(if_ctx_t ctx)
> > > >       }
> > > >
> > > >       if (!em_is_valid_ether_addr(hw->mac.addr)) {
> > > > -             device_printf(dev, "Invalid MAC address\n");
> > > > -             error = EIO;
> > > > -             goto err_late;
> > > > +             if (adapter->vf_ifp) {
> > > > +                     u8 addr[ETHER_ADDR_LEN];
> > > > +                     arc4rand(&addr, sizeof(addr), 0);
> > > > +                     addr[0] &= 0xFE;
> > > > +                     addr[0] |= 0x02;
> > > > +                     bcopy(addr, hw->mac.addr, sizeof(addr));
> > > > +             } else {
> > > > +                     device_printf(dev, "Invalid MAC address\n");
> > > > +                     error = EIO;
> > > > +                     goto err_late;
> > > > +             }
> > >
> > >
> > > Just curious. Would ether_gen_addr() be useful here?
> > > It is implemented in net/if_ethersubr.c.
> > >
> >
> > I had asked myself the same question, but I suspect these machines may
> > not necessarily have a hostuuid preloaded to avoid collisions from the
> > generated addresses.
> >
> > Thanks,
> >
> > Kyle Evans



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CACNAnaFnp5HNX09GDi3C%2BOtUCjB=bAymfMfvyFL35dzvr6CFRQ>