* [PATCH 1/2] stmmac: request_irq when use an ext wake irq line
@ 2012-02-09 7:55 Giuseppe CAVALLARO
2012-02-09 7:55 ` [PATCH 2/2] stmmac: do not discard frame on dribbling bit assert Giuseppe CAVALLARO
2012-02-09 19:02 ` [PATCH 1/2] stmmac: request_irq when use an ext wake irq line David Miller
0 siblings, 2 replies; 4+ messages in thread
From: Giuseppe CAVALLARO @ 2012-02-09 7:55 UTC (permalink / raw)
To: netdev; +Cc: Francesco Virlinzi, Giuseppe Cavallaro
From: Francesco Virlinzi <francesco.virlinzi@st.com>
In case of we use an external Wake-Up IRQ line
(priv->wol_irq != dev->irq) we need to invoke the
request_irq.
Signed-off-by: Francesco Virlinzi <francesco.virlinzi@st.com>
Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
---
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 96fa2da..36ee77f 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -1047,6 +1047,17 @@ static int stmmac_open(struct net_device *dev)
goto open_error;
}
+ /* Request the Wake IRQ in case of another line is used for WoL */
+ if (priv->wol_irq != dev->irq) {
+ ret = request_irq(priv->wol_irq, stmmac_interrupt,
+ IRQF_SHARED, dev->name, dev);
+ if (unlikely(ret < 0)) {
+ pr_err("%s: ERROR: allocating the ext WoL IRQ %d "
+ "(error: %d)\n", __func__, priv->wol_irq, ret);
+ goto open_error_wolirq;
+ }
+ }
+
/* Enable the MAC Rx/Tx */
stmmac_set_mac(priv->ioaddr, true);
@@ -1087,6 +1098,9 @@ static int stmmac_open(struct net_device *dev)
return 0;
+open_error_wolirq:
+ free_irq(dev->irq, dev);
+
open_error:
#ifdef CONFIG_STMMAC_TIMER
kfree(priv->tm);
--
1.7.4.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] stmmac: do not discard frame on dribbling bit assert
2012-02-09 7:55 [PATCH 1/2] stmmac: request_irq when use an ext wake irq line Giuseppe CAVALLARO
@ 2012-02-09 7:55 ` Giuseppe CAVALLARO
2012-02-09 19:02 ` [PATCH 1/2] stmmac: request_irq when use an ext wake irq line David Miller
1 sibling, 0 replies; 4+ messages in thread
From: Giuseppe CAVALLARO @ 2012-02-09 7:55 UTC (permalink / raw)
To: netdev; +Cc: Giuseppe Cavallaro
If this bit is set and the CRC error is reset, then the packet is valid.
Only report this as stat info.
Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
---
drivers/net/ethernet/stmicro/stmmac/common.h | 1 +
drivers/net/ethernet/stmicro/stmmac/enh_desc.c | 2 +-
drivers/net/ethernet/stmicro/stmmac/norm_desc.c | 2 +-
.../net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 7 ++++++-
4 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/common.h b/drivers/net/ethernet/stmicro/stmmac/common.h
index d0b814e..0319d64 100644
--- a/drivers/net/ethernet/stmicro/stmmac/common.h
+++ b/drivers/net/ethernet/stmicro/stmmac/common.h
@@ -67,6 +67,7 @@ struct stmmac_extra_stats {
unsigned long ipc_csum_error;
unsigned long rx_collision;
unsigned long rx_crc;
+ unsigned long dribbling_bit;
unsigned long rx_length;
unsigned long rx_mii;
unsigned long rx_multicast;
diff --git a/drivers/net/ethernet/stmicro/stmmac/enh_desc.c b/drivers/net/ethernet/stmicro/stmmac/enh_desc.c
index d879763..ad1b627 100644
--- a/drivers/net/ethernet/stmicro/stmmac/enh_desc.c
+++ b/drivers/net/ethernet/stmicro/stmmac/enh_desc.c
@@ -201,7 +201,7 @@ static int enh_desc_get_rx_status(void *data, struct stmmac_extra_stats *x,
if (unlikely(p->des01.erx.dribbling)) {
CHIP_DBG(KERN_ERR "GMAC RX: dribbling error\n");
- ret = discard_frame;
+ x->dribbling_bit++;
}
if (unlikely(p->des01.erx.sa_filter_fail)) {
CHIP_DBG(KERN_ERR "GMAC RX : Source Address filter fail\n");
diff --git a/drivers/net/ethernet/stmicro/stmmac/norm_desc.c b/drivers/net/ethernet/stmicro/stmmac/norm_desc.c
index fda5d2b..25953bb 100644
--- a/drivers/net/ethernet/stmicro/stmmac/norm_desc.c
+++ b/drivers/net/ethernet/stmicro/stmmac/norm_desc.c
@@ -104,7 +104,7 @@ static int ndesc_get_rx_status(void *data, struct stmmac_extra_stats *x,
ret = discard_frame;
}
if (unlikely(p->des01.rx.dribbling))
- ret = discard_frame;
+ x->dribbling_bit++;
if (unlikely(p->des01.rx.length_error)) {
x->rx_length++;
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
index 9573303..f98e151 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
@@ -47,23 +47,25 @@ struct stmmac_stats {
offsetof(struct stmmac_priv, xstats.m)}
static const struct stmmac_stats stmmac_gstrings_stats[] = {
+ /* Transmit errors */
STMMAC_STAT(tx_underflow),
STMMAC_STAT(tx_carrier),
STMMAC_STAT(tx_losscarrier),
STMMAC_STAT(vlan_tag),
STMMAC_STAT(tx_deferred),
STMMAC_STAT(tx_vlan),
- STMMAC_STAT(rx_vlan),
STMMAC_STAT(tx_jabber),
STMMAC_STAT(tx_frame_flushed),
STMMAC_STAT(tx_payload_error),
STMMAC_STAT(tx_ip_header_error),
+ /* Receive errors */
STMMAC_STAT(rx_desc),
STMMAC_STAT(sa_filter_fail),
STMMAC_STAT(overflow_error),
STMMAC_STAT(ipc_csum_error),
STMMAC_STAT(rx_collision),
STMMAC_STAT(rx_crc),
+ STMMAC_STAT(dribbling_bit),
STMMAC_STAT(rx_length),
STMMAC_STAT(rx_mii),
STMMAC_STAT(rx_multicast),
@@ -73,6 +75,8 @@ static const struct stmmac_stats stmmac_gstrings_stats[] = {
STMMAC_STAT(sa_rx_filter_fail),
STMMAC_STAT(rx_missed_cntr),
STMMAC_STAT(rx_overflow_cntr),
+ STMMAC_STAT(rx_vlan),
+ /* Tx/Rx IRQ errors */
STMMAC_STAT(tx_undeflow_irq),
STMMAC_STAT(tx_process_stopped_irq),
STMMAC_STAT(tx_jabber_irq),
@@ -82,6 +86,7 @@ static const struct stmmac_stats stmmac_gstrings_stats[] = {
STMMAC_STAT(rx_watchdog_irq),
STMMAC_STAT(tx_early_irq),
STMMAC_STAT(fatal_bus_error_irq),
+ /* Extra info */
STMMAC_STAT(threshold),
STMMAC_STAT(tx_pkt_n),
STMMAC_STAT(rx_pkt_n),
--
1.7.4.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] stmmac: request_irq when use an ext wake irq line
2012-02-09 7:55 [PATCH 1/2] stmmac: request_irq when use an ext wake irq line Giuseppe CAVALLARO
2012-02-09 7:55 ` [PATCH 2/2] stmmac: do not discard frame on dribbling bit assert Giuseppe CAVALLARO
@ 2012-02-09 19:02 ` David Miller
2012-02-10 6:31 ` Giuseppe CAVALLARO
1 sibling, 1 reply; 4+ messages in thread
From: David Miller @ 2012-02-09 19:02 UTC (permalink / raw)
To: peppe.cavallaro; +Cc: netdev, francesco.virlinzi
From: Giuseppe CAVALLARO <peppe.cavallaro@st.com>
Date: Thu, 9 Feb 2012 08:55:13 +0100
> From: Francesco Virlinzi <francesco.virlinzi@st.com>
>
> In case of we use an external Wake-Up IRQ line
> (priv->wol_irq != dev->irq) we need to invoke the
> request_irq.
>
> Signed-off-by: Francesco Virlinzi <francesco.virlinzi@st.com>
> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
You never free the IRQ in the driver close path, so it leaks.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] stmmac: request_irq when use an ext wake irq line
2012-02-09 19:02 ` [PATCH 1/2] stmmac: request_irq when use an ext wake irq line David Miller
@ 2012-02-10 6:31 ` Giuseppe CAVALLARO
0 siblings, 0 replies; 4+ messages in thread
From: Giuseppe CAVALLARO @ 2012-02-10 6:31 UTC (permalink / raw)
To: David Miller; +Cc: netdev, francesco.virlinzi
On 2/9/2012 8:02 PM, David Miller wrote:
> From: Giuseppe CAVALLARO <peppe.cavallaro@st.com>
> Date: Thu, 9 Feb 2012 08:55:13 +0100
>
>> From: Francesco Virlinzi <francesco.virlinzi@st.com>
>>
>> In case of we use an external Wake-Up IRQ line
>> (priv->wol_irq != dev->irq) we need to invoke the
>> request_irq.
>>
>> Signed-off-by: Francesco Virlinzi <francesco.virlinzi@st.com>
>> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
>
> You never free the IRQ in the driver close path, so it leaks.
Yes you are right. I'm reviewing the patch and send it again.
Thx
peppe
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-02-10 6:31 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-09 7:55 [PATCH 1/2] stmmac: request_irq when use an ext wake irq line Giuseppe CAVALLARO
2012-02-09 7:55 ` [PATCH 2/2] stmmac: do not discard frame on dribbling bit assert Giuseppe CAVALLARO
2012-02-09 19:02 ` [PATCH 1/2] stmmac: request_irq when use an ext wake irq line David Miller
2012-02-10 6:31 ` Giuseppe CAVALLARO
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).