All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net] net: wangxun: Fix vector length of interrupt cause
@ 2023-03-22 10:36 Jiawen Wu
  2023-03-23 10:26 ` Leon Romanovsky
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Jiawen Wu @ 2023-03-22 10:36 UTC (permalink / raw)
  To: netdev; +Cc: mengyuanlou, Jiawen Wu

There is 64-bit interrupt cause register for txgbe. Fix to clear upper
32 bits.

Fixes: 3f703186113f ("net: libwx: Add irq flow functions")
Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
 drivers/net/ethernet/wangxun/libwx/wx_type.h    | 2 +-
 drivers/net/ethernet/wangxun/ngbe/ngbe_main.c   | 2 +-
 drivers/net/ethernet/wangxun/txgbe/txgbe_main.c | 3 ++-
 3 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/wangxun/libwx/wx_type.h b/drivers/net/ethernet/wangxun/libwx/wx_type.h
index 77d8d7f1707e..97e2c1e13b80 100644
--- a/drivers/net/ethernet/wangxun/libwx/wx_type.h
+++ b/drivers/net/ethernet/wangxun/libwx/wx_type.h
@@ -222,7 +222,7 @@
 #define WX_PX_INTA                   0x110
 #define WX_PX_GPIE                   0x118
 #define WX_PX_GPIE_MODEL             BIT(0)
-#define WX_PX_IC                     0x120
+#define WX_PX_IC(_i)                 (0x120 + (_i) * 4)
 #define WX_PX_IMS(_i)                (0x140 + (_i) * 4)
 #define WX_PX_IMC(_i)                (0x150 + (_i) * 4)
 #define WX_PX_ISB_ADDR_L             0x160
diff --git a/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c b/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
index 5b564d348c09..17412e5282de 100644
--- a/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
+++ b/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
@@ -352,7 +352,7 @@ static void ngbe_up(struct wx *wx)
 	netif_tx_start_all_queues(wx->netdev);
 
 	/* clear any pending interrupts, may auto mask */
-	rd32(wx, WX_PX_IC);
+	rd32(wx, WX_PX_IC(0));
 	rd32(wx, WX_PX_MISC_IC);
 	ngbe_irq_enable(wx, true);
 	if (wx->gpio_ctrl)
diff --git a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
index 6c0a98230557..a58ce5463686 100644
--- a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
+++ b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
@@ -229,7 +229,8 @@ static void txgbe_up_complete(struct wx *wx)
 	wx_napi_enable_all(wx);
 
 	/* clear any pending interrupts, may auto mask */
-	rd32(wx, WX_PX_IC);
+	rd32(wx, WX_PX_IC(0));
+	rd32(wx, WX_PX_IC(1));
 	rd32(wx, WX_PX_MISC_IC);
 	txgbe_irq_enable(wx, true);
 
-- 
2.27.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH net] net: wangxun: Fix vector length of interrupt cause
  2023-03-22 10:36 [PATCH net] net: wangxun: Fix vector length of interrupt cause Jiawen Wu
@ 2023-03-23 10:26 ` Leon Romanovsky
  2023-03-23 10:49 ` Steen.Hegelund
  2023-03-24 18:00 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 5+ messages in thread
From: Leon Romanovsky @ 2023-03-23 10:26 UTC (permalink / raw)
  To: Jiawen Wu; +Cc: netdev, mengyuanlou

On Wed, Mar 22, 2023 at 06:36:32PM +0800, Jiawen Wu wrote:
> There is 64-bit interrupt cause register for txgbe. Fix to clear upper
> 32 bits.
> 
> Fixes: 3f703186113f ("net: libwx: Add irq flow functions")

It is worth to add two Fixes lines, as in this commit you added WX_PX_IC,
but actual bug started to be when you used it in commit:
5d3ac705c281 ("net: txgbe: Add interrupt support")

Thanks,
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net] net: wangxun: Fix vector length of interrupt cause
  2023-03-22 10:36 [PATCH net] net: wangxun: Fix vector length of interrupt cause Jiawen Wu
  2023-03-23 10:26 ` Leon Romanovsky
