> -----Original Message----- > From: Zhang, Qi Z > Sent: Thursday, December 28, 2017 4:22 AM > To: Lu, Wenzhuo <wenzhuo...@intel.com> > Cc: dev@dpdk.org; Dai, Wei <wei....@intel.com>; Wang, Liang-min > <liang-min.w...@intel.com>; Zhang, Qi Z <qi.z.zh...@intel.com>; > sta...@dpdk.org > Subject: [PATCH 1/2] net/ixgbe: fix mailbox interrupt handler > > Mailbox interrupt handler only take care of PF reset notification, for other > message ixgbe_read_mbx should not be called since it get chance to break > the foreground VF to PF communication. > This can be simply repeated by > testpmd>rx_vlan rm all 0 > > Fixes: 77234603fba0 ("net/ixgbe: support VF mailbox interrupt for link > up/down") > Cc: sta...@dpdk.org > > Signed-off-by: Qi Zhang <qi.z.zh...@intel.com> Acked-by: Wei Dai <wei....@intel.com>
> --- > drivers/net/ixgbe/ixgbe_ethdev.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c > b/drivers/net/ixgbe/ixgbe_ethdev.c > index ff19a56..02121f4 100644 > --- a/drivers/net/ixgbe/ixgbe_ethdev.c > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c > @@ -8165,13 +8165,17 @@ static void ixgbevf_mbx_process(struct > rte_eth_dev *dev) > struct ixgbe_hw *hw = > IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); > u32 in_msg = 0; > > - if (ixgbe_read_mbx(hw, &in_msg, 1, 0)) > - return; > + /* peek the message first */ > + in_msg = IXGBE_READ_REG(hw, IXGBE_VFMBMEM); > > /* PF reset VF event */ > - if (in_msg == IXGBE_PF_CONTROL_MSG) > + if (in_msg == IXGBE_PF_CONTROL_MSG) { > + /* dummy mbx read to ack pf */ > + if (ixgbe_read_mbx(hw, &in_msg, 1, 0)) > + return; > _rte_eth_dev_callback_process(dev, > RTE_ETH_EVENT_INTR_RESET, > NULL, NULL); > + } > } > > static int > -- > 2.7.4