On Thu, 2007-03-01 at 01:32 -0800, Andrew Morton wrote:
> On Thu, 01 Mar 2007 17:23:23 +0800 "Wu, Bryan" <[EMAIL PROTECTED]> wrote:
> 
> > On Thu, 2007-03-01 at 00:54 -0800, Andrew Morton wrote:
> > > On Thu, 01 Mar 2007 12:15:29 +0800 "Wu, Bryan" <[EMAIL PROTECTED]> wrote:
> > > 
> > > > +/* check if the mac in reg is valid */
> > > > +#define SMC_GET_MAC_ADDR(addr)                                 \
> > > > +       do {                                                    \
> > > > +               unsigned int __v;                               \
> > > > +               __v = SMC_inw( ioaddr, ADDR0_REG );             \
> > > > +               addr[0] = __v; addr[1] = __v >> 8;              \
> > > > +               __v = SMC_inw( ioaddr, ADDR1_REG );             \
> > > > +               addr[2] = __v; addr[3] = __v >> 8;              \
> > > > +               __v = SMC_inw( ioaddr, ADDR2_REG );             \
> > > > +               addr[4] = __v; addr[5] = __v >> 8;              \
> > > > +               if (*(u32 *)(&addr[0]) == 0xFFFFFFFF) {         \
> > > > +                       random_ether_addr(addr);                \
> > > > +               }                                               \
> > > > +       } while (0)
> > > 
> > > Please follow kernel coding style:
> > > 
> > >   __v = SMC_inw(ioaddr, ADDR2_REG);
> > > 
> 
> You skipped this:
> 
> > > Can this not be implemented as a C function?
> 
> > +#define SMC_GET_MAC_ADDR(addr)                                     \
> > +   do {                                                    \
> > +           unsigned int __v;                               \
> > +           __v = SMC_inw(ioaddr, ADDR0_REG);               \
> > +           addr[0] = __v; addr[1] = __v >> 8;              \
> > +           __v = SMC_inw(ioaddr, ADDR1_REG);               \
> > +           addr[2] = __v; addr[3] = __v >> 8;              \
> > +           __v = SMC_inw(ioaddr, ADDR2_REG);               \
> > +           addr[4] = __v; addr[5] = __v >> 8;              \
> > +           if (*(u32 *)(&addr[0]) == 0xFFFFFFFF) {         \
> > +                   random_ether_addr(addr);                \
> > +           }                                               \
> > +   } while (0)
> 
> It can be, I think...
> 
> Please always prefer coding in C over coding in cpp.

Yes, it can be writen as a C function.
We just follow other implementation in the drivers/net/smc91x.h

start at line 1156 of
---
#ifndef SMC_GET_MAC_ADDR
#define SMC_GET_MAC_ADDR(addr)                                          \
        do {                                                            \
                unsigned int __v;                                       \
                __v = SMC_inw( ioaddr, ADDR0_REG );                     \
                addr[0] = __v; addr[1] = __v >> 8;                      \
                __v = SMC_inw( ioaddr, ADDR1_REG );                     \
                addr[2] = __v; addr[3] = __v >> 8;                      \
                __v = SMC_inw( ioaddr, ADDR2_REG );                     \
                addr[4] = __v; addr[5] = __v >> 8;                      \
        } while (0)
#endif
_

If you think this is necessary, we may rewrite it in C function.

Thanks
-Bryan
-
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/

Reply via email to