aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/netxen
diff options
context:
space:
mode:
authorDhananjay Phadke <dhananjay@netxen.com>2008-08-01 06:14:58 -0400
committerJeff Garzik <jgarzik@redhat.com>2008-08-07 02:11:09 -0400
commit83821a078a1617e120d76954f455204cec78fe9d (patch)
treeadc9a2ac5fb20fd95d7269290362c9625e202d58 /drivers/net/netxen
parentd71e1be8edd355668a12a18660da03ae993dd9df (diff)
netxen: fix cmd ring init
Initialize producer and consumer indices during netdev open(), only for old firmware/chip. Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/net/netxen')
-rw-r--r--drivers/net/netxen/netxen_nic_main.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c
index 320d010678cd..311a4bdfa855 100644
--- a/drivers/net/netxen/netxen_nic_main.c
+++ b/drivers/net/netxen/netxen_nic_main.c
@@ -702,13 +702,10 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
702 adapter->status &= ~NETXEN_NETDEV_STATUS; 702 adapter->status &= ~NETXEN_NETDEV_STATUS;
703 adapter->rx_csum = 1; 703 adapter->rx_csum = 1;
704 adapter->mc_enabled = 0; 704 adapter->mc_enabled = 0;
705 if (NX_IS_REVISION_P3(revision_id)) { 705 if (NX_IS_REVISION_P3(revision_id))
706 adapter->max_mc_count = 38; 706 adapter->max_mc_count = 38;
707 adapter->max_rds_rings = 2; 707 else
708 } else {
709 adapter->max_mc_count = 16; 708 adapter->max_mc_count = 16;
710 adapter->max_rds_rings = 3;
711 }
712 709
713 netdev->open = netxen_nic_open; 710 netdev->open = netxen_nic_open;
714 netdev->stop = netxen_nic_close; 711 netdev->stop = netxen_nic_close;
@@ -781,10 +778,6 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
781 if (adapter->portnum == 0) 778 if (adapter->portnum == 0)
782 first_driver = 1; 779 first_driver = 1;
783 } 780 }
784 adapter->crb_addr_cmd_producer = crb_cmd_producer[adapter->portnum];
785 adapter->crb_addr_cmd_consumer = crb_cmd_consumer[adapter->portnum];
786 netxen_nic_update_cmd_producer(adapter, 0);
787 netxen_nic_update_cmd_consumer(adapter, 0);
788 781
789 if (first_driver) { 782 if (first_driver) {
790 first_boot = adapter->pci_read_normalize(adapter, 783 first_boot = adapter->pci_read_normalize(adapter,
@@ -1055,6 +1048,11 @@ static int netxen_nic_open(struct net_device *netdev)
1055 return -EIO; 1048 return -EIO;
1056 } 1049 }
1057 1050
1051 if (adapter->fw_major < 4)
1052 adapter->max_rds_rings = 3;
1053 else
1054 adapter->max_rds_rings = 2;
1055
1058 err = netxen_alloc_sw_resources(adapter); 1056 err = netxen_alloc_sw_resources(adapter);
1059 if (err) { 1057 if (err) {
1060 printk(KERN_ERR "%s: Error in setting sw resources\n", 1058 printk(KERN_ERR "%s: Error in setting sw resources\n",
@@ -1076,10 +1074,10 @@ static int netxen_nic_open(struct net_device *netdev)
1076 crb_cmd_producer[adapter->portnum]; 1074 crb_cmd_producer[adapter->portnum];
1077 adapter->crb_addr_cmd_consumer = 1075 adapter->crb_addr_cmd_consumer =
1078 crb_cmd_consumer[adapter->portnum]; 1076 crb_cmd_consumer[adapter->portnum];
1079 }
1080 1077
1081 netxen_nic_update_cmd_producer(adapter, 0); 1078 netxen_nic_update_cmd_producer(adapter, 0);
1082 netxen_nic_update_cmd_consumer(adapter, 0); 1079 netxen_nic_update_cmd_consumer(adapter, 0);
1080 }
1083 1081
1084 for (ctx = 0; ctx < MAX_RCV_CTX; ++ctx) { 1082 for (ctx = 0; ctx < MAX_RCV_CTX; ++ctx) {
1085 for (ring = 0; ring < adapter->max_rds_rings; ring++) 1083 for (ring = 0; ring < adapter->max_rds_rings; ring++)