]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/netxen/netxen_nic_init.c
block: fix partial read() of /proc/{partitions,diskstats}
[linux-2.6-omap-h63xx.git] / drivers / net / netxen / netxen_nic_init.c
index 01ab31b34a85d01d08f406768a24d3c9733f3504..5bba675d0504594fc340ab3223956d167d4ef0ea 100644 (file)
@@ -364,6 +364,11 @@ void netxen_initialize_adapter_ops(struct netxen_adapter *adapter)
        default:
                break;
        }
+
+       if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) {
+               adapter->set_mtu = nx_fw_cmd_set_mtu;
+               adapter->set_promisc = netxen_p3_nic_set_promisc;
+       }
 }
 
 /*
@@ -1074,10 +1079,12 @@ int netxen_initialize_adapter_offload(struct netxen_adapter *adapter)
 
 void netxen_free_adapter_offload(struct netxen_adapter *adapter)
 {
-       int i;
+       int i = 100;
+
+       if (!adapter->dummy_dma.addr)
+               return;
 
-       if (adapter->dummy_dma.addr) {
-               i = 100;
+       if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) {
                do {
                        if (dma_watchdog_shutdown_request(adapter) == 1)
                                break;
@@ -1085,17 +1092,17 @@ void netxen_free_adapter_offload(struct netxen_adapter *adapter)
                        if (dma_watchdog_shutdown_poll_result(adapter) == 1)
                                break;
                } while (--i);
+       }
 
-               if (i) {
-                       pci_free_consistent(adapter->pdev,
-                                   NETXEN_HOST_DUMMY_DMA_SIZE,
-                                   adapter->dummy_dma.addr,
-                                   adapter->dummy_dma.phys_addr);
-                       adapter->dummy_dma.addr = NULL;
-               } else {
-                       printk(KERN_ERR "%s: dma_watchdog_shutdown failed\n",
-                                       adapter->netdev->name);
-               }
+       if (i) {
+               pci_free_consistent(adapter->pdev,
+                           NETXEN_HOST_DUMMY_DMA_SIZE,
+                           adapter->dummy_dma.addr,
+                           adapter->dummy_dma.phys_addr);
+               adapter->dummy_dma.addr = NULL;
+       } else {
+               printk(KERN_ERR "%s: dma_watchdog_shutdown failed\n",
+                               adapter->netdev->name);
        }
 }