Re: [PATCH 1/2] net/ixgbe: fix mailbox interrupt handler
From: Dai, Wei <hidden>
Date: 2018-01-12 02:29:33
-----Original Message----- From: Zhang, Qi Z Sent: Thursday, January 11, 2018 4:08 PM To: Dai, Wei <redacted>; Lu, Wenzhuo <redacted> Cc: dev@dpdk.org; Wang, Liang-min <redacted>; stable@dpdk.org Subject: RE: [PATCH 1/2] net/ixgbe: fix mailbox interrupt handlerquoted
-----Original Message----- From: Dai, Wei Sent: Thursday, December 28, 2017 12:39 PM To: Zhang, Qi Z <redacted>; Lu, Wenzhuo [off-list ref] Cc: dev@dpdk.org; Wang, Liang-min <redacted>; stable@dpdk.org Subject: RE: [PATCH 1/2] net/ixgbe: fix mailbox interrupt handler According to step 7 & 8 in Table 7-74 PF-to-VF Messaging Flow in 82599 datasheet, The calling of ixgbe_read_mbx( ) can be replaced by following lines to avoid touching ->mbx.v2p_mailbox, IXGBE_WRITE_REG(hw, IXGBE_VFMAILBOX, IXGBE_VFMAILBOX_ACK);Thanks for the suggestion. I think the patch try to keep things unchanged when a PF reset happen, but it is not going to cover the case that PF reset interrupt and a foreground VF to PF request happen simultaneously which is an knowing issue Your suggestion may help on that, but it is not a complete fix. I think it will be better to have a separate patch that focus on it.
Agree with you.
Regards Qiquoted
quoted
-----Original Message----- From: Zhang, Qi Z Sent: Thursday, December 28, 2017 4:22 AM To: Lu, Wenzhuo <redacted> Cc: dev@dpdk.org; Dai, Wei <redacted>; Wang, Liang-min [off-list ref]; Zhang, Qi Z [off-list ref]; stable@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: stable@dpdk.org Signed-off-by: Qi Zhang <redacted>
Acked-by: Wei Dai <redacted>
quoted
quoted
--- drivers/net/ixgbe/ixgbe_ethdev.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)diff --git a/drivers/net/ixgbe/ixgbe_ethdev.cb/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(structrte_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