diff -u linux-2.6.17/drivers/net/netxen/netxen_nic_hw.c 
linux-2.6.17/drivers/net/netxen/netxen_nic_hw.c
--- linux-2.6.17/drivers/net/netxen/netxen_nic_hw.c     2006-08-17 
07:12:34.000000000 -0700
+++ linux-2.6.17/drivers/net/netxen/netxen_nic_hw.c     2006-08-21 
02:20:00.000000000 -0700
@@ -317,9 +317,9 @@
        adapter->stats.xmitcsummed++;
 }

-int is_flash_supported(struct netxen_adapter *adapter)
+int netxen_is_flash_supported(struct netxen_adapter *adapter)
 {
-       int locs[] = { 0, 0x4, 0x100, 0x4000, 0x4128 };
+       const int locs[] = { 0, 0x4, 0x100, 0x4000, 0x4128 };
        int addr, val01, val02, i, j;

        /* if the flash size less than 4Mb, make huge war cry and die */
@@ -364,7 +364,7 @@
        return 0;
 }

-int get_flash_mac_addr(struct netxen_adapter *adapter, u64 mac[])
+int netxen_get_flash_mac_addr(struct netxen_adapter *adapter, u64 mac[])
 {
        u32 *pmac = (u32 *) & mac[0];

@@ -430,7 +430,7 @@
        adapter->curr_window = wndw;
 }

