* [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).