On Sat, 2006-04-01 at 05:49 -0800, Linsys Contractor Amit S. Kale wrote:
> + for (ctx = 0; ctx < MAX_RCV_CTX; ++ctx) {
Why did this patch suddenly start in the middle?
> + if (adapter->is_up != ADAPTER_UP_MAGIC) {
> + printk("NetXen adapter %d\n", opencount);
> + adapter->is_up = ADAPTER_UP_MAGIC;
> + if (netxen_nic_init_port (port) != 0) {
> + printk(KERN_ERR "%s: Failed to initialize port %d\n",
> + netxen_nic_driver_name, port->portnum);
> + return -EIO;
> + }
> + netxen_nic_init_niu(adapter);
> + /* setup all the resources for the Phantom... */
> + /* this include the descriptors for rcv, tx, and status */
> + netxen_nic_clear_stats(adapter);
> + err = netxen_nic_hw_resources (adapter);
> + if (err) {
> + DPRINTK(1, ERR, "Error in setting hw resources:"
> + "%d\n", err);
> + return err;
> + }
This init routine doesn't make any attempt to clean up after itself. If
anything fails, you've left the card and the kernel in a broken state.
> +#ifndef SINGLE_DMA_BUF
Lose the ifdefs.
> +#ifndef SINGLE_DMA_BUF
> +//#if !defined(CONFIG_PCI_MSI)
> + if(adapter->activePorts == 1) {
> + read_lock(&adapter->adapter_lock);
> + netxen_nic_enable_int(adapter);
> + read_unlock(&adapter->adapter_lock);
> + }
> +//#endif
> +#endif
This is unreadable.
> + /* Window 1 call */
> + read_lock(&adapter->adapter_lock);
> + state = NetXen_NIC_PCI_READ_32(CRB_NORMALIZE(adapter,
> + CRB_CMDPEG_STATE));
> + read_unlock(&adapter->adapter_lock);
Why are you acquiring locks around all these PCI accesses?
> + addr = pci_alloc_consistent(adapter->ahw.pdev,
> + sizeof(cmdDescType0_t)*
> + adapter->MaxTxDescCount,
> + (dma_addr_t *)&hw->cmdDesc_physAddr);
This variable naming is all junk.
> + if (addr == NULL) {
> + DPRINTK(1,ERR, "bad return from pci_alloc_consistent\n");
> + err = -ENOMEM;
> + return err;
> + }
One return at the end of functions, with proper cleanup code.
My eyes glazed over around this point, and I stopped reading.
<b
-
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