-void load_firmware(struct netxen_adapter *adapter)
+void netxen_load_firmware(struct netxen_adapter *adapter)
 {
        int i;
        long data, size = 0;



On Fri, 18 Aug 2006, Stephen Hemminger wrote:


Way to many DPRINTK()'s

+
+int is_flash_supported(struct netxen_adapter *adapter)

needs to be static or prefixed.

+{
+       int locs[] = { 0, 0x4, 0x100, 0x4000, 0x4128 };

use const

+       int addr, val01, val02, i, j;
+
+       /* if the flash size less than 4Mb, make huge war cry and die */
+       for (j = 1; j < 4; j++) {
+               addr = j * 0x100000;
+               for (i = 0; i < (sizeof(locs) / sizeof(locs[0])); i++) {
+                       if (netxen_rom_fast_read(adapter, locs[i], &val01) == 0
+                           && netxen_rom_fast_read(adapter, (addr + locs[i]),
+                                                   &val02) == 0) {
+                               if (val01 == val02)
+                                       return -1;
+                       } else
+                               return -1;
+               }
+       }
+
+       return 0;
+}
+
+static int netxen_get_flash_block(struct netxen_adapter *adapter, int base,
+                                 int size, u32 * buf)
+{
+       int i, addr;
+       u32 *ptr32;
+
+       addr = base;
+       ptr32 = buf;
+       for (i = 0; i < size / sizeof(u32); i++) {
+               if (netxen_rom_fast_read(adapter, addr, ptr32) == -1)
+                       return -1;
+               ptr32++;
+               addr += sizeof(u32);
+       }
+       if ((char *)buf + size > (char *)ptr32) {
+               u32 local;
+
+               if (netxen_rom_fast_read(adapter, addr, &local) == -1)
+                       return -1;
+               memcpy(ptr32, &local, (char *)buf + size - (char *)ptr32);
+       }
+
+       return 0;
+}
+
+int get_flash_mac_addr(struct netxen_adapter *adapter, u64 mac[])

static int get_flash_mac_addr()..
+
+void load_firmware(struct netxen_adapter *adapter)

also must be static

+{
+       int i;
+       long data, size = 0;
+       long flashaddr = NETXEN_FLASH_BASE, memaddr = NETXEN_PHANTOM_MEM_BASE;
+       u64 off;
+       ptrdiff_t addr;
+
+       size = (16 * 1024) / 4;
+       writel(1, NETXEN_CRB_NORMALIZE(adapter, NETXEN_ROMUSB_GLB_CAS_RST));
+
+       for (i = 0; i < size; i++) {
+               if (netxen_rom_fast_read(adapter, flashaddr, (int *)&data) != 
0) {
+                       DPRINTK(ERR,
+                               "Error in netxen_rom_fast_read(). Will skip"
+                               "loading flash image\n");
+                       return;
+               }
+               off = netxen_nic_pci_set_window(adapter->ahw.pci_base, memaddr);
+               addr = (ptrdiff_t) (adapter->ahw.pci_base + off);
+               writel(data, (void __iomem *)addr);
+               flashaddr += 4;
+               memaddr += 4;
+       }
+       udelay(100);
+       /* make sure Casper is powered on */
+       writel(0x3fff,
+              NETXEN_CRB_NORMALIZE(adapter, NETXEN_ROMUSB_GLB_CHIP_CLK_CTRL));
+       writel(0, NETXEN_CRB_NORMALIZE(adapter, NETXEN_ROMUSB_GLB_CAS_RST));
+
+       udelay(10000);
+}
+
+int
+netxen_nic_hw_write_wx(struct netxen_adapter *adapter, u64 off, void *data,
+                      int len)
+{
+       void __iomem * addr;
+
+       if (ADDR_IN_WINDOW1(off)) {
+               addr = NETXEN_CRB_NORMALIZE(adapter, off);
+       } else {                /* Window 0 */
+               addr = (void *)(ptrdiff_t) (adapter->ahw.pci_base + off);
+               netxen_nic_pci_change_crbwindow(adapter, 0);
+       }
+
+       DPRINTK(INFO, "writing to base %lx offset %llx addr %p"
+               " data %llx len %d\n",
+               adapter->ahw.pci_base, off, addr,
+               *(unsigned long long *)data, len);
+       switch (len) {
+       case 1:
+               writeb(*(u8 *) data, addr);
+               break;
+       case 2:
+               writew(*(u16 *) data, addr);
+               break;
+       case 4:
+               writel(*(u32 *) data, addr);
+               break;
+       case 8:
+               writeq(*(u64 *) data, addr);
+               break;
+       default:
+               DPRINTK(INFO,
+                       "writing data %lx to offset %llx, num words=%d\n",
+                       *(unsigned long *)data, off, (len >> 3));
+
+               NETXEN_NIC_HW_BLOCK_WRITE_64(data, addr, (len >> 3));
+               break;
+       }
+       if (!ADDR_IN_WINDOW1(off))
+               netxen_nic_pci_change_crbwindow(adapter, 1);
+
+       return 0;
+}
+
+int
+netxen_nic_hw_read_wx(struct netxen_adapter *adapter, u64 off, void *data,
+                     int len)

If you can make this inline then the switch can be optimized.

+{
+       void __iomem * addr;
+
+       if (ADDR_IN_WINDOW1(off)) {     /* Window 1 */
+               addr = NETXEN_CRB_NORMALIZE(adapter, off);
+       } else {                /* Window 0 */
+               addr = (void *)(ptrdiff_t) (adapter->ahw.pci_base + off);
+               netxen_nic_pci_change_crbwindow(adapter, 0);
+       }
+
+       DPRINTK(INFO, "reading from base %lx offset %llx addr %p\n",
+               adapter->ahw.pci_base, off, addr);
+       switch (len) {
+       case 1:
+               *(u8 *) data = readb(addr);
+               break;
+       case 2:
+               *(u16 *) data = readw(addr);
+               break;
+       case 4:
+               *(u32 *) data = readl(addr);
+               break;
+       case 8:
+               *(u64 *) data = readq(addr);
+               break;
+       default:
+               NETXEN_NIC_HW_BLOCK_READ_64(data, addr, (len >> 3));
+               break;
+       }
+       DPRINTK(INFO, "read %lx\n", *(unsigned long *)data);
+
+       if (!ADDR_IN_WINDOW1(off))
+               netxen_nic_pci_change_crbwindow(adapter, 1);
+
+       return 0;
+}
+
+void netxen_nic_reg_write(struct netxen_adapter *adapter, u64 off, u32 val)
+{                              /* Only for window 1 */
+       void __iomem * addr;
+
+       addr = NETXEN_CRB_NORMALIZE(adapter, off);
+       DPRINTK(INFO, "writing to base %lx offset %llx addr %p data %x\n",
+               adapter->ahw.pci_base, off, addr, val);
+       writel(val, addr);
+
+}
+

inline?

+int netxen_nic_reg_read(struct netxen_adapter *adapter, u64 off)
+{                              /* Only for window 1 */
+       void __iomem * addr;
+       int val;
+
+       addr = NETXEN_CRB_NORMALIZE(adapter, off);
+       DPRINTK(INFO, "reading from base %lx offset %llx addr %p\n",
+               adapter->ahw.pci_base, off, addr);
+       val = readl(addr);
+       writel(val, addr);
+
+       return val;
+}
inline?


+       if (fw_major != _NETXEN_NIC_LINUX_MAJOR) {
+               printk(KERN_ERR "The mismatch in driver version and firmware "
+                       "version major number\n"
+                       "Driver version major number = %d \t"
+                       "Firmware version major number = %d \n",
+                       _NETXEN_NIC_LINUX_MAJOR, fw_major);
+               adapter->driver_mismatch = 1;
+       }
+       if (fw_minor != _NETXEN_NIC_LINUX_MINOR) {
+               printk(KERN_ERR "The mismatch in driver version and firmware "
+                       "version minor number\n"
+                       "Driver version minor number = %d \t"
+                       "Firmware version minor number = %d \n",
+                       _NETXEN_NIC_LINUX_MINOR, fw_minor);
+               adapter->driver_mismatch = 1;
+       }


You might want a table for this?



-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to