Mercurial > illumos > illumos-gate
annotate usr/src/uts/common/io/ntxn/unm_gem.c @ 7956:59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
6472698 NetXen 1Gb/10Gb nic driver
author | lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM> |
---|---|
date | Tue, 28 Oct 2008 10:06:13 +0800 |
parents | |
children | 5dca9cd6354a |
rev | line source |
---|---|
7956
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2 * CDDL HEADER START |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
3 * |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
4 * The contents of this file are subject to the terms of the |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
5 * Common Development and Distribution License (the "License"). |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
6 * You may not use this file except in compliance with the License. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
7 * |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
9 * or http://www.opensolaris.org/os/licensing. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
10 * See the License for the specific language governing permissions |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
11 * and limitations under the License. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
12 * |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
13 * When distributing Covered Code, include this CDDL HEADER in each |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
15 * If applicable, add the following below this CDDL HEADER, with the |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
16 * fields enclosed by brackets "[]" replaced with your own identifying |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
17 * information: Portions Copyright [yyyy] [name of copyright owner] |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
18 * |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
19 * CDDL HEADER END |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
20 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
21 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
22 * Copyright 2008 NetXen, Inc. All rights reserved. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
23 * Use is subject to license terms. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
24 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
25 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
26 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
27 * Use is subject to license terms. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
28 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
29 #include <sys/types.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
30 #include <sys/conf.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
31 #include <sys/debug.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
32 #include <sys/stropts.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
33 #include <sys/stream.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
34 #include <sys/strlog.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
35 #include <sys/kmem.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
36 #include <sys/stat.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
37 #include <sys/kstat.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
38 #include <sys/vtrace.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
39 #include <sys/dlpi.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
40 #include <sys/strsun.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
41 #include <sys/ethernet.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
42 #include <sys/modctl.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
43 #include <sys/errno.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
44 #include <sys/dditypes.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
45 #include <sys/ddi.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
46 #include <sys/sunddi.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
47 #include <sys/sysmacros.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
48 #include <sys/pci.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
49 #include <sys/ddi_intr.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
50 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
51 #include "unm_nic.h" |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
52 #include "unm_nic_hw.h" |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
53 #include "unm_brdcfg.h" |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
54 #include "nic_cmn.h" |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
55 #include "nic_phan_reg.h" |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
56 #include "unm_nic_ioctl.h" |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
57 #include "nx_hw_pci_regs.h" |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
58 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
59 char ident[] = "Netxen nic driver v" UNM_NIC_VERSIONID; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
60 char unm_nic_driver_name[] = "ntxn"; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
61 int verbmsg = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
62 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
63 static char txbcopythreshold_propname[] = "tx_bcopy_threshold"; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
64 static char rxbcopythreshold_propname[] = "rx_bcopy_threshold"; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
65 static char rxringsize_propname[] = "rx_ring_size"; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
66 static char jumborxringsize_propname[] = "jumbo_rx_ring_size"; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
67 static char txringsize_propname[] = "tx_ring_size"; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
68 static char defaultmtu_propname[] = "default_mtu"; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
69 static char dmesg_propname[] = "verbose_driver"; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
70 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
71 #define STRUCT_COPY(a, b) bcopy(&(b), &(a), sizeof (a)) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
72 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
73 extern int unm_register_mac(unm_adapter *adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
74 extern void unm_fini_kstats(unm_adapter* adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
75 extern void unm_nic_remove(unm_adapter *adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
76 extern int unm_nic_suspend(unm_adapter *); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
77 extern uint_t unm_intr(caddr_t, caddr_t); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
78 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
79 /* Data access requirements. */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
80 static struct ddi_device_acc_attr unm_dev_attr = { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
81 DDI_DEVICE_ATTR_V0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
82 DDI_STRUCTURE_LE_ACC, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
83 DDI_STRICTORDER_ACC |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
84 }; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
85 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
86 static struct ddi_device_acc_attr unm_buf_attr = { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
87 DDI_DEVICE_ATTR_V0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
88 DDI_NEVERSWAP_ACC, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
89 DDI_STRICTORDER_ACC |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
90 }; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
91 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
92 static ddi_dma_attr_t unm_dma_attr_desc = { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
93 DMA_ATTR_V0, /* dma_attr_version */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
94 0, /* dma_attr_addr_lo */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
95 0xffffffffull, /* dma_attr_addr_hi */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
96 0x000fffffull, /* dma_attr_count_max */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
97 4096, /* dma_attr_align */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
98 0x000fffffull, /* dma_attr_burstsizes */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
99 4, /* dma_attr_minxfer */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
100 0x003fffffull, /* dma_attr_maxxfer */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
101 0xffffffffull, /* dma_attr_seg */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
102 1, /* dma_attr_sgllen */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
103 1, /* dma_attr_granular */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
104 0 /* dma_attr_flags */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
105 }; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
106 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
107 static ddi_dma_attr_t unm_dma_attr_rxbuf = { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
108 DMA_ATTR_V0, /* dma_attr_version */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
109 0, /* dma_attr_addr_lo */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
110 0x7ffffffffULL, /* dma_attr_addr_hi */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
111 0xffffull, /* dma_attr_count_max */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
112 4096, /* dma_attr_align */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
113 0xfff8ull, /* dma_attr_burstsizes */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
114 1, /* dma_attr_minxfer */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
115 0xffffffffull, /* dma_attr_maxxfer */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
116 0xffffull, /* dma_attr_seg */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
117 1, /* dma_attr_sgllen */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
118 1, /* dma_attr_granular */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
119 0 /* dma_attr_flags */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
120 }; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
121 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
122 static ddi_dma_attr_t unm_dma_attr_cmddesc = { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
123 DMA_ATTR_V0, /* dma_attr_version */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
124 0, /* dma_attr_addr_lo */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
125 0x7ffffffffULL, /* dma_attr_addr_hi */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
126 0xffffull, /* dma_attr_count_max */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
127 1, /* dma_attr_align */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
128 0xfff8ull, /* dma_attr_burstsizes */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
129 1, /* dma_attr_minxfer */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
130 0xffff0ull, /* dma_attr_maxxfer */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
131 0xffffull, /* dma_attr_seg */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
132 16, /* dma_attr_sgllen */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
133 1, /* dma_attr_granular */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
134 0 /* dma_attr_flags */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
135 }; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
136 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
137 static struct nx_legacy_intr_set legacy_intr[] = NX_LEGACY_INTR_CONFIG; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
138 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
139 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
140 check_hw_init(struct unm_adapter_s *adapter) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
141 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
142 u32 val; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
143 int ret = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
144 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
145 adapter->unm_nic_hw_read_wx(adapter, UNM_CAM_RAM(0x1fc), &val, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
146 if (val == 0x55555555) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
147 /* This is the first boot after power up */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
148 adapter->unm_nic_hw_read_wx(adapter, UNM_ROMUSB_GLB_SW_RESET, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
149 &val, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
150 if (val != 0x80000f) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
151 ret = -1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
152 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
153 if (NX_IS_REVISION_P2(adapter->ahw.revision_id)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
154 /* Start P2 boot loader */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
155 adapter->unm_nic_pci_write_normalize(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
156 UNM_CAM_RAM(0x1fc), UNM_BDINFO_MAGIC); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
157 adapter->unm_nic_pci_write_normalize(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
158 UNM_ROMUSB_GLB_PEGTUNE_DONE, 1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
159 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
160 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
161 return (ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
162 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
163 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
164 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
165 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
166 unm_get_flash_block(unm_adapter *adapter, int base, int size, uint32_t *buf) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
167 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
168 int i, addr; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
169 uint32_t *ptr32; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
170 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
171 addr = base; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
172 ptr32 = buf; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
173 for (i = 0; i < size / sizeof (uint32_t); i++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
174 if (rom_fast_read(adapter, addr, (int *)ptr32) == -1) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
175 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
176 ptr32++; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
177 addr += sizeof (uint32_t); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
178 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
179 if ((char *)buf + size > (char *)ptr32) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
180 int local; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
181 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
182 if (rom_fast_read(adapter, addr, &local) == -1) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
183 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
184 (void) memcpy(ptr32, &local, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
185 (uintptr_t)((char *)buf + size) - (uintptr_t)(char *)ptr32); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
186 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
187 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
188 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
189 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
190 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
191 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
192 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
193 get_flash_mac_addr(struct unm_adapter_s *adapter, u64 mac[]) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
194 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
195 uint32_t *pmac = (uint32_t *)&mac[0]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
196 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
197 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
198 uint32_t temp, crbaddr; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
199 uint16_t *pmac16 = (uint16_t *)pmac; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
200 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
201 // FOR P3, read from CAM RAM |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
202 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
203 int pci_func = adapter->ahw.pci_func; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
204 pmac16 += (4*pci_func); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
205 crbaddr = CRB_MAC_BLOCK_START + (4 * ((pci_func/2) * 3)) + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
206 (4 * (pci_func & 1)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
207 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
208 adapter->unm_nic_hw_read_wx(adapter, crbaddr, &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
209 if (pci_func & 1) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
210 *pmac16++ = (temp >> 16); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
211 adapter->unm_nic_hw_read_wx(adapter, crbaddr+4, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
212 &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
213 *pmac16++ = (temp & 0xffff); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
214 *pmac16++ = (temp >> 16); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
215 *pmac16 = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
216 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
217 *pmac16++ = (temp & 0xffff); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
218 *pmac16++ = (temp >> 16); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
219 adapter->unm_nic_hw_read_wx(adapter, crbaddr+4, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
220 &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
221 *pmac16++ = (temp & 0xffff); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
222 *pmac16 = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
223 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
224 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
225 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
226 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
227 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
228 if (unm_get_flash_block(adapter, USER_START + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
229 offsetof(unm_user_info_t, mac_addr), FLASH_NUM_PORTS * sizeof (U64), |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
230 pmac) == -1) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
231 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
232 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
233 if (*mac == ~0ULL) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
234 if (unm_get_flash_block(adapter, USER_START_OLD + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
235 offsetof(unm_old_user_info_t, mac_addr), |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
236 FLASH_NUM_PORTS * sizeof (U64), pmac) == -1) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
237 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
238 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
239 if (*mac == ~0ULL) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
240 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
241 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
242 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
243 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
244 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
245 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
246 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
247 is_flash_supported(unm_adapter *adapter) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
248 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
249 int locs[] = { 0, 0x4, 0x100, 0x4000, 0x4128 }; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
250 int addr, val01, val02, i, j; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
251 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
252 /* if the flash size less than 4Mb, make huge war cry and die */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
253 for (j = 1; j < 4; j++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
254 addr = j * 0x100000; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
255 for (i = 0; i < (sizeof (locs) / sizeof (locs[0])); i++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
256 if (rom_fast_read(adapter, locs[i], &val01) == 0 && |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
257 rom_fast_read(adapter, (addr + locs[i]), |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
258 &val02) == 0) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
259 if (val01 == val02) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
260 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
261 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
262 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
263 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
264 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
265 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
266 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
267 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
268 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
269 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
270 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
271 unm_initialize_dummy_dma(unm_adapter *adapter) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
272 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
273 uint32_t hi, lo, temp; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
274 ddi_dma_cookie_t cookie; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
275 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
276 if (unm_pci_alloc_consistent(adapter, UNM_HOST_DUMMY_DMA_SIZE, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
277 (caddr_t *)&adapter->dummy_dma.addr, &cookie, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
278 &adapter->dummy_dma.dma_handle, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
279 &adapter->dummy_dma.acc_handle) != DDI_SUCCESS) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
280 cmn_err(CE_WARN, "%s%d: Unable to alloc dummy dma buf\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
281 adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
282 return (DDI_ENOMEM); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
283 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
284 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
285 adapter->dummy_dma.phys_addr = cookie.dmac_laddress; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
286 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
287 hi = (adapter->dummy_dma.phys_addr >> 32) & 0xffffffff; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
288 lo = adapter->dummy_dma.phys_addr & 0xffffffff; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
289 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
290 UNM_READ_LOCK(&adapter->adapter_lock); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
291 adapter->unm_nic_hw_write_wx(adapter, CRB_HOST_DUMMY_BUF_ADDR_HI, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
292 &hi, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
293 adapter->unm_nic_hw_write_wx(adapter, CRB_HOST_DUMMY_BUF_ADDR_LO, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
294 &lo, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
295 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
296 temp = DUMMY_BUF_INIT; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
297 adapter->unm_nic_hw_write_wx(adapter, CRB_HOST_DUMMY_BUF, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
298 &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
299 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
300 UNM_READ_UNLOCK(&adapter->adapter_lock); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
301 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
302 return (DDI_SUCCESS); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
303 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
304 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
305 void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
306 unm_free_dummy_dma(unm_adapter *adapter) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
307 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
308 if (adapter->dummy_dma.addr) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
309 unm_pci_free_consistent(&adapter->dummy_dma.dma_handle, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
310 &adapter->dummy_dma.acc_handle); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
311 adapter->dummy_dma.addr = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
312 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
313 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
314 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
315 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
316 unm_pci_cfg_init(unm_adapter *adapter) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
317 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
318 hardware_context *hwcontext; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
319 ddi_acc_handle_t pci_cfg_hdl; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
320 int *reg_options; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
321 dev_info_t *dip; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
322 uint_t noptions; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
323 int ret; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
324 uint16_t vendor_id, pci_cmd_word; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
325 uint8_t base_class, sub_class, prog_class; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
326 uint32_t pexsizes; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
327 struct nx_legacy_intr_set *legacy_intrp; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
328 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
329 hwcontext = &adapter->ahw; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
330 pci_cfg_hdl = adapter->pci_cfg_handle; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
331 dip = adapter->dip; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
332 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
333 vendor_id = pci_config_get16(pci_cfg_hdl, PCI_CONF_VENID); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
334 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
335 if (vendor_id != 0x4040) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
336 cmn_err(CE_WARN, "%s%d: vendor id %x not 0x4040\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
337 adapter->name, adapter->instance, vendor_id); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
338 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
339 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
340 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
341 ret = ddi_prop_lookup_int_array(DDI_DEV_T_ANY, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
342 dip, 0, "reg", ®_options, &noptions); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
343 if (ret != DDI_PROP_SUCCESS) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
344 cmn_err(CE_WARN, "%s%d: Could not determine reg property\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
345 adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
346 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
347 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
348 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
349 hwcontext->pci_func = (reg_options[0] >> 8) & 0x7; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
350 ddi_prop_free(reg_options); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
351 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
352 base_class = pci_config_get8(pci_cfg_hdl, PCI_CONF_BASCLASS); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
353 sub_class = pci_config_get8(pci_cfg_hdl, PCI_CONF_SUBCLASS); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
354 prog_class = pci_config_get8(pci_cfg_hdl, PCI_CONF_PROGCLASS); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
355 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
356 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
357 * Need this check so that MEZZ card mgmt interface ntxn0 could fail |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
358 * attach & return and proceed to next interfaces ntxn1 and ntxn2 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
359 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
360 if ((base_class != 0x02) || (sub_class != 0) || (prog_class != 0)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
361 cmn_err(CE_WARN, "%s%d: Base/sub/prog class problem %d/%d/%d\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
362 adapter->name, adapter->instance, base_class, sub_class, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
363 prog_class); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
364 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
365 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
366 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
367 hwcontext->revision_id = pci_config_get8(pci_cfg_hdl, PCI_CONF_REVID); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
368 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
369 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
370 * Refuse to work with dubious P3 cards. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
371 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
372 if ((hwcontext->revision_id >= NX_P3_A0) && |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
373 (hwcontext->revision_id < NX_P3_B1)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
374 cmn_err(CE_WARN, "%s%d: NetXen chip revs between 0x%x-0x%x " |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
375 "is unsupported\n", adapter->name, adapter->instance, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
376 NX_P3_A0, NX_P3_B0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
377 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
378 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
379 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
380 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
381 * Save error reporting settings; clear [19:16] error status bits. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
382 * Set max read request [14:12] to 0 for 128 bytes. Set max payload |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
383 * size[7:5] to 0 for for 128 bytes. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
384 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
385 if (NX_IS_REVISION_P2(hwcontext->revision_id)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
386 pexsizes = pci_config_get32(pci_cfg_hdl, 0xd8); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
387 pexsizes &= 7; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
388 pexsizes |= 0xF0000; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
389 pci_config_put32(pci_cfg_hdl, 0xd8, pexsizes); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
390 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
391 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
392 pci_cmd_word = pci_config_get16(pci_cfg_hdl, PCI_CONF_COMM); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
393 pci_cmd_word |= (PCI_COMM_INTX_DISABLE | PCI_COMM_SERR_ENABLE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
394 pci_config_put16(pci_cfg_hdl, PCI_CONF_COMM, pci_cmd_word); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
395 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
396 if (hwcontext->revision_id >= NX_P3_B0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
397 legacy_intrp = &legacy_intr[hwcontext->pci_func]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
398 else |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
399 legacy_intrp = &legacy_intr[0]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
400 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
401 adapter->legacy_intr.int_vec_bit = legacy_intrp->int_vec_bit; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
402 adapter->legacy_intr.tgt_status_reg = legacy_intrp->tgt_status_reg; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
403 adapter->legacy_intr.tgt_mask_reg = legacy_intrp->tgt_mask_reg; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
404 adapter->legacy_intr.pci_int_reg = legacy_intrp->pci_int_reg; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
405 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
406 return (DDI_SUCCESS); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
407 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
408 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
409 void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
410 unm_free_tx_dmahdl(unm_adapter *adapter) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
411 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
412 int i; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
413 unm_dmah_node_t *nodep; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
414 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
415 mutex_enter(&adapter->tx_lock); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
416 nodep = &adapter->tx_dma_hdls[0]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
417 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
418 for (i = 0; i < adapter->MaxTxDescCount + EXTRA_HANDLES; i++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
419 if (nodep->dmahdl != NULL) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
420 ddi_dma_free_handle(&nodep->dmahdl); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
421 nodep->dmahdl = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
422 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
423 nodep->next = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
424 nodep++; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
425 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
426 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
427 adapter->dmahdl_pool = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
428 adapter->freehdls = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
429 mutex_exit(&adapter->tx_lock); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
430 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
431 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
432 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
433 unm_alloc_tx_dmahdl(unm_adapter *adapter) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
434 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
435 int i; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
436 unm_dmah_node_t *nodep = &adapter->tx_dma_hdls[0]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
437 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
438 mutex_enter(&adapter->tx_lock); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
439 for (i = 0; i < adapter->MaxTxDescCount + EXTRA_HANDLES; i++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
440 if (ddi_dma_alloc_handle(adapter->dip, &unm_dma_attr_cmddesc, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
441 DDI_DMA_DONTWAIT, NULL, &nodep->dmahdl) != DDI_SUCCESS) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
442 mutex_exit(&adapter->tx_lock); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
443 goto alloc_hdl_fail; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
444 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
445 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
446 if (i > 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
447 nodep->next = nodep - 1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
448 nodep++; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
449 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
450 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
451 adapter->dmahdl_pool = nodep - 1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
452 adapter->freehdls = i; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
453 mutex_exit(&adapter->tx_lock); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
454 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
455 return (DDI_SUCCESS); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
456 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
457 alloc_hdl_fail: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
458 unm_free_tx_dmahdl(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
459 cmn_err(CE_WARN, "%s%d: Failed transmit ring dma handle allocation\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
460 adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
461 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
462 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
463 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
464 static void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
465 unm_free_dma_mem(dma_area_t *dma_p) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
466 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
467 if (dma_p->dma_hdl != NULL) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
468 if (dma_p->ncookies) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
469 (void) ddi_dma_unbind_handle(dma_p->dma_hdl); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
470 dma_p->ncookies = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
471 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
472 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
473 if (dma_p->acc_hdl != NULL) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
474 ddi_dma_mem_free(&dma_p->acc_hdl); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
475 dma_p->acc_hdl = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
476 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
477 if (dma_p->dma_hdl != NULL) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
478 ddi_dma_free_handle(&dma_p->dma_hdl); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
479 dma_p->dma_hdl = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
480 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
481 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
482 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
483 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
484 unm_alloc_dma_mem(unm_adapter *adapter, int size, uint_t dma_flag, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
485 ddi_dma_attr_t *dma_attr_p, dma_area_t *dma_p) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
486 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
487 int ret; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
488 caddr_t vaddr; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
489 size_t actual_size; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
490 ddi_dma_cookie_t cookie; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
491 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
492 ret = ddi_dma_alloc_handle(adapter->dip, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
493 dma_attr_p, DDI_DMA_DONTWAIT, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
494 NULL, &dma_p->dma_hdl); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
495 if (ret != DDI_SUCCESS) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
496 cmn_err(CE_WARN, "%s%d: Failed ddi_dma_alloc_handle\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
497 adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
498 goto dma_mem_fail; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
499 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
500 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
501 ret = ddi_dma_mem_alloc(dma_p->dma_hdl, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
502 size, &adapter->gc_attr_desc, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
503 dma_flag & (DDI_DMA_STREAMING | DDI_DMA_CONSISTENT), |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
504 DDI_DMA_DONTWAIT, NULL, &vaddr, &actual_size, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
505 &dma_p->acc_hdl); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
506 if (ret != DDI_SUCCESS) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
507 cmn_err(CE_WARN, "%s%d: ddi_dma_mem_alloc() failed\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
508 adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
509 goto dma_mem_fail; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
510 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
511 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
512 if (actual_size < size) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
513 cmn_err(CE_WARN, "%s%d: ddi_dma_mem_alloc() allocated small\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
514 adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
515 goto dma_mem_fail; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
516 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
517 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
518 ret = ddi_dma_addr_bind_handle(dma_p->dma_hdl, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
519 NULL, vaddr, size, dma_flag, DDI_DMA_DONTWAIT, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
520 NULL, &cookie, &dma_p->ncookies); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
521 if (ret != DDI_DMA_MAPPED || dma_p->ncookies != 1) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
522 cmn_err(CE_WARN, "%s%d: ddi_dma_addr_bind_handle() failed, " |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
523 "%d, %d\n", adapter->name, adapter->instance, ret, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
524 dma_p->ncookies); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
525 goto dma_mem_fail; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
526 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
527 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
528 dma_p->dma_addr = cookie.dmac_laddress; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
529 dma_p->vaddr = vaddr; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
530 (void) memset(vaddr, 0, size); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
531 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
532 return (DDI_SUCCESS); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
533 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
534 dma_mem_fail: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
535 unm_free_dma_mem(dma_p); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
536 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
537 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
538 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
539 void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
540 unm_free_tx_buffers(unm_adapter *adapter) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
541 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
542 int i; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
543 dma_area_t *dma_p; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
544 struct unm_cmd_buffer *cmd_buf; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
545 unm_dmah_node_t *nodep; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
546 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
547 cmd_buf = &adapter->cmd_buf_arr[0]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
548 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
549 for (i = 0; i < adapter->MaxTxDescCount; i++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
550 dma_p = &cmd_buf->dma_area; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
551 unm_free_dma_mem(dma_p); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
552 nodep = cmd_buf->head; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
553 while (nodep != NULL) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
554 (void) ddi_dma_unbind_handle(nodep->dmahdl); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
555 nodep = nodep->next; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
556 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
557 if (cmd_buf->msg != NULL) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
558 freemsg(cmd_buf->msg); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
559 cmd_buf++; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
560 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
561 adapter->freecmds = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
562 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
563 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
564 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
565 unm_alloc_tx_buffers(unm_adapter *adapter) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
566 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
567 int i, ret, size, allocated = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
568 dma_area_t *dma_p; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
569 struct unm_cmd_buffer *cmd_buf; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
570 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
571 cmd_buf = &adapter->cmd_buf_arr[0]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
572 size = adapter->maxmtu; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
573 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
574 for (i = 0; i < adapter->MaxTxDescCount; i++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
575 dma_p = &cmd_buf->dma_area; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
576 ret = unm_alloc_dma_mem(adapter, size, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
577 DDI_DMA_WRITE | DDI_DMA_STREAMING, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
578 &unm_dma_attr_rxbuf, dma_p); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
579 if (ret != DDI_SUCCESS) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
580 goto alloc_tx_buffer_fail; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
581 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
582 allocated++; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
583 cmd_buf++; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
584 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
585 adapter->freecmds = adapter->MaxTxDescCount; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
586 return (DDI_SUCCESS); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
587 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
588 alloc_tx_buffer_fail: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
589 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
590 cmd_buf = &adapter->cmd_buf_arr[0]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
591 for (i = 0; i < allocated; i++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
592 dma_p = &cmd_buf->dma_area; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
593 unm_free_dma_mem(dma_p); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
594 cmd_buf++; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
595 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
596 cmn_err(CE_WARN, "%s%d: Failed transmit ring memory allocation\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
597 adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
598 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
599 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
600 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
601 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
602 * Called by freemsg() to "free" the resource. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
603 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
604 static void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
605 unm_rx_buffer_recycle(char *arg) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
606 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
607 unm_rx_buffer_t *rx_buffer = (unm_rx_buffer_t *)(uintptr_t)arg; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
608 unm_adapter *adapter = rx_buffer->adapter; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
609 unm_rcv_desc_ctx_t *rcv_desc = rx_buffer->rcv_desc; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
610 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
611 rx_buffer->mp = desballoc(rx_buffer->dma_info.vaddr, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
612 rcv_desc->dma_size, 0, &rx_buffer->rx_recycle); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
613 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
614 if (rx_buffer->mp == NULL) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
615 adapter->stats.desballocfailed++; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
616 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
617 mutex_enter(rcv_desc->recycle_lock); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
618 rx_buffer->next = rcv_desc->recycle_list; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
619 rcv_desc->recycle_list = rx_buffer; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
620 rcv_desc->rx_buf_recycle++; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
621 mutex_exit(rcv_desc->recycle_lock); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
622 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
623 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
624 void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
625 unm_destroy_rx_ring(unm_rcv_desc_ctx_t *rcv_desc) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
626 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
627 uint32_t i, total_buf; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
628 unm_rx_buffer_t *buf_pool; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
629 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
630 total_buf = rcv_desc->rx_buf_total; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
631 buf_pool = rcv_desc->rx_buf_pool; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
632 for (i = 0; i < total_buf; i++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
633 if (buf_pool->mp != NULL) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
634 freemsg(buf_pool->mp); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
635 unm_free_dma_mem(&buf_pool->dma_info); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
636 buf_pool++; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
637 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
638 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
639 kmem_free(rcv_desc->rx_buf_pool, sizeof (unm_rx_buffer_t) * total_buf); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
640 rcv_desc->rx_buf_pool = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
641 rcv_desc->pool_list = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
642 rcv_desc->recycle_list = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
643 rcv_desc->rx_buf_free = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
644 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
645 mutex_destroy(rcv_desc->pool_lock); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
646 mutex_destroy(rcv_desc->recycle_lock); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
647 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
648 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
649 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
650 unm_create_rx_ring(unm_adapter *adapter, unm_rcv_desc_ctx_t *rcv_desc) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
651 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
652 int i, ret, allocate = 0, sreoff; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
653 uint32_t total_buf; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
654 dma_area_t *dma_info; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
655 unm_rx_buffer_t *rx_buffer; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
656 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
657 sreoff = adapter->ahw.cut_through ? 0 : IP_ALIGNMENT_BYTES; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
658 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
659 /* temporarily set the total rx buffers two times of MaxRxDescCount */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
660 total_buf = rcv_desc->rx_buf_total = rcv_desc->MaxRxDescCount * 2; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
661 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
662 rcv_desc->rx_buf_pool = kmem_zalloc(sizeof (unm_rx_buffer_t) * |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
663 total_buf, KM_SLEEP); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
664 rx_buffer = rcv_desc->rx_buf_pool; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
665 for (i = 0; i < total_buf; i++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
666 dma_info = &rx_buffer->dma_info; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
667 ret = unm_alloc_dma_mem(adapter, rcv_desc->buf_size, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
668 DDI_DMA_READ | DDI_DMA_STREAMING, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
669 &unm_dma_attr_rxbuf, dma_info); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
670 if (ret != DDI_SUCCESS) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
671 goto alloc_mem_failed; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
672 else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
673 allocate++; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
674 dma_info->vaddr = (void *) ((char *)dma_info->vaddr + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
675 sreoff); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
676 dma_info->dma_addr += sreoff; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
677 rx_buffer->rx_recycle.free_func = |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
678 unm_rx_buffer_recycle; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
679 rx_buffer->rx_recycle.free_arg = (caddr_t)rx_buffer; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
680 rx_buffer->next = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
681 rx_buffer->mp = desballoc(dma_info->vaddr, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
682 rcv_desc->dma_size, 0, &rx_buffer->rx_recycle); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
683 if (rx_buffer->mp == NULL) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
684 adapter->stats.desballocfailed++; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
685 rx_buffer->rcv_desc = rcv_desc; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
686 rx_buffer->adapter = adapter; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
687 rx_buffer++; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
688 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
689 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
690 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
691 for (i = 0; i < (total_buf - 1); i++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
692 rcv_desc->rx_buf_pool[i].next = &rcv_desc->rx_buf_pool[i + 1]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
693 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
694 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
695 rcv_desc->pool_list = rcv_desc->rx_buf_pool; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
696 rcv_desc->recycle_list = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
697 rcv_desc->rx_buf_free = total_buf; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
698 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
699 mutex_init(rcv_desc->pool_lock, NULL, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
700 MUTEX_DRIVER, (DDI_INTR_PRI(adapter->intr_pri))); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
701 mutex_init(rcv_desc->recycle_lock, NULL, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
702 MUTEX_DRIVER, (DDI_INTR_PRI(adapter->intr_pri))); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
703 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
704 return (DDI_SUCCESS); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
705 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
706 alloc_mem_failed: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
707 rx_buffer = rcv_desc->rx_buf_pool; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
708 for (i = 0; i < allocate; i++, rx_buffer++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
709 dma_info = &rx_buffer->dma_info; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
710 if (rx_buffer->mp != NULL) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
711 freemsg(rx_buffer->mp); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
712 unm_free_dma_mem(dma_info); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
713 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
714 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
715 kmem_free(rcv_desc->rx_buf_pool, sizeof (unm_rx_buffer_t) * total_buf); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
716 rcv_desc->rx_buf_pool = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
717 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
718 cmn_err(CE_WARN, "%s%d: Failed receive ring resource allocation\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
719 adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
720 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
721 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
722 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
723 static void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
724 unm_check_options(unm_adapter *adapter) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
725 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
726 int i, ring, tx_desc, rx_desc, rx_jdesc; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
727 unm_recv_context_t *recv_ctx; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
728 unm_rcv_desc_ctx_t *rcv_desc; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
729 uint8_t revid = adapter->ahw.revision_id; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
730 dev_info_t *dip = adapter->dip; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
731 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
732 verbmsg = ddi_prop_get_int(DDI_DEV_T_ANY, dip, DDI_PROP_DONTPASS, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
733 dmesg_propname, 0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
734 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
735 adapter->tx_bcopy_threshold = ddi_prop_get_int(DDI_DEV_T_ANY, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
736 dip, DDI_PROP_DONTPASS, txbcopythreshold_propname, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
737 UNM_TX_BCOPY_THRESHOLD); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
738 adapter->rx_bcopy_threshold = ddi_prop_get_int(DDI_DEV_T_ANY, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
739 dip, DDI_PROP_DONTPASS, rxbcopythreshold_propname, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
740 UNM_RX_BCOPY_THRESHOLD); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
741 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
742 tx_desc = ddi_prop_get_int(DDI_DEV_T_ANY, dip, DDI_PROP_DONTPASS, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
743 txringsize_propname, MAX_CMD_DESCRIPTORS_HOST); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
744 if (tx_desc >= 256 && tx_desc <= MAX_CMD_DESCRIPTORS && |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
745 !(tx_desc & (tx_desc - 1))) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
746 adapter->MaxTxDescCount = tx_desc; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
747 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
748 cmn_err(CE_WARN, "%s%d: TxRingSize defaulting to %d, since " |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
749 ".conf value is not 2 power aligned in range 256 - %d\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
750 adapter->name, adapter->instance, MAX_CMD_DESCRIPTORS_HOST, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
751 MAX_CMD_DESCRIPTORS); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
752 adapter->MaxTxDescCount = MAX_CMD_DESCRIPTORS_HOST; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
753 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
754 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
755 rx_desc = ddi_prop_get_int(DDI_DEV_T_ANY, dip, DDI_PROP_DONTPASS, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
756 rxringsize_propname, MAX_RCV_DESCRIPTORS); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
757 if (rx_desc >= NX_MIN_DRIVER_RDS_SIZE && |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
758 rx_desc <= NX_MAX_SUPPORTED_RDS_SIZE && |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
759 !(rx_desc & (rx_desc - 1))) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
760 adapter->MaxRxDescCount = rx_desc; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
761 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
762 cmn_err(CE_WARN, "%s%d: RxRingSize defaulting to %d, since " |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
763 ".conf value is not 2 power aligned in range %d - %d\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
764 adapter->name, adapter->instance, MAX_RCV_DESCRIPTORS, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
765 NX_MIN_DRIVER_RDS_SIZE, NX_MAX_SUPPORTED_RDS_SIZE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
766 adapter->MaxRxDescCount = MAX_RCV_DESCRIPTORS; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
767 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
768 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
769 rx_jdesc = ddi_prop_get_int(DDI_DEV_T_ANY, dip, DDI_PROP_DONTPASS, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
770 jumborxringsize_propname, MAX_JUMBO_RCV_DESCRIPTORS); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
771 if (rx_jdesc >= NX_MIN_DRIVER_RDS_SIZE && |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
772 rx_jdesc <= NX_MAX_SUPPORTED_JUMBO_RDS_SIZE && |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
773 !(rx_jdesc & (rx_jdesc - 1))) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
774 adapter->MaxJumboRxDescCount = rx_jdesc; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
775 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
776 cmn_err(CE_WARN, "%s%d: JumboRingSize defaulting to %d, since " |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
777 ".conf value is not 2 power aligned in range %d - %d\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
778 adapter->name, adapter->instance, MAX_JUMBO_RCV_DESCRIPTORS, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
779 NX_MIN_DRIVER_RDS_SIZE, NX_MAX_SUPPORTED_JUMBO_RDS_SIZE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
780 adapter->MaxJumboRxDescCount = MAX_JUMBO_RCV_DESCRIPTORS; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
781 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
782 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
783 adapter->MaxLroRxDescCount = MAX_LRO_RCV_DESCRIPTORS; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
784 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
785 adapter->mtu = ddi_prop_get_int(DDI_DEV_T_ANY, dip, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
786 DDI_PROP_DONTPASS, defaultmtu_propname, MTU_SIZE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
787 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
788 if (adapter->mtu < MTU_SIZE) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
789 cmn_err(CE_WARN, "Raising mtu to %d\n", MTU_SIZE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
790 adapter->mtu = MTU_SIZE; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
791 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
792 adapter->maxmtu = NX_IS_REVISION_P2(revid) ? P2_MAX_MTU : P3_MAX_MTU; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
793 if (adapter->mtu > adapter->maxmtu) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
794 cmn_err(CE_WARN, "Lowering mtu to %d\n", adapter->maxmtu); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
795 adapter->mtu = adapter->maxmtu; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
796 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
797 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
798 adapter->maxmtu += NX_MAX_ETHERHDR; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
799 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
800 for (i = 0; i < MAX_RCV_CTX; ++i) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
801 recv_ctx = &adapter->recv_ctx[i]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
802 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
803 for (ring = 0; ring < adapter->max_rds_rings; ring++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
804 rcv_desc = &recv_ctx->rcv_desc[ring]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
805 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
806 switch (RCV_DESC_TYPE(ring)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
807 case RCV_DESC_NORMAL: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
808 rcv_desc->MaxRxDescCount = |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
809 adapter->MaxRxDescCount; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
810 if (adapter->ahw.cut_through) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
811 rcv_desc->dma_size = |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
812 NX_CT_DEFAULT_RX_BUF_LEN; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
813 rcv_desc->buf_size = rcv_desc->dma_size; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
814 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
815 rcv_desc->dma_size = |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
816 NX_RX_NORMAL_BUF_MAX_LEN; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
817 rcv_desc->buf_size = |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
818 rcv_desc->dma_size + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
819 IP_ALIGNMENT_BYTES; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
820 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
821 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
822 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
823 case RCV_DESC_JUMBO: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
824 rcv_desc->MaxRxDescCount = |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
825 adapter->MaxJumboRxDescCount; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
826 if (adapter->ahw.cut_through) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
827 rcv_desc->dma_size = |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
828 rcv_desc->buf_size = |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
829 NX_P3_RX_JUMBO_BUF_MAX_LEN; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
830 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
831 if (NX_IS_REVISION_P2(revid)) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
832 rcv_desc->dma_size = |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
833 NX_P2_RX_JUMBO_BUF_MAX_LEN; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
834 else |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
835 rcv_desc->dma_size = |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
836 NX_P3_RX_JUMBO_BUF_MAX_LEN; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
837 rcv_desc->buf_size = |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
838 rcv_desc->dma_size + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
839 IP_ALIGNMENT_BYTES; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
840 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
841 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
842 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
843 case RCV_RING_LRO: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
844 rcv_desc->MaxRxDescCount = |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
845 adapter->MaxLroRxDescCount; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
846 rcv_desc->buf_size = MAX_RX_LRO_BUFFER_LENGTH; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
847 rcv_desc->dma_size = RX_LRO_DMA_MAP_LEN; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
848 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
849 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
850 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
851 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
852 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
853 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
854 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
855 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
856 static void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
857 vector128M(unm_adapter *aptr) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
858 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
859 aptr->unm_nic_pci_change_crbwindow = &unm_nic_pci_change_crbwindow_128M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
860 aptr->unm_crb_writelit_adapter = &unm_crb_writelit_adapter_128M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
861 aptr->unm_nic_hw_write_wx = &unm_nic_hw_write_wx_128M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
862 aptr->unm_nic_hw_read_wx = &unm_nic_hw_read_wx_128M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
863 aptr->unm_nic_hw_write_ioctl = &unm_nic_hw_write_ioctl_128M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
864 aptr->unm_nic_hw_read_ioctl = &unm_nic_hw_read_ioctl_128M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
865 aptr->unm_nic_pci_mem_write = &unm_nic_pci_mem_write_128M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
866 aptr->unm_nic_pci_mem_read = &unm_nic_pci_mem_read_128M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
867 aptr->unm_nic_pci_write_immediate = &unm_nic_pci_write_immediate_128M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
868 aptr->unm_nic_pci_read_immediate = &unm_nic_pci_read_immediate_128M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
869 aptr->unm_nic_pci_write_normalize = &unm_nic_pci_write_normalize_128M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
870 aptr->unm_nic_pci_read_normalize = &unm_nic_pci_read_normalize_128M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
871 aptr->unm_nic_pci_set_window = &unm_nic_pci_set_window_128M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
872 aptr->unm_nic_clear_statistics = &unm_nic_clear_statistics_128M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
873 aptr->unm_nic_fill_statistics = &unm_nic_fill_statistics_128M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
874 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
875 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
876 static void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
877 vector2M(unm_adapter *aptr) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
878 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
879 aptr->unm_nic_pci_change_crbwindow = &unm_nic_pci_change_crbwindow_2M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
880 aptr->unm_crb_writelit_adapter = &unm_crb_writelit_adapter_2M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
881 aptr->unm_nic_hw_write_wx = &unm_nic_hw_write_wx_2M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
882 aptr->unm_nic_hw_read_wx = &unm_nic_hw_read_wx_2M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
883 aptr->unm_nic_hw_write_ioctl = &unm_nic_hw_write_wx_2M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
884 aptr->unm_nic_hw_read_ioctl = &unm_nic_hw_read_wx_2M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
885 aptr->unm_nic_pci_mem_write = &unm_nic_pci_mem_write_2M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
886 aptr->unm_nic_pci_mem_read = &unm_nic_pci_mem_read_2M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
887 aptr->unm_nic_pci_write_immediate = &unm_nic_pci_write_immediate_2M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
888 aptr->unm_nic_pci_read_immediate = &unm_nic_pci_read_immediate_2M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
889 aptr->unm_nic_pci_write_normalize = &unm_nic_pci_write_normalize_2M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
890 aptr->unm_nic_pci_read_normalize = &unm_nic_pci_read_normalize_2M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
891 aptr->unm_nic_pci_set_window = &unm_nic_pci_set_window_2M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
892 aptr->unm_nic_clear_statistics = &unm_nic_clear_statistics_2M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
893 aptr->unm_nic_fill_statistics = &unm_nic_fill_statistics_2M; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
894 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
895 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
896 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
897 unm_pci_map_setup(unm_adapter *adapter) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
898 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
899 int ret; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
900 caddr_t reg_base, db_base; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
901 caddr_t mem_ptr0, mem_ptr1 = NULL, mem_ptr2 = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
902 unsigned long pci_len0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
903 unsigned long first_page_group_start, first_page_group_end; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
904 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
905 off_t regsize, dbsize = UNM_DB_MAPSIZE_BYTES; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
906 dev_info_t *dip = adapter->dip; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
907 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
908 adapter->ahw.qdr_sn_window = adapter->ahw.ddr_mn_window = -1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
909 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
910 /* map register space */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
911 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
912 ret = ddi_dev_regsize(dip, 1, ®size); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
913 if (ret != DDI_SUCCESS) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
914 cmn_err(CE_WARN, "%s%d: failed to read reg size for bar0\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
915 adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
916 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
917 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
918 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
919 ret = ddi_regs_map_setup(dip, 1, ®_base, 0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
920 regsize, &unm_dev_attr, &adapter->regs_handle); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
921 if (ret != DDI_SUCCESS) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
922 cmn_err(CE_WARN, "%s%d: failed to map registers\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
923 adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
924 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
925 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
926 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
927 mem_ptr0 = reg_base; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
928 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
929 if (regsize == UNM_PCI_128MB_SIZE) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
930 pci_len0 = FIRST_PAGE_GROUP_SIZE; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
931 mem_ptr1 = mem_ptr0 + SECOND_PAGE_GROUP_START; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
932 mem_ptr2 = mem_ptr0 + THIRD_PAGE_GROUP_START; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
933 first_page_group_start = FIRST_PAGE_GROUP_START; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
934 first_page_group_end = FIRST_PAGE_GROUP_END; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
935 vector128M(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
936 } else if (regsize == UNM_PCI_32MB_SIZE) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
937 pci_len0 = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
938 mem_ptr1 = mem_ptr0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
939 mem_ptr2 = mem_ptr0 + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
940 (THIRD_PAGE_GROUP_START - SECOND_PAGE_GROUP_START); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
941 first_page_group_start = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
942 first_page_group_end = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
943 vector128M(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
944 } else if (regsize == UNM_PCI_2MB_SIZE) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
945 pci_len0 = UNM_PCI_2MB_SIZE; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
946 first_page_group_start = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
947 first_page_group_end = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
948 adapter->ahw.ddr_mn_window = adapter->ahw.qdr_sn_window = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
949 adapter->ahw.mn_win_crb = 0x100000 + PCIX_MN_WINDOW + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
950 (adapter->ahw.pci_func * 0x20); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
951 if (adapter->ahw.pci_func < 4) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
952 adapter->ahw.ms_win_crb = 0x100000 + PCIX_SN_WINDOW + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
953 (adapter->ahw.pci_func * 0x20); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
954 else |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
955 adapter->ahw.ms_win_crb = 0x100000 + PCIX_SN_WINDOW + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
956 0xA0 + ((adapter->ahw.pci_func - 4) * 0x10); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
957 vector2M(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
958 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
959 cmn_err(CE_WARN, "%s%d: invalid pci regs map size %ld\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
960 adapter->name, adapter->instance, regsize); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
961 ddi_regs_map_free(&adapter->regs_handle); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
962 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
963 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
964 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
965 adapter->ahw.pci_base0 = (unsigned long)mem_ptr0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
966 adapter->ahw.pci_len0 = pci_len0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
967 adapter->ahw.pci_base1 = (unsigned long)mem_ptr1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
968 adapter->ahw.pci_len1 = SECOND_PAGE_GROUP_SIZE; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
969 adapter->ahw.pci_base2 = (unsigned long)mem_ptr2; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
970 adapter->ahw.pci_len2 = THIRD_PAGE_GROUP_SIZE; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
971 adapter->ahw.crb_base = |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
972 PCI_OFFSET_SECOND_RANGE(adapter, UNM_PCI_CRBSPACE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
973 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
974 adapter->ahw.first_page_group_start = first_page_group_start; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
975 adapter->ahw.first_page_group_end = first_page_group_end; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
976 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
977 /* map doorbell */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
978 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
979 ret = ddi_regs_map_setup(dip, 2, &db_base, 0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
980 dbsize, &unm_dev_attr, &adapter->db_handle); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
981 if (ret != DDI_SUCCESS) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
982 cmn_err(CE_WARN, "%s%d: failed to map doorbell\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
983 adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
984 ddi_regs_map_free(&adapter->regs_handle); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
985 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
986 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
987 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
988 adapter->ahw.db_base = (unsigned long)db_base; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
989 adapter->ahw.db_len = dbsize; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
990 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
991 return (DDI_SUCCESS); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
992 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
993 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
994 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
995 unm_initialize_intr(unm_adapter *adapter) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
996 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
997 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
998 int ret; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
999 int type, count, avail, actual; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1000 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1001 ret = ddi_intr_get_supported_types(adapter->dip, &type); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1002 if (ret != DDI_SUCCESS) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1003 cmn_err(CE_WARN, "%s%d: ddi_intr_get_supported_types() " |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1004 "failed\n", adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1005 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1006 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1007 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1008 type = DDI_INTR_TYPE_MSI; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1009 ret = ddi_intr_get_nintrs(adapter->dip, type, &count); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1010 if ((ret == DDI_SUCCESS) && (count > 0)) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1011 goto found_msi; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1012 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1013 type = DDI_INTR_TYPE_FIXED; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1014 ret = ddi_intr_get_nintrs(adapter->dip, type, &count); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1015 if ((ret != DDI_SUCCESS) || (count == 0)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1016 cmn_err(CE_WARN, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1017 "ddi_intr_get_nintrs() failure ret=%d\n", ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1018 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1019 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1020 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1021 found_msi: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1022 adapter->intr_type = type; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1023 adapter->flags &= ~(UNM_NIC_MSI_ENABLED | UNM_NIC_MSIX_ENABLED); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1024 if (type == DDI_INTR_TYPE_MSI) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1025 adapter->flags |= UNM_NIC_MSI_ENABLED; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1026 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1027 /* Get number of available interrupts */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1028 ret = ddi_intr_get_navail(adapter->dip, type, &avail); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1029 if ((ret != DDI_SUCCESS) || (avail == 0)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1030 cmn_err(CE_WARN, "ddi_intr_get_navail() failure, ret=%d\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1031 ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1032 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1033 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1034 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1035 ret = ddi_intr_alloc(adapter->dip, &adapter->intr_handle, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1036 type, 0, 1, &actual, DDI_INTR_ALLOC_NORMAL); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1037 if ((ret != DDI_SUCCESS) || (actual == 0)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1038 cmn_err(CE_WARN, "ddi_intr_alloc() failure: %d\n", ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1039 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1040 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1041 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1042 ret = ddi_intr_get_pri(adapter->intr_handle, &adapter->intr_pri); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1043 if (ret != DDI_SUCCESS) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1044 cmn_err(CE_WARN, "ddi_intr_get_pri() failure: %d\n", ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1045 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1046 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1047 /* Call ddi_intr_add_handler() */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1048 ret = ddi_intr_add_handler(adapter->intr_handle, unm_intr, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1049 (caddr_t)adapter, NULL); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1050 if (ret != DDI_SUCCESS) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1051 cmn_err(CE_WARN, "%s%d: ddi_intr_add_handler() failure\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1052 adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1053 (void) ddi_intr_free(adapter->intr_handle); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1054 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1055 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1056 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1057 /* Add softintr if required */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1058 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1059 return (DDI_SUCCESS); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1060 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1061 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1062 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1063 void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1064 unm_destroy_intr(unm_adapter *adapter) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1065 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1066 /* disable interrupt */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1067 if (adapter->intr_type == DDI_INTR_TYPE_MSI) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1068 (void) ddi_intr_block_disable(&adapter->intr_handle, 1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1069 else |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1070 (void) ddi_intr_disable(adapter->intr_handle); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1071 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1072 (void) ddi_intr_remove_handler(adapter->intr_handle); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1073 (void) ddi_intr_free(adapter->intr_handle); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1074 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1075 /* Remove the software intr handler */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1076 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1077 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1078 static void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1079 netxen_set_port_mode(unm_adapter *adapter) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1080 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1081 static int wol_port_mode = UNM_PORT_MODE_AUTO_NEG_1G; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1082 static int port_mode = UNM_PORT_MODE_AUTO_NEG; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1083 int btype = adapter->ahw.boardcfg.board_type, data = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1084 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1085 if (btype == UNM_BRDTYPE_P3_HMEZ || btype == UNM_BRDTYPE_P3_XG_LOM) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1086 data = port_mode; /* set to port_mode normally */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1087 if ((port_mode != UNM_PORT_MODE_802_3_AP) && |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1088 (port_mode != UNM_PORT_MODE_XG) && |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1089 (port_mode != UNM_PORT_MODE_AUTO_NEG_1G) && |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1090 (port_mode != UNM_PORT_MODE_AUTO_NEG_XG)) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1091 data = UNM_PORT_MODE_AUTO_NEG; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1092 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1093 adapter->unm_nic_hw_write_wx(adapter, UNM_PORT_MODE_ADDR, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1094 &data, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1095 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1096 if ((wol_port_mode != UNM_PORT_MODE_802_3_AP) && |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1097 (wol_port_mode != UNM_PORT_MODE_XG) && |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1098 (wol_port_mode != UNM_PORT_MODE_AUTO_NEG_1G) && |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1099 (wol_port_mode != UNM_PORT_MODE_AUTO_NEG_XG)) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1100 wol_port_mode = UNM_PORT_MODE_AUTO_NEG; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1101 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1102 adapter->unm_nic_hw_write_wx(adapter, UNM_WOL_PORT_MODE, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1103 &wol_port_mode, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1104 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1105 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1106 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1107 static void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1108 netxen_pcie_strap_init(unm_adapter *adapter) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1109 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1110 ddi_acc_handle_t pcihdl = adapter->pci_cfg_handle; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1111 u32 chicken, control, c8c9value = 0xF1000; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1112 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1113 adapter->unm_nic_hw_read_wx(adapter, UNM_PCIE_REG(PCIE_CHICKEN3), |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1114 &chicken, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1115 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1116 chicken &= 0xFCFFFFFF; /* clear chicken3 25:24 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1117 control = pci_config_get32(pcihdl, 0xD0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1118 if ((control & 0x000F0000) != 0x00020000) /* is it gen1? */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1119 chicken |= 0x01000000; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1120 adapter->unm_nic_hw_write_wx(adapter, UNM_PCIE_REG(PCIE_CHICKEN3), |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1121 &chicken, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1122 control = pci_config_get32(pcihdl, 0xC8); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1123 control = pci_config_get32(pcihdl, 0xC8); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1124 pci_config_put32(pcihdl, 0xC8, c8c9value); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1125 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1126 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1127 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1128 netxen_read_mac_addr(unm_adapter *adapter) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1129 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1130 u64 mac_addr[FLASH_NUM_PORTS + 1]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1131 unsigned char *p; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1132 int i; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1133 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1134 if (is_flash_supported(adapter) != 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1135 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1136 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1137 if (get_flash_mac_addr(adapter, mac_addr) != 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1138 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1139 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1140 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1141 p = (unsigned char *)&mac_addr[adapter->ahw.pci_func]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1142 else |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1143 p = (unsigned char *)&mac_addr[adapter->portnum]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1144 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1145 for (i = 0; i < 6; i++) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1146 adapter->mac_addr[i] = p[5 - i]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1147 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1148 if (unm_nic_macaddr_set(adapter, adapter->mac_addr) != 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1149 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1150 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1151 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1152 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1153 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1154 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1155 unmattach(dev_info_t *dip, ddi_attach_cmd_t cmd) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1156 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1157 unm_adapter *adapter; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1158 unm_recv_context_t *recv_ctx = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1159 unm_rcv_desc_ctx_t *rcv_desc = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1160 int i, first_driver = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1161 int ret, ring, temp; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1162 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1163 switch (cmd) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1164 case DDI_ATTACH: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1165 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1166 case DDI_RESUME: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1167 case DDI_PM_RESUME: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1168 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1169 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1170 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1171 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1172 adapter = kmem_zalloc(sizeof (unm_adapter), KM_SLEEP); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1173 adapter->dip = dip; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1174 ddi_set_driver_private(dip, adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1175 adapter->instance = ddi_get_instance(dip); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1176 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1177 adapter->name = ddi_driver_name(dip); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1178 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1179 ret = pci_config_setup(dip, &adapter->pci_cfg_handle); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1180 if (ret != DDI_SUCCESS) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1181 cmn_err(CE_WARN, "%s%d: pci_config_setup failed\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1182 adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1183 goto attach_setup_err; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1184 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1185 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1186 ret = unm_pci_cfg_init(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1187 if (ret != DDI_SUCCESS) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1188 goto attach_err; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1189 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1190 ret = unm_pci_map_setup(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1191 if (ret != DDI_SUCCESS) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1192 goto attach_err; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1193 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1194 if (unm_initialize_intr(adapter) != DDI_SUCCESS) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1195 goto attach_unmap_regs; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1196 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1197 rw_init(&adapter->adapter_lock, NULL, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1198 RW_DRIVER, DDI_INTR_PRI(adapter->intr_pri)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1199 mutex_init(&adapter->tx_lock, NULL, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1200 MUTEX_DRIVER, (DDI_INTR_PRI(adapter->intr_pri))); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1201 mutex_init(&adapter->lock, NULL, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1202 MUTEX_DRIVER, (DDI_INTR_PRI(adapter->intr_pri))); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1203 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1204 adapter->portnum = (int8_t)adapter->ahw.pci_func; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1205 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1206 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1207 * Set the CRB window to invalid. If any register in window 0 is |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1208 * accessed it should set window to 0 and then reset it to 1. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1209 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1210 adapter->curr_window = 255; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1211 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1212 adapter->fw_major = adapter->unm_nic_pci_read_normalize(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1213 UNM_FW_VERSION_MAJOR); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1214 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1215 if (adapter->fw_major < 4) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1216 adapter->max_rds_rings = 3; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1217 else |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1218 adapter->max_rds_rings = 2; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1219 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1220 STRUCT_COPY(adapter->gc_dma_attr_desc, unm_dma_attr_desc); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1221 STRUCT_COPY(adapter->gc_attr_desc, unm_buf_attr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1222 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1223 ret = unm_nic_get_board_info(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1224 if (ret != DDI_SUCCESS) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1225 cmn_err(CE_WARN, "%s%d: error reading board config\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1226 adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1227 goto attach_destroy_intr; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1228 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1229 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1230 /* Mezz cards have PCI function 0, 2, 3 enabled */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1231 switch (adapter->ahw.boardcfg.board_type) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1232 case UNM_BRDTYPE_P2_SB31_10G_IMEZ: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1233 case UNM_BRDTYPE_P2_SB31_10G_HMEZ: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1234 if (adapter->ahw.pci_func >= 2) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1235 adapter->portnum = adapter->ahw.pci_func - 2; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1236 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1237 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1238 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1239 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1240 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1241 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1242 temp = UNM_CRB_READ_VAL_ADAPTER(UNM_MIU_MN_CONTROL, adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1243 adapter->ahw.cut_through = NX_IS_SYSTEM_CUT_THROUGH(temp); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1244 if (adapter->ahw.pci_func == 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1245 first_driver = 1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1246 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1247 if (adapter->portnum == 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1248 first_driver = 1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1249 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1250 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1251 unm_check_options(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1252 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1253 if (first_driver) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1254 int first_boot = adapter->unm_nic_pci_read_normalize(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1255 UNM_CAM_RAM(0x1fc)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1256 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1257 if (check_hw_init(adapter) != 0) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1258 cmn_err(CE_WARN, "%s%d: Error in HW init sequence\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1259 adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1260 goto attach_destroy_intr; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1261 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1262 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1263 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1264 netxen_set_port_mode(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1265 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1266 if (first_boot != 0x55555555) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1267 temp = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1268 adapter->unm_nic_hw_write_wx(adapter, CRB_CMDPEG_STATE, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1269 &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1270 if (pinit_from_rom(adapter, 0) != 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1271 goto attach_destroy_intr; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1272 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1273 drv_usecwait(500); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1274 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1275 ret = load_from_flash(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1276 if (ret != DDI_SUCCESS) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1277 goto attach_destroy_intr; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1278 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1279 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1280 if (ret = unm_initialize_dummy_dma(adapter)) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1281 goto attach_destroy_intr; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1282 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1283 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1284 * Tell the hardware our version number. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1285 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1286 i = (_UNM_NIC_MAJOR << 16) | |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1287 ((_UNM_NIC_MINOR << 8)) | (_UNM_NIC_SUBVERSION); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1288 adapter->unm_nic_hw_write_wx(adapter, CRB_DRIVER_VERSION, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1289 &i, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1290 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1291 /* Unlock the HW, prompting the boot sequence */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1292 if ((first_boot == 0x55555555) && |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1293 (NX_IS_REVISION_P2(adapter->ahw.revision_id))) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1294 adapter->unm_nic_pci_write_normalize(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1295 UNM_ROMUSB_GLB_PEGTUNE_DONE, 1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1296 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1297 /* Handshake with the card before we register the devices. */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1298 if (phantom_init(adapter, 0) != DDI_SUCCESS) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1299 goto attach_destroy_intr; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1300 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1301 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1302 if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1303 netxen_pcie_strap_init(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1304 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1305 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1306 * See if the firmware gave us a virtual-physical port mapping. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1307 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1308 adapter->physical_port = adapter->portnum; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1309 i = adapter->unm_nic_pci_read_normalize(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1310 CRB_V2P(adapter->portnum)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1311 if (i != 0x55555555) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1312 adapter->physical_port = (uint16_t)i; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1313 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1314 adapter->cmd_buf_arr = (struct unm_cmd_buffer *)kmem_zalloc( |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1315 sizeof (struct unm_cmd_buffer) * adapter->MaxTxDescCount, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1316 KM_SLEEP); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1317 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1318 for (i = 0; i < MAX_RCV_CTX; ++i) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1319 recv_ctx = &adapter->recv_ctx[i]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1320 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1321 for (ring = 0; ring < adapter->max_rds_rings; ring++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1322 rcv_desc = &recv_ctx->rcv_desc[ring]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1323 ret = unm_create_rx_ring(adapter, rcv_desc); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1324 if (ret != DDI_SUCCESS) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1325 goto attach_free_cmdbufs; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1326 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1327 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1328 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1329 ret = unm_alloc_tx_dmahdl(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1330 if (ret != DDI_SUCCESS) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1331 goto attach_free_cmdbufs; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1332 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1333 ret = unm_alloc_tx_buffers(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1334 if (ret != DDI_SUCCESS) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1335 goto attach_free_tx_dmahdl; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1336 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1337 adapter->ahw.linkup = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1338 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1339 if (receive_peg_ready(adapter)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1340 ret = -EIO; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1341 goto attach_free_tx_buffers; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1342 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1343 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1344 if (netxen_read_mac_addr(adapter)) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1345 cmn_err(CE_WARN, "%s%d: Failed to read MAC addr\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1346 adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1347 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1348 unm_nic_flash_print(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1349 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1350 if (verbmsg != 0) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1351 switch (adapter->ahw.board_type) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1352 case UNM_NIC_GBE: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1353 cmn_err(CE_NOTE, "%s: QUAD GbE port %d initialized\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1354 unm_nic_driver_name, adapter->portnum); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1355 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1356 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1357 case UNM_NIC_XGBE: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1358 cmn_err(CE_NOTE, "%s: XGbE port %d initialized\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1359 unm_nic_driver_name, adapter->portnum); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1360 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1361 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1362 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1363 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1364 ret = unm_register_mac(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1365 if (ret != DDI_SUCCESS) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1366 cmn_err(CE_NOTE, "%s%d: Mac registration error\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1367 adapter->name, adapter->instance); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1368 goto attach_free_tx_buffers; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1369 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1370 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1371 return (DDI_SUCCESS); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1372 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1373 attach_free_tx_buffers: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1374 unm_free_tx_buffers(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1375 attach_free_tx_dmahdl: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1376 unm_free_tx_dmahdl(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1377 attach_free_cmdbufs: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1378 kmem_free(adapter->cmd_buf_arr, sizeof (struct unm_cmd_buffer) * |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1379 adapter->MaxTxDescCount); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1380 for (i = 0; i < MAX_RCV_CTX; ++i) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1381 recv_ctx = &adapter->recv_ctx[i]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1382 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1383 for (ring = 0; ring < adapter->max_rds_rings; ring++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1384 rcv_desc = &recv_ctx->rcv_desc[ring]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1385 if (rcv_desc->rx_buf_pool != NULL) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1386 unm_destroy_rx_ring(rcv_desc); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1387 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1388 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1389 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1390 if (adapter->portnum == 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1391 unm_free_dummy_dma(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1392 attach_destroy_intr: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1393 unm_destroy_intr(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1394 attach_unmap_regs: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1395 ddi_regs_map_free(&(adapter->regs_handle)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1396 ddi_regs_map_free(&(adapter->db_handle)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1397 attach_err: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1398 pci_config_teardown(&adapter->pci_cfg_handle); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1399 attach_setup_err: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1400 kmem_free(adapter, sizeof (unm_adapter)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1401 return (ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1402 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1403 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1404 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1405 unmdetach(dev_info_t *dip, ddi_detach_cmd_t cmd) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1406 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1407 unm_adapter *adapter = (unm_adapter *)ddi_get_driver_private(dip); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1408 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1409 if (adapter == NULL) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1410 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1411 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1412 switch (cmd) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1413 case DDI_DETACH: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1414 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1415 unm_fini_kstats(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1416 adapter->kstats[0] = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1417 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1418 if (adapter->pci_cfg_handle != NULL) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1419 pci_config_teardown(&adapter->pci_cfg_handle); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1420 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1421 unm_nd_cleanup(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1422 unm_nic_remove(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1423 return (DDI_SUCCESS); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1424 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1425 case DDI_SUSPEND: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1426 return (unm_nic_suspend(adapter)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1427 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1428 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1429 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1430 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1431 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1432 return (DDI_FAILURE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1433 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1434 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1435 #ifdef SOLARIS11 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1436 DDI_DEFINE_STREAM_OPS(unm_ops, nulldev, nulldev, unmattach, unmdetach, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1437 nodev, NULL, D_MP, NULL, NULL); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1438 #else |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1439 DDI_DEFINE_STREAM_OPS(unm_ops, nulldev, nulldev, unmattach, unmdetach, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1440 nodev, NULL, D_MP, NULL); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1441 #endif |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1442 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1443 static struct modldrv modldrv = { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1444 &mod_driverops, /* Type of module. This one is a driver */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1445 ident, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1446 &unm_ops, /* driver ops */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1447 }; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1448 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1449 static struct modlinkage modlinkage = { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1450 MODREV_1, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1451 (&modldrv), |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1452 NULL |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1453 }; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1454 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1455 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1456 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1457 _init(void) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1458 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1459 int ret; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1460 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1461 unm_ops.devo_cb_ops->cb_str = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1462 mac_init_ops(&unm_ops, "ntxn"); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1463 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1464 ret = mod_install(&modlinkage); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1465 if (ret != DDI_SUCCESS) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1466 mac_fini_ops(&unm_ops); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1467 cmn_err(CE_WARN, "ntxn: mod_install failed\n"); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1468 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1469 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1470 return (ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1471 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1472 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1473 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1474 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1475 _fini(void) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1476 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1477 int ret; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1478 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1479 ret = mod_remove(&modlinkage); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1480 if (ret == DDI_SUCCESS) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1481 mac_fini_ops(&unm_ops); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1482 return (ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1483 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1484 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1485 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1486 _info(struct modinfo *modinfop) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1487 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1488 return (mod_info(&modlinkage, modinfop)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1489 } |