提交 83821a07 编写于 作者: D Dhananjay Phadke 提交者: Jeff Garzik

netxen: fix cmd ring init

Initialize producer and consumer indices during netdev open(), only
for old firmware/chip.
Signed-off-by: NDhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
上级 d71e1be8
...@@ -702,13 +702,10 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -702,13 +702,10 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
adapter->status &= ~NETXEN_NETDEV_STATUS; adapter->status &= ~NETXEN_NETDEV_STATUS;
adapter->rx_csum = 1; adapter->rx_csum = 1;
adapter->mc_enabled = 0; adapter->mc_enabled = 0;
if (NX_IS_REVISION_P3(revision_id)) { if (NX_IS_REVISION_P3(revision_id))
adapter->max_mc_count = 38; adapter->max_mc_count = 38;
adapter->max_rds_rings = 2; else
} else {
adapter->max_mc_count = 16; adapter->max_mc_count = 16;
adapter->max_rds_rings = 3;
}
netdev->open = netxen_nic_open; netdev->open = netxen_nic_open;
netdev->stop = netxen_nic_close; netdev->stop = netxen_nic_close;
...@@ -781,10 +778,6 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -781,10 +778,6 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if (adapter->portnum == 0) if (adapter->portnum == 0)
first_driver = 1; first_driver = 1;
} }
adapter->crb_addr_cmd_producer = crb_cmd_producer[adapter->portnum];
adapter->crb_addr_cmd_consumer = crb_cmd_consumer[adapter->portnum];
netxen_nic_update_cmd_producer(adapter, 0);
netxen_nic_update_cmd_consumer(adapter, 0);
if (first_driver) { if (first_driver) {
first_boot = adapter->pci_read_normalize(adapter, first_boot = adapter->pci_read_normalize(adapter,
...@@ -1055,6 +1048,11 @@ static int netxen_nic_open(struct net_device *netdev) ...@@ -1055,6 +1048,11 @@ static int netxen_nic_open(struct net_device *netdev)
return -EIO; return -EIO;
} }
if (adapter->fw_major < 4)
adapter->max_rds_rings = 3;
else
adapter->max_rds_rings = 2;
err = netxen_alloc_sw_resources(adapter); err = netxen_alloc_sw_resources(adapter);
if (err) { if (err) {
printk(KERN_ERR "%s: Error in setting sw resources\n", printk(KERN_ERR "%s: Error in setting sw resources\n",
...@@ -1076,10 +1074,10 @@ static int netxen_nic_open(struct net_device *netdev) ...@@ -1076,10 +1074,10 @@ static int netxen_nic_open(struct net_device *netdev)
crb_cmd_producer[adapter->portnum]; crb_cmd_producer[adapter->portnum];
adapter->crb_addr_cmd_consumer = adapter->crb_addr_cmd_consumer =
crb_cmd_consumer[adapter->portnum]; crb_cmd_consumer[adapter->portnum];
}
netxen_nic_update_cmd_producer(adapter, 0); netxen_nic_update_cmd_producer(adapter, 0);
netxen_nic_update_cmd_consumer(adapter, 0); netxen_nic_update_cmd_consumer(adapter, 0);
}
for (ctx = 0; ctx < MAX_RCV_CTX; ++ctx) { for (ctx = 0; ctx < MAX_RCV_CTX; ++ctx) {
for (ring = 0; ring < adapter->max_rds_rings; ring++) for (ring = 0; ring < adapter->max_rds_rings; ring++)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册