net/thunderx: reset Rx DMAC control register
authorHanumanth Pothula <hpothula@marvell.com>
Tue, 24 May 2022 08:42:30 +0000 (14:12 +0530)
committerJerin Jacob <jerinj@marvell.com>
Mon, 13 Jun 2022 07:29:24 +0000 (09:29 +0200)
During initialization, reset RX DMAC control register by
sending mbox message NIC_MBOX_MSG_RESET_XCAST to PF.

Signed-off-by: Hanumanth Pothula <hpothula@marvell.com>
drivers/net/thunderx/base/nicvf_mbox.c
drivers/net/thunderx/base/nicvf_mbox.h
drivers/net/thunderx/nicvf_ethdev.c

index 281027c..275e593 100644 (file)
@@ -449,3 +449,12 @@ nicvf_mbox_link_change(struct nicvf *nic)
        mbx.msg.msg = NIC_MBOX_MSG_BGX_LINK_CHANGE;
        nicvf_mbox_send_async_msg_to_pf(nic, &mbx);
 }
+
+void
+nicvf_mbox_reset_xcast(struct nicvf *nic)
+{
+       struct nic_mbx mbx = { .msg = { 0 } };
+
+       mbx.msg.msg = NIC_MBOX_MSG_RESET_XCAST;
+       nicvf_mbox_send_msg_to_pf(nic, &mbx);
+}
index 490bed2..044220a 100644 (file)
@@ -43,6 +43,7 @@
 #define        NIC_MBOX_MSG_SET_LINK           0x21    /* Set link up/down */
 #define        NIC_MBOX_MSG_CFG_DONE           0xF0    /* VF configuration done */
 #define        NIC_MBOX_MSG_SHUTDOWN           0xF1    /* VF is being shutdown */
+#define NIC_MBOX_MSG_RESET_XCAST       0xF2    /* Reset DCAM filtering mode */
 #define        NIC_MBOX_MSG_MAX                0x100   /* Maximum number of messages */
 
 /* Get vNIC VF configuration */
@@ -223,5 +224,6 @@ int nicvf_mbox_set_link_up_down(struct nicvf *nic, bool enable);
 void nicvf_mbox_shutdown(struct nicvf *nic);
 void nicvf_mbox_cfg_done(struct nicvf *nic);
 void nicvf_mbox_link_change(struct nicvf *nic);
+void nicvf_mbox_reset_xcast(struct nicvf *nic);
 
 #endif /* __THUNDERX_NICVF_MBOX__ */
index addbd53..1e268d9 100644 (file)
@@ -2196,6 +2196,9 @@ nicvf_eth_dev_init(struct rte_eth_dev *eth_dev)
                        );
        }
 
+       /* To make sure RX DMAC register is set to default value (0x3) */
+       nicvf_mbox_reset_xcast(nic);
+
        ret = nicvf_base_init(nic);
        if (ret) {
                PMD_INIT_LOG(ERR, "Failed to execute nicvf_base_init");