Message ID | 1580471270-16262-4-git-send-email-radhey.shyam.pandey@xilinx.com |
---|---|
State | Changes Requested |
Delegated to: | David Miller |
Headers | show |
Series | net: emaclite: support arm64 platform | expand |
On Fri, Jan 31, 2020 at 05:17:49PM +0530, Radhey Shyam Pandey wrote: > > /* BUFFER_ALIGN(adr) calculates the number of bytes to the next alignment. */ > -#define BUFFER_ALIGN(adr) ((ALIGNMENT - ((u32)adr)) % ALIGNMENT) > +#define BUFFER_ALIGN(adr) ((ALIGNMENT - ((ulong)adr)) % ALIGNMENT) Hi Radhey linux/kernel.h has a few interesting macros, like #define ALIGN(x, a) __ALIGN_KERNEL((x), (a)) These are more likely to be correct across all architectures than anything you role yourself. Andrew
> -----Original Message----- > From: Andrew Lunn <andrew@lunn.ch> > Sent: Friday, January 31, 2020 7:08 PM > To: Radhey Shyam Pandey <radheys@xilinx.com> > Cc: davem@davemloft.net; netdev@vger.kernel.org; linux- > kernel@vger.kernel.org; Anirudha Sarangi <anirudh@xilinx.com>; Michal Simek > <michals@xilinx.com>; gregkh@linuxfoundation.org; > mchehab+samsung@kernel.org; John Linn <linnj@xilinx.com>; linux-arm- > kernel@lists.infradead.org > Subject: Re: [PATCH v3 -next 3/4] net: emaclite: Fix arm64 compilation warnings > > On Fri, Jan 31, 2020 at 05:17:49PM +0530, Radhey Shyam Pandey wrote: > > > > /* BUFFER_ALIGN(adr) calculates the number of bytes to the next alignment. > */ > > -#define BUFFER_ALIGN(adr) ((ALIGNMENT - ((u32)adr)) % ALIGNMENT) > > +#define BUFFER_ALIGN(adr) ((ALIGNMENT - ((ulong)adr)) % ALIGNMENT) > > Hi Radhey > > linux/kernel.h has a few interesting macros, like > > #define ALIGN(x, a) __ALIGN_KERNEL((x), (a)) > > These are more likely to be correct across all architectures than > anything you role yourself. > Thanks for the review. I agree using a kernel macro is preferred. However, as a second thought it seems we can get rid of this custom BUFFER_ALIGN macro and simply calling skb_reserve(skb, NET_IP_ALIGN) will make the protocol header to be aligned on at least a 4-byte boundary. > Andrew
diff --git a/drivers/net/ethernet/xilinx/xilinx_emaclite.c b/drivers/net/ethernet/xilinx/xilinx_emaclite.c index 7f98728..96e9d21 100644 --- a/drivers/net/ethernet/xilinx/xilinx_emaclite.c +++ b/drivers/net/ethernet/xilinx/xilinx_emaclite.c @@ -94,7 +94,7 @@ #define ALIGNMENT 4 /* BUFFER_ALIGN(adr) calculates the number of bytes to the next alignment. */ -#define BUFFER_ALIGN(adr) ((ALIGNMENT - ((u32)adr)) % ALIGNMENT) +#define BUFFER_ALIGN(adr) ((ALIGNMENT - ((ulong)adr)) % ALIGNMENT) #ifdef __BIG_ENDIAN #define xemaclite_readl ioread32be @@ -332,7 +332,7 @@ static int xemaclite_send_data(struct net_local *drvdata, u8 *data, * if it is configured in HW */ - addr = (void __iomem __force *)((u32 __force)addr ^ + addr = (void __iomem __force *)((ulong __force)addr ^ XEL_BUFFER_OFFSET); reg_data = xemaclite_readl(addr + XEL_TSR_OFFSET); @@ -394,7 +394,7 @@ static u16 xemaclite_recv_data(struct net_local *drvdata, u8 *data, int maxlen) * will correct on subsequent calls */ if (drvdata->rx_ping_pong != 0) - addr = (void __iomem __force *)((u32 __force)addr ^ + addr = (void __iomem __force *)((ulong __force)addr ^ XEL_BUFFER_OFFSET); else return 0; /* No data was available */ @@ -1186,9 +1186,9 @@ static int xemaclite_of_probe(struct platform_device *ofdev) } dev_info(dev, - "Xilinx EmacLite at 0x%08X mapped to 0x%08X, irq=%d\n", + "Xilinx EmacLite at 0x%08X mapped to 0x%08lX, irq=%d\n", (unsigned int __force)ndev->mem_start, - (unsigned int __force)lp->base_addr, ndev->irq); + (unsigned long __force)lp->base_addr, ndev->irq); return 0; error: