[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <07967f3b63b12a501c83b86befc209769b322c56.camel@intel.com>
Date: Mon, 12 Oct 2020 16:27:58 +0000
From: "Nguyen, Anthony L" <anthony.l.nguyen@...el.com>
To: "willemdebruijn.kernel@...il.com" <willemdebruijn.kernel@...il.com>
CC: "nhorman@...hat.com" <nhorman@...hat.com>,
"Loktionov, Aleksandr" <aleksandr.loktionov@...el.com>,
"sassmann@...hat.com" <sassmann@...hat.com>,
"kuba@...nel.org" <kuba@...nel.org>,
"Kubalewski, Arkadiusz" <arkadiusz.kubalewski@...el.com>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
"andrewx.bowers@...el.com" <andrewx.bowers@...el.com>,
"davem@...emloft.net" <davem@...emloft.net>
Subject: Re: [net-next 2/3] i40e: Fix MAC address setting for a VF via Host/VM
On Fri, 2020-10-09 at 13:46 -0400, Willem de Bruijn wrote:
> On Wed, Oct 7, 2020 at 7:11 PM Tony Nguyen <
> anthony.l.nguyen@...el.com> wrote:
> >
> > From: Aleksandr Loktionov <aleksandr.loktionov@...el.com>
> >
> > Fix MAC setting flow for the PF driver.
> >
> > Without this change the MAC address setting was interpreted
> > incorrectly in the following use cases:
> > 1) Print incorrect VF MAC or zero MAC
> > ip link show dev $pf
> > 2) Don't preserve MAC between driver reload
> > rmmod iavf; modprobe iavf
> > 3) Update VF MAC when macvlan was set
> > ip link add link $vf address $mac $vf.1 type macvlan
> > 4) Failed to update mac address when VF was trusted
> > ip link set dev $vf address $mac
> >
> > This includes all other configurations including above commands.
> >
> > Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@...el.com>
> > Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@...el.com
> > >
> > Tested-by: Andrew Bowers <andrewx.bowers@...el.com>
> > Signed-off-by: Tony Nguyen <anthony.l.nguyen@...el.com>
>
> If this is a fix, should it target net and/or is there a commit for a
> Fixes tag?
Thanks for the review Willem. I will add a fixes tag and send it to
net.
> > @@ -2740,6 +2744,7 @@ static int i40e_vc_del_mac_addr_msg(struct
> > i40e_vf *vf, u8 *msg)
> > {
> > struct virtchnl_ether_addr_list *al =
> > (struct virtchnl_ether_addr_list *)msg;
> > + bool was_unimac_deleted = false;
> > struct i40e_pf *pf = vf->pf;
> > struct i40e_vsi *vsi = NULL;
> > i40e_status ret = 0;
> > @@ -2759,6 +2764,8 @@ static int i40e_vc_del_mac_addr_msg(struct
> > i40e_vf *vf, u8 *msg)
> > ret = I40E_ERR_INVALID_MAC_ADDR;
> > goto error_param;
> > }
> > + if (ether_addr_equal(al->list[i].addr, vf-
> > >default_lan_addr.addr))
> > + was_unimac_deleted = true;
> > }
> > vsi = pf->vsi[vf->lan_vsi_idx];
> >
> > @@ -2779,10 +2786,25 @@ static int i40e_vc_del_mac_addr_msg(struct
> > i40e_vf *vf, u8 *msg)
> > dev_err(&pf->pdev->dev, "Unable to program VF %d
> > MAC filters, error %d\n",
> > vf->vf_id, ret);
> >
> > + if (vf->trusted && was_unimac_deleted) {
> > + struct i40e_mac_filter *f;
> > + struct hlist_node *h;
> > + u8 *macaddr = NULL;
> > + int bkt;
> > +
> > + /* set last unicast mac address as default */
> > + spin_lock_bh(&vsi->mac_filter_hash_lock);
> > + hash_for_each_safe(vsi->mac_filter_hash, bkt, h, f,
> > hlist) {
> > + if (is_valid_ether_addr(f->macaddr))
> > + macaddr = f->macaddr;
>
> nit: could break here
Will add the break.
Thanks,
Tony
Powered by blists - more mailing lists