]> git.droids-corp.org - dpdk.git/commitdiff
raw/ntb: clear all valid doorbell bits on init
authorJunfeng Guo <junfeng.guo@intel.com>
Thu, 10 Feb 2022 07:06:34 +0000 (15:06 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Sun, 13 Feb 2022 11:23:34 +0000 (12:23 +0100)
Before registering the doorbell interrupt handler callback function,
all the valid doorbell bits within the NTB private data struct should
be cleared to avoid the confusion of the handshake timing sequence
diagram when setting up the NTB connection in back-to-back mode.

Fixes: 62012a76811e ("raw/ntb: add handshake process")
Cc: stable@dpdk.org
Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>
drivers/raw/ntb/ntb.c

index 46ac02e5abb2b8468a6ea985a7f6f4d05a0ed9d9..f5e773c53b6a5621daf72be027a0c3f775ee5108 100644 (file)
@@ -1398,6 +1398,10 @@ ntb_init_hw(struct rte_rawdev *dev, struct rte_pci_device *pci_dev)
 
        /* Init doorbell. */
        hw->db_valid_mask = RTE_LEN2MASK(hw->db_cnt, uint64_t);
+       /* Clear all valid doorbell bits before registering intr handler */
+       if (hw->ntb_ops->db_clear == NULL)
+               return -ENOTSUP;
+       (*hw->ntb_ops->db_clear)(dev, hw->db_valid_mask);
 
        intr_handle = pci_dev->intr_handle;
        /* Register callback func to eal lib */