Hi Thomas,

> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas.monjalon at 6wind.com]
> Sent: Wednesday, July 01, 2015 9:12 PM
> To: He, Shaopeng
> Cc: dev at dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] fm10k: fix an error message when adding
> default VLAN
> 
> 2015-06-26 10:37, Shaopeng He:
> > The default MAC address is directly copied to Device Ethernet Link
> > address array in the device initialize phase, which
> 
> Do you mean "device start phase" instead?

Thanks for taking time to review this patch. The default MAC address is read 
from hardware
and copied to dev->data->mac_addrs in eth_fm10k_dev_init, but the 
fm10k_MAC_filter_set
previously was called in fm10k_dev_start, which caused this issue.

> 
> > bypasses fm10k MAC address number check mechanism, and will cause an
> > error message when adding default VLAN. Fix it by
> 
> What is the error message?
> Is it only an error message or a behaviour error?

The error message is "MAC address number not match", it is only an error 
message, because
fm10k_dev_start will eventually be called when default_vid was ready, and 
MAC/VLAN table
will be updated correctly. default_vid is necessary for fm10k to function 
correctly.

> 
> > moving default MAC address registration to device initialize phase.
> 
> Yes it is moved from start to init.

fm10k_MAC_filter_set is moved from eth_fm10k_dev_init to eth_fm10k_dev_init, 
aligned with 
the place where the default MAC address is actually read and copied.

> 
> > --- a/drivers/net/fm10k/fm10k_ethdev.c
> > +++ b/drivers/net/fm10k/fm10k_ethdev.c
> > @@ -791,14 +791,10 @@ fm10k_dev_start(struct rte_eth_dev *dev)
> >             }
> >     }
> >
> > -   if (hw->mac.default_vid && hw->mac.default_vid <=
> ETHER_MAX_VLAN_ID) {
> > -           /* Update default vlan */
> > +   /* Update default vlan */
> > +   if (hw->mac.default_vid && hw->mac.default_vid <=
> ETHER_MAX_VLAN_ID)
> >             fm10k_vlan_filter_set(dev, hw->mac.default_vid, true);
> >
> > -           /* Add default mac/vlan filter to PF/Switch manager */
> > -           fm10k_MAC_filter_set(dev, hw->mac.addr, true);
> > -   }
> > -
> >     return 0;
> >  }
> >
> > @@ -2144,6 +2140,8 @@ eth_fm10k_dev_init(struct rte_eth_dev *dev)
> >
> >     fm10k_mbx_unlock(hw);
> >
> > +   /* Add default mac address */
> > +   fm10k_MAC_filter_set(dev, hw->mac.addr, true);
> >
> >     return 0;
> >  }
> >
> 

Reply via email to