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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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), &reg, 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 }