[linux-yocto] [PATCH 05/15] drivers/net: Fix Compiler Warnings in the Axxia FEMAC Driver

Daniel Dragomir daniel.dragomir at windriver.com
Fri Jan 8 07:51:36 PST 2016


From: John Jacques <john.jacques at intel.com>

Signed-off-by: John Jacques <john.jacques at intel.com>
---
 drivers/net/ethernet/lsi/lsi-femac.c | 53 ++++++------------------------------
 1 file changed, 9 insertions(+), 44 deletions(-)

diff --git a/drivers/net/ethernet/lsi/lsi-femac.c b/drivers/net/ethernet/lsi/lsi-femac.c
index 2b73e09..78717e0 100644
--- a/drivers/net/ethernet/lsi/lsi-femac.c
+++ b/drivers/net/ethernet/lsi/lsi-femac.c
@@ -339,7 +339,7 @@ queue_inc_tail(struct queue_ptr *q)
 static inline void
 pr_queue(const char *tag, const struct queue_ptr *q)
 {
-	pr_debug("%s tail=%d.%lu hw_tail=%d.%lu head=%d.%lu\n",
+	pr_debug("%s tail=%d.%d hw_tail=%d.%d head=%d.%d\n",
 		 tag,
 		 dmaptr_gen(q->tail), dmaptr_idx(q->tail),
 		 dmaptr_gen(q->hw_tail), dmaptr_idx(q->hw_tail),
@@ -460,7 +460,7 @@ femac_show_counters(struct device *dev,
 			priv->counters.tx_nobuf);
 
 	n += snprintf(&buf[n], PAGE_SIZE,
-		      "rx_queue: %u.%lu / %u.%lu / %u.%lu\n",
+		      "rx_queue: %u.%u / %u.%u / %u.%u\n",
 		      dmaptr_gen(priv->rxq->tail),
 		      dmaptr_idx(priv->rxq->tail),
 		      dmaptr_gen(le32_to_cpu(priv->rxq->hw_tail)),
@@ -469,7 +469,7 @@ femac_show_counters(struct device *dev,
 		      dmaptr_idx(priv->rxq->head));
 
 	n += snprintf(&buf[n], PAGE_SIZE,
-		      "tx_queue: %u.%lu / %u.%lu / %u.%lu\n",
+		      "tx_queue: %u.%u / %u.%u / %u.%u\n",
 		      dmaptr_gen(priv->txq->tail),
 		      dmaptr_idx(priv->txq->tail),
 		      dmaptr_gen(le32_to_cpu(priv->txq->hw_tail)),
@@ -535,24 +535,8 @@ alloc_rx_buf(struct femac_dev *priv, struct dma_desc *d)
 	d->flags   = cpu_to_le32(DMADESC_WRITE | DMADESC_INTR);
 	d->buf_len = cpu_to_le16(MAX_FRAME_SIZE);
 	d->pdu_len = d->buf_len;
-
-	/*
-	  The FEMAC hardware can only DMA to the lower 32 bits.  If
-	  the dma_addr is higher, fail.
-	*/
-
-	BUG_ON(0x100000000 <= dma_addr);
 	d->buf_ptr = cpu_to_le32((u32)dma_addr);
-
-	/*
-	  The skb address will be greater than 32 bits.  The receive
-	  routine below will assume that the top 32 bits are
-	  0xffffffc0.  Verify that here.
-	*/
-
-	BUG_ON(0xffffffc000000000 != ((u64)skb & 0xffffffff00000000));
 	d->cookie  = (u32)skb;
-
 	return 0;
 }
 
@@ -565,7 +549,7 @@ femac_tx_complete(struct femac_dev *priv)
 
 	spin_lock_irqsave(&priv->lock, flags);
 	while ((desc = queue_get_tail(priv->tx_ring, priv->txq)) != NULL) {
-		void *buf = (void *)(desc->cookie | 0xffffffc000000000);
+		void *buf = (void *)desc->cookie;
 
 		dma_pool_free(priv->tx_pool, buf, le32_to_cpu(desc->buf_ptr));
 		queue_inc_tail(priv->txq);
@@ -596,7 +580,6 @@ femac_rx_packets(struct femac_dev *priv, int max)
 
 	while (num_rx < max) {
 		desc = queue_get_tail(priv->rx_ring, priv->rxq);
-
 		if (!desc)
 			break;
 		queue_inc_tail(priv->rxq);
@@ -611,7 +594,7 @@ femac_rx_packets(struct femac_dev *priv, int max)
 
 		dma_unmap_single(priv->dev, le32_to_cpu(desc->buf_ptr),
 				 MAX_FRAME_SIZE, DMA_FROM_DEVICE);
-		skb = (struct sk_buff *)(desc->cookie | 0xffffffc000000000);
+		skb = (struct sk_buff *)desc->cookie;
 
 		if (!(le32_to_cpu(desc->flags) & DMADESC_ERROR)) {
 			struct ethhdr *ethhdr = (struct ethhdr *)skb->data;
@@ -743,14 +726,6 @@ femac_open(struct net_device *ndev)
 	}
 
 	phy_dev->advertising = phy_dev->supported;
-	phy_dev->supported &=
-		~(SUPPORTED_10baseT_Full |
-		  SUPPORTED_100baseT_Half |
-		  SUPPORTED_100baseT_Full);
-	phy_dev->advertising &=
-		~(SUPPORTED_10baseT_Full |
-		  SUPPORTED_100baseT_Half |
-		  SUPPORTED_100baseT_Full);
 	priv->link = 0;
 	priv->phy_dev = phy_dev;
 
@@ -827,7 +802,7 @@ femac_hard_start_xmit(struct sk_buff *skb, struct net_device *ndev)
 		goto drop;
 	}
 
-	tx_buf = dma_pool_alloc(priv->tx_pool, GFP_ATOMIC|GFP_DMA32, &dma_addr);
+	tx_buf = dma_pool_alloc(priv->tx_pool, GFP_ATOMIC, &dma_addr);
 	if (!tx_buf) {
 		netif_stop_queue(ndev);
 		DBG_INC(priv, tx_nobuf);
@@ -1003,16 +978,8 @@ femac_init(struct net_device *ndev)
 	writel(RX_MODE_ETHERNET_ENABLE, priv->base + RXREG_MODE);
 	writel(0x0, priv->base + TXREG_SOFT_RESET);
 	writel(TX_MODE_ETHERNET_ENABLE, priv->base + TXREG_MODE);
-#if 1
-	/*
-	  The watermark register is different in emulation AND needs a
-	  different value
-	*/
-	writel(0x7f007f, priv->base + TXREG_WATERMARK);
-#else
 	writel(TX_WATERMARK_DTPA_HIGH(96) | TX_WATERMARK_DTPA_LOW(10),
 	       priv->base + TXREG_WATERMARK);
-#endif
 
 	writel(DMA_CTRL_ERR_CLEAR | DMA_CTRL_ENABLE,
 	       priv->base + DMAREG_CONTROL);
@@ -1027,10 +994,9 @@ femac_init(struct net_device *ndev)
 	/* Initialize RX queue */
 	priv->rx_ring_size = priv->rx_num_desc * sizeof(struct dma_desc);
 	priv->rx_ring = dma_alloc_coherent(&ndev->dev, priv->rx_ring_size,
-					   &priv->rx_ring_phys,
-					   GFP_KERNEL|GFP_DMA32);
+					   &priv->rx_ring_phys, GFP_KERNEL);
 	priv->rxq = dma_alloc_coherent(&ndev->dev, 2 * sizeof(struct queue_ptr),
-				       &dma_phys, GFP_KERNEL|GFP_DMA32);
+				       &dma_phys, GFP_KERNEL);
 	priv->rxq->phys = dma_phys;
 	writel(priv->rx_ring_phys, priv->base + DMAREG_RX_QUEUE_BASE);
 	writel(priv->rx_ring_size/1024, priv->base + DMAREG_RX_QUEUE_SIZE);
@@ -1053,8 +1019,7 @@ femac_init(struct net_device *ndev)
 	/* Initialize TX queue */
 	priv->tx_ring_size = priv->tx_num_desc * sizeof(struct dma_desc);
 	priv->tx_ring = dma_alloc_coherent(&ndev->dev, priv->tx_ring_size,
-					   &priv->tx_ring_phys,
-					   GFP_KERNEL|GFP_DMA32);
+					   &priv->tx_ring_phys, GFP_KERNEL);
 	priv->txq = &priv->rxq[1];
 	priv->txq->phys = dma_phys + sizeof(struct queue_ptr);
 	writel(priv->tx_ring_phys, priv->base + DMAREG_TX_QUEUE_BASE);
-- 
1.9.1



More information about the linux-yocto mailing list