Hi Ferruh,

> -----Original Message-----
> From: Yigit, Ferruh
> Sent: Tuesday, September 20, 2016 1:06 AM
> To: Wang, Xiao W <xiao.w.wang at intel.com>; Lu, Wenzhuo
> <wenzhuo.lu at intel.com>
> Cc: dev at dpdk.org
> Subject: Re: [dpdk-dev] [PATCH 05/39] net/ixgbe/base: support VF multicast
> promiscuous
> 
> On 8/27/2016 4:47 PM, Xiao Wang wrote:
> > Currently, VF is limited to 30 multicast addresses. In order to
> > accommodate more addresses, this patch adds support for VF multicast
> > promiscuous.
> 
> It looks like functionality not changed, just
> ixgbevf_update_xcast_mode() moved to ixgbe_mac_operations struct.
> 
> Is 30 multicast address limitation remains with this patch?
> 

You're right, we have supported this feature in ixgbe_ethdev.c before, now 
shared
code supports it, so it looks like just a function movement patch.
I will rewrite the commit log to avoid misunderstanding.

> >
> > Signed-off-by: Xiao Wang <xiao.w.wang at intel.com>
> > ---
> >  drivers/net/ixgbe/base/ixgbe_mbx.h  |  2 +-
> >  drivers/net/ixgbe/base/ixgbe_type.h |  1 +
> >  drivers/net/ixgbe/base/ixgbe_vf.c   | 38
> ++++++++++++++++++++++++++++++++
> >  drivers/net/ixgbe/base/ixgbe_vf.h   |  1 +
> >  drivers/net/ixgbe/ixgbe_ethdev.c    | 43 
> > ++-----------------------------------
> >  5 files changed, 43 insertions(+), 42 deletions(-)
> >
> > diff --git a/drivers/net/ixgbe/base/ixgbe_mbx.h
> b/drivers/net/ixgbe/base/ixgbe_mbx.h
> > index d775142..c3e301f 100644
> > --- a/drivers/net/ixgbe/base/ixgbe_mbx.h
> > +++ b/drivers/net/ixgbe/base/ixgbe_mbx.h
> > @@ -111,7 +111,7 @@ enum ixgbe_pfvf_api_rev {
> >  /* mailbox API, version 1.2 VF requests */
> >  #define IXGBE_VF_GET_RETA          0x0a /* VF request for RETA */
> >  #define IXGBE_VF_GET_RSS_KEY               0x0b /* get RSS key */
> > -#define IXGBE_VF_UPDATE_XCAST_MODE 0x0C
> > +#define IXGBE_VF_UPDATE_XCAST_MODE 0x0c
> >
> >  /* GET_QUEUES return data indices within the mailbox */
> >  #define IXGBE_VF_TX_QUEUES 1       /* number of Tx queues
> supported */
> > diff --git a/drivers/net/ixgbe/base/ixgbe_type.h
> b/drivers/net/ixgbe/base/ixgbe_type.h
> > index b2fdfcd..96b5cbd 100644
> > --- a/drivers/net/ixgbe/base/ixgbe_type.h
> > +++ b/drivers/net/ixgbe/base/ixgbe_type.h
> > @@ -3883,6 +3883,7 @@ struct ixgbe_mac_operations {
> >     s32 (*init_uta_tables)(struct ixgbe_hw *);
> >     void (*set_mac_anti_spoofing)(struct ixgbe_hw *, bool, int);
> >     void (*set_vlan_anti_spoofing)(struct ixgbe_hw *, bool, int);
> > +   s32 (*update_xcast_mode)(struct ixgbe_hw *, int);
> >
> >     /* Flow Control */
> >     s32 (*fc_enable)(struct ixgbe_hw *);
> > diff --git a/drivers/net/ixgbe/base/ixgbe_vf.c
> b/drivers/net/ixgbe/base/ixgbe_vf.c
> > index a75074a..20a739c 100644
> > --- a/drivers/net/ixgbe/base/ixgbe_vf.c
> > +++ b/drivers/net/ixgbe/base/ixgbe_vf.c
> > @@ -75,6 +75,7 @@ s32 ixgbe_init_ops_vf(struct ixgbe_hw *hw)
> >     hw->mac.ops.set_uc_addr = ixgbevf_set_uc_addr_vf;
> >     hw->mac.ops.init_rx_addrs = NULL;
> >     hw->mac.ops.update_mc_addr_list = ixgbe_update_mc_addr_list_vf;
> > +   hw->mac.ops.update_xcast_mode = ixgbevf_update_xcast_mode;
> >     hw->mac.ops.enable_mc = NULL;
> >     hw->mac.ops.disable_mc = NULL;
> >     hw->mac.ops.clear_vfta = NULL;
> > @@ -419,6 +420,43 @@ s32 ixgbe_update_mc_addr_list_vf(struct ixgbe_hw
> *hw, u8 *mc_addr_list,
> >  }
> >
> >  /**
> > + *  ixgbevf_update_xcast_mode - Update Multicast mode
> > + *  @hw: pointer to the HW structure
> > + *  @xcast_mode: new multicast mode
> > + *
> > + *  Updates the Multicast Mode of VF.
> > + **/
> > +s32 ixgbevf_update_xcast_mode(struct ixgbe_hw *hw, int xcast_mode)
> > +{
> > +   struct ixgbe_mbx_info *mbx = &hw->mbx;
> > +   u32 msgbuf[2];
> > +   s32 err;
> > +
> > +   switch (hw->api_version) {
> > +   case ixgbe_mbox_api_12:
> > +           break;
> > +   default:
> > +           return IXGBE_ERR_FEATURE_NOT_SUPPORTED;
> > +   }
> > +
> > +   msgbuf[0] = IXGBE_VF_UPDATE_XCAST_MODE;
> > +   msgbuf[1] = xcast_mode;
> > +
> > +   err = mbx->ops.write_posted(hw, msgbuf, 2, 0);
> > +   if (err)
> > +           return err;
> > +
> > +   err = mbx->ops.read_posted(hw, msgbuf, 2, 0);
> > +   if (err)
> > +           return err;
> > +
> > +   msgbuf[0] &= ~IXGBE_VT_MSGTYPE_CTS;
> > +   if (msgbuf[0] == (IXGBE_VF_UPDATE_XCAST_MODE |
> IXGBE_VT_MSGTYPE_NACK))
> 
> What if other flags set in msgbuf[0]
> Please check 18/39 patch, which fixes something similar to this
> 

This condition should be as (msgbuf[0] == original value of msgbuf[0] | NACK ),
It's what the 18/39 patch fixes. No such issue for this function.

Thanks,
Xiao
> 
> > +           return IXGBE_ERR_FEATURE_NOT_SUPPORTED;
> > +   return IXGBE_SUCCESS;
> > +}
> > +

Reply via email to