@ 2023-03-23 10:49 ` Steen.Hegelund
  2023-03-24  2:01   ` Jiawen Wu
  2023-03-24 18:00 ` patchwork-bot+netdevbpf
  2 siblings, 1 reply; 5+ messages in thread
From: Steen.Hegelund @ 2023-03-23 10:49 UTC (permalink / raw)
  To: jiawenwu, netdev; +Cc: mengyuanlou

Hi Jiawen,


On Wed Mar 22, 2023 at 11:36 AM CET, Jiawen Wu wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>
> There is 64-bit interrupt cause register for txgbe. Fix to clear upper
> 32 bits.
>
> Fixes: 3f703186113f ("net: libwx: Add irq flow functions")
> Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
> ---
>  drivers/net/ethernet/wangxun/libwx/wx_type.h    | 2 +-
>  drivers/net/ethernet/wangxun/ngbe/ngbe_main.c   | 2 +-
>  drivers/net/ethernet/wangxun/txgbe/txgbe_main.c | 3 ++-
>  3 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/ethernet/wangxun/libwx/wx_type.h b/drivers/net/ethernet/wangxun/libwx/wx_type.h
> index 77d8d7f1707e..97e2c1e13b80 100644
> --- a/drivers/net/ethernet/wangxun/libwx/wx_type.h
> +++ b/drivers/net/ethernet/wangxun/libwx/wx_type.h
> @@ -222,7 +222,7 @@
>  #define WX_PX_INTA                   0x110
>  #define WX_PX_GPIE                   0x118
>  #define WX_PX_GPIE_MODEL             BIT(0)
> -#define WX_PX_IC                     0x120
> +#define WX_PX_IC(_i)                 (0x120 + (_i) * 4)
>  #define WX_PX_IMS(_i)                (0x140 + (_i) * 4)
>  #define WX_PX_IMC(_i)                (0x150 + (_i) * 4)
>  #define WX_PX_ISB_ADDR_L             0x160
> diff --git a/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c b/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
> index 5b564d348c09..17412e5282de 100644
> --- a/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
> +++ b/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
> @@ -352,7 +352,7 @@ static void ngbe_up(struct wx *wx)
>         netif_tx_start_all_queues(wx->netdev);
>
>         /* clear any pending interrupts, may auto mask */
> -       rd32(wx, WX_PX_IC);
> +       rd32(wx, WX_PX_IC(0));

Here you only clear irq 0 but not 1...

>         rd32(wx, WX_PX_MISC_IC);
>         ngbe_irq_enable(wx, true);
>         if (wx->gpio_ctrl)
> diff --git a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
> index 6c0a98230557..a58ce5463686 100644
> --- a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
> +++ b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
> @@ -229,7 +229,8 @@ static void txgbe_up_complete(struct wx *wx)
>         wx_napi_enable_all(wx);
>
>         /* clear any pending interrupts, may auto mask */
> -       rd32(wx, WX_PX_IC);
> +       rd32(wx, WX_PX_IC(0));
> +       rd32(wx, WX_PX_IC(1));

Here you clear irq 0 and 1

>         rd32(wx, WX_PX_MISC_IC);
>         txgbe_irq_enable(wx, true);
>
> --
> 2.27.0

Why is there a difference between the two situations?

BR
Steen

^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: [PATCH net] net: wangxun: Fix vector length of interrupt cause
  2023-03-23 10:49 ` Steen.Hegelund
