> +#define M_NET_FEATURE_SG ((u32)(1 << 0)) > +#define M_NET_FEATURE_TX_CHECKSUM ((u32)(1 << 1)) > +#define M_NET_FEATURE_RX_CHECKSUM ((u32)(1 << 2)) Please use the BIT() macro. > + u32 feature_flags; > + u16 usecstocount; > +}; > + > +#define rnpgbe_rd_reg(reg) readl((void *)(reg)) > +#define rnpgbe_wr_reg(reg, val) writel((val), (void *)(reg)) These casts look wrong. You should be getting your basic iomem pointer from a function which returns an void __iomem* pointer, so the cast should not be needed. > -static int rnpgbe_add_adpater(struct pci_dev *pdev) > +static int rnpgbe_add_adpater(struct pci_dev *pdev, > + const struct rnpgbe_info *ii) > { > + int err = 0; > struct mucse *mucse = NULL; > struct net_device *netdev; > + struct mucse_hw *hw = NULL; > + u8 __iomem *hw_addr = NULL; > + u32 dma_version = 0; > static int bd_number; > + u32 queues = ii->total_queue_pair_cnts; You need to work on your reverse Christmas tree. Local variables should be ordered longest to shortest. Andrew