* Re: [PATCH] MABC RTNet driver to work with GEM hardware
[not found] <b7f-5d94bd80-57-344a2840@235462188>
@ 2019-10-02 16:17 ` Jan Kiszka
0 siblings, 0 replies; 8+ messages in thread
From: Jan Kiszka @ 2019-10-02 16:17 UTC (permalink / raw)
To: François Legal; +Cc: Xenomai
Please keep this on the list - readding.
On 02.10.19 17:08, François Legal wrote:
> Le Mercredi, Octobre 02, 2019 16:59 CEST, Jan Kiszka <jan.kiszka@siemens.com> a écrit:
>
>> On 02.10.19 15:44, François Legal via Xenomai wrote:
>>> From: François LEGAL <devel@thom.fr.eu.org>
>>>
>>> Make MACB driver compliant with GEM hardware (as mainline linux
>>> driver does). Main fix is about interrupt flag that is never
>>> cleared (write 1 to clear)
>
> Do you mean I shall move these 3 lines right before "kernel/drivers/net/drivers/Kconfig | 7 +++++++..." ?
>
I mean something like this in your git commit:
"Make MACB driver compliant with GEM hardware
Main fix is about interrupt flag that is never
cleared (write 1 to clear)
Signed-off-by: ..."
That will generate a properly formatted e-mail when send that out.
>>>
>>> Signed-off-by: François LEGAL <devel@thom.fr.eu.org>
>>>
>>> Subject: [PATCH] Make MACB driver compliant with GEM hardware
>>
>> Hmm, two subject lines - which one should I use? Would be better get the first
>> one right already ;).
>>
>>>
>>> ---
>>> kernel/drivers/net/drivers/Kconfig | 7 +++++++
>>> kernel/drivers/net/drivers/Makefile | 1 +
>>> kernel/drivers/net/drivers/macb.c | 23 ++++++++++++++++++++---
>>> 3 files changed, 28 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/kernel/drivers/net/drivers/Kconfig b/kernel/drivers/net/drivers/Kconfig
>>> index 65f0855..39c976f 100644
>>> --- a/kernel/drivers/net/drivers/Kconfig
>>> +++ b/kernel/drivers/net/drivers/Kconfig
>>> @@ -131,6 +131,13 @@ config XENO_DRIVERS_NET_DRV_MACB
>>> Driver for internal MAC-controller on AT91SAM926x microcontrollers.
>>> Porting by Cristiano Mantovani and Stefano Banzi (Marposs SpA).
>>>
>>> +config XENO_DRIVERS_NET_DRV_GEM
>>> + depends on XENO_DRIVERS_NET
>>> + tristate "GEM devices"
>>> + ---help---
>>> + Driver for internal MAC-controller on Zynq 7000 SoCs.
>>> + Porting by Cristiano Mantovani and Stefano Banzi (Marposs SpA).
>>> +
>>> endif
>>>
>>> source "drivers/xenomai/net/drivers/experimental/Kconfig"
>>> diff --git a/kernel/drivers/net/drivers/Makefile b/kernel/drivers/net/drivers/Makefile
>>> index d95c5a8..9da1a56 100644
>>> --- a/kernel/drivers/net/drivers/Makefile
>>> +++ b/kernel/drivers/net/drivers/Makefile
>>> @@ -57,6 +57,7 @@ obj-$(CONFIG_XENO_DRIVERS_NET_DRV_SMC91111) += rt_smc91111.o
>>> rt_smc91111-y := smc91111.o
>>>
>>> obj-$(CONFIG_XENO_DRIVERS_NET_DRV_MACB) += rt_macb.o
>>> +obj-$(CONFIG_XENO_DRIVERS_NET_DRV_GEM) += rt_macb.o
>>
>> Only saw this now: What's the idea behind adding XENO_DRIVERS_NET_DRV_GEM when
>> there is XENO_DRIVERS_NET_DRV_MACB already? If a selects both, the build will fail.
>
> Yes, that's correct. However, the Kconfig selects automatically some AT91 specific stuff when CONFIG_XENO_DRIVERS_NET_DRV_MACB is selected.
> I'm not sure on the best way to handle those situations without breaking the existing function.
>
> from Kconfig :
> config XENO_DRIVERS_NET_DRV_AT91_ETHER
> depends on XENO_DRIVERS_NET && SOC_AT91RM9200
> select XENO_DRIVERS_NET_DRV_MACB
> tristate "AT91RM9200 Board Ethernet Driver"
>
> config XENO_DRIVERS_NET_DRV_MACB
> depends on XENO_DRIVERS_NET && ARCH_AT91
> select AT91_PROGRAMMABLE_CLOCKS
> tristate "MACB devices"
> ---help---
> Driver for internal MAC-controller on AT91SAM926x microcontrollers.
> Porting by Cristiano Mantovani and Stefano Banzi (Marposs SpA).
>
> Maybe I should replace the line select AT91_PROGRAMMABLE_CLOCKS with
> select AT91_PROGRAMMABLE_CLOCKS IF ARCH_AT91
>
> What do you think ?
What does upstream do? Maybe we copied back than a suboptimal pattern that was
improved there meanwhile.
Jan
--
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] MABC RTNet driver to work with GEM hardware
2019-10-03 8:43 François Legal
@ 2019-10-04 13:40 ` Jan Kiszka
0 siblings, 0 replies; 8+ messages in thread
From: Jan Kiszka @ 2019-10-04 13:40 UTC (permalink / raw)
To: François Legal, Xenomai
On 03.10.19 10:43, François Legal via Xenomai wrote:
> From: François LEGAL <devel@thom.fr.eu.org>
> Subject: [PATCH] Make MACB driver compliant with GEM hardware
>
> Make MACB driver compliant with GEM hardware (as mainline linux
> driver does). Main fix is about interrupt flag that is never
> cleared (write 1 to clear)
>
> Signed-off-by: François LEGAL <devel@thom.fr.eu.org>
>
> ---
> kernel/drivers/net/drivers/Kconfig | 6 +++---
> kernel/drivers/net/drivers/macb.c | 23 ++++++++++++++++++++---
> 2 files changed, 23 insertions(+), 6 deletions(-)
>
> diff --git a/kernel/drivers/net/drivers/Kconfig b/kernel/drivers/net/drivers/Kconfig
> index 65f0855..1aa1b3c 100644
> --- a/kernel/drivers/net/drivers/Kconfig
> +++ b/kernel/drivers/net/drivers/Kconfig
> @@ -124,9 +124,9 @@ config XENO_DRIVERS_NET_DRV_AT91_ETHER
> tristate "AT91RM9200 Board Ethernet Driver"
>
> config XENO_DRIVERS_NET_DRV_MACB
> - depends on XENO_DRIVERS_NET && ARCH_AT91
> - select AT91_PROGRAMMABLE_CLOCKS
> - tristate "MACB AT91SAM926x devices"
> + depends on XENO_DRIVERS_NET
> + select AT91_PROGRAMMABLE_CLOCKS if ARCH_AT91
> + tristate "Cadence MACB/GEM devices"
> ---help---
> Driver for internal MAC-controller on AT91SAM926x microcontrollers.
> Porting by Cristiano Mantovani and Stefano Banzi (Marposs SpA).
> diff --git a/kernel/drivers/net/drivers/macb.c b/kernel/drivers/net/drivers/macb.c
> index fc5b667..ccda6ae 100644
> --- a/kernel/drivers/net/drivers/macb.c
> +++ b/kernel/drivers/net/drivers/macb.c
> @@ -679,7 +679,13 @@ static int gem_rx(struct macb *bp, int budget, nanosecs_abs_t *time_stamp)
> unsigned int entry;
> struct rtskb *skb;
> struct macb_dma_desc *desc;
> - int count = 0;
> + int count = 0, status;
> +
> + status = macb_readl(bp, RSR);
> + macb_writel(bp, RSR, status);
> +
> + if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
> + macb_writel(bp, ISR, MACB_BIT(RCOMP));
>
> while (count < budget) {
> u32 addr, ctrl;
> @@ -877,7 +883,7 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
> struct rtnet_device *dev = dev_id;
> struct macb *bp = rtnetdev_priv(dev);
> unsigned received = 0;
> - u32 status;
> + u32 status, ctrl;
>
> status = macb_readl(bp, ISR);
>
> @@ -895,9 +901,10 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
>
> rtdev_vdbg(bp->dev, "isr = 0x%08lx\n", (unsigned long)status);
>
> - if (status & MACB_RX_INT_FLAGS)
> + if (status & MACB_BIT(RCOMP)) {
> received += bp->macbgem_ops.mog_rx(bp, 100 - received,
> &time_stamp);
> + }
>
> if (unlikely(status & (MACB_TX_ERR_FLAGS))) {
> macb_writel(bp, IDR, MACB_TX_INT_FLAGS);
> @@ -917,6 +924,15 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
> * add that if/when we get our hands on a full-blown MII PHY.
> */
>
> + if (status & MACB_BIT(RXUBR)) {
> + ctrl = macb_readl(bp, NCR);
> + macb_writel(bp, NCR, ctrl & ~MACB_BIT(RE));
> + macb_writel(bp, NCR, ctrl | MACB_BIT(RE));
> +
> + if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
> + macb_writel(bp, ISR, MACB_BIT(RXUBR));
> + }
> +
> if (status & MACB_BIT(ISR_ROVR)) {
> /* We missed at least one packet */
> if (macb_is_gem(bp))
> @@ -1320,6 +1336,7 @@ static void macb_configure_caps(struct macb *bp)
> if (GEM_BFEXT(IRQCOR, gem_readl(bp, DCFG1)) == 0)
> bp->caps |= MACB_CAPS_ISR_CLEAR_ON_WRITE;
> }
> + rtdev_vdbg(bp->dev, "Capabilities : %X\n", bp->caps);
> }
>
> static void macb_init_hw(struct macb *bp)
>
Thanks, applied to next.
Jan
--
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] MABC RTNet driver to work with GEM hardware
@ 2019-10-03 8:43 François Legal
2019-10-04 13:40 ` Jan Kiszka
0 siblings, 1 reply; 8+ messages in thread
From: François Legal @ 2019-10-03 8:43 UTC (permalink / raw)
To: Xenomai
From: François LEGAL <devel@thom.fr.eu.org>
Subject: [PATCH] Make MACB driver compliant with GEM hardware
Make MACB driver compliant with GEM hardware (as mainline linux
driver does). Main fix is about interrupt flag that is never
cleared (write 1 to clear)
Signed-off-by: François LEGAL <devel@thom.fr.eu.org>
---
kernel/drivers/net/drivers/Kconfig | 6 +++---
kernel/drivers/net/drivers/macb.c | 23 ++++++++++++++++++++---
2 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/kernel/drivers/net/drivers/Kconfig b/kernel/drivers/net/drivers/Kconfig
index 65f0855..1aa1b3c 100644
--- a/kernel/drivers/net/drivers/Kconfig
+++ b/kernel/drivers/net/drivers/Kconfig
@@ -124,9 +124,9 @@ config XENO_DRIVERS_NET_DRV_AT91_ETHER
tristate "AT91RM9200 Board Ethernet Driver"
config XENO_DRIVERS_NET_DRV_MACB
- depends on XENO_DRIVERS_NET && ARCH_AT91
- select AT91_PROGRAMMABLE_CLOCKS
- tristate "MACB AT91SAM926x devices"
+ depends on XENO_DRIVERS_NET
+ select AT91_PROGRAMMABLE_CLOCKS if ARCH_AT91
+ tristate "Cadence MACB/GEM devices"
---help---
Driver for internal MAC-controller on AT91SAM926x microcontrollers.
Porting by Cristiano Mantovani and Stefano Banzi (Marposs SpA).
diff --git a/kernel/drivers/net/drivers/macb.c b/kernel/drivers/net/drivers/macb.c
index fc5b667..ccda6ae 100644
--- a/kernel/drivers/net/drivers/macb.c
+++ b/kernel/drivers/net/drivers/macb.c
@@ -679,7 +679,13 @@ static int gem_rx(struct macb *bp, int budget, nanosecs_abs_t *time_stamp)
unsigned int entry;
struct rtskb *skb;
struct macb_dma_desc *desc;
- int count = 0;
+ int count = 0, status;
+
+ status = macb_readl(bp, RSR);
+ macb_writel(bp, RSR, status);
+
+ if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
+ macb_writel(bp, ISR, MACB_BIT(RCOMP));
while (count < budget) {
u32 addr, ctrl;
@@ -877,7 +883,7 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
struct rtnet_device *dev = dev_id;
struct macb *bp = rtnetdev_priv(dev);
unsigned received = 0;
- u32 status;
+ u32 status, ctrl;
status = macb_readl(bp, ISR);
@@ -895,9 +901,10 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
rtdev_vdbg(bp->dev, "isr = 0x%08lx\n", (unsigned long)status);
- if (status & MACB_RX_INT_FLAGS)
+ if (status & MACB_BIT(RCOMP)) {
received += bp->macbgem_ops.mog_rx(bp, 100 - received,
&time_stamp);
+ }
if (unlikely(status & (MACB_TX_ERR_FLAGS))) {
macb_writel(bp, IDR, MACB_TX_INT_FLAGS);
@@ -917,6 +924,15 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
* add that if/when we get our hands on a full-blown MII PHY.
*/
+ if (status & MACB_BIT(RXUBR)) {
+ ctrl = macb_readl(bp, NCR);
+ macb_writel(bp, NCR, ctrl & ~MACB_BIT(RE));
+ macb_writel(bp, NCR, ctrl | MACB_BIT(RE));
+
+ if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
+ macb_writel(bp, ISR, MACB_BIT(RXUBR));
+ }
+
if (status & MACB_BIT(ISR_ROVR)) {
/* We missed at least one packet */
if (macb_is_gem(bp))
@@ -1320,6 +1336,7 @@ static void macb_configure_caps(struct macb *bp)
if (GEM_BFEXT(IRQCOR, gem_readl(bp, DCFG1)) == 0)
bp->caps |= MACB_CAPS_ISR_CLEAR_ON_WRITE;
}
+ rtdev_vdbg(bp->dev, "Capabilities : %X\n", bp->caps);
}
static void macb_init_hw(struct macb *bp)
--
2.1.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] MABC RTNet driver to work with GEM hardware
2019-10-02 13:44 François Legal
@ 2019-10-02 14:59 ` Jan Kiszka
0 siblings, 0 replies; 8+ messages in thread
From: Jan Kiszka @ 2019-10-02 14:59 UTC (permalink / raw)
To: François Legal, xenomai
On 02.10.19 15:44, François Legal via Xenomai wrote:
> From: François LEGAL <devel@thom.fr.eu.org>
>
> Make MACB driver compliant with GEM hardware (as mainline linux
> driver does). Main fix is about interrupt flag that is never
> cleared (write 1 to clear)
>
> Signed-off-by: François LEGAL <devel@thom.fr.eu.org>
>
> Subject: [PATCH] Make MACB driver compliant with GEM hardware
Hmm, two subject lines - which one should I use? Would be better get the first
one right already ;).
>
> ---
> kernel/drivers/net/drivers/Kconfig | 7 +++++++
> kernel/drivers/net/drivers/Makefile | 1 +
> kernel/drivers/net/drivers/macb.c | 23 ++++++++++++++++++++---
> 3 files changed, 28 insertions(+), 3 deletions(-)
>
> diff --git a/kernel/drivers/net/drivers/Kconfig b/kernel/drivers/net/drivers/Kconfig
> index 65f0855..39c976f 100644
> --- a/kernel/drivers/net/drivers/Kconfig
> +++ b/kernel/drivers/net/drivers/Kconfig
> @@ -131,6 +131,13 @@ config XENO_DRIVERS_NET_DRV_MACB
> Driver for internal MAC-controller on AT91SAM926x microcontrollers.
> Porting by Cristiano Mantovani and Stefano Banzi (Marposs SpA).
>
> +config XENO_DRIVERS_NET_DRV_GEM
> + depends on XENO_DRIVERS_NET
> + tristate "GEM devices"
> + ---help---
> + Driver for internal MAC-controller on Zynq 7000 SoCs.
> + Porting by Cristiano Mantovani and Stefano Banzi (Marposs SpA).
> +
> endif
>
> source "drivers/xenomai/net/drivers/experimental/Kconfig"
> diff --git a/kernel/drivers/net/drivers/Makefile b/kernel/drivers/net/drivers/Makefile
> index d95c5a8..9da1a56 100644
> --- a/kernel/drivers/net/drivers/Makefile
> +++ b/kernel/drivers/net/drivers/Makefile
> @@ -57,6 +57,7 @@ obj-$(CONFIG_XENO_DRIVERS_NET_DRV_SMC91111) += rt_smc91111.o
> rt_smc91111-y := smc91111.o
>
> obj-$(CONFIG_XENO_DRIVERS_NET_DRV_MACB) += rt_macb.o
> +obj-$(CONFIG_XENO_DRIVERS_NET_DRV_GEM) += rt_macb.o
Only saw this now: What's the idea behind adding XENO_DRIVERS_NET_DRV_GEM when
there is XENO_DRIVERS_NET_DRV_MACB already? If a selects both, the build will fail.
>
> rt_macb-y := macb.o
>
> diff --git a/kernel/drivers/net/drivers/macb.c b/kernel/drivers/net/drivers/macb.c
> index fc5b667..ccda6ae 100644
> --- a/kernel/drivers/net/drivers/macb.c
> +++ b/kernel/drivers/net/drivers/macb.c
> @@ -679,7 +679,13 @@ static int gem_rx(struct macb *bp, int budget, nanosecs_abs_t *time_stamp)
> unsigned int entry;
> struct rtskb *skb;
> struct macb_dma_desc *desc;
> - int count = 0;
> + int count = 0, status;
> +
> + status = macb_readl(bp, RSR);
> + macb_writel(bp, RSR, status);
> +
> + if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
> + macb_writel(bp, ISR, MACB_BIT(RCOMP));
>
> while (count < budget) {
> u32 addr, ctrl;
> @@ -877,7 +883,7 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
> struct rtnet_device *dev = dev_id;
> struct macb *bp = rtnetdev_priv(dev);
> unsigned received = 0;
> - u32 status;
> + u32 status, ctrl;
>
> status = macb_readl(bp, ISR);
>
> @@ -895,9 +901,10 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
>
> rtdev_vdbg(bp->dev, "isr = 0x%08lx\n", (unsigned long)status);
>
> - if (status & MACB_RX_INT_FLAGS)
> + if (status & MACB_BIT(RCOMP)) {
> received += bp->macbgem_ops.mog_rx(bp, 100 - received,
> &time_stamp);
> + }
>
> if (unlikely(status & (MACB_TX_ERR_FLAGS))) {
> macb_writel(bp, IDR, MACB_TX_INT_FLAGS);
> @@ -917,6 +924,15 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
> * add that if/when we get our hands on a full-blown MII PHY.
> */
>
> + if (status & MACB_BIT(RXUBR)) {
> + ctrl = macb_readl(bp, NCR);
> + macb_writel(bp, NCR, ctrl & ~MACB_BIT(RE));
> + macb_writel(bp, NCR, ctrl | MACB_BIT(RE));
> +
> + if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
> + macb_writel(bp, ISR, MACB_BIT(RXUBR));
> + }
> +
> if (status & MACB_BIT(ISR_ROVR)) {
> /* We missed at least one packet */
> if (macb_is_gem(bp))
> @@ -1320,6 +1336,7 @@ static void macb_configure_caps(struct macb *bp)
> if (GEM_BFEXT(IRQCOR, gem_readl(bp, DCFG1)) == 0)
> bp->caps |= MACB_CAPS_ISR_CLEAR_ON_WRITE;
> }
> + rtdev_vdbg(bp->dev, "Capabilities : %X\n", bp->caps);
> }
>
> static void macb_init_hw(struct macb *bp)
>
Jan
--
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] MABC RTNet driver to work with GEM hardware
@ 2019-10-02 13:44 François Legal
2019-10-02 14:59 ` Jan Kiszka
0 siblings, 1 reply; 8+ messages in thread
From: François Legal @ 2019-10-02 13:44 UTC (permalink / raw)
To: xenomai
From: François LEGAL <devel@thom.fr.eu.org>
Make MACB driver compliant with GEM hardware (as mainline linux
driver does). Main fix is about interrupt flag that is never
cleared (write 1 to clear)
Signed-off-by: François LEGAL <devel@thom.fr.eu.org>
Subject: [PATCH] Make MACB driver compliant with GEM hardware
---
kernel/drivers/net/drivers/Kconfig | 7 +++++++
kernel/drivers/net/drivers/Makefile | 1 +
kernel/drivers/net/drivers/macb.c | 23 ++++++++++++++++++++---
3 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/kernel/drivers/net/drivers/Kconfig b/kernel/drivers/net/drivers/Kconfig
index 65f0855..39c976f 100644
--- a/kernel/drivers/net/drivers/Kconfig
+++ b/kernel/drivers/net/drivers/Kconfig
@@ -131,6 +131,13 @@ config XENO_DRIVERS_NET_DRV_MACB
Driver for internal MAC-controller on AT91SAM926x microcontrollers.
Porting by Cristiano Mantovani and Stefano Banzi (Marposs SpA).
+config XENO_DRIVERS_NET_DRV_GEM
+ depends on XENO_DRIVERS_NET
+ tristate "GEM devices"
+ ---help---
+ Driver for internal MAC-controller on Zynq 7000 SoCs.
+ Porting by Cristiano Mantovani and Stefano Banzi (Marposs SpA).
+
endif
source "drivers/xenomai/net/drivers/experimental/Kconfig"
diff --git a/kernel/drivers/net/drivers/Makefile b/kernel/drivers/net/drivers/Makefile
index d95c5a8..9da1a56 100644
--- a/kernel/drivers/net/drivers/Makefile
+++ b/kernel/drivers/net/drivers/Makefile
@@ -57,6 +57,7 @@ obj-$(CONFIG_XENO_DRIVERS_NET_DRV_SMC91111) += rt_smc91111.o
rt_smc91111-y := smc91111.o
obj-$(CONFIG_XENO_DRIVERS_NET_DRV_MACB) += rt_macb.o
+obj-$(CONFIG_XENO_DRIVERS_NET_DRV_GEM) += rt_macb.o
rt_macb-y := macb.o
diff --git a/kernel/drivers/net/drivers/macb.c b/kernel/drivers/net/drivers/macb.c
index fc5b667..ccda6ae 100644
--- a/kernel/drivers/net/drivers/macb.c
+++ b/kernel/drivers/net/drivers/macb.c
@@ -679,7 +679,13 @@ static int gem_rx(struct macb *bp, int budget, nanosecs_abs_t *time_stamp)
unsigned int entry;
struct rtskb *skb;
struct macb_dma_desc *desc;
- int count = 0;
+ int count = 0, status;
+
+ status = macb_readl(bp, RSR);
+ macb_writel(bp, RSR, status);
+
+ if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
+ macb_writel(bp, ISR, MACB_BIT(RCOMP));
while (count < budget) {
u32 addr, ctrl;
@@ -877,7 +883,7 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
struct rtnet_device *dev = dev_id;
struct macb *bp = rtnetdev_priv(dev);
unsigned received = 0;
- u32 status;
+ u32 status, ctrl;
status = macb_readl(bp, ISR);
@@ -895,9 +901,10 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
rtdev_vdbg(bp->dev, "isr = 0x%08lx\n", (unsigned long)status);
- if (status & MACB_RX_INT_FLAGS)
+ if (status & MACB_BIT(RCOMP)) {
received += bp->macbgem_ops.mog_rx(bp, 100 - received,
&time_stamp);
+ }
if (unlikely(status & (MACB_TX_ERR_FLAGS))) {
macb_writel(bp, IDR, MACB_TX_INT_FLAGS);
@@ -917,6 +924,15 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
* add that if/when we get our hands on a full-blown MII PHY.
*/
+ if (status & MACB_BIT(RXUBR)) {
+ ctrl = macb_readl(bp, NCR);
+ macb_writel(bp, NCR, ctrl & ~MACB_BIT(RE));
+ macb_writel(bp, NCR, ctrl | MACB_BIT(RE));
+
+ if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
+ macb_writel(bp, ISR, MACB_BIT(RXUBR));
+ }
+
if (status & MACB_BIT(ISR_ROVR)) {
/* We missed at least one packet */
if (macb_is_gem(bp))
@@ -1320,6 +1336,7 @@ static void macb_configure_caps(struct macb *bp)
if (GEM_BFEXT(IRQCOR, gem_readl(bp, DCFG1)) == 0)
bp->caps |= MACB_CAPS_ISR_CLEAR_ON_WRITE;
}
+ rtdev_vdbg(bp->dev, "Capabilities : %X\n", bp->caps);
}
static void macb_init_hw(struct macb *bp)
--
2.1.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH] MABC RTNet driver to work with GEM hardware
@ 2019-10-02 12:34 François Legal
0 siblings, 0 replies; 8+ messages in thread
From: François Legal @ 2019-10-02 12:34 UTC (permalink / raw)
To: xenomai
From: François LEGAL <devel@thom.fr.eu.org>
Make MACB driver compliant with GEM hardware (as mainline linux
driver does). Main fix is about interrupt flag that is never
cleared (write 1 to clear)
Signed-off-by: François LEGAL <devel@thom.fr.eu.org>
Subject: [PATCH] Make MACB driver compliant with GEM hardware
---
kernel/drivers/net/drivers/Kconfig | 11 +++++++++--
kernel/drivers/net/drivers/Makefile | 1 +
kernel/drivers/net/drivers/macb.c | 27 +++++++++++++++++++++++----
3 files changed, 33 insertions(+), 6 deletions(-)
diff --git a/kernel/drivers/net/drivers/Kconfig b/kernel/drivers/net/drivers/Kconfig
index 65f0855..89ac237 100644
--- a/kernel/drivers/net/drivers/Kconfig
+++ b/kernel/drivers/net/drivers/Kconfig
@@ -77,7 +77,7 @@ config XENO_DRIVERS_NET_DRV_R8169
tristate "Realtek 8169 (Gigabit)"
-if PPC
+if ARCH = ppc
comment "Embedded MPC Drivers"
depends on XENO_DRIVERS_NET
@@ -116,7 +116,7 @@ config XENO_DRIVERS_NET_DRV_SMC91111
depends on XENO_DRIVERS_NET
tristate "SMSC LAN91C111"
-if ARM
+if ARCH = arm
config XENO_DRIVERS_NET_DRV_AT91_ETHER
depends on XENO_DRIVERS_NET && SOC_AT91RM9200
@@ -131,6 +131,13 @@ config XENO_DRIVERS_NET_DRV_MACB
Driver for internal MAC-controller on AT91SAM926x microcontrollers.
Porting by Cristiano Mantovani and Stefano Banzi (Marposs SpA).
+config XENO_DRIVERS_NET_DRV_GEM
+ depends on XENO_DRIVERS_NET
+ tristate "GEM devices"
+ ---help---
+ Driver for internal MAC-controller on Zynq 7000 SoCs.
+ Porting by Cristiano Mantovani and Stefano Banzi (Marposs SpA).
+
endif
source "drivers/xenomai/net/drivers/experimental/Kconfig"
diff --git a/kernel/drivers/net/drivers/Makefile b/kernel/drivers/net/drivers/Makefile
index d95c5a8..9da1a56 100644
--- a/kernel/drivers/net/drivers/Makefile
+++ b/kernel/drivers/net/drivers/Makefile
@@ -57,6 +57,7 @@ obj-$(CONFIG_XENO_DRIVERS_NET_DRV_SMC91111) += rt_smc91111.o
rt_smc91111-y := smc91111.o
obj-$(CONFIG_XENO_DRIVERS_NET_DRV_MACB) += rt_macb.o
+obj-$(CONFIG_XENO_DRIVERS_NET_DRV_GEM) += rt_macb.o
rt_macb-y := macb.o
diff --git a/kernel/drivers/net/drivers/macb.c b/kernel/drivers/net/drivers/macb.c
index fc5b667..e97a7d1 100644
--- a/kernel/drivers/net/drivers/macb.c
+++ b/kernel/drivers/net/drivers/macb.c
@@ -679,7 +679,14 @@ static int gem_rx(struct macb *bp, int budget, nanosecs_abs_t *time_stamp)
unsigned int entry;
struct rtskb *skb;
struct macb_dma_desc *desc;
- int count = 0;
+ int count = 0, status;
+
+
+ status = macb_readl(bp, RSR);
+ macb_writel(bp, RSR, status);
+
+ if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
+ macb_writel(bp, ISR, MACB_BIT(RCOMP));
while (count < budget) {
u32 addr, ctrl;
@@ -725,6 +732,7 @@ static int gem_rx(struct macb *bp, int budget, nanosecs_abs_t *time_stamp)
bp->rx_buffer_size, DMA_FROM_DEVICE);
skb->protocol = rt_eth_type_trans(skb, bp->dev);
+ rtskb_checksum_none_assert(skb);
bp->stats.rx_packets++;
bp->stats.rx_bytes += skb->len;
@@ -791,6 +799,7 @@ static int macb_rx_frame(struct macb *bp, unsigned int first_frag,
offset = 0;
len += NET_IP_ALIGN;
skb->time_stamp = *time_stamp;
+ rtskb_checksum_none_assert(skb);
rtskb_put(skb, len);
for (frag = first_frag; ; frag++) {
@@ -877,7 +886,7 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
struct rtnet_device *dev = dev_id;
struct macb *bp = rtnetdev_priv(dev);
unsigned received = 0;
- u32 status;
+ u32 status, ctrl;
status = macb_readl(bp, ISR);
@@ -895,9 +904,10 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
rtdev_vdbg(bp->dev, "isr = 0x%08lx\n", (unsigned long)status);
- if (status & MACB_RX_INT_FLAGS)
+ if (status & MACB_BIT(RCOMP)) {
received += bp->macbgem_ops.mog_rx(bp, 100 - received,
&time_stamp);
+ }
if (unlikely(status & (MACB_TX_ERR_FLAGS))) {
macb_writel(bp, IDR, MACB_TX_INT_FLAGS);
@@ -917,6 +927,15 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
* add that if/when we get our hands on a full-blown MII PHY.
*/
+ if (status & MACB_BIT(RXUBR)) {
+ ctrl = macb_readl(bp, NCR);
+ macb_writel(bp, NCR, ctrl & ~MACB_BIT(RE));
+ macb_writel(bp, NCR, ctrl | MACB_BIT(RE));
+
+ if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
+ macb_writel(bp, ISR, MACB_BIT(RXUBR));
+ }
+
if (status & MACB_BIT(ISR_ROVR)) {
/* We missed at least one packet */
if (macb_is_gem(bp))
@@ -1320,6 +1339,7 @@ static void macb_configure_caps(struct macb *bp)
if (GEM_BFEXT(IRQCOR, gem_readl(bp, DCFG1)) == 0)
bp->caps |= MACB_CAPS_ISR_CLEAR_ON_WRITE;
}
+ rtdev_dbg(bp->dev, "Capabilities : %X\n", bp->caps);
}
static void macb_init_hw(struct macb *bp)
@@ -1578,7 +1598,6 @@ static int __init macb_probe(struct platform_device *pdev)
rtdev_alloc_name(dev, "rteth%d");
rt_rtdev_connect(dev, &RTDEV_manager);
dev->vers = RTDEV_VERS_2_0;
- dev->sysbind = &pdev->dev;
/* TODO: Actually, we have some interesting features... */
dev->features |= 0;
--
2.1.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] MABC RTNet driver to work with GEM hardware
2019-10-02 11:41 François Legal
@ 2019-10-02 12:23 ` Jan Kiszka
0 siblings, 0 replies; 8+ messages in thread
From: Jan Kiszka @ 2019-10-02 12:23 UTC (permalink / raw)
To: François Legal, xenomai
On 02.10.19 13:41, François Legal via Xenomai wrote:
> From 9703097ac23dfdea91bc688267e0d46ea20ceacc Mon Sep 17 00:00:00 2001
> From: dev <dev@DevCoreProcessing.assystem>
> Date: Wed, 2 Oct 2019 11:58:01 +0200
> Subject: [PATCH] Make MACB driver compliant with GEM hardware (as mainline
> linux driver does). Main fix is about interrupt flag that is never cleared
> (write 1 to clear)
>
Almost: Subject should be brief, move the extended "why" into the commit message
body. And then we need a signed-off, confirming [1].
> ---
> kernel/drivers/net/drivers/Kconfig | 11 +++++++++--
> kernel/drivers/net/drivers/Makefile | 1 +
> kernel/drivers/net/drivers/macb.c | 27 +++++++++++++++++++++++----
> 3 files changed, 33 insertions(+), 6 deletions(-)
>
> diff --git a/kernel/drivers/net/drivers/Kconfig b/kernel/drivers/net/drivers/Kconfig
> index 65f0855..89ac237 100644
> --- a/kernel/drivers/net/drivers/Kconfig
> +++ b/kernel/drivers/net/drivers/Kconfig
> @@ -77,7 +77,7 @@ config XENO_DRIVERS_NET_DRV_R8169
> tristate "Realtek 8169 (Gigabit)"
>
>
> -if PPC
> +if ARCH = ppc
Why that?
>
> comment "Embedded MPC Drivers"
> depends on XENO_DRIVERS_NET
> @@ -116,7 +116,7 @@ config XENO_DRIVERS_NET_DRV_SMC91111
> depends on XENO_DRIVERS_NET
> tristate "SMSC LAN91C111"
>
> -if ARM
> +if ARCH = arm
Same here.
>
> config XENO_DRIVERS_NET_DRV_AT91_ETHER
> depends on XENO_DRIVERS_NET && SOC_AT91RM9200
> @@ -131,6 +131,13 @@ config XENO_DRIVERS_NET_DRV_MACB
> Driver for internal MAC-controller on AT91SAM926x microcontrollers.
> Porting by Cristiano Mantovani and Stefano Banzi (Marposs SpA).
>
> +config XENO_DRIVERS_NET_DRV_GEM
> + depends on XENO_DRIVERS_NET
> + tristate "GEM devices"
> + ---help---
> + Driver for internal MAC-controller on Zynq 7000 SoCs.
> + Porting by Cristiano Mantovani and Stefano Banzi (Marposs SpA).
> +
> endif
>
> source "drivers/xenomai/net/drivers/experimental/Kconfig"
> diff --git a/kernel/drivers/net/drivers/Makefile b/kernel/drivers/net/drivers/Makefile
> index d95c5a8..9da1a56 100644
> --- a/kernel/drivers/net/drivers/Makefile
> +++ b/kernel/drivers/net/drivers/Makefile
> @@ -57,6 +57,7 @@ obj-$(CONFIG_XENO_DRIVERS_NET_DRV_SMC91111) += rt_smc91111.o
> rt_smc91111-y := smc91111.o
>
> obj-$(CONFIG_XENO_DRIVERS_NET_DRV_MACB) += rt_macb.o
> +obj-$(CONFIG_XENO_DRIVERS_NET_DRV_GEM) += rt_macb.o
>
> rt_macb-y := macb.o
>
> diff --git a/kernel/drivers/net/drivers/macb.c b/kernel/drivers/net/drivers/macb.c
> index fc5b667..e97a7d1 100644
> --- a/kernel/drivers/net/drivers/macb.c
> +++ b/kernel/drivers/net/drivers/macb.c
> @@ -679,7 +679,14 @@ static int gem_rx(struct macb *bp, int budget, nanosecs_abs_t *time_stamp)
> unsigned int entry;
> struct rtskb *skb;
> struct macb_dma_desc *desc;
> - int count = 0;
> + int count = 0, status;
> +
> +
Likely one newline too much (unless that strictly aligns with upstream).
> + status = macb_readl(bp, RSR);
> + macb_writel(bp, RSR, status);
> +
> + if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
> + macb_writel(bp, ISR, MACB_BIT(RCOMP));
>
> while (count < budget) {
> u32 addr, ctrl;
> @@ -725,6 +732,7 @@ static int gem_rx(struct macb *bp, int budget, nanosecs_abs_t *time_stamp)
> bp->rx_buffer_size, DMA_FROM_DEVICE);
>
> skb->protocol = rt_eth_type_trans(skb, bp->dev);
> + rtskb_checksum_none_assert(skb);
This was just removed (0ff501aa33f51f118b8339096f10bbea184141a4).
>
> bp->stats.rx_packets++;
> bp->stats.rx_bytes += skb->len;
> @@ -791,6 +799,7 @@ static int macb_rx_frame(struct macb *bp, unsigned int first_frag,
> offset = 0;
> len += NET_IP_ALIGN;
> skb->time_stamp = *time_stamp;
> + rtskb_checksum_none_assert(skb);
> rtskb_put(skb, len);
>
> for (frag = first_frag; ; frag++) {
> @@ -877,7 +886,7 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
> struct rtnet_device *dev = dev_id;
> struct macb *bp = rtnetdev_priv(dev);
> unsigned received = 0;
> - u32 status;
> + u32 status, ctrl;
>
> status = macb_readl(bp, ISR);
>
> @@ -895,9 +904,10 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
>
> rtdev_vdbg(bp->dev, "isr = 0x%08lx\n", (unsigned long)status);
>
> - if (status & MACB_RX_INT_FLAGS)
> + if (status & MACB_BIT(RCOMP)) {
> received += bp->macbgem_ops.mog_rx(bp, 100 - received,
> &time_stamp);
> + }
>
> if (unlikely(status & (MACB_TX_ERR_FLAGS))) {
> macb_writel(bp, IDR, MACB_TX_INT_FLAGS);
> @@ -917,6 +927,15 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
> * add that if/when we get our hands on a full-blown MII PHY.
> */
>
> + if (status & MACB_BIT(RXUBR)) {
> + ctrl = macb_readl(bp, NCR);
> + macb_writel(bp, NCR, ctrl & ~MACB_BIT(RE));
> + macb_writel(bp, NCR, ctrl | MACB_BIT(RE));
> +
> + if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
> + macb_writel(bp, ISR, MACB_BIT(RXUBR));
> + }
> +
> if (status & MACB_BIT(ISR_ROVR)) {
> /* We missed at least one packet */
> if (macb_is_gem(bp))
> @@ -1320,6 +1339,7 @@ static void macb_configure_caps(struct macb *bp)
> if (GEM_BFEXT(IRQCOR, gem_readl(bp, DCFG1)) == 0)
> bp->caps |= MACB_CAPS_ISR_CLEAR_ON_WRITE;
> }
> + rtdev_dbg(bp->dev, "Capabilities : %X\n", bp->caps);
Is that a left-over debug output?
> }
>
> static void macb_init_hw(struct macb *bp)
> @@ -1578,7 +1598,6 @@ static int __init macb_probe(struct platform_device *pdev)
> rtdev_alloc_name(dev, "rteth%d");
> rt_rtdev_connect(dev, &RTDEV_manager);
> dev->vers = RTDEV_VERS_2_0;
> - dev->sysbind = &pdev->dev;
>
> /* TODO: Actually, we have some interesting features... */
> dev->features |= 0;
>
Thanks,
Jan
[1] https://developercertificate.org/
--
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] MABC RTNet driver to work with GEM hardware
@ 2019-10-02 11:41 François Legal
2019-10-02 12:23 ` Jan Kiszka
0 siblings, 1 reply; 8+ messages in thread
From: François Legal @ 2019-10-02 11:41 UTC (permalink / raw)
To: xenomai
>From 9703097ac23dfdea91bc688267e0d46ea20ceacc Mon Sep 17 00:00:00 2001
From: dev <dev@DevCoreProcessing.assystem>
Date: Wed, 2 Oct 2019 11:58:01 +0200
Subject: [PATCH] Make MACB driver compliant with GEM hardware (as mainline
linux driver does). Main fix is about interrupt flag that is never cleared
(write 1 to clear)
---
kernel/drivers/net/drivers/Kconfig | 11 +++++++++--
kernel/drivers/net/drivers/Makefile | 1 +
kernel/drivers/net/drivers/macb.c | 27 +++++++++++++++++++++++----
3 files changed, 33 insertions(+), 6 deletions(-)
diff --git a/kernel/drivers/net/drivers/Kconfig b/kernel/drivers/net/drivers/Kconfig
index 65f0855..89ac237 100644
--- a/kernel/drivers/net/drivers/Kconfig
+++ b/kernel/drivers/net/drivers/Kconfig
@@ -77,7 +77,7 @@ config XENO_DRIVERS_NET_DRV_R8169
tristate "Realtek 8169 (Gigabit)"
-if PPC
+if ARCH = ppc
comment "Embedded MPC Drivers"
depends on XENO_DRIVERS_NET
@@ -116,7 +116,7 @@ config XENO_DRIVERS_NET_DRV_SMC91111
depends on XENO_DRIVERS_NET
tristate "SMSC LAN91C111"
-if ARM
+if ARCH = arm
config XENO_DRIVERS_NET_DRV_AT91_ETHER
depends on XENO_DRIVERS_NET && SOC_AT91RM9200
@@ -131,6 +131,13 @@ config XENO_DRIVERS_NET_DRV_MACB
Driver for internal MAC-controller on AT91SAM926x microcontrollers.
Porting by Cristiano Mantovani and Stefano Banzi (Marposs SpA).
+config XENO_DRIVERS_NET_DRV_GEM
+ depends on XENO_DRIVERS_NET
+ tristate "GEM devices"
+ ---help---
+ Driver for internal MAC-controller on Zynq 7000 SoCs.
+ Porting by Cristiano Mantovani and Stefano Banzi (Marposs SpA).
+
endif
source "drivers/xenomai/net/drivers/experimental/Kconfig"
diff --git a/kernel/drivers/net/drivers/Makefile b/kernel/drivers/net/drivers/Makefile
index d95c5a8..9da1a56 100644
--- a/kernel/drivers/net/drivers/Makefile
+++ b/kernel/drivers/net/drivers/Makefile
@@ -57,6 +57,7 @@ obj-$(CONFIG_XENO_DRIVERS_NET_DRV_SMC91111) += rt_smc91111.o
rt_smc91111-y := smc91111.o
obj-$(CONFIG_XENO_DRIVERS_NET_DRV_MACB) += rt_macb.o
+obj-$(CONFIG_XENO_DRIVERS_NET_DRV_GEM) += rt_macb.o
rt_macb-y := macb.o
diff --git a/kernel/drivers/net/drivers/macb.c b/kernel/drivers/net/drivers/macb.c
index fc5b667..e97a7d1 100644
--- a/kernel/drivers/net/drivers/macb.c
+++ b/kernel/drivers/net/drivers/macb.c
@@ -679,7 +679,14 @@ static int gem_rx(struct macb *bp, int budget, nanosecs_abs_t *time_stamp)
unsigned int entry;
struct rtskb *skb;
struct macb_dma_desc *desc;
- int count = 0;
+ int count = 0, status;
+
+
+ status = macb_readl(bp, RSR);
+ macb_writel(bp, RSR, status);
+
+ if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
+ macb_writel(bp, ISR, MACB_BIT(RCOMP));
while (count < budget) {
u32 addr, ctrl;
@@ -725,6 +732,7 @@ static int gem_rx(struct macb *bp, int budget, nanosecs_abs_t *time_stamp)
bp->rx_buffer_size, DMA_FROM_DEVICE);
skb->protocol = rt_eth_type_trans(skb, bp->dev);
+ rtskb_checksum_none_assert(skb);
bp->stats.rx_packets++;
bp->stats.rx_bytes += skb->len;
@@ -791,6 +799,7 @@ static int macb_rx_frame(struct macb *bp, unsigned int first_frag,
offset = 0;
len += NET_IP_ALIGN;
skb->time_stamp = *time_stamp;
+ rtskb_checksum_none_assert(skb);
rtskb_put(skb, len);
for (frag = first_frag; ; frag++) {
@@ -877,7 +886,7 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
struct rtnet_device *dev = dev_id;
struct macb *bp = rtnetdev_priv(dev);
unsigned received = 0;
- u32 status;
+ u32 status, ctrl;
status = macb_readl(bp, ISR);
@@ -895,9 +904,10 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
rtdev_vdbg(bp->dev, "isr = 0x%08lx\n", (unsigned long)status);
- if (status & MACB_RX_INT_FLAGS)
+ if (status & MACB_BIT(RCOMP)) {
received += bp->macbgem_ops.mog_rx(bp, 100 - received,
&time_stamp);
+ }
if (unlikely(status & (MACB_TX_ERR_FLAGS))) {
macb_writel(bp, IDR, MACB_TX_INT_FLAGS);
@@ -917,6 +927,15 @@ static int macb_interrupt(rtdm_irq_t *irq_handle)
* add that if/when we get our hands on a full-blown MII PHY.
*/
+ if (status & MACB_BIT(RXUBR)) {
+ ctrl = macb_readl(bp, NCR);
+ macb_writel(bp, NCR, ctrl & ~MACB_BIT(RE));
+ macb_writel(bp, NCR, ctrl | MACB_BIT(RE));
+
+ if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
+ macb_writel(bp, ISR, MACB_BIT(RXUBR));
+ }
+
if (status & MACB_BIT(ISR_ROVR)) {
/* We missed at least one packet */
if (macb_is_gem(bp))
@@ -1320,6 +1339,7 @@ static void macb_configure_caps(struct macb *bp)
if (GEM_BFEXT(IRQCOR, gem_readl(bp, DCFG1)) == 0)
bp->caps |= MACB_CAPS_ISR_CLEAR_ON_WRITE;
}
+ rtdev_dbg(bp->dev, "Capabilities : %X\n", bp->caps);
}
static void macb_init_hw(struct macb *bp)
@@ -1578,7 +1598,6 @@ static int __init macb_probe(struct platform_device *pdev)
rtdev_alloc_name(dev, "rteth%d");
rt_rtdev_connect(dev, &RTDEV_manager);
dev->vers = RTDEV_VERS_2_0;
- dev->sysbind = &pdev->dev;
/* TODO: Actually, we have some interesting features... */
dev->features |= 0;
--
2.1.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-10-04 13:40 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <b7f-5d94bd80-57-344a2840@235462188>
2019-10-02 16:17 ` [PATCH] MABC RTNet driver to work with GEM hardware Jan Kiszka
2019-10-03 8:43 François Legal
2019-10-04 13:40 ` Jan Kiszka
-- strict thread matches above, loose matches on Subject: below --
2019-10-02 13:44 François Legal
2019-10-02 14:59 ` Jan Kiszka
2019-10-02 12:34 François Legal
2019-10-02 11:41 François Legal
2019-10-02 12:23 ` Jan Kiszka
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.