octeontx2-af: Fix pause frame configuration
authorHariprasad Kelam <hkelam@marvell.com>
Fri, 8 Dec 2023 09:27:54 +0000 (14:57 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Dec 2023 16:01:48 +0000 (17:01 +0100)
[ Upstream commit e307b5a845c5951dabafc48d00b6424ee64716c4 ]

The current implementation's default Pause Forward setting is causing
unnecessary network traffic. This patch disables Pause Forward to
address this issue.

Fixes: 1121f6b02e7a ("octeontx2-af: Priority flow control configuration support")
Signed-off-by: Hariprasad Kelam <hkelam@marvell.com>
Signed-off-by: Sunil Kovvuri Goutham <sgoutham@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/marvell/octeontx2/af/rpm.c

index af21e20..4728ba3 100644 (file)
@@ -373,6 +373,11 @@ void rpm_lmac_pause_frm_config(void *rpmd, int lmac_id, bool enable)
        cfg |= RPMX_MTI_MAC100X_COMMAND_CONFIG_TX_P_DISABLE;
        rpm_write(rpm, lmac_id, RPMX_MTI_MAC100X_COMMAND_CONFIG, cfg);
 
+       /* Disable forward pause to driver */
+       cfg = rpm_read(rpm, lmac_id, RPMX_MTI_MAC100X_COMMAND_CONFIG);
+       cfg &= ~RPMX_MTI_MAC100X_COMMAND_CONFIG_PAUSE_FWD;
+       rpm_write(rpm, lmac_id, RPMX_MTI_MAC100X_COMMAND_CONFIG, cfg);
+
        /* Enable channel mask for all LMACS */
        if (is_dev_rpm2(rpm))
                rpm_write(rpm, lmac_id, RPM2_CMR_CHAN_MSK_OR, 0xffff);
@@ -616,12 +621,10 @@ int rpm_lmac_pfc_config(void *rpmd, int lmac_id, u8 tx_pause, u8 rx_pause, u16 p
 
        if (rx_pause) {
                cfg &= ~(RPMX_MTI_MAC100X_COMMAND_CONFIG_RX_P_DISABLE |
-                               RPMX_MTI_MAC100X_COMMAND_CONFIG_PAUSE_IGNORE |
-                               RPMX_MTI_MAC100X_COMMAND_CONFIG_PAUSE_FWD);
+                        RPMX_MTI_MAC100X_COMMAND_CONFIG_PAUSE_IGNORE);
        } else {
                cfg |= (RPMX_MTI_MAC100X_COMMAND_CONFIG_RX_P_DISABLE |
-                               RPMX_MTI_MAC100X_COMMAND_CONFIG_PAUSE_IGNORE |
-                               RPMX_MTI_MAC100X_COMMAND_CONFIG_PAUSE_FWD);
+                       RPMX_MTI_MAC100X_COMMAND_CONFIG_PAUSE_IGNORE);
        }
 
        if (tx_pause) {