diff options
author | Dhananjay Phadke <dhananjay@netxen.com> | 2008-08-01 06:14:58 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2008-08-07 02:11:09 -0400 |
commit | 83821a078a1617e120d76954f455204cec78fe9d (patch) | |
tree | adc9a2ac5fb20fd95d7269290362c9625e202d58 /drivers/net/netxen | |
parent | d71e1be8edd355668a12a18660da03ae993dd9df (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.c | 22 |
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++) |