Mercurial > illumos > illumos-gate
annotate usr/src/uts/common/io/ntxn/unm_nic_hw.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 #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
|
26 #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
|
27 #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
|
28 #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
|
29 #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
|
30 #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
|
31 #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
|
32 #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
|
33 #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
|
34 #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
|
35 #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
|
36 #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
|
37 #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
|
38 #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
|
39 #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
|
40 #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
|
41 #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
|
42 #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
|
43 #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
|
44 |
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/pci.h> |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
46 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
47 #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
|
48 #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
|
49 #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
|
50 #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
|
51 #include "driver_info.h" |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
52 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
53 long unm_niu_gbe_phy_read(struct unm_adapter_s *, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
54 long reg, unm_crbword_t *readval); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
55 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
56 #define MASK(n) ((1ULL<<(n))-1) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
57 #define MN_WIN(addr) (((addr & 0x1fc0000) >> 1) | ((addr >> 25) & 0x3ff)) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
58 #define OCM_WIN(addr) (((addr & 0x1ff0000) >> 1) | \ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
59 ((addr >> 25) & 0x3ff)) // 64K? |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
60 #define MS_WIN(addr) (addr & 0x0ffc0000) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
61 #define UNM_PCI_MN_2M (0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
62 #define UNM_PCI_MS_2M (0x80000) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
63 #define UNM_PCI_OCM0_2M (0xc0000) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
64 #define VALID_OCM_ADDR(addr) (((addr) & 0x3f800) != 0x3f800) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
65 #define GET_MEM_OFFS_2M(addr) (addr & MASK(18)) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
66 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
67 #define CRB_BLK(off) ((off >> 20) & 0x3f) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
68 #define CRB_SUBBLK(off) ((off >> 16) & 0xf) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
69 #define CRB_WINDOW_2M (0x130060) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
70 #define UNM_PCI_CAMQM_2M_END (0x04800800UL) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
71 #define CRB_HI(off) ((crb_hub_agt[CRB_BLK(off)] << 20) | ((off) & 0xf0000)) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
72 #define UNM_PCI_CAMQM_2M_BASE (0x000ff800UL) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
73 #define CRB_INDIRECT_2M (0x1e0000UL) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
74 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
75 static crb_128M_2M_block_map_t crb_128M_2M_map[64] = { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
76 {{{0, 0, 0, 0}}}, /* 0: PCI */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
77 {{{1, 0x0100000, 0x0102000, 0x120000}, /* 1: PCIE */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
78 {1, 0x0110000, 0x0120000, 0x130000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
79 {1, 0x0120000, 0x0122000, 0x124000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
80 {1, 0x0130000, 0x0132000, 0x126000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
81 {1, 0x0140000, 0x0142000, 0x128000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
82 {1, 0x0150000, 0x0152000, 0x12a000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
83 {1, 0x0160000, 0x0170000, 0x110000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
84 {1, 0x0170000, 0x0172000, 0x12e000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
85 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
86 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
87 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
88 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
89 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
90 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
91 {1, 0x01e0000, 0x01e0800, 0x122000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
92 {0, 0x0000000, 0x0000000, 0x000000}}}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
93 {{{1, 0x0200000, 0x0210000, 0x180000}}}, /* 2: MN */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
94 {{{0, 0, 0, 0}}}, /* 3: */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
95 {{{1, 0x0400000, 0x0401000, 0x169000}}}, /* 4: P2NR1 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
96 {{{1, 0x0500000, 0x0510000, 0x140000}}}, /* 5: SRE */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
97 {{{1, 0x0600000, 0x0610000, 0x1c0000}}}, /* 6: NIU */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
98 {{{1, 0x0700000, 0x0704000, 0x1b8000}}}, /* 7: QM */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
99 {{{1, 0x0800000, 0x0802000, 0x170000}, /* 8: SQM0 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
100 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
101 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
102 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
103 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
104 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
105 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
106 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
107 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
108 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
109 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
110 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
111 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
112 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
113 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
114 {1, 0x08f0000, 0x08f2000, 0x172000}}}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
115 {{{1, 0x0900000, 0x0902000, 0x174000}, /* 9: SQM1 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
116 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
117 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
118 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
119 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
120 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
121 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
122 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
123 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
124 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
125 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
126 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
127 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
128 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
129 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
130 {1, 0x09f0000, 0x09f2000, 0x176000}}}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
131 {{{0, 0x0a00000, 0x0a02000, 0x178000}, /* 10: SQM2 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
132 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
133 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
134 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
135 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
136 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
137 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
138 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
139 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
140 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
141 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
142 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
143 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
144 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
145 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
146 {1, 0x0af0000, 0x0af2000, 0x17a000}}}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
147 {{{0, 0x0b00000, 0x0b02000, 0x17c000}, /* 11: SQM3 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
148 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
149 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
150 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
151 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
152 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
153 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
154 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
155 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
156 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
157 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
158 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
159 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
160 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
161 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
162 {1, 0x0bf0000, 0x0bf2000, 0x17e000}}}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
163 {{{1, 0x0c00000, 0x0c04000, 0x1d4000}}}, /* 12: I2Q */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
164 {{{1, 0x0d00000, 0x0d04000, 0x1a4000}}}, /* 13: TMR */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
165 {{{1, 0x0e00000, 0x0e04000, 0x1a0000}}}, /* 14: ROMUSB */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
166 {{{1, 0x0f00000, 0x0f01000, 0x164000}}}, /* 15: PEG4 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
167 {{{0, 0x1000000, 0x1004000, 0x1a8000}}}, /* 16: XDMA */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
168 {{{1, 0x1100000, 0x1101000, 0x160000}}}, /* 17: PEG0 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
169 {{{1, 0x1200000, 0x1201000, 0x161000}}}, /* 18: PEG1 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
170 {{{1, 0x1300000, 0x1301000, 0x162000}}}, /* 19: PEG2 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
171 {{{1, 0x1400000, 0x1401000, 0x163000}}}, /* 20: PEG3 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
172 {{{1, 0x1500000, 0x1501000, 0x165000}}}, /* 21: P2ND */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
173 {{{1, 0x1600000, 0x1601000, 0x166000}}}, /* 22: P2NI */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
174 {{{0, 0, 0, 0}}}, /* 23: */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
175 {{{0, 0, 0, 0}}}, /* 24: */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
176 {{{0, 0, 0, 0}}}, /* 25: */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
177 {{{0, 0, 0, 0}}}, /* 26: */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
178 {{{0, 0, 0, 0}}}, /* 27: */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
179 {{{0, 0, 0, 0}}}, /* 28: */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
180 {{{1, 0x1d00000, 0x1d10000, 0x190000}}}, /* 29: MS */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
181 {{{1, 0x1e00000, 0x1e01000, 0x16a000}}}, /* 30: P2NR2 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
182 {{{1, 0x1f00000, 0x1f10000, 0x150000}}}, /* 31: EPG */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
183 {{{0}}}, /* 32: PCI */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
184 {{{1, 0x2100000, 0x2102000, 0x120000}, /* 33: PCIE */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
185 {1, 0x2110000, 0x2120000, 0x130000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
186 {1, 0x2120000, 0x2122000, 0x124000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
187 {1, 0x2130000, 0x2132000, 0x126000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
188 {1, 0x2140000, 0x2142000, 0x128000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
189 {1, 0x2150000, 0x2152000, 0x12a000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
190 {1, 0x2160000, 0x2170000, 0x110000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
191 {1, 0x2170000, 0x2172000, 0x12e000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
192 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
193 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
194 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
195 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
196 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
197 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
198 {0, 0x0000000, 0x0000000, 0x000000}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
199 {0, 0x0000000, 0x0000000, 0x000000}}}, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
200 {{{1, 0x2200000, 0x2204000, 0x1b0000}}}, /* 34: CAM */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
201 {{{0}}}, /* 35: */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
202 {{{0}}}, /* 36: */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
203 {{{0}}}, /* 37: */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
204 {{{0}}}, /* 38: */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
205 {{{0}}}, /* 39: */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
206 {{{1, 0x2800000, 0x2804000, 0x1a4000}}}, /* 40: TMR */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
207 {{{1, 0x2900000, 0x2901000, 0x16b000}}}, /* 41: P2NR3 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
208 {{{1, 0x2a00000, 0x2a00400, 0x1ac400}}}, /* 42: RPMX1 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
209 {{{1, 0x2b00000, 0x2b00400, 0x1ac800}}}, /* 43: RPMX2 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
210 {{{1, 0x2c00000, 0x2c00400, 0x1acc00}}}, /* 44: RPMX3 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
211 {{{1, 0x2d00000, 0x2d00400, 0x1ad000}}}, /* 45: RPMX4 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
212 {{{1, 0x2e00000, 0x2e00400, 0x1ad400}}}, /* 46: RPMX5 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
213 {{{1, 0x2f00000, 0x2f00400, 0x1ad800}}}, /* 47: RPMX6 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
214 {{{1, 0x3000000, 0x3000400, 0x1adc00}}}, /* 48: RPMX7 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
215 {{{0, 0x3100000, 0x3104000, 0x1a8000}}}, /* 49: XDMA */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
216 {{{1, 0x3200000, 0x3204000, 0x1d4000}}}, /* 50: I2Q */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
217 {{{1, 0x3300000, 0x3304000, 0x1a0000}}}, /* 51: ROMUSB */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
218 {{{0}}}, /* 52: */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
219 {{{1, 0x3500000, 0x3500400, 0x1ac000}}}, /* 53: RPMX0 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
220 {{{1, 0x3600000, 0x3600400, 0x1ae000}}}, /* 54: RPMX8 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
221 {{{1, 0x3700000, 0x3700400, 0x1ae400}}}, /* 55: RPMX9 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
222 {{{1, 0x3800000, 0x3804000, 0x1d0000}}}, /* 56: OCM0 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
223 {{{1, 0x3900000, 0x3904000, 0x1b4000}}}, /* 57: CRYPTO */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
224 {{{1, 0x3a00000, 0x3a04000, 0x1d8000}}}, /* 58: SMB */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
225 {{{0}}}, /* 59: I2C0 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
226 {{{0}}}, /* 60: I2C1 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
227 {{{1, 0x3d00000, 0x3d04000, 0x1d8000}}}, /* 61: LPC */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
228 {{{1, 0x3e00000, 0x3e01000, 0x167000}}}, /* 62: P2NC */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
229 {{{1, 0x3f00000, 0x3f01000, 0x168000}}} /* 63: P2NR0 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
230 }; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
231 |
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 * top 12 bits of crb internal address (hub, agent) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
234 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
235 static unsigned crb_hub_agt[64] = { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
236 0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
237 UNM_HW_CRB_HUB_AGT_ADR_PS, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
238 UNM_HW_CRB_HUB_AGT_ADR_MN, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
239 UNM_HW_CRB_HUB_AGT_ADR_MS, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
240 0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
241 UNM_HW_CRB_HUB_AGT_ADR_SRE, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
242 UNM_HW_CRB_HUB_AGT_ADR_NIU, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
243 UNM_HW_CRB_HUB_AGT_ADR_QMN, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
244 UNM_HW_CRB_HUB_AGT_ADR_SQN0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
245 UNM_HW_CRB_HUB_AGT_ADR_SQN1, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
246 UNM_HW_CRB_HUB_AGT_ADR_SQN2, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
247 UNM_HW_CRB_HUB_AGT_ADR_SQN3, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
248 UNM_HW_CRB_HUB_AGT_ADR_I2Q, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
249 UNM_HW_CRB_HUB_AGT_ADR_TIMR, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
250 UNM_HW_CRB_HUB_AGT_ADR_ROMUSB, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
251 UNM_HW_CRB_HUB_AGT_ADR_PGN4, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
252 UNM_HW_CRB_HUB_AGT_ADR_XDMA, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
253 UNM_HW_CRB_HUB_AGT_ADR_PGN0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
254 UNM_HW_CRB_HUB_AGT_ADR_PGN1, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
255 UNM_HW_CRB_HUB_AGT_ADR_PGN2, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
256 UNM_HW_CRB_HUB_AGT_ADR_PGN3, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
257 UNM_HW_CRB_HUB_AGT_ADR_PGND, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
258 UNM_HW_CRB_HUB_AGT_ADR_PGNI, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
259 UNM_HW_CRB_HUB_AGT_ADR_PGS0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
260 UNM_HW_CRB_HUB_AGT_ADR_PGS1, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
261 UNM_HW_CRB_HUB_AGT_ADR_PGS2, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
262 UNM_HW_CRB_HUB_AGT_ADR_PGS3, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
263 0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
264 UNM_HW_CRB_HUB_AGT_ADR_PGSI, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
265 UNM_HW_CRB_HUB_AGT_ADR_SN, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
266 0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
267 UNM_HW_CRB_HUB_AGT_ADR_EG, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
268 0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
269 UNM_HW_CRB_HUB_AGT_ADR_PS, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
270 UNM_HW_CRB_HUB_AGT_ADR_CAM, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
271 0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
272 0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
273 0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
274 0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
275 0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
276 UNM_HW_CRB_HUB_AGT_ADR_TIMR, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
277 0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
278 UNM_HW_CRB_HUB_AGT_ADR_RPMX1, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
279 UNM_HW_CRB_HUB_AGT_ADR_RPMX2, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
280 UNM_HW_CRB_HUB_AGT_ADR_RPMX3, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
281 UNM_HW_CRB_HUB_AGT_ADR_RPMX4, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
282 UNM_HW_CRB_HUB_AGT_ADR_RPMX5, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
283 UNM_HW_CRB_HUB_AGT_ADR_RPMX6, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
284 UNM_HW_CRB_HUB_AGT_ADR_RPMX7, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
285 UNM_HW_CRB_HUB_AGT_ADR_XDMA, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
286 UNM_HW_CRB_HUB_AGT_ADR_I2Q, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
287 UNM_HW_CRB_HUB_AGT_ADR_ROMUSB, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
288 0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
289 UNM_HW_CRB_HUB_AGT_ADR_RPMX0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
290 UNM_HW_CRB_HUB_AGT_ADR_RPMX8, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
291 UNM_HW_CRB_HUB_AGT_ADR_RPMX9, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
292 UNM_HW_CRB_HUB_AGT_ADR_OCM0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
293 0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
294 UNM_HW_CRB_HUB_AGT_ADR_SMB, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
295 UNM_HW_CRB_HUB_AGT_ADR_I2C0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
296 UNM_HW_CRB_HUB_AGT_ADR_I2C1, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
297 0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
298 UNM_HW_CRB_HUB_AGT_ADR_PGNC, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
299 0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
300 }; |
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 #define CRB_WIN_LOCK_TIMEOUT 100000000 |
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 static void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
305 crb_win_lock(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
|
306 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
307 int i; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
308 int done = 0, timeout = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
309 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
310 while (!done) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
311 /* acquire semaphore3 from PCI HW block */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
312 adapter->unm_nic_hw_read_wx(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
313 UNM_PCIE_REG(PCIE_SEM7_LOCK), &done, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
314 if (done == 1) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
315 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
316 if (timeout >= CRB_WIN_LOCK_TIMEOUT) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
317 cmn_err(CE_WARN, "%s%d: crb_win_lock timed out\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
318 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
|
319 return; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
320 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
321 timeout++; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
322 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
323 * Yield CPU |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
324 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
325 for (i = 0; i < 20; i++); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
326 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
327 adapter->unm_crb_writelit_adapter(adapter, UNM_CRB_WIN_LOCK_ID, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
328 adapter->portnum); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
329 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
330 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
331 static void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
332 crb_win_unlock(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
|
333 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
334 int val; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
335 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
336 adapter->unm_nic_hw_read_wx(adapter, UNM_PCIE_REG(PCIE_SEM7_UNLOCK), |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
337 &val, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
338 } |
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 * Changes the CRB window to the specified window. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
342 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
343 void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
344 unm_nic_pci_change_crbwindow_128M(unm_adapter *adapter, uint32_t wndw) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
345 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
346 unm_pcix_crb_window_t window; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
347 unsigned long offset; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
348 uint32_t tmp; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
349 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
350 if (adapter->curr_window == wndw) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
351 return; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
352 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
353 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
354 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
355 * Move the CRB window. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
356 * We need to write to the "direct access" region of PCI |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
357 * to avoid a race condition where the window register has |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
358 * not been successfully written across CRB before the target |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
359 * register address is received by PCI. The direct region bypasses |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
360 * the CRB bus. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
361 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
362 offset = PCI_OFFSET_SECOND_RANGE(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
363 UNM_PCIX_PH_REG(PCIE_CRB_WINDOW_REG(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
|
364 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
365 *(unm_crbword_t *)&window = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
366 window.addrbit = wndw; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
367 UNM_NIC_PCI_WRITE_32(*(unsigned int *)&window, (void*) (offset)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
368 /* MUST make sure window is set before we forge on... */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
369 while ((tmp = UNM_NIC_PCI_READ_32((void*) offset)) != |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
370 *(uint32_t *)&window) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
371 cmn_err(CE_WARN, "%s: %s WARNING: CRB window value not " |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
372 "registered properly: 0x%08x.\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
373 unm_nic_driver_name, __FUNCTION__, tmp); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
374 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
375 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
376 adapter->curr_window = wndw; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
377 } |
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 * Changes the CRB window to the specified window. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
382 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
383 /* ARGSUSED */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
384 void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
385 unm_nic_pci_change_crbwindow_2M(unm_adapter *adapter, uint32_t wndw) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
386 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
387 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
388 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
389 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
390 uint32_t |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
391 unm_nic_get_crbwindow(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
|
392 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
393 return (adapter->curr_window); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
394 } |
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 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
397 * Return -1 if off is not valid, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
398 * 1 if window access is needed. 'off' is set to offset from |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
399 * CRB space in 128M pci map |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
400 * 0 if no window access is needed. 'off' is set to 2M addr |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
401 * In: 'off' is offset from base in 128M pci map |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
402 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
403 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
404 unm_nic_pci_get_crb_addr_2M(unm_adapter *adapter, u64 *off, int len) |
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 unsigned long end = *off + len; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
407 crb_128M_2M_sub_block_map_t *m; |
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 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
410 if (*off >= UNM_CRB_MAX) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
411 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
412 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
413 if (*off >= UNM_PCI_CAMQM && (end <= UNM_PCI_CAMQM_2M_END)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
414 *off = (*off - UNM_PCI_CAMQM) + UNM_PCI_CAMQM_2M_BASE + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
415 adapter->ahw.pci_base0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
416 return (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 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
419 if (*off < 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
|
420 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
421 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
422 *off -= 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
|
423 end = *off + len; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
424 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
425 * Try direct map |
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 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
428 m = &crb_128M_2M_map[CRB_BLK(*off)].sub_block[CRB_SUBBLK(*off)]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
429 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
430 if (m->valid && (m->start_128M <= *off) && (m->end_128M >= end)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
431 *off = *off + m->start_2M - m->start_128M + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
432 adapter->ahw.pci_base0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
433 return (0); |
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 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
436 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
437 * Not in direct map, use crb window |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
438 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
439 return (1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
440 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
441 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
442 * In: 'off' is offset from CRB space in 128M pci map |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
443 * Out: 'off' is 2M pci map addr |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
444 * side effect: lock crb window |
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 static void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
447 unm_nic_pci_set_crbwindow_2M(unm_adapter *adapter, u64 *off) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
448 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
449 u32 win_read; |
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->crb_win = CRB_HI(*off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
452 UNM_NIC_PCI_WRITE_32(adapter->crb_win, (void *) (CRB_WINDOW_2M + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
453 adapter->ahw.pci_base0)); |
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 * Read back value to make sure write has gone through before trying |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
456 * to use it. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
457 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
458 win_read = UNM_NIC_PCI_READ_32((void *) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
459 (CRB_WINDOW_2M + adapter->ahw.pci_base0)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
460 if (win_read != adapter->crb_win) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
461 cmn_err(CE_WARN, "%s: Written crbwin (0x%x) != Read crbwin " |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
462 "(0x%x), off=0x%llx\n", __FUNCTION__, adapter->crb_win, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
463 win_read, *off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
464 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
465 *off = (*off & MASK(16)) + CRB_INDIRECT_2M + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
466 adapter->ahw.pci_base0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
467 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
468 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
469 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
470 unm_nic_hw_write_ioctl_128M(unm_adapter *adapter, u64 off, void *data, int len) |
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 void *addr; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
473 u64 offset = off; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
474 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
475 if (ADDR_IN_WINDOW1(off)) { // Window 1 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
476 addr = CRB_NORMALIZE(adapter, off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
477 if (!addr) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
478 offset = CRB_NORMAL(off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
479 if (adapter->ahw.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
|
480 offset -= 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
|
481 addr = (void *) ((uint8_t *)adapter->ahw.pci_base0 + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
482 offset); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
483 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
484 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
|
485 } else {// Window 0 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
486 addr = (void *) (uptr_t)(pci_base_offset(adapter, off)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
487 if (!addr) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
488 offset = off; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
489 addr = (void *) ((uint8_t *)adapter->ahw.pci_base0 + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
490 offset); |
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 UNM_WRITE_LOCK_IRQS(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
493 unm_nic_pci_change_crbwindow_128M(adapter, 0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
494 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
495 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
496 switch (len) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
497 case 1: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
498 UNM_NIC_PCI_WRITE_8 (*(__uint8_t *)data, addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
499 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
500 case 2: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
501 UNM_NIC_PCI_WRITE_16 (*(__uint16_t *)data, addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
502 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
503 case 4: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
504 UNM_NIC_PCI_WRITE_32 (*(__uint32_t *)data, addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
505 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
506 case 8: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
507 UNM_NIC_PCI_WRITE_64 (*(__uint64_t *)data, addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
508 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
509 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
510 #if !defined(NDEBUG) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
511 if ((len & 0x7) != 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
512 cmn_err(CE_WARN, "%s: %s len(%d) not multiple of 8.\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
513 unm_nic_driver_name, __FUNCTION__, len); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
514 #endif |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
515 UNM_NIC_HW_BLOCK_WRITE_64(data, addr, (len>>3)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
516 break; |
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 if (ADDR_IN_WINDOW1(off)) {// Window 1 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
519 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
|
520 } else {// Window 0 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
521 unm_nic_pci_change_crbwindow_128M(adapter, 1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
522 UNM_WRITE_UNLOCK_IRQR(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
523 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
524 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
525 return (0); |
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 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
529 * Note : 'len' argument should be either 1, 2, 4, or a multiple of 8. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
530 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
531 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
532 unm_nic_hw_write_wx_128M(unm_adapter *adapter, u64 off, void *data, int len) |
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 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
535 * This is modified from _unm_nic_hw_write(). |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
536 * unm_nic_hw_write does not exist now. |
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 *addr; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
540 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
541 if (ADDR_IN_WINDOW1(off)) {// Window 1 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
542 addr = CRB_NORMALIZE(adapter, off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
543 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
|
544 } else {// Window 0 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
545 addr = (void *) (uptr_t)(pci_base_offset(adapter, off)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
546 UNM_WRITE_LOCK_IRQS(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
547 unm_nic_pci_change_crbwindow_128M(adapter, 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 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
550 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
551 if (!addr) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
552 if (ADDR_IN_WINDOW1(off)) {// Window 1 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
553 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
|
554 } else {// Window 0 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
555 unm_nic_pci_change_crbwindow_128M(adapter, 1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
556 UNM_WRITE_UNLOCK_IRQR(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
557 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
558 return (1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
559 } |
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 switch (len) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
562 case 1: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
563 UNM_NIC_PCI_WRITE_8 (*(__uint8_t *)data, addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
564 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
565 case 2: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
566 UNM_NIC_PCI_WRITE_16 (*(__uint16_t *)data, addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
567 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
568 case 4: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
569 UNM_NIC_PCI_WRITE_32 (*(__uint32_t *)data, addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
570 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
571 case 8: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
572 UNM_NIC_PCI_WRITE_64 (*(__uint64_t *)data, addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
573 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
574 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
575 #if !defined(NDEBUG) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
576 if ((len & 0x7) != 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
577 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
|
578 "%s: %s len(%d) not multiple of 8.\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
579 unm_nic_driver_name, __FUNCTION__, len); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
580 #endif |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
581 UNM_NIC_HW_BLOCK_WRITE_64(data, addr, (len>>3)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
582 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
583 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
584 if (ADDR_IN_WINDOW1(off)) {// Window 1 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
585 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
|
586 } else {// Window 0 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
587 unm_nic_pci_change_crbwindow_128M(adapter, 1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
588 UNM_WRITE_UNLOCK_IRQR(&adapter->adapter_lock, flags); |
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 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
591 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
592 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
593 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
594 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
595 * Note : only 32-bit writes! |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
596 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
597 void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
598 unm_nic_pci_write_normalize_128M(unm_adapter *adapter, u64 off, u32 data) |
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 UNM_NIC_PCI_WRITE_32(data, CRB_NORMALIZE(adapter, off)); |
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 |
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 * Note : only 32-bit reads! |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
605 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
606 u32 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
607 unm_nic_pci_read_normalize_128M(unm_adapter *adapter, u64 off) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
608 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
609 return (UNM_NIC_PCI_READ_32(CRB_NORMALIZE(adapter, off))); |
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 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
612 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
613 * Note : only 32-bit writes! |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
614 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
615 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
616 unm_nic_pci_write_immediate_128M(unm_adapter *adapter, u64 off, u32 *data) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
617 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
618 UNM_NIC_PCI_WRITE_32(*data, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
619 (void *) (uptr_t)(PCI_OFFSET_SECOND_RANGE(adapter, off))); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
620 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
621 } |
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 * Note : only 32-bit reads! |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
625 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
626 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
627 unm_nic_pci_read_immediate_128M(unm_adapter *adapter, u64 off, u32 *data) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
628 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
629 *data = UNM_NIC_PCI_READ_32((void *) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
630 (uptr_t)(pci_base_offset(adapter, off))); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
631 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
632 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
633 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
634 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
635 * Note : only 32-bit writes! |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
636 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
637 void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
638 unm_nic_pci_write_normalize_2M(unm_adapter *adapter, u64 off, u32 data) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
639 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
640 u32 temp = data; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
641 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
642 adapter->unm_nic_hw_write_wx(adapter, off, &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
643 } |
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 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
646 * Note : only 32-bit reads! |
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 u32 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
649 unm_nic_pci_read_normalize_2M(unm_adapter *adapter, u64 off) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
650 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
651 u32 temp; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
652 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
653 adapter->unm_nic_hw_read_wx(adapter, off, &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
654 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
655 return (temp); |
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 |
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 * Note : only 32-bit writes! |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
660 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
661 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
662 unm_nic_pci_write_immediate_2M(unm_adapter *adapter, u64 off, u32 *data) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
663 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
664 u32 temp = *data; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
665 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
666 adapter->unm_nic_hw_write_wx(adapter, off, &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
667 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
668 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
669 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
670 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
671 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
672 * Note : only 32-bit reads! |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
673 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
674 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
675 unm_nic_pci_read_immediate_2M(unm_adapter *adapter, u64 off, u32 *data) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
676 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
677 u32 temp; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
678 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
679 adapter->unm_nic_hw_read_wx(adapter, off, &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
680 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
681 *data = temp; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
682 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
683 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
684 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
685 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
686 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
687 * write cross hw window boundary is not supported |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
688 * 'len' should be either 1, 2, 4, or multiple of 8 |
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 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
691 unm_nic_hw_write_wx_2M(unm_adapter *adapter, u64 off, void *data, int len) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
692 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
693 int rv; |
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 rv = unm_nic_pci_get_crb_addr_2M(adapter, &off, len); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
696 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
697 if (rv == -1) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
698 cmn_err(CE_PANIC, "%s: invalid offset: 0x%016llx\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
699 __FUNCTION__, off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
700 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
701 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
702 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
703 if (rv == 1) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
704 UNM_WRITE_LOCK_IRQS(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
705 crb_win_lock(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
706 unm_nic_pci_set_crbwindow_2M(adapter, &off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
707 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
708 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
709 switch (len) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
710 case 1: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
711 UNM_NIC_PCI_WRITE_8(*(__uint8_t *)data, (void *) (uptr_t)off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
712 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
713 case 2: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
714 UNM_NIC_PCI_WRITE_16(*(__uint16_t *)data, (void *) (uptr_t)off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
715 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
716 case 4: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
717 UNM_NIC_PCI_WRITE_32(*(__uint32_t *)data, (void *) (uptr_t)off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
718 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
719 case 8: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
720 UNM_NIC_PCI_WRITE_64(*(__uint64_t *)data, (void *) (uptr_t)off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
721 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
722 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
723 #if !defined(NDEBUG) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
724 if ((len & 0x7) != 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
725 cmn_err(CE_WARN, "%s: %s len(%d) not multiple of 8.\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
726 unm_nic_driver_name, __FUNCTION__, len); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
727 #endif |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
728 UNM_NIC_HW_BLOCK_WRITE_64(data, (uptr_t)off, (len>>3)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
729 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
730 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
731 if (rv == 1) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
732 crb_win_unlock(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
733 UNM_WRITE_UNLOCK_IRQR(&adapter->adapter_lock, flags); |
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 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
736 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
737 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
738 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
739 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
740 unm_nic_hw_read_ioctl_128M(unm_adapter *adapter, u64 off, void *data, int len) |
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 void *addr; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
743 u64 offset; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
744 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
745 if (ADDR_IN_WINDOW1(off)) {// Window 1 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
746 addr = CRB_NORMALIZE(adapter, off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
747 if (!addr) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
748 offset = CRB_NORMAL(off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
749 if (adapter->ahw.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
|
750 offset -= 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
|
751 addr = (void *) ((uint8_t *)adapter->ahw.pci_base0 + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
752 offset); |
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 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
|
755 } else {// Window 0 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
756 addr = (void *) (uptr_t)(pci_base_offset(adapter, off)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
757 if (!addr) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
758 offset = off; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
759 addr = (void *) ((uint8_t *)adapter->ahw.pci_base0 + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
760 offset); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
761 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
762 UNM_WRITE_LOCK_IRQS(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
763 unm_nic_pci_change_crbwindow_128M(adapter, 0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
764 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
765 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
766 switch (len) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
767 case 1: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
768 *(__uint8_t *)data = UNM_NIC_PCI_READ_8(addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
769 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
770 case 2: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
771 *(__uint16_t *)data = UNM_NIC_PCI_READ_16(addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
772 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
773 case 4: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
774 *(__uint32_t *)data = UNM_NIC_PCI_READ_32(addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
775 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
776 case 8: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
777 *(__uint64_t *)data = UNM_NIC_PCI_READ_64(addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
778 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
779 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
780 #if !defined(NDEBUG) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
781 if ((len & 0x7) != 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
782 cmn_err(CE_WARN, "%s: %s len(%d) not multiple of 8.\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
783 unm_nic_driver_name, __FUNCTION__, len); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
784 #endif |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
785 UNM_NIC_HW_BLOCK_READ_64(data, addr, (len>>3)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
786 break; |
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 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
789 if (ADDR_IN_WINDOW1(off)) {// Window 1 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
790 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
|
791 } else {// Window 0 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
792 unm_nic_pci_change_crbwindow_128M(adapter, 1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
793 UNM_WRITE_UNLOCK_IRQR(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
794 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
795 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
796 return (0); |
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 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
799 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
800 unm_nic_hw_read_wx_2M(unm_adapter *adapter, u64 off, void *data, int len) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
801 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
802 int rv; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
803 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
804 rv = unm_nic_pci_get_crb_addr_2M(adapter, &off, len); |
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 if (rv == -1) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
807 cmn_err(CE_PANIC, "%s: invalid offset: 0x%016llx\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
808 __FUNCTION__, off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
809 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
810 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
811 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
812 if (rv == 1) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
813 UNM_WRITE_LOCK_IRQS(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
814 crb_win_lock(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
815 unm_nic_pci_set_crbwindow_2M(adapter, &off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
816 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
817 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
818 switch (len) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
819 case 1: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
820 *(__uint8_t *)data = UNM_NIC_PCI_READ_8((void *) (uptr_t)off); |
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 case 2: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
823 *(__uint16_t *)data = UNM_NIC_PCI_READ_16((void *) (uptr_t)off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
824 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
825 case 4: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
826 *(__uint32_t *)data = UNM_NIC_PCI_READ_32((void *) (uptr_t)off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
827 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
828 case 8: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
829 *(__uint64_t *)data = UNM_NIC_PCI_READ_64((void *) (uptr_t)off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
830 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
831 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
832 #if !defined(NDEBUG) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
833 if ((len & 0x7) != 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
834 cmn_err(CE_WARN, "%s: %s len(%d) not multiple of 8.\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
835 unm_nic_driver_name, __FUNCTION__, len); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
836 #endif |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
837 UNM_NIC_HW_BLOCK_READ_64(data, (void *) (uptr_t)off, (len>>3)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
838 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
839 } |
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 if (rv == 1) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
842 crb_win_unlock(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
843 UNM_WRITE_UNLOCK_IRQR(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
844 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
845 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
846 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
847 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
848 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
849 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
850 unm_nic_hw_read_wx_128M(unm_adapter *adapter, u64 off, void *data, int len) |
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 void *addr; |
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 if (ADDR_IN_WINDOW1(off)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
855 // Window 1 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
856 addr = CRB_NORMALIZE(adapter, off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
857 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
|
858 } else {// Window 0 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
859 addr = (void *) (uptr_t)(pci_base_offset(adapter, off)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
860 UNM_WRITE_LOCK_IRQS(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
861 unm_nic_pci_change_crbwindow_128M(adapter, 0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
862 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
863 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
864 if (!addr) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
865 if (ADDR_IN_WINDOW1(off)) {// Window 1 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
866 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
|
867 } else {// Window 0 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
868 unm_nic_pci_change_crbwindow_128M(adapter, 1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
869 UNM_WRITE_UNLOCK_IRQR(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
870 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
871 return (1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
872 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
873 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
874 switch (len) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
875 case 1: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
876 *(__uint8_t *)data = UNM_NIC_PCI_READ_8(addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
877 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
878 case 2: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
879 *(__uint16_t *)data = UNM_NIC_PCI_READ_16(addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
880 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
881 case 4: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
882 *(__uint32_t *)data = UNM_NIC_PCI_READ_32(addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
883 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
884 case 8: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
885 *(__uint64_t *)data = UNM_NIC_PCI_READ_64(addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
886 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
887 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
888 #if !defined(NDEBUG) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
889 if ((len & 0x7) != 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
890 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
|
891 "%s: %s len(%d) not multiple of 8.\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
892 unm_nic_driver_name, __FUNCTION__, len); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
893 #endif |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
894 UNM_NIC_HW_BLOCK_READ_64(data, addr, (len>>3)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
895 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
896 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
897 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
898 if (ADDR_IN_WINDOW1(off)) {// Window 1 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
899 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
|
900 } else {// Window 0 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
901 unm_nic_pci_change_crbwindow_128M(adapter, 1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
902 UNM_WRITE_UNLOCK_IRQR(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
903 } |
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 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
906 } |
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 /* PCI Windowing for DDR regions. */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
909 #define ADDR_IN_RANGE(addr, low, high) \ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
910 (((addr) <= (high)) && ((low) ? ((addr) >= (low)) : 1)) |
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 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
913 * check memory access boundary. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
914 * used by test agent. support ddr access only for now |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
915 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
916 /* ARGSUSED */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
917 static unsigned long |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
918 unm_nic_pci_mem_bound_check(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
|
919 unsigned long long addr, int size) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
920 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
921 if (!ADDR_IN_RANGE(addr, UNM_ADDR_DDR_NET, UNM_ADDR_DDR_NET_MAX) || |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
922 !ADDR_IN_RANGE(addr + size -1, UNM_ADDR_DDR_NET, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
923 UNM_ADDR_DDR_NET_MAX) || ((size != 1) && (size != 2) && |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
924 (size != 4) && (size != 8))) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
925 return (0); |
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 return (1); |
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 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
930 int unm_pci_set_window_warning_count = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
931 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
932 unsigned long long |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
933 unm_nic_pci_set_window_128M(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
|
934 unsigned long long addr) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
935 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
936 int window; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
937 unsigned long long qdr_max; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
938 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
939 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
|
940 qdr_max = NX_P2_ADDR_QDR_NET_MAX; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
941 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
942 qdr_max = NX_P3_ADDR_QDR_NET_MAX; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
943 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
944 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
945 if (ADDR_IN_RANGE(addr, UNM_ADDR_DDR_NET, UNM_ADDR_DDR_NET_MAX)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
946 /* DDR network side */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
947 /* MN access should never come here */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
948 cmn_err(CE_PANIC, "%s\n", __FUNCTION__); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
949 addr = -1ULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
950 } else if (ADDR_IN_RANGE(addr, UNM_ADDR_OCM0, UNM_ADDR_OCM0_MAX)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
951 addr -= UNM_ADDR_OCM0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
952 addr += UNM_PCI_OCM0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
953 } else if (ADDR_IN_RANGE(addr, UNM_ADDR_OCM1, UNM_ADDR_OCM1_MAX)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
954 addr -= UNM_ADDR_OCM1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
955 addr += UNM_PCI_OCM1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
956 } else if (ADDR_IN_RANGE(addr, UNM_ADDR_QDR_NET, qdr_max)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
957 /* QDR network side */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
958 addr -= UNM_ADDR_QDR_NET; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
959 window = (addr >> 22) & 0x3f; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
960 if (adapter->ahw.qdr_sn_window != window) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
961 adapter->ahw.qdr_sn_window = window; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
962 UNM_NIC_PCI_WRITE_32((window << 22), |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
963 (void *) (uptr_t)(PCI_OFFSET_SECOND_RANGE(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
964 UNM_PCIX_PH_REG(PCIE_SN_WINDOW_REG( |
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_func))))); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
966 /* MUST make sure window is set before we forge on... */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
967 (void) UNM_NIC_PCI_READ_32((void *) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
968 (uptr_t)(PCI_OFFSET_SECOND_RANGE(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
969 UNM_PCIX_PH_REG(PCIE_SN_WINDOW_REG( |
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_func))))); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
971 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
972 addr -= (window * 0x400000); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
973 addr += UNM_PCI_QDR_NET; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
974 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
975 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
976 * peg gdb frequently accesses memory that doesn't exist, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
977 * this limits the chit chat so debugging isn't slowed down. |
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 if ((unm_pci_set_window_warning_count++ < 8) || |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
980 (unm_pci_set_window_warning_count%64 == 0)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
981 cmn_err(CE_WARN, "%s: Warning:unm_nic_pci_set_window() " |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
982 "Unknown address range!\n", unm_nic_driver_name); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
983 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
984 addr = -1ULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
985 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
986 return (addr); |
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 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
989 unsigned long long |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
990 unm_nic_pci_set_window_2M(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
|
991 unsigned long long addr) |
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 int window; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
994 u32 win_read; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
995 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
996 if (ADDR_IN_RANGE(addr, UNM_ADDR_DDR_NET, UNM_ADDR_DDR_NET_MAX)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
997 /* DDR network side */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
998 window = MN_WIN(addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
999 adapter->ahw.ddr_mn_window = window; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1000 adapter->unm_nic_hw_write_wx(adapter, adapter->ahw.mn_win_crb | |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1001 UNM_PCI_CRBSPACE, &window, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1002 adapter->unm_nic_hw_read_wx(adapter, adapter->ahw.mn_win_crb | |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1003 UNM_PCI_CRBSPACE, &win_read, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1004 if ((win_read << 17) != window) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1005 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
|
1006 "%s: Written MNwin (0x%x) != Read MNwin (0x%x)\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1007 __FUNCTION__, window, win_read); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1008 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1009 addr = GET_MEM_OFFS_2M(addr) + UNM_PCI_DDR_NET; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1010 } else if (ADDR_IN_RANGE(addr, UNM_ADDR_OCM0, UNM_ADDR_OCM0_MAX)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1011 unsigned int temp1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1012 // OCM: pci_addr[20:18] == 011 && pci_addr[17:11] != 7f |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1013 if ((addr & 0x00ff800) == 0xff800) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1014 // if bits 19:18&17:11 are on |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1015 cmn_err(CE_WARN, "%s: QM access not handled.\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1016 __FUNCTION__); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1017 addr = -1ULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1018 } |
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 window = OCM_WIN(addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1021 adapter->ahw.ddr_mn_window = window; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1022 adapter->unm_nic_hw_write_wx(adapter, adapter->ahw.mn_win_crb | |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1023 UNM_PCI_CRBSPACE, &window, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1024 adapter->unm_nic_hw_read_wx(adapter, adapter->ahw.mn_win_crb | |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1025 UNM_PCI_CRBSPACE, &win_read, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1026 temp1 = ((window & 0x1FF) << 7) | |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1027 ((window & 0x0FFFE0000) >> 17); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1028 if (win_read != temp1) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1029 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
|
1030 "%s: Written OCMwin(0x%x) != Read OCMwin(0x%x)\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1031 __FUNCTION__, temp1, win_read); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1032 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1033 addr = GET_MEM_OFFS_2M(addr) + UNM_PCI_OCM0_2M; |
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 } else if (ADDR_IN_RANGE(addr, UNM_ADDR_QDR_NET, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1036 NX_P3_ADDR_QDR_NET_MAX)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1037 /* QDR network side */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1038 window = MS_WIN(addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1039 adapter->ahw.qdr_sn_window = window; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1040 adapter->unm_nic_hw_write_wx(adapter, adapter->ahw.ms_win_crb | |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1041 UNM_PCI_CRBSPACE, &window, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1042 adapter->unm_nic_hw_read_wx(adapter, adapter->ahw.ms_win_crb | |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1043 UNM_PCI_CRBSPACE, &win_read, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1044 if (win_read != window) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1045 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
|
1046 "%s: Written MSwin (0x%x) != Read MSwin (0x%x)\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1047 __FUNCTION__, window, win_read); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1048 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1049 addr = GET_MEM_OFFS_2M(addr) + UNM_PCI_QDR_NET; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1050 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1051 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1052 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1053 * peg gdb frequently accesses memory that doesn't exist, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1054 * this limits the chit chat so debugging isn't slowed down. |
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 if ((unm_pci_set_window_warning_count++ < 8) || |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1057 (unm_pci_set_window_warning_count%64 == 0)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1058 cmn_err(CE_WARN, "%s%d: %s Unknown address range!\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1059 adapter->name, adapter->instance, __FUNCTION__); |
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 addr = -1ULL; |
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 return (addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1064 } |
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 /* check if address is in the same windows as the previous access */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1067 static unsigned long |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1068 unm_nic_pci_is_same_window(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
|
1069 unsigned long long addr) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1070 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1071 int window; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1072 unsigned long long qdr_max; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1073 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1074 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
|
1075 qdr_max = NX_P2_ADDR_QDR_NET_MAX; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1076 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1077 qdr_max = NX_P3_ADDR_QDR_NET_MAX; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1078 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1079 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1080 if (ADDR_IN_RANGE(addr, UNM_ADDR_DDR_NET, UNM_ADDR_DDR_NET_MAX)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1081 /* DDR network side */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1082 /* MN access can not come here */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1083 cmn_err(CE_PANIC, "%s\n", __FUNCTION__); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1084 #if 0 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1085 window = ((addr - UNM_ADDR_DDR_NET) >> 25) & 0x3ff; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1086 if (adapter->ahw.ddr_mn_window == window) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1087 return (1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1088 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1089 #endif |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1090 } else if (ADDR_IN_RANGE(addr, UNM_ADDR_OCM0, UNM_ADDR_OCM0_MAX)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1091 return (1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1092 } else if (ADDR_IN_RANGE(addr, UNM_ADDR_OCM1, UNM_ADDR_OCM1_MAX)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1093 return (1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1094 } else if (ADDR_IN_RANGE(addr, UNM_ADDR_QDR_NET, qdr_max)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1095 /* QDR network side */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1096 window = ((addr - UNM_ADDR_QDR_NET) >> 22) & 0x3f; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1097 if (adapter->ahw.qdr_sn_window == window) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1098 return (1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1099 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1100 } |
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 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1103 } |
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 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1106 unm_nic_pci_mem_read_direct(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
|
1107 u64 off, void *data, int size) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1108 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1109 void *addr; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1110 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
|
1111 u64 start; |
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 #if 0 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1114 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1115 * This check can not be currently executed, since phanmon findq |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1116 * command breaks this check whereby 8 byte reads are being attempted |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1117 * on "aligned-by-4" addresses on x86. Reason this works is our version |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1118 * breaks up the access into 2 consecutive 4 byte writes; on other |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1119 * architectures, this might require "aligned-by-8" addresses and we |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1120 * will run into trouble. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1121 * |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1122 * Check alignment for expected sizes of 1, 2, 4, 8. Other size |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1123 * values will not trigger access. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1124 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1125 if ((off & (size - 1)) != 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1126 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1127 #endif |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1128 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1129 UNM_WRITE_LOCK_IRQS(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1130 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1131 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1132 * If attempting to access unknown address or straddle hw windows, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1133 * do not access. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1134 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1135 if (((start = adapter->unm_nic_pci_set_window(adapter, off)) == -1UL) || |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1136 (unm_nic_pci_is_same_window(adapter, off + size -1) == 0)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1137 UNM_WRITE_UNLOCK_IRQR(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1138 cmn_err(CE_WARN, "%s out of bound pci memory access. " |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1139 "offset is 0x%llx\n", unm_nic_driver_name, off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1140 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1141 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1142 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1143 addr = (void *) (uptr_t)(pci_base_offset(adapter, start)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1144 if (!addr) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1145 addr = (void *) ((uint8_t *)adapter->ahw.pci_base0 + start); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1146 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1147 switch (size) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1148 case 1: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1149 *(__uint8_t *)data = UNM_NIC_PCI_READ_8(addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1150 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1151 case 2: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1152 *(__uint16_t *)data = UNM_NIC_PCI_READ_16(addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1153 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1154 case 4: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1155 *(__uint32_t *)data = UNM_NIC_PCI_READ_32(addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1156 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1157 case 8: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1158 *(__uint64_t *)data = UNM_NIC_PCI_READ_64(addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1159 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1160 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1161 ret = -1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1162 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1163 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1164 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1165 UNM_WRITE_UNLOCK_IRQR(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1166 return (ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1167 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1168 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1169 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1170 unm_nic_pci_mem_write_direct(struct unm_adapter_s *adapter, u64 off, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1171 void *data, int size) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1172 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1173 void *addr; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1174 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
|
1175 u64 start; |
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 #if 0 |
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 * This check can not be currently executed, since firmware load |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1180 * breaks this check whereby 8 byte writes are being attempted on |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1181 * "aligned-by-4" addresses on x86. Reason this works is our version |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1182 * breaks up the access into 2 consecutive 4 byte writes; on other |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1183 * architectures, this might require "aligned-by-8" addresses and we |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1184 * will run into trouble. |
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 * Check alignment for expected sizes of 1, 2, 4, 8. Other size |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1187 * values will not trigger access. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1188 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1189 if ((off & (size - 1)) != 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1190 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1191 #endif |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1192 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1193 UNM_WRITE_LOCK_IRQS(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1194 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1195 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1196 * If attempting to access unknown address or straddle hw windows, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1197 * do not access. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1198 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1199 if (((start = adapter->unm_nic_pci_set_window(adapter, off)) == -1UL) || |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1200 (unm_nic_pci_is_same_window(adapter, off + size -1) == 0)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1201 UNM_WRITE_UNLOCK_IRQR(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1202 cmn_err(CE_WARN, "%s out of bound pci memory access. " |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1203 "offset is 0x%llx\n", unm_nic_driver_name, off); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1204 return (-1); |
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 addr = (void *) (uptr_t)(pci_base_offset(adapter, start)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1208 if (!addr) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1209 addr = (void *) ((uint8_t *)adapter->ahw.pci_base0 + start); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1210 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1211 switch (size) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1212 case 1: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1213 UNM_NIC_PCI_WRITE_8(*(__uint8_t *)data, addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1214 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1215 case 2: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1216 UNM_NIC_PCI_WRITE_16(*(__uint16_t *)data, addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1217 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1218 case 4: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1219 UNM_NIC_PCI_WRITE_32(*(__uint32_t *)data, addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1220 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1221 case 8: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1222 UNM_NIC_PCI_WRITE_64(*(__uint64_t *)data, addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1223 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1224 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1225 ret = -1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1226 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1227 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1228 UNM_WRITE_UNLOCK_IRQR(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1229 return (ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1230 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1231 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1232 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1233 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1234 unm_nic_pci_mem_write_128M(struct unm_adapter_s *adapter, u64 off, void *data, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1235 int size) |
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 int i, j, ret = 0, loop, sz[2], off0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1238 __uint32_t temp; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1239 __uint64_t off8, mem_crb, tmpw, word[2] = {0, 0}; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1240 #define MAX_CTL_CHECK 1000 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1241 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1242 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1243 * If not MN, go check for MS or invalid. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1244 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1245 if (unm_nic_pci_mem_bound_check(adapter, off, size) == 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1246 return (unm_nic_pci_mem_write_direct(adapter, off, data, size)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1247 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1248 off8 = off & 0xfffffff8; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1249 off0 = off & 0x7; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1250 sz[0] = (size < (8 - off0)) ? size : (8 - off0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1251 sz[1] = size - sz[0]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1252 loop = ((off0 + size - 1) >> 3) + 1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1253 /* LINTED: E_FALSE_LOGICAL_EXPR */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1254 mem_crb = (uptr_t)(pci_base_offset(adapter, UNM_CRB_DDR_NET)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1255 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1256 if ((size != 8) || (off0 != 0)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1257 for (i = 0; i < loop; i++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1258 if (adapter->unm_nic_pci_mem_read(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1259 off8 + (i << 3), &word[i], 8)) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1260 return (-1); |
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 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1264 switch (size) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1265 case 1: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1266 tmpw = *((__uint8_t *)data); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1267 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1268 case 2: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1269 tmpw = *((__uint16_t *)data); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1270 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1271 case 4: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1272 tmpw = *((__uint32_t *)data); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1273 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1274 case 8: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1275 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1276 tmpw = *((__uint64_t *)data); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1277 break; |
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 word[0] &= ~((~(~0ULL << (sz[0] * 8))) << (off0 * 8)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1280 word[0] |= tmpw << (off0 * 8); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1281 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1282 if (loop == 2) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1283 word[1] &= ~(~0ULL << (sz[1] * 8)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1284 word[1] |= tmpw >> (sz[0] * 8); |
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 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1287 UNM_WRITE_LOCK_IRQS(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1288 unm_nic_pci_change_crbwindow_128M(adapter, 0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1289 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1290 for (i = 0; i < loop; i++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1291 UNM_NIC_PCI_WRITE_32((__uint32_t)(off8 + (i << 3)), |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1292 (void *) (uptr_t)(mem_crb+MIU_TEST_AGT_ADDR_LO)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1293 UNM_NIC_PCI_WRITE_32(0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1294 (void *) (uptr_t)(mem_crb+MIU_TEST_AGT_ADDR_HI)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1295 UNM_NIC_PCI_WRITE_32(word[i] & 0xffffffff, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1296 (void *) (uptr_t)(mem_crb+MIU_TEST_AGT_WRDATA_LO)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1297 UNM_NIC_PCI_WRITE_32((word[i] >> 32) & 0xffffffff, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1298 (void *) (uptr_t)(mem_crb+MIU_TEST_AGT_WRDATA_HI)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1299 UNM_NIC_PCI_WRITE_32(MIU_TA_CTL_ENABLE|MIU_TA_CTL_WRITE, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1300 (void *) (uptr_t)(mem_crb+MIU_TEST_AGT_CTRL)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1301 UNM_NIC_PCI_WRITE_32(MIU_TA_CTL_START | MIU_TA_CTL_ENABLE | |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1302 MIU_TA_CTL_WRITE, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1303 (void *) (uptr_t)(mem_crb+MIU_TEST_AGT_CTRL)); |
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 for (j = 0; j < MAX_CTL_CHECK; j++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1306 temp = UNM_NIC_PCI_READ_32((void *) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1307 (uptr_t)(mem_crb+MIU_TEST_AGT_CTRL)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1308 if ((temp & MIU_TA_CTL_BUSY) == 0) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1309 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1310 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1311 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1312 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1313 if (j >= MAX_CTL_CHECK) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1314 cmn_err(CE_WARN, "%s: %s Fail to write thru agent\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1315 __FUNCTION__, unm_nic_driver_name); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1316 ret = -1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1317 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1318 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1319 } |
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 unm_nic_pci_change_crbwindow_128M(adapter, 1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1322 UNM_WRITE_UNLOCK_IRQR(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1323 return (ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1324 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1325 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1326 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1327 unm_nic_pci_mem_read_128M(struct unm_adapter_s *adapter, u64 off, void *data, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1328 int size) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1329 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1330 int i, j = 0, k, start, end, loop, sz[2], off0[2]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1331 __uint32_t temp; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1332 __uint64_t off8, val, mem_crb, word[2] = {0, 0}; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1333 #define MAX_CTL_CHECK 1000 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1334 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1335 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1336 * If not MN, go check for MS or invalid. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1337 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1338 if (unm_nic_pci_mem_bound_check(adapter, off, size) == 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1339 return (unm_nic_pci_mem_read_direct(adapter, off, data, size)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1340 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1341 off8 = off & 0xfffffff8; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1342 off0[0] = off & 0x7; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1343 off0[1] = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1344 sz[0] = (size < (8 - off0[0])) ? size : (8 - off0[0]); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1345 sz[1] = size - sz[0]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1346 loop = ((off0[0] + size - 1) >> 3) + 1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1347 /* LINTED: E_FALSE_LOGICAL_EXPR */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1348 mem_crb = (uptr_t)(pci_base_offset(adapter, UNM_CRB_DDR_NET)); |
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 UNM_WRITE_LOCK_IRQS(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1351 unm_nic_pci_change_crbwindow_128M(adapter, 0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1352 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1353 for (i = 0; i < loop; i++) { |
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_PCI_WRITE_32((__uint32_t)(off8 + (i << 3)), |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1355 (void *) (uptr_t)(mem_crb+MIU_TEST_AGT_ADDR_LO)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1356 UNM_NIC_PCI_WRITE_32(0, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1357 (void *) (uptr_t)(mem_crb+MIU_TEST_AGT_ADDR_HI)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1358 UNM_NIC_PCI_WRITE_32(MIU_TA_CTL_ENABLE, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1359 (void *) (uptr_t)(mem_crb+MIU_TEST_AGT_CTRL)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1360 UNM_NIC_PCI_WRITE_32(MIU_TA_CTL_START|MIU_TA_CTL_ENABLE, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1361 (void *) (uptr_t)(mem_crb+MIU_TEST_AGT_CTRL)); |
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 for (j = 0; j < MAX_CTL_CHECK; j++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1364 temp = UNM_NIC_PCI_READ_32((void *) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1365 (uptr_t)(mem_crb+MIU_TEST_AGT_CTRL)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1366 if ((temp & MIU_TA_CTL_BUSY) == 0) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1367 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1368 } |
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 if (j >= MAX_CTL_CHECK) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1372 cmn_err(CE_WARN, "%s: %s Fail to read through agent\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1373 __FUNCTION__, unm_nic_driver_name); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1374 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1375 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1376 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1377 start = off0[i] >> 2; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1378 end = (off0[i] + sz[i] - 1) >> 2; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1379 word[i] = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1380 for (k = start; k <= end; k++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1381 word[i] |= ((__uint64_t)UNM_NIC_PCI_READ_32( |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1382 (void *) (uptr_t)(mem_crb + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1383 MIU_TEST_AGT_RDDATA(k))) << (32*k)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1384 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1385 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1386 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1387 unm_nic_pci_change_crbwindow_128M(adapter, 1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1388 UNM_WRITE_UNLOCK_IRQR(&adapter->adapter_lock, flags); |
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 (j >= MAX_CTL_CHECK) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1391 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1392 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1393 if (sz[0] == 8) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1394 val = word[0]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1395 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1396 val = ((word[0] >> (off0[0] * 8)) & (~(~0ULL << (sz[0] * 8)))) | |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1397 ((word[1] & (~(~0ULL << (sz[1] * 8)))) << (sz[0] * 8)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1398 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1399 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1400 switch (size) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1401 case 1: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1402 *(__uint8_t *)data = val; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1403 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1404 case 2: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1405 *(__uint16_t *)data = val; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1406 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1407 case 4: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1408 *(__uint32_t *)data = val; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1409 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1410 case 8: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1411 *(__uint64_t *)data = val; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1412 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1413 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1414 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1415 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1416 |
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 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1419 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1420 unm_nic_pci_mem_write_2M(struct unm_adapter_s *adapter, u64 off, void *data, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1421 int size) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1422 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1423 int i, j, ret = 0, loop, sz[2], off0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1424 __uint32_t temp; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1425 __uint64_t off8, mem_crb, tmpw, word[2] = {0, 0}; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1426 #define MAX_CTL_CHECK 1000 |
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 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1429 * If not MN, go check for MS or invalid. |
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 if (off >= UNM_ADDR_QDR_NET && off <= NX_P3_ADDR_QDR_NET_MAX) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1432 mem_crb = UNM_CRB_QDR_NET; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1433 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1434 mem_crb = UNM_CRB_DDR_NET; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1435 if (unm_nic_pci_mem_bound_check(adapter, off, size) == 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1436 return (unm_nic_pci_mem_write_direct(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1437 off, data, size)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1438 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1439 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1440 off8 = off & 0xfffffff8; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1441 off0 = off & 0x7; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1442 sz[0] = (size < (8 - off0)) ? size : (8 - off0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1443 sz[1] = size - sz[0]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1444 loop = ((off0 + size - 1) >> 3) + 1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1445 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1446 if ((size != 8) || (off0 != 0)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1447 for (i = 0; i < loop; i++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1448 if (adapter->unm_nic_pci_mem_read(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1449 off8 + (i << 3), &word[i], 8)) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1450 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1451 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1452 } |
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 switch (size) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1455 case 1: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1456 tmpw = *((__uint8_t *)data); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1457 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1458 case 2: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1459 tmpw = *((__uint16_t *)data); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1460 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1461 case 4: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1462 tmpw = *((__uint32_t *)data); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1463 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1464 case 8: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1465 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1466 tmpw = *((__uint64_t *)data); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1467 break; |
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 word[0] &= ~((~(~0ULL << (sz[0] * 8))) << (off0 * 8)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1471 word[0] |= tmpw << (off0 * 8); |
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 if (loop == 2) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1474 word[1] &= ~(~0ULL << (sz[1] * 8)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1475 word[1] |= tmpw >> (sz[0] * 8); |
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 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1478 // don't lock here - write_wx gets the lock if each time |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1479 // UNM_WRITE_LOCK_IRQS(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1480 // unm_nic_pci_change_crbwindow_128M(adapter, 0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1481 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1482 for (i = 0; i < loop; i++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1483 temp = off8 + (i << 3); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1484 adapter->unm_nic_hw_write_wx(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1485 mem_crb+MIU_TEST_AGT_ADDR_LO, &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1486 temp = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1487 adapter->unm_nic_hw_write_wx(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1488 mem_crb+MIU_TEST_AGT_ADDR_HI, &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1489 temp = word[i] & 0xffffffff; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1490 adapter->unm_nic_hw_write_wx(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1491 mem_crb+MIU_TEST_AGT_WRDATA_LO, &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1492 temp = (word[i] >> 32) & 0xffffffff; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1493 adapter->unm_nic_hw_write_wx(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1494 mem_crb+MIU_TEST_AGT_WRDATA_HI, &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1495 temp = MIU_TA_CTL_ENABLE | MIU_TA_CTL_WRITE; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1496 adapter->unm_nic_hw_write_wx(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1497 mem_crb+MIU_TEST_AGT_CTRL, &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1498 temp = MIU_TA_CTL_START | MIU_TA_CTL_ENABLE | MIU_TA_CTL_WRITE; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1499 adapter->unm_nic_hw_write_wx(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1500 mem_crb+MIU_TEST_AGT_CTRL, &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1501 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1502 for (j = 0; j < MAX_CTL_CHECK; j++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1503 adapter->unm_nic_hw_read_wx(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1504 mem_crb + MIU_TEST_AGT_CTRL, &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1505 if ((temp & MIU_TA_CTL_BUSY) == 0) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1506 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1507 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1508 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1509 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1510 if (j >= MAX_CTL_CHECK) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1511 cmn_err(CE_WARN, "%s: Fail to write through agent\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1512 unm_nic_driver_name); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1513 ret = -1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1514 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1515 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1516 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1517 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1518 // unm_nic_pci_change_crbwindow_128M(adapter, 1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1519 // UNM_WRITE_UNLOCK_IRQR(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1520 return (ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1521 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1522 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1523 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1524 unm_nic_pci_mem_read_2M(struct unm_adapter_s *adapter, u64 off, void *data, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1525 int size) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1526 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1527 // unsigned long flags; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1528 int i, j = 0, k, start, end, loop, sz[2], off0[2]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1529 __uint32_t temp; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1530 __uint64_t off8, val, mem_crb, word[2] = {0, 0}; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1531 #define MAX_CTL_CHECK 1000 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1532 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1533 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1534 * If not MN, go check for MS or invalid. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1535 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1536 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1537 if (off >= UNM_ADDR_QDR_NET && off <= NX_P3_ADDR_QDR_NET_MAX) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1538 mem_crb = UNM_CRB_QDR_NET; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1539 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1540 mem_crb = UNM_CRB_DDR_NET; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1541 if (unm_nic_pci_mem_bound_check(adapter, off, size) == 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1542 return (unm_nic_pci_mem_read_direct(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1543 off, data, size)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1544 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1545 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1546 off8 = off & 0xfffffff8; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1547 off0[0] = off & 0x7; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1548 off0[1] = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1549 sz[0] = (size < (8 - off0[0])) ? size : (8 - off0[0]); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1550 sz[1] = size - sz[0]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1551 loop = ((off0[0] + size - 1) >> 3) + 1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1552 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1553 // don't get lock - write_wx will get it |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1554 // UNM_WRITE_LOCK_IRQS(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1555 // unm_nic_pci_change_crbwindow_128M(adapter, 0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1556 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1557 for (i = 0; i < loop; i++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1558 temp = off8 + (i << 3); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1559 adapter->unm_nic_hw_write_wx(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1560 mem_crb + MIU_TEST_AGT_ADDR_LO, &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1561 temp = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1562 adapter->unm_nic_hw_write_wx(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1563 mem_crb + MIU_TEST_AGT_ADDR_HI, &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1564 temp = MIU_TA_CTL_ENABLE; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1565 adapter->unm_nic_hw_write_wx(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1566 mem_crb + MIU_TEST_AGT_CTRL, &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1567 temp = MIU_TA_CTL_START | MIU_TA_CTL_ENABLE; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1568 adapter->unm_nic_hw_write_wx(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1569 mem_crb + MIU_TEST_AGT_CTRL, &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1570 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1571 for (j = 0; j < MAX_CTL_CHECK; j++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1572 adapter->unm_nic_hw_read_wx(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1573 mem_crb + MIU_TEST_AGT_CTRL, &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1574 if ((temp & MIU_TA_CTL_BUSY) == 0) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1575 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1576 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1577 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1578 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1579 if (j >= MAX_CTL_CHECK) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1580 cmn_err(CE_WARN, "%s: Fail to read through agent\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1581 unm_nic_driver_name); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1582 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1583 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1584 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1585 start = off0[i] >> 2; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1586 end = (off0[i] + sz[i] - 1) >> 2; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1587 for (k = start; k <= end; k++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1588 adapter->unm_nic_hw_read_wx(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1589 mem_crb + MIU_TEST_AGT_RDDATA(k), &temp, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1590 word[i] |= ((__uint64_t)temp << (32 * k)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1591 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1592 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1593 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1594 // unm_nic_pci_change_crbwindow_128M(adapter, 1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1595 // UNM_WRITE_UNLOCK_IRQR(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1596 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1597 if (j >= MAX_CTL_CHECK) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1598 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1599 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1600 if (sz[0] == 8) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1601 val = word[0]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1602 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1603 val = ((word[0] >> (off0[0] * 8)) & (~(~0ULL << (sz[0] * 8)))) | |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1604 ((word[1] & (~(~0ULL << (sz[1] * 8)))) << (sz[0] * 8)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1605 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1606 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1607 switch (size) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1608 case 1: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1609 *(__uint8_t *)data = val; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1610 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1611 case 2: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1612 *(__uint16_t *)data = val; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1613 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1614 case 4: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1615 *(__uint32_t *)data = val; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1616 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1617 case 8: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1618 *(__uint64_t *)data = val; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1619 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1620 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1621 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1622 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1623 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1624 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1625 unm_crb_writelit_adapter_2M(struct unm_adapter_s *adapter, unsigned long off, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1626 int data) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1627 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1628 return (unm_nic_hw_write_wx_2M(adapter, off, &data, 4)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1629 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1630 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1631 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1632 unm_crb_writelit_adapter_128M(struct unm_adapter_s *adapter, unsigned long off, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1633 int data) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1634 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1635 void *addr; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1636 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1637 if (ADDR_IN_WINDOW1(off)) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1638 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
|
1639 UNM_NIC_PCI_WRITE_32(data, CRB_NORMALIZE(adapter, off)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1640 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
|
1641 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1642 // unm_nic_write_w0 (adapter, off, data); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1643 UNM_WRITE_LOCK_IRQS(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1644 unm_nic_pci_change_crbwindow_128M(adapter, 0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1645 addr = (void *) (pci_base_offset(adapter, off)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1646 UNM_NIC_PCI_WRITE_32(data, addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1647 unm_nic_pci_change_crbwindow_128M(adapter, 1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1648 UNM_WRITE_UNLOCK_IRQR(&adapter->adapter_lock, flags); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1649 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1650 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1651 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1652 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1653 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1654 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1655 unm_nic_get_board_info(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
|
1656 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1657 int rv = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1658 unm_board_info_t *boardinfo; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1659 int i; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1660 int addr = BRDCFG_START; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1661 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
|
1662 uint32_t gpioval; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1663 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1664 boardinfo = &adapter->ahw.boardcfg; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1665 ptr32 = (uint32_t *)boardinfo; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1666 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1667 for (i = 0; i < sizeof (unm_board_info_t) / 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
|
1668 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
|
1669 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1670 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1671 DPRINTF(1, (CE_WARN, "ROM(%d): %x\n", i, *ptr32)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1672 ptr32++; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1673 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
|
1674 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1675 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1676 if (boardinfo->magic != 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
|
1677 DPRINTF(1, (CE_WARN, "%s: ERROR reading board config." |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1678 " Read %x, expected %x\n", unm_nic_driver_name, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1679 boardinfo->magic, 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
|
1680 rv = -1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1681 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1682 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1683 if (boardinfo->header_version != UNM_BDINFO_VERSION) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1684 DPRINTF(1, (CE_WARN, "%s: Unknown board config version." |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1685 " Read %x, expected %x\n", unm_nic_driver_name, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1686 boardinfo->header_version, UNM_BDINFO_VERSION)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1687 rv = -1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1688 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1689 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1690 if (boardinfo->board_type == UNM_BRDTYPE_P3_4_GB_MM) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1691 gpioval = UNM_CRB_READ_VAL_ADAPTER(UNM_ROMUSB_GLB_PAD_GPIO_I, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1692 adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1693 if ((gpioval & 0x8000) == 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1694 boardinfo->board_type = UNM_BRDTYPE_P3_10G_TRP; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1695 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1696 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1697 DPRINTF(0, (CE_WARN, "Discovered board type:0x%x ", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1698 boardinfo->board_type)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1699 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1700 switch ((unm_brdtype_t)boardinfo->board_type) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1701 case UNM_BRDTYPE_P2_SB35_4G: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1702 adapter->ahw.board_type = 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
|
1703 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1704 case UNM_BRDTYPE_P2_SB31_10G: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1705 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
|
1706 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
|
1707 case UNM_BRDTYPE_P2_SB31_10G_CX4: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1708 case UNM_BRDTYPE_P3_HMEZ: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1709 case 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
|
1710 case UNM_BRDTYPE_P3_10G_CX4: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1711 case UNM_BRDTYPE_P3_10G_CX4_LP: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1712 case UNM_BRDTYPE_P3_IMEZ: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1713 case UNM_BRDTYPE_P3_10G_SFP_PLUS: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1714 case UNM_BRDTYPE_P3_10G_XFP: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1715 case UNM_BRDTYPE_P3_10000_BASE_T: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1716 adapter->ahw.board_type = 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
|
1717 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1718 case UNM_BRDTYPE_P3_REF_QG: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1719 case UNM_BRDTYPE_P3_4_GB: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1720 case UNM_BRDTYPE_P3_4_GB_MM: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1721 adapter->ahw.board_type = 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
|
1722 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1723 case UNM_BRDTYPE_P1_BD: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1724 case UNM_BRDTYPE_P1_SB: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1725 case UNM_BRDTYPE_P1_SMAX: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1726 case UNM_BRDTYPE_P1_SOCK: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1727 adapter->ahw.board_type = 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
|
1728 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1729 case UNM_BRDTYPE_P3_10G_TRP: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1730 if (adapter->portnum < 2) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1731 adapter->ahw.board_type = 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
|
1732 else |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1733 adapter->ahw.board_type = 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
|
1734 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1735 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1736 DPRINTF(1, (CE_WARN, "%s: Unknown(%x)\n", unm_nic_driver_name, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1737 boardinfo->board_type)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1738 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1739 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1740 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1741 return (rv); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1742 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1743 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1744 /* NIU access sections */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1745 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1746 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1747 unm_nic_macaddr_set(struct unm_adapter_s *adapter, __uint8_t *addr) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1748 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1749 int ret = 0, i, retry_count = 10; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1750 unsigned char mac_addr[MAX_ADDR_LEN]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1751 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1752 /* For P3, we should not set MAC in HW any more */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1753 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
|
1754 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1755 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1756 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
|
1757 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
|
1758 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1759 * Flaky Mac address registers on qgig require several writes. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1760 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1761 for (i = 0; i < retry_count; ++i) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1762 if (unm_niu_macaddr_set(adapter, addr) != 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1763 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1764 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1765 (void) unm_niu_macaddr_get(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1766 (unsigned char *)mac_addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1767 if (memcmp(mac_addr, addr, 6) == 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1768 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1769 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1770 cmn_err(CE_WARN, "%s: Flaky MAC addr registers\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1771 unm_nic_driver_name); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1772 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1773 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1774 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
|
1775 ret = unm_niu_xg_macaddr_set(adapter, addr); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1776 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1777 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1778 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1779 cmn_err(CE_WARN, "\r\nUnknown board type encountered" |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1780 " while setting the MAC address.\n"); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1781 return (-1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1782 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1783 return (ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1784 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1785 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1786 #define MTU_FUDGE_FACTOR 100 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1787 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1788 unm_nic_set_mtu(struct unm_adapter_s *adapter, int new_mtu) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1789 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1790 long port = adapter->physical_port; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1791 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
|
1792 u32 port_mode = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1793 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1794 if (adapter->ahw.revision_id >= NX_P3_A2) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1795 return (nx_fw_cmd_set_mtu(adapter, new_mtu)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1796 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1797 new_mtu += MTU_FUDGE_FACTOR; /* so that MAC accepts frames > MTU */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1798 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
|
1799 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
|
1800 unm_nic_write_w0(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1801 UNM_NIU_GB_MAX_FRAME_SIZE(adapter->physical_port), |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1802 new_mtu); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1803 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1804 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1805 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1806 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
|
1807 adapter->unm_nic_hw_read_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
|
1808 &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
|
1809 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
|
1810 unm_nic_write_w0(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1811 UNM_NIU_AP_MAX_FRAME_SIZE(port), new_mtu); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1812 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1813 if (adapter->physical_port == 0) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1814 unm_nic_write_w0(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1815 UNM_NIU_XGE_MAX_FRAME_SIZE, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1816 new_mtu); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1817 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1818 unm_nic_write_w0(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1819 UNM_NIU_XG1_MAX_FRAME_SIZE, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1820 new_mtu); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1821 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1822 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1823 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1824 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1825 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1826 cmn_err(CE_WARN, "%s: Unknown brdtype\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1827 unm_nic_driver_name); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1828 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1829 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1830 return (ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1831 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1832 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1833 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1834 unm_nic_set_promisc_mode(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
|
1835 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1836 int ret; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1837 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1838 if (adapter->promisc) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1839 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1840 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1841 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
|
1842 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
|
1843 ret = unm_niu_set_promiscuous_mode(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1844 UNM_NIU_PROMISCOUS_MODE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1845 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1846 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1847 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
|
1848 ret = unm_niu_xg_set_promiscuous_mode(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1849 UNM_NIU_PROMISCOUS_MODE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1850 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1851 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1852 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1853 cmn_err(CE_WARN, "%s: Unknown brdtype\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1854 unm_nic_driver_name); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1855 ret = -1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1856 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1857 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1858 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1859 if (!ret) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1860 adapter->promisc = 1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1861 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1862 return (ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1863 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1864 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1865 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1866 unm_nic_unset_promisc_mode(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
|
1867 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1868 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
|
1869 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1870 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1871 * P3 does not unset promiscous mode. Why? |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1872 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1873 if (adapter->ahw.revision_id >= NX_P3_A2) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1874 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1875 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1876 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1877 if (!adapter->promisc) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1878 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1879 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1880 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
|
1881 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
|
1882 ret = unm_niu_set_promiscuous_mode(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1883 UNM_NIU_NON_PROMISCOUS_MODE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1884 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1885 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1886 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
|
1887 ret = unm_niu_xg_set_promiscuous_mode(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1888 UNM_NIU_NON_PROMISCOUS_MODE); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1889 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1890 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1891 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1892 cmn_err(CE_WARN, "%s: Unknown brdtype\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1893 unm_nic_driver_name); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1894 ret = -1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1895 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1896 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1897 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1898 if (!ret) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1899 adapter->promisc = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1900 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1901 return (ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1902 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1903 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1904 long |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1905 unm_nic_phy_read(unm_adapter *adapter, long reg, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1906 __uint32_t *readval) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1907 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1908 long ret = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1909 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1910 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
|
1911 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
|
1912 ret = unm_niu_gbe_phy_read(adapter, reg, readval); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1913 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1914 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1915 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
|
1916 DPRINTF(1, (CE_WARN, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1917 "%s: Function %s is not implemented for XG\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1918 unm_nic_driver_name, __FUNCTION__)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1919 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1920 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1921 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1922 DPRINTF(1, (CE_WARN, "%s: Unknown board type\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1923 unm_nic_driver_name)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1924 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1925 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1926 return (ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1927 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1928 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1929 long |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1930 unm_nic_init_port(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
|
1931 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1932 long portnum = adapter->physical_port; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1933 long ret = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1934 long reg = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1935 unm_niu_gbe_ifmode_t mode_dont_care = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1936 u32 port_mode = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1937 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1938 unm_nic_set_link_parameters(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1939 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1940 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
|
1941 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
|
1942 ret = unm_niu_enable_gbe_port(adapter, mode_dont_care); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1943 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1944 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1945 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
|
1946 adapter->unm_nic_hw_read_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
|
1947 &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
|
1948 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
|
1949 ret = unm_niu_enable_gbe_port(adapter, mode_dont_care); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1950 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1951 adapter->unm_crb_writelit_adapter(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1952 UNM_NIU_XGE_CONFIG_0 + (0x10000 * portnum), 0x5); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1953 UNM_CRB_READ_CHECK_ADAPTER(UNM_NIU_XGE_CONFIG_1 + |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1954 (0x10000 * portnum), ®, adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1955 if (adapter->ahw.revision_id < NX_P3_A2) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1956 reg = (reg & ~0x2000UL); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1957 adapter->unm_crb_writelit_adapter(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1958 UNM_NIU_XGE_CONFIG_1 + (0x10000 * portnum), reg); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1959 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1960 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1961 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1962 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1963 DPRINTF(1, (CE_WARN, "%s: Unknown board type\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1964 unm_nic_driver_name)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1965 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1966 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1967 return (ret); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1968 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1969 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1970 void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1971 unm_nic_stop_port(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
|
1972 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1973 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1974 mac_unregister(adapter->mach); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1975 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1976 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
|
1977 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
|
1978 (void) unm_niu_disable_gbe_port(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1979 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1980 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1981 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
|
1982 (void) unm_niu_disable_xg_port(adapter); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1983 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1984 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1985 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1986 DPRINTF(1, (CE_WARN, "%s: Unknown board type\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1987 unm_nic_driver_name)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1988 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1989 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1990 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1991 void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1992 unm_crb_write_adapter(unsigned long off, void *data, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1993 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
|
1994 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1995 (void) adapter->unm_nic_hw_write_wx(adapter, off, data, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1996 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1997 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1998 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
1999 unm_crb_read_adapter(unsigned long off, void *data, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2000 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
|
2001 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2002 return (adapter->unm_nic_hw_read_wx(adapter, off, data, 4)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2003 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2004 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2005 int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2006 unm_crb_read_val_adapter(unsigned long off, 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
|
2007 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2008 int data; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2009 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2010 adapter->unm_nic_hw_read_wx(adapter, off, &data, 4); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2011 return (data); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2012 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2013 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2014 void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2015 unm_nic_set_link_parameters(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
|
2016 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2017 unm_niu_phy_status_t status; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2018 uint16_t defval = (uint16_t)-1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2019 unm_niu_control_t mode; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2020 u32 port_mode = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2021 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2022 unm_nic_read_w0(adapter, UNM_NIU_MODE, (uint32_t *)&mode); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2023 if (mode.enable_ge) { // Gb 10/100/1000 Mbps mode |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2024 adapter->unm_nic_hw_read_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
|
2025 &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
|
2026 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
|
2027 adapter->link_speed = MBPS_1000; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2028 adapter->link_duplex = LINK_DUPLEX_FULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2029 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2030 if (unm_nic_phy_read(adapter, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2031 UNM_NIU_GB_MII_MGMT_ADDR_PHY_STATUS, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2032 (unm_crbword_t *)&status) == 0) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2033 if (status.link) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2034 switch (status.speed) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2035 case 0: adapter->link_speed = MBPS_10; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2036 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2037 case 1: adapter->link_speed = MBPS_100; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2038 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2039 case 2: adapter->link_speed = MBPS_1000; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2040 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2041 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2042 adapter->link_speed = defval; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2043 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2044 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2045 switch (status.duplex) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2046 case 0: adapter->link_duplex = LINK_DUPLEX_HALF; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2047 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2048 case 1: adapter->link_duplex = LINK_DUPLEX_FULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2049 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2050 default: |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2051 adapter->link_duplex = defval; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2052 break; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2053 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2054 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2055 adapter->link_speed = defval; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2056 adapter->link_duplex = defval; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2057 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2058 } else { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2059 adapter->link_speed = defval; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2060 adapter->link_duplex = defval; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2061 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2062 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2063 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2064 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2065 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2066 void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2067 unm_nic_flash_print(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
|
2068 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2069 int valid = 1; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2070 unm_board_info_t *board_info = &(adapter->ahw.boardcfg); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2071 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2072 if (board_info->magic != 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
|
2073 cmn_err(CE_WARN, "%s UNM Unknown board config, Read 0x%x " |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2074 "expected as 0x%x\n", unm_nic_driver_name, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2075 board_info->magic, 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
|
2076 valid = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2077 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2078 if (board_info->header_version != UNM_BDINFO_VERSION) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2079 cmn_err(CE_WARN, "%s UNM Unknown board config version." |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2080 " Read %x, expected %x\n", unm_nic_driver_name, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2081 board_info->header_version, UNM_BDINFO_VERSION); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2082 valid = 0; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2083 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2084 if (valid) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2085 unm_user_info_t user_info; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2086 int i; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2087 int addr = USER_START; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2088 int *ptr32; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2089 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2090 ptr32 = (int *)&user_info; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2091 for (i = 0; i < sizeof (unm_user_info_t) / 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
|
2092 i++) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2093 if (rom_fast_read(adapter, addr, ptr32) == -1) { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2094 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
|
2095 "%s: ERROR reading %s board userarea.\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2096 unm_nic_driver_name, unm_nic_driver_name); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2097 return; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2098 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2099 ptr32++; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2100 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
|
2101 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2102 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
|
2103 char *brd_name; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2104 GET_BRD_NAME_BY_TYPE(board_info->board_type, brd_name); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2105 cmn_err(CE_NOTE, "%s %s Board S/N %s Chip id 0x%x\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2106 unm_nic_driver_name, brd_name, user_info.serial_num, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2107 board_info->chip_id); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2108 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2109 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2110 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2111 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2112 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2113 nx_nic_send_cmd_descs(unm_adapter *adapter, cmdDescType0_t *cmd_desc_arr, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2114 int nr_elements) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2115 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2116 struct unm_cmd_buffer *pbuf; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2117 unsigned int i = 0, producer; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2118 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2119 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2120 * We need to check if space is available. |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2121 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2122 UNM_SPIN_LOCK(&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
|
2123 producer = adapter->cmdProducer; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2124 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2125 do { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2126 pbuf = &adapter->cmd_buf_arr[producer]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2127 pbuf->head = pbuf->tail = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2128 pbuf->msg = NULL; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2129 (void) memcpy(&adapter->ahw.cmdDescHead[producer], |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2130 &cmd_desc_arr[i], sizeof (cmdDescType0_t)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2131 unm_desc_dma_sync(adapter->ahw.cmd_desc_dma_handle, producer, |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2132 1, adapter->MaxTxDescCount, sizeof (cmdDescType0_t), |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2133 DDI_DMA_SYNC_FORDEV); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2134 producer = get_next_index(producer, adapter->MaxTxDescCount); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2135 i++; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2136 } while (i != nr_elements); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2137 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2138 adapter->cmdProducer = adapter->ahw.cmdProducer = producer; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2139 adapter->freecmds -= i; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2140 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2141 unm_nic_update_cmd_producer(adapter, producer); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2142 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2143 UNM_SPIN_UNLOCK(&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
|
2144 return (0); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2145 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2146 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2147 typedef struct { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2148 u64 qhdr, req_hdr, words[6]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2149 } nx_nic_req_t; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2150 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2151 typedef struct { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2152 u8 op, tag, mac_addr[6]; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2153 } nx_mac_req_t; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2154 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2155 static void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2156 nx_p3_sre_macaddr_change(unm_adapter *adapter, u8 *addr, u8 op) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2157 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2158 nx_nic_req_t req; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2159 nx_mac_req_t mac_req; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2160 int rv; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2161 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2162 (void) memset(&req, 0, sizeof (nx_nic_req_t)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2163 req.qhdr |= (NX_NIC_REQUEST << 23); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2164 req.req_hdr |= NX_MAC_EVENT; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2165 req.req_hdr |= ((u64)adapter->portnum << 16); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2166 mac_req.op = op; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2167 (void) memcpy(&mac_req.mac_addr, addr, 6); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2168 req.words[0] = HOST_TO_LE_64(*(u64 *)(uintptr_t)&mac_req); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2169 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2170 rv = nx_nic_send_cmd_descs(adapter, (cmdDescType0_t *)&req, 1); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2171 if (rv != 0) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2172 cmn_err(CE_WARN, "%s%d: Could not send mac update\n", |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2173 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
|
2174 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2175 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2176 static int |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2177 nx_p3_nic_set_promisc(unm_adapter *adapter, u32 mode) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2178 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2179 nx_nic_req_t req; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2180 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2181 (void) memset(&req, 0, sizeof (nx_nic_req_t)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2182 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2183 req.qhdr |= (NX_HOST_REQUEST << 23); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2184 req.req_hdr |= NX_NIC_H2C_OPCODE_PROXY_SET_VPORT_MISS_MODE; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2185 req.req_hdr |= ((u64)adapter->portnum << 16); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2186 req.words[0] = HOST_TO_LE_64(mode); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2187 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2188 return (nx_nic_send_cmd_descs(adapter, (cmdDescType0_t *)&req, 1)); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2189 } |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2190 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2191 /* |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2192 * Currently only invoked at interface initialization time |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2193 */ |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2194 void |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2195 nx_p3_nic_set_multi(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
|
2196 { |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2197 u8 bcast_addr[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2198 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2199 if (nx_p3_nic_set_promisc(adapter, VPORT_MISS_MODE_ACCEPT_ALL)) |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2200 cmn_err(CE_WARN, "Could not set promisc mode\n"); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2201 |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2202 nx_p3_sre_macaddr_change(adapter, adapter->mac_addr, NETXEN_MAC_ADD); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2203 nx_p3_sre_macaddr_change(adapter, bcast_addr, NETXEN_MAC_ADD); |
59ff93e4da95
PSARC 2008/045 NetXen 10 Gigabit Ethernet Driver
lucy wang - Sun Microsystems - Beijing China <xiuyan.wang@Sun.COM>
parents:
diff
changeset
|
2204 } |