|
@@ -51,32 +51,6 @@
|
|
|
#include "stmmac_ptp.h"
|
|
|
#include "stmmac.h"
|
|
|
|
|
|
-#undef STMMAC_DEBUG
|
|
|
-/*#define STMMAC_DEBUG*/
|
|
|
-#ifdef STMMAC_DEBUG
|
|
|
-#define DBG(nlevel, klevel, fmt, args...) \
|
|
|
- ((void)(netif_msg_##nlevel(priv) && \
|
|
|
- printk(KERN_##klevel fmt, ## args)))
|
|
|
-#else
|
|
|
-#define DBG(nlevel, klevel, fmt, args...) do { } while (0)
|
|
|
-#endif
|
|
|
-
|
|
|
-#undef STMMAC_RX_DEBUG
|
|
|
-/*#define STMMAC_RX_DEBUG*/
|
|
|
-#ifdef STMMAC_RX_DEBUG
|
|
|
-#define RX_DBG(fmt, args...) printk(fmt, ## args)
|
|
|
-#else
|
|
|
-#define RX_DBG(fmt, args...) do { } while (0)
|
|
|
-#endif
|
|
|
-
|
|
|
-#undef STMMAC_XMIT_DEBUG
|
|
|
-/*#define STMMAC_XMIT_DEBUG*/
|
|
|
-#ifdef STMMAC_XMIT_DEBUG
|
|
|
-#define TX_DBG(fmt, args...) printk(fmt, ## args)
|
|
|
-#else
|
|
|
-#define TX_DBG(fmt, args...) do { } while (0)
|
|
|
-#endif
|
|
|
-
|
|
|
#define STMMAC_ALIGN(x) L1_CACHE_ALIGN(x)
|
|
|
#define JUMBO_LEN 9000
|
|
|
|
|
@@ -214,19 +188,17 @@ static void stmmac_clk_csr_set(struct stmmac_priv *priv)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-#if defined(STMMAC_XMIT_DEBUG) || defined(STMMAC_RX_DEBUG)
|
|
|
static void print_pkt(unsigned char *buf, int len)
|
|
|
{
|
|
|
int j;
|
|
|
- pr_info("len = %d byte, buf addr: 0x%p", len, buf);
|
|
|
+ pr_debug("len = %d byte, buf addr: 0x%p", len, buf);
|
|
|
for (j = 0; j < len; j++) {
|
|
|
if ((j % 16) == 0)
|
|
|
- pr_info("\n %03x:", j);
|
|
|
- pr_info(" %02x", buf[j]);
|
|
|
+ pr_debug("\n %03x:", j);
|
|
|
+ pr_debug(" %02x", buf[j]);
|
|
|
}
|
|
|
- pr_info("\n");
|
|
|
+ pr_debug("\n");
|
|
|
}
|
|
|
-#endif
|
|
|
|
|
|
/* minimum number of free TX descriptors required to wake up TX process */
|
|
|
#define STMMAC_TX_THRESH(x) (x->dma_tx_size/4)
|
|
@@ -698,9 +670,6 @@ static void stmmac_adjust_link(struct net_device *dev)
|
|
|
if (phydev == NULL)
|
|
|
return;
|
|
|
|
|
|
- DBG(probe, DEBUG, "stmmac_adjust_link: called. address %d link %d\n",
|
|
|
- phydev->addr, phydev->link);
|
|
|
-
|
|
|
spin_lock_irqsave(&priv->lock, flags);
|
|
|
|
|
|
if (phydev->link) {
|
|
@@ -772,8 +741,6 @@ static void stmmac_adjust_link(struct net_device *dev)
|
|
|
stmmac_eee_adjust(priv);
|
|
|
|
|
|
spin_unlock_irqrestore(&priv->lock, flags);
|
|
|
-
|
|
|
- DBG(probe, DEBUG, "stmmac_adjust_link: exiting\n");
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1014,8 +981,9 @@ static void init_dma_desc_rings(struct net_device *dev)
|
|
|
if (bfsize < BUF_SIZE_16KiB)
|
|
|
bfsize = stmmac_set_bfsize(dev->mtu, priv->dma_buf_sz);
|
|
|
|
|
|
- DBG(probe, INFO, "stmmac: txsize %d, rxsize %d, bfsize %d\n",
|
|
|
- txsize, rxsize, bfsize);
|
|
|
+ if (netif_msg_probe(priv))
|
|
|
+ pr_debug("%s: txsize %d, rxsize %d, bfsize %d\n", __func__,
|
|
|
+ txsize, rxsize, bfsize);
|
|
|
|
|
|
if (priv->extend_desc) {
|
|
|
priv->dma_erx = dma_alloc_coherent(priv->device, rxsize *
|
|
@@ -1051,12 +1019,13 @@ static void init_dma_desc_rings(struct net_device *dev)
|
|
|
GFP_KERNEL);
|
|
|
priv->tx_skbuff = kmalloc_array(txsize, sizeof(struct sk_buff *),
|
|
|
GFP_KERNEL);
|
|
|
- if (netif_msg_drv(priv))
|
|
|
+ if (netif_msg_probe(priv)) {
|
|
|
pr_debug("(%s) dma_rx_phy=0x%08x dma_tx_phy=0x%08x\n", __func__,
|
|
|
(u32) priv->dma_rx_phy, (u32) priv->dma_tx_phy);
|
|
|
|
|
|
- /* RX INITIALIZATION */
|
|
|
- DBG(probe, INFO, "stmmac: SKB addresses:\nskb\t\tskb data\tdma data\n");
|
|
|
+ /* RX INITIALIZATION */
|
|
|
+ pr_debug("\tSKB addresses:\nskb\t\tskb data\tdma data\n");
|
|
|
+ }
|
|
|
for (i = 0; i < rxsize; i++) {
|
|
|
struct dma_desc *p;
|
|
|
if (priv->extend_desc)
|
|
@@ -1067,8 +1036,10 @@ static void init_dma_desc_rings(struct net_device *dev)
|
|
|
if (stmmac_init_rx_buffers(priv, p, i))
|
|
|
break;
|
|
|
|
|
|
- DBG(probe, INFO, "[%p]\t[%p]\t[%x]\n", priv->rx_skbuff[i],
|
|
|
- priv->rx_skbuff[i]->data, priv->rx_skbuff_dma[i]);
|
|
|
+ if (netif_msg_probe(priv))
|
|
|
+ pr_debug("[%p]\t[%p]\t[%x]\n", priv->rx_skbuff[i],
|
|
|
+ priv->rx_skbuff[i]->data,
|
|
|
+ (unsigned int)priv->rx_skbuff_dma[i]);
|
|
|
}
|
|
|
priv->cur_rx = 0;
|
|
|
priv->dirty_rx = (unsigned int)(i - rxsize);
|
|
@@ -1243,8 +1214,9 @@ static void stmmac_tx_clean(struct stmmac_priv *priv)
|
|
|
|
|
|
stmmac_get_tx_hwtstamp(priv, entry, skb);
|
|
|
}
|
|
|
- TX_DBG("%s: curr %d, dirty %d\n", __func__,
|
|
|
- priv->cur_tx, priv->dirty_tx);
|
|
|
+ if (netif_msg_tx_done(priv))
|
|
|
+ pr_debug("%s: curr %d, dirty %d\n", __func__,
|
|
|
+ priv->cur_tx, priv->dirty_tx);
|
|
|
|
|
|
if (likely(priv->tx_skbuff_dma[entry])) {
|
|
|
dma_unmap_single(priv->device,
|
|
@@ -1269,7 +1241,8 @@ static void stmmac_tx_clean(struct stmmac_priv *priv)
|
|
|
netif_tx_lock(priv->dev);
|
|
|
if (netif_queue_stopped(priv->dev) &&
|
|
|
stmmac_tx_avail(priv) > STMMAC_TX_THRESH(priv)) {
|
|
|
- TX_DBG("%s: restart transmit\n", __func__);
|
|
|
+ if (netif_msg_tx_done(priv))
|
|
|
+ pr_debug("%s: restart transmit\n", __func__);
|
|
|
netif_wake_queue(priv->dev);
|
|
|
}
|
|
|
netif_tx_unlock(priv->dev);
|
|
@@ -1658,7 +1631,7 @@ static int stmmac_open(struct net_device *dev)
|
|
|
pr_warn("%s: failed debugFS registration\n", __func__);
|
|
|
#endif
|
|
|
/* Start the ball rolling... */
|
|
|
- DBG(probe, DEBUG, "%s: DMA RX/TX processes started...\n", dev->name);
|
|
|
+ pr_debug("%s: DMA RX/TX processes started...\n", dev->name);
|
|
|
priv->hw->dma->start_tx(priv->ioaddr);
|
|
|
priv->hw->dma->start_rx(priv->ioaddr);
|
|
|
|
|
@@ -1800,16 +1773,6 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
|
|
|
entry = priv->cur_tx % txsize;
|
|
|
|
|
|
-#ifdef STMMAC_XMIT_DEBUG
|
|
|
- if ((skb->len > ETH_FRAME_LEN) || nfrags)
|
|
|
- pr_debug("%s: [entry %d]: skb addr %p len: %d nopagedlen: %d\n"
|
|
|
- "\tn_frags: %d - ip_summed: %d - %s gso\n"
|
|
|
- "\ttx_count_frames %d\n", __func__, entry,
|
|
|
- skb, skb->len, nopaged_len, nfrags, skb->ip_summed,
|
|
|
- !skb_is_gso(skb) ? "isn't" : "is",
|
|
|
- priv->tx_count_frames);
|
|
|
-#endif
|
|
|
-
|
|
|
csum_insertion = (skb->ip_summed == CHECKSUM_PARTIAL);
|
|
|
|
|
|
if (priv->extend_desc)
|
|
@@ -1819,12 +1782,6 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
|
|
|
first = desc;
|
|
|
|
|
|
-#ifdef STMMAC_XMIT_DEBUG
|
|
|
- if ((nfrags > 0) || (skb->len > ETH_FRAME_LEN))
|
|
|
- pr_debug("\tskb len: %d, nopaged_len: %d,\n"
|
|
|
- "\t\tn_frags: %d, ip_summed: %d\n",
|
|
|
- skb->len, nopaged_len, nfrags, skb->ip_summed);
|
|
|
-#endif
|
|
|
priv->tx_skbuff[entry] = skb;
|
|
|
|
|
|
/* To program the descriptors according to the size of the frame */
|
|
@@ -1860,7 +1817,6 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
else
|
|
|
desc = priv->dma_tx + entry;
|
|
|
|
|
|
- TX_DBG("\t[entry %d] segment len: %d\n", entry, len);
|
|
|
desc->des2 = skb_frag_dma_map(priv->device, frag, 0, len,
|
|
|
DMA_TO_DEVICE);
|
|
|
priv->tx_skbuff_dma[entry] = desc->des2;
|
|
@@ -1884,8 +1840,6 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
if (priv->tx_coal_frames > priv->tx_count_frames) {
|
|
|
priv->hw->desc->clear_tx_ic(desc);
|
|
|
priv->xstats.tx_reset_ic_bit++;
|
|
|
- TX_DBG("\t[entry %d]: tx_count_frames %d\n", entry,
|
|
|
- priv->tx_count_frames);
|
|
|
mod_timer(&priv->txtimer,
|
|
|
STMMAC_COAL_TIMER(priv->tx_coal_timer));
|
|
|
} else
|
|
@@ -1897,22 +1851,22 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
|
|
|
priv->cur_tx++;
|
|
|
|
|
|
-#ifdef STMMAC_XMIT_DEBUG
|
|
|
if (netif_msg_pktdata(priv)) {
|
|
|
- pr_info("%s: curr %d dirty=%d entry=%d, first=%p, nfrags=%d",
|
|
|
+ pr_debug("%s: curr %d dirty=%d entry=%d, first=%p, nfrags=%d",
|
|
|
__func__, (priv->cur_tx % txsize),
|
|
|
(priv->dirty_tx % txsize), entry, first, nfrags);
|
|
|
+
|
|
|
if (priv->extend_desc)
|
|
|
stmmac_display_ring((void *)priv->dma_etx, txsize, 1);
|
|
|
else
|
|
|
stmmac_display_ring((void *)priv->dma_tx, txsize, 0);
|
|
|
|
|
|
- pr_info(">>> frame to be transmitted: ");
|
|
|
+ pr_debug(">>> frame to be transmitted: ");
|
|
|
print_pkt(skb->data, skb->len);
|
|
|
}
|
|
|
-#endif
|
|
|
if (unlikely(stmmac_tx_avail(priv) <= (MAX_SKB_FRAGS + 1))) {
|
|
|
- TX_DBG("%s: stop transmitted packets\n", __func__);
|
|
|
+ if (netif_msg_hw(priv))
|
|
|
+ pr_debug("%s: stop transmitted packets\n", __func__);
|
|
|
netif_stop_queue(dev);
|
|
|
}
|
|
|
|
|
@@ -1972,7 +1926,8 @@ static inline void stmmac_rx_refill(struct stmmac_priv *priv)
|
|
|
|
|
|
priv->hw->ring->refill_desc3(priv, p);
|
|
|
|
|
|
- RX_DBG(KERN_INFO "\trefill entry #%d\n", entry);
|
|
|
+ if (netif_msg_rx_status(priv))
|
|
|
+ pr_debug("\trefill entry #%d\n", entry);
|
|
|
}
|
|
|
wmb();
|
|
|
priv->hw->desc->set_rx_owner(p);
|
|
@@ -1995,15 +1950,13 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit)
|
|
|
unsigned int count = 0;
|
|
|
int coe = priv->plat->rx_coe;
|
|
|
|
|
|
-#ifdef STMMAC_RX_DEBUG
|
|
|
- if (netif_msg_hw(priv)) {
|
|
|
- pr_debug(">>> stmmac_rx: descriptor ring:\n");
|
|
|
+ if (netif_msg_rx_status(priv)) {
|
|
|
+ pr_debug("%s: descriptor ring:\n", __func__);
|
|
|
if (priv->extend_desc)
|
|
|
stmmac_display_ring((void *)priv->dma_erx, rxsize, 1);
|
|
|
else
|
|
|
stmmac_display_ring((void *)priv->dma_rx, rxsize, 0);
|
|
|
}
|
|
|
-#endif
|
|
|
while (count < limit) {
|
|
|
int status;
|
|
|
struct dma_desc *p;
|
|
@@ -2057,15 +2010,14 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit)
|
|
|
*/
|
|
|
if (unlikely(status != llc_snap))
|
|
|
frame_len -= ETH_FCS_LEN;
|
|
|
-#ifdef STMMAC_RX_DEBUG
|
|
|
- if (frame_len > ETH_FRAME_LEN)
|
|
|
- pr_debug("\tRX frame size %d, COE status: %d\n",
|
|
|
- frame_len, status);
|
|
|
|
|
|
- if (netif_msg_hw(priv))
|
|
|
+ if (netif_msg_rx_status(priv)) {
|
|
|
pr_debug("\tdesc: %p [entry %d] buff=0x%x\n",
|
|
|
p, entry, p->des2);
|
|
|
-#endif
|
|
|
+ if (frame_len > ETH_FRAME_LEN)
|
|
|
+ pr_debug("\tframe size %d, COE: %d\n",
|
|
|
+ frame_len, status);
|
|
|
+ }
|
|
|
skb = priv->rx_skbuff[entry];
|
|
|
if (unlikely(!skb)) {
|
|
|
pr_err("%s: Inconsistent Rx descriptor chain\n",
|
|
@@ -2082,12 +2034,12 @@ static int stmmac_rx(struct stmmac_priv *priv, int limit)
|
|
|
dma_unmap_single(priv->device,
|
|
|
priv->rx_skbuff_dma[entry],
|
|
|
priv->dma_buf_sz, DMA_FROM_DEVICE);
|
|
|
-#ifdef STMMAC_RX_DEBUG
|
|
|
+
|
|
|
if (netif_msg_pktdata(priv)) {
|
|
|
- pr_info(" frame received (%dbytes)", frame_len);
|
|
|
+ pr_debug("frame received (%dbytes)", frame_len);
|
|
|
print_pkt(skb->data, frame_len);
|
|
|
}
|
|
|
-#endif
|
|
|
+
|
|
|
skb->protocol = eth_type_trans(skb, priv->dev);
|
|
|
|
|
|
if (unlikely(!coe))
|