]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
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, 10 Jan 2024 16:10:34 +0000 (17:10 +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 a70e1153fa04bb4520aae88ad376252ee8098a11..6b4792a942d8490b6b8e419c5a1b55133d76baee 100644 (file)
@@ -283,6 +283,11 @@ void rpm_lmac_pause_frm_config(void *rpmd, int lmac_id, bool enable)
        cfg = FIELD_SET(RPM_PFC_CLASS_MASK, 0, cfg);
        rpm_write(rpm, lmac_id, RPMX_CMRX_PRT_CBFC_CTL, 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 */
        rpm_write(rpm, 0, RPMX_CMR_CHAN_MSK_OR, ~0ULL);
 }
@@ -451,12 +456,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) {