2006-05-10 18:13:15

by Daniel Walker

[permalink] [raw]
Subject: [PATCH -mm] updated dl2k gcc 4.1 warning fix

Fixes the following warning,

drivers/net/dl2k.c: In function 'rio_free_tx':
drivers/net/dl2k.c:768: warning: integer constant is too large for 'long' type
drivers/net/dl2k.c: In function 'receive_packet':
drivers/net/dl2k.c:896: warning: integer constant is too large for 'long' type
drivers/net/dl2k.c:904: warning: integer constant is too large for 'long' type
drivers/net/dl2k.c:916: warning: integer constant is too large for 'long' type
drivers/net/dl2k.c: In function 'rio_close':
drivers/net/dl2k.c:1803: warning: integer constant is too large for 'long' type
drivers/net/dl2k.c:1813: warning: integer constant is too large for 'long' type

Signed-Off-By: Daniel Walker <[email protected]>

Index: linux-2.6.16/drivers/net/dl2k.c
===================================================================
--- linux-2.6.16.orig/drivers/net/dl2k.c
+++ linux-2.6.16/drivers/net/dl2k.c
@@ -765,7 +765,8 @@ rio_free_tx (struct net_device *dev, int
break;
skb = np->tx_skbuff[entry];
pci_unmap_single (np->pdev,
- np->tx_ring[entry].fraginfo & 0xffffffffffff,
+ np->tx_ring[entry].fraginfo &
+ 0xffffffffffffULL,
skb->len, PCI_DMA_TODEVICE);
if (irq)
dev_kfree_skb_irq (skb);
@@ -893,7 +894,8 @@ receive_packet (struct net_device *dev)
/* Small skbuffs for short packets */
if (pkt_len > copy_thresh) {
pci_unmap_single (np->pdev,
- desc->fraginfo & 0xffffffffffff,
+ desc->fraginfo &
+ 0xffffffffffffULL,
np->rx_buf_sz,
PCI_DMA_FROMDEVICE);
skb_put (skb = np->rx_skbuff[entry], pkt_len);
@@ -901,7 +903,7 @@ receive_packet (struct net_device *dev)
} else if ((skb = dev_alloc_skb (pkt_len + 2)) != NULL) {
pci_dma_sync_single_for_cpu(np->pdev,
desc->fraginfo &
- 0xffffffffffff,
+ 0xffffffffffffULL,
np->rx_buf_sz,
PCI_DMA_FROMDEVICE);
skb->dev = dev;
@@ -912,8 +914,8 @@ receive_packet (struct net_device *dev)
pkt_len, 0);
skb_put (skb, pkt_len);
pci_dma_sync_single_for_device(np->pdev,
- desc->fraginfo &
- 0xffffffffffff,
+ desc->fraginfo &
+ 0xffffffffffffULL,
np->rx_buf_sz,
PCI_DMA_FROMDEVICE);
}
@@ -1800,7 +1802,8 @@ rio_close (struct net_device *dev)
skb = np->rx_skbuff[i];
if (skb) {
pci_unmap_single(np->pdev,
- np->rx_ring[i].fraginfo & 0xffffffffffff,
+ np->rx_ring[i].fraginfo &
+ 0xffffffffffffULL,
skb->len, PCI_DMA_FROMDEVICE);
dev_kfree_skb (skb);
np->rx_skbuff[i] = NULL;
@@ -1810,7 +1813,8 @@ rio_close (struct net_device *dev)
skb = np->tx_skbuff[i];
if (skb) {
pci_unmap_single(np->pdev,
- np->tx_ring[i].fraginfo & 0xffffffffffff,
+ np->tx_ring[i].fraginfo &
+ 0xffffffffffffULL,
skb->len, PCI_DMA_TODEVICE);
dev_kfree_skb (skb);
np->tx_skbuff[i] = NULL;


2006-05-10 18:59:40

by Francois Romieu

[permalink] [raw]
Subject: [PATCH] dl2k: use explicit DMA_48BIT_MASK

Typo will be harder with this one.

Signed-off-by: Francois Romieu <[email protected]>

---

drivers/net/dl2k.c | 13 ++++++-------
include/linux/dma-mapping.h | 1 +
2 files changed, 7 insertions(+), 7 deletions(-)

5019a27a2a4e259f29a7bd03e905764eedfa034c
diff --git a/drivers/net/dl2k.c b/drivers/net/dl2k.c
index ca73f07..18d67cf 100644
--- a/drivers/net/dl2k.c
+++ b/drivers/net/dl2k.c
@@ -765,8 +765,7 @@ rio_free_tx (struct net_device *dev, int
break;
skb = np->tx_skbuff[entry];
pci_unmap_single (np->pdev,
- np->tx_ring[entry].fraginfo &
- 0xffffffffffffULL,
+ np->tx_ring[entry].fraginfo & DMA_48BIT_MASK,
skb->len, PCI_DMA_TODEVICE);
if (irq)
dev_kfree_skb_irq (skb);
@@ -895,7 +894,7 @@ receive_packet (struct net_device *dev)
if (pkt_len > copy_thresh) {
pci_unmap_single (np->pdev,
desc->fraginfo &
- 0xffffffffffffULL,
+ DMA_48BIT_MASK,
np->rx_buf_sz,
PCI_DMA_FROMDEVICE);
skb_put (skb = np->rx_skbuff[entry], pkt_len);
@@ -903,7 +902,7 @@ receive_packet (struct net_device *dev)
} else if ((skb = dev_alloc_skb (pkt_len + 2)) != NULL) {
pci_dma_sync_single_for_cpu(np->pdev,
desc->fraginfo &
- 0xffffffffffffULL,
+ DMA_48BIT_MASK,
np->rx_buf_sz,
PCI_DMA_FROMDEVICE);
skb->dev = dev;
@@ -915,7 +914,7 @@ receive_packet (struct net_device *dev)
skb_put (skb, pkt_len);
pci_dma_sync_single_for_device(np->pdev,
desc->fraginfo &
- 0xffffffffffffULL,
+ DMA_48BIT_MASK,
np->rx_buf_sz,
PCI_DMA_FROMDEVICE);
}
@@ -1803,7 +1802,7 @@ rio_close (struct net_device *dev)
if (skb) {
pci_unmap_single(np->pdev,
np->rx_ring[i].fraginfo &
- 0xffffffffffffULL,
+ DMA_48BIT_MASK,
skb->len, PCI_DMA_FROMDEVICE);
dev_kfree_skb (skb);
np->rx_skbuff[i] = NULL;
@@ -1814,7 +1813,7 @@ rio_close (struct net_device *dev)
if (skb) {
pci_unmap_single(np->pdev,
np->tx_ring[i].fraginfo &
- 0xffffffffffffULL,
+ DMA_48BIT_MASK,
skb->len, PCI_DMA_TODEVICE);
dev_kfree_skb (skb);
np->tx_skbuff[i] = NULL;
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
index ff61817..635690c 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -14,6 +14,7 @@ enum dma_data_direction {
};

#define DMA_64BIT_MASK 0xffffffffffffffffULL
+#define DMA_48BIT_MASK 0x0000ffffffffffffULL
#define DMA_40BIT_MASK 0x000000ffffffffffULL
#define DMA_39BIT_MASK 0x0000007fffffffffULL
#define DMA_32BIT_MASK 0x00000000ffffffffULL
--
1.3.1

2006-05-10 23:53:28

by Jon Mason

[permalink] [raw]
Subject: Re: [PATCH] dl2k: use explicit DMA_48BIT_MASK

On Wed, May 10, 2006 at 08:57:18PM +0200, Francois Romieu wrote:
> Typo will be harder with this one.

While I agree that a #define is much better than the magic number, I
think this is bastardizing the intended use of DMA_*BIT_MASK.
DMA_*BIT_MASK is intended to be used in the DMA_API's checking of
DMA controller's addressable memory, where as this is masking off the
lower 48bits of a descriptor for its DMA address.

I think a better solution (which I should've done when I pushed the
original patch) would be a driver specific #define.

Thanks,
Jon

>
> Signed-off-by: Francois Romieu <[email protected]>
>
> ---
>
> drivers/net/dl2k.c | 13 ++++++-------
> include/linux/dma-mapping.h | 1 +
> 2 files changed, 7 insertions(+), 7 deletions(-)
>
> 5019a27a2a4e259f29a7bd03e905764eedfa034c
> diff --git a/drivers/net/dl2k.c b/drivers/net/dl2k.c
> index ca73f07..18d67cf 100644
> --- a/drivers/net/dl2k.c
> +++ b/drivers/net/dl2k.c
> @@ -765,8 +765,7 @@ rio_free_tx (struct net_device *dev, int
> break;
> skb = np->tx_skbuff[entry];
> pci_unmap_single (np->pdev,
> - np->tx_ring[entry].fraginfo &
> - 0xffffffffffffULL,
> + np->tx_ring[entry].fraginfo & DMA_48BIT_MASK,
> skb->len, PCI_DMA_TODEVICE);
> if (irq)
> dev_kfree_skb_irq (skb);
> @@ -895,7 +894,7 @@ receive_packet (struct net_device *dev)
> if (pkt_len > copy_thresh) {
> pci_unmap_single (np->pdev,
> desc->fraginfo &
> - 0xffffffffffffULL,
> + DMA_48BIT_MASK,
> np->rx_buf_sz,
> PCI_DMA_FROMDEVICE);
> skb_put (skb = np->rx_skbuff[entry], pkt_len);
> @@ -903,7 +902,7 @@ receive_packet (struct net_device *dev)
> } else if ((skb = dev_alloc_skb (pkt_len + 2)) != NULL) {
> pci_dma_sync_single_for_cpu(np->pdev,
> desc->fraginfo &
> - 0xffffffffffffULL,
> + DMA_48BIT_MASK,
> np->rx_buf_sz,
> PCI_DMA_FROMDEVICE);
> skb->dev = dev;
> @@ -915,7 +914,7 @@ receive_packet (struct net_device *dev)
> skb_put (skb, pkt_len);
> pci_dma_sync_single_for_device(np->pdev,
> desc->fraginfo &
> - 0xffffffffffffULL,
> + DMA_48BIT_MASK,
> np->rx_buf_sz,
> PCI_DMA_FROMDEVICE);
> }
> @@ -1803,7 +1802,7 @@ rio_close (struct net_device *dev)
> if (skb) {
> pci_unmap_single(np->pdev,
> np->rx_ring[i].fraginfo &
> - 0xffffffffffffULL,
> + DMA_48BIT_MASK,
> skb->len, PCI_DMA_FROMDEVICE);
> dev_kfree_skb (skb);
> np->rx_skbuff[i] = NULL;
> @@ -1814,7 +1813,7 @@ rio_close (struct net_device *dev)
> if (skb) {
> pci_unmap_single(np->pdev,
> np->tx_ring[i].fraginfo &
> - 0xffffffffffffULL,
> + DMA_48BIT_MASK,
> skb->len, PCI_DMA_TODEVICE);
> dev_kfree_skb (skb);
> np->tx_skbuff[i] = NULL;
> diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
> index ff61817..635690c 100644
> --- a/include/linux/dma-mapping.h
> +++ b/include/linux/dma-mapping.h
> @@ -14,6 +14,7 @@ enum dma_data_direction {
> };
>
> #define DMA_64BIT_MASK 0xffffffffffffffffULL
> +#define DMA_48BIT_MASK 0x0000ffffffffffffULL
> #define DMA_40BIT_MASK 0x000000ffffffffffULL
> #define DMA_39BIT_MASK 0x0000007fffffffffULL
> #define DMA_32BIT_MASK 0x00000000ffffffffULL
> --
> 1.3.1
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/

2006-05-11 19:27:46

by Francois Romieu

[permalink] [raw]
Subject: Re: [PATCH] dl2k: use explicit DMA_48BIT_MASK

Jon Mason <[email protected]> :
[...]
> DMA_*BIT_MASK is intended to be used in the DMA_API's checking of
> DMA controller's addressable memory, where as this is masking off the
> lower 48bits of a descriptor for its DMA address.

Imho it's the specific reason why the DMA_*BIT_MASK applies here: the
code is already in dma-"tainted" land.

> I think a better solution (which I should've done when I pushed the
> original patch) would be a driver specific #define.

$ find drivers -type f | xargs grep -i [^f]ffffffffffff[^f] | wc -l
12

No disagreement: it does not have a huge potential for code duplication.

--
Ueimor