@ 2023-03-24  2:01   ` Jiawen Wu
  0 siblings, 0 replies; 5+ messages in thread
From: Jiawen Wu @ 2023-03-24  2:01 UTC (permalink / raw)
  To: Steen.Hegelund, netdev; +Cc: mengyuanlou

On Thursday, March 23, 2023 6:50 PM, Steen.Hegelund@microchip.com wrote:
> 
> Hi Jiawen,
> 
> 
> On Wed Mar 22, 2023 at 11:36 AM CET, Jiawen Wu wrote:
> > EXTERNAL EMAIL: Do not click links or open attachments unless you know
> > the content is safe
> >
> > There is 64-bit interrupt cause register for txgbe. Fix to clear upper
> > 32 bits.
> >
> > Fixes: 3f703186113f ("net: libwx: Add irq flow functions")
> > Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
> > ---
> >  drivers/net/ethernet/wangxun/libwx/wx_type.h    | 2 +-
> >  drivers/net/ethernet/wangxun/ngbe/ngbe_main.c   | 2 +-
> >  drivers/net/ethernet/wangxun/txgbe/txgbe_main.c | 3 ++-
> >  3 files changed, 4 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/wangxun/libwx/wx_type.h
> > b/drivers/net/ethernet/wangxun/libwx/wx_type.h
> > index 77d8d7f1707e..97e2c1e13b80 100644
> > --- a/drivers/net/ethernet/wangxun/libwx/wx_type.h
> > +++ b/drivers/net/ethernet/wangxun/libwx/wx_type.h
> > @@ -222,7 +222,7 @@
> >  #define WX_PX_INTA                   0x110
> >  #define WX_PX_GPIE                   0x118
> >  #define WX_PX_GPIE_MODEL             BIT(0)
> > -#define WX_PX_IC                     0x120
> > +#define WX_PX_IC(_i)                 (0x120 + (_i) * 4)
> >  #define WX_PX_IMS(_i)                (0x140 + (_i) * 4)
> >  #define WX_PX_IMC(_i)                (0x150 + (_i) * 4)
> >  #define WX_PX_ISB_ADDR_L             0x160
> > diff --git a/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
> > b/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
> > index 5b564d348c09..17412e5282de 100644
> > --- a/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
> > +++ b/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
> > @@ -352,7 +352,7 @@ static void ngbe_up(struct wx *wx)
> >         netif_tx_start_all_queues(wx->netdev);
> >
> >         /* clear any pending interrupts, may auto mask */
> > -       rd32(wx, WX_PX_IC);
> > +       rd32(wx, WX_PX_IC(0));
> 
> Here you only clear irq 0 but not 1...
> 
> >         rd32(wx, WX_PX_MISC_IC);
> >         ngbe_irq_enable(wx, true);
> >         if (wx->gpio_ctrl)
> > diff --git a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
> > b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
> > index 6c0a98230557..a58ce5463686 100644
> > --- a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
> > +++ b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
> > @@ -229,7 +229,8 @@ static void txgbe_up_complete(struct wx *wx)
> >         wx_napi_enable_all(wx);
> >
> >         /* clear any pending interrupts, may auto mask */
> > -       rd32(wx, WX_PX_IC);
> > +       rd32(wx, WX_PX_IC(0));
> > +       rd32(wx, WX_PX_IC(1));
> 
> Here you clear irq 0 and 1
> 
> >         rd32(wx, WX_PX_MISC_IC);
> >         txgbe_irq_enable(wx, true);
> >
> > --
> > 2.27.0
> 
> Why is there a difference between the two situations?
> 
> BR
> Steen

There is two different chip with different hardware design.
The register WX_PX_IC has total 64 bits in its low and high registers, which names WX_PX_IC(0) and WX_PX_IC(1).
For txgbe, it's necessary to clear irq 0-63, but 0-8 for ngbe.



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH net] net: wangxun: Fix vector length of interrupt cause
  2023-03-22 10:36 [PATCH net] net: wangxun: Fix vector length of interrupt cause Jiawen Wu
  2023-03-23 10:26 ` Leon Romanovsky
  2023-03-23 10:49 ` Steen.Hegelund
@ 2023-03-24 18:00 ` patchwork-bot+netdevbpf
  2 siblings, 0 replies; 5+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-03-24 18:00 UTC (permalink / raw)
  To: Jiawen Wu; +Cc: netdev, mengyuanlou

Hello:

This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel.org>:

On Wed, 22 Mar 2023 18:36:32 +0800 you wrote:
> There is 64-bit interrupt cause register for txgbe. Fix to clear upper
> 32 bits.
> 
> Fixes: 3f703186113f ("net: libwx: Add irq flow functions")
> Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
> ---
>  drivers/net/ethernet/wangxun/libwx/wx_type.h    | 2 +-
>  drivers/net/ethernet/wangxun/ngbe/ngbe_main.c   | 2 +-
>  drivers/net/ethernet/wangxun/txgbe/txgbe_main.c | 3 ++-
>  3 files changed, 4 insertions(+), 3 deletions(-)

Here is the summary with links:
  - [net] net: wangxun: Fix vector length of interrupt cause
    https://git.kernel.org/netdev/net/c/59513714f665

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-03-24 18:02 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-22 10:36 [PATCH net] net: wangxun: Fix vector length of interrupt cause Jiawen Wu
2023-03-23 10:26 ` Leon Romanovsky
2023-03-23 10:49 ` Steen.Hegelund
2023-03-24  2:01   ` Jiawen Wu
2023-03-24 18:00 ` patchwork-bot+netdevbpf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.