| From 6c1e7c9f7569e13a4a7b6253ac14e1364c175be2 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 1 Nov 2021 18:23:41 +0300 |
| Subject: net: davinci_emac: Fix interrupt pacing disable |
| |
| From: Maxim Kiselev <bigunclemax@gmail.com> |
| |
| [ Upstream commit d52bcb47bdf971a59a2467975d2405fcfcb2fa19 ] |
| |
| This patch allows to use 0 for `coal->rx_coalesce_usecs` param to |
| disable rx irq coalescing. |
| |
| Previously we could enable rx irq coalescing via ethtool |
| (For ex: `ethtool -C eth0 rx-usecs 2000`) but we couldn't disable |
| it because this part rejects 0 value: |
| |
| if (!coal->rx_coalesce_usecs) |
| return -EINVAL; |
| |
| Fixes: 84da2658a619 ("TI DaVinci EMAC : Implement interrupt pacing functionality.") |
| Signed-off-by: Maxim Kiselev <bigunclemax@gmail.com> |
| Reviewed-by: Grygorii Strashko <grygorii.strashko@ti.com> |
| Link: https://lore.kernel.org/r/20211101152343.4193233-1-bigunclemax@gmail.com |
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/ti/davinci_emac.c | 16 ++++++++++++++-- |
| 1 file changed, 14 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/ti/davinci_emac.c b/drivers/net/ethernet/ti/davinci_emac.c |
| index 6869c5c74b9f7..fac59032bf83a 100644 |
| --- a/drivers/net/ethernet/ti/davinci_emac.c |
| +++ b/drivers/net/ethernet/ti/davinci_emac.c |
| @@ -412,8 +412,20 @@ static int emac_set_coalesce(struct net_device *ndev, |
| u32 int_ctrl, num_interrupts = 0; |
| u32 prescale = 0, addnl_dvdr = 1, coal_intvl = 0; |
| |
| - if (!coal->rx_coalesce_usecs) |
| - return -EINVAL; |
| + if (!coal->rx_coalesce_usecs) { |
| + priv->coal_intvl = 0; |
| + |
| + switch (priv->version) { |
| + case EMAC_VERSION_2: |
| + emac_ctrl_write(EMAC_DM646X_CMINTCTRL, 0); |
| + break; |
| + default: |
| + emac_ctrl_write(EMAC_CTRL_EWINTTCNT, 0); |
| + break; |
| + } |
| + |
| + return 0; |
| + } |
| |
| coal_intvl = coal->rx_coalesce_usecs; |
| |
| -- |
| 2.33.0 |
| |