On 05/17/2018 10:31 PM, David Miller wrote: > From: Andrea Greco <andrea.greco.gapmil...@gmail.com> > Date: Thu, 17 May 2018 15:05:29 +0200 > >> + /* Will be set by userspace during if setup */ >> + dev->dev_addr[0] = 0; > > Hmmm... really? > > Also, every error path from this point forward will leak 'dev'. >
In com20020.c found this: /* FIXME: do this some other way! */ if (!dev->dev_addr[0]) dev->dev_addr[0] = arcnet_inb(ioaddr, 8); NODE-ID, must be univoque, for all arcnet network. My previews idea was take random value but, this could create a collision over network. A possible solution is: In case of collision com20020 set a bit in status register. Then peak a new NODE-ID and repeat this while correct NODE-ID is found. Other ideas is pass it via DTS. But suppose have 2 same product in same network, same address same problem. For this reason i prefer left standard driver behavior. Other ideas for solve this ? Other question discussed with Tobin in RFC patch is: At now a devm_ioremap is done by this driver. Other version of this driver, PCI, PCMCIA, ISA do not remap memory. Other implementation, use:inb outb for r/w operation. I do a ugly #ifndef and redefine arcnet_inb in case is defined CONFIG_ARCNET_COM20020_IO. My proposal was: Add relative callback arcnet_inb, arcnet_outb and friends hw struct in arcdevice.h, then every driver set callback with required function. Regards, Andrea