usr/src/uts/common/io/fibre-channel/fca/oce/oce_main.c
author Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
Fri, 19 Feb 2010 18:04:10 -0800
changeset 11723 b7b5ccb8e5c5
parent 11374 b345d20da176
child 11878 ac93462db6d7
permissions -rw-r--r--
6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW 6916252 LSO not working with S11 oce driver 6916255 Enhance the RX/TX handling in the oce driver 6916259 Code cleanup (remove redundant code) in the oce driver
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
     1
/*
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
     2
 * CDDL HEADER START
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
     3
 *
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
     5
 * Common Development and Distribution License (the "License").
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
     6
 * You may not use this file except in compliance with the License.
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
     7
 *
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
     8
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
     9
 * or http://www.opensolaris.org/os/licensing.
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    10
 * See the License for the specific language governing permissions
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    11
 * and limitations under the License.
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    12
 *
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    13
 * When distributing Covered Code, include this CDDL HEADER in each
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    14
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    15
 * If applicable, add the following below this CDDL HEADER, with the
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    16
 * fields enclosed by brackets "[]" replaced with your own identifying
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    17
 * information: Portions Copyright [yyyy] [name of copyright owner]
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    18
 *
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    19
 * CDDL HEADER END
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    20
 */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    21
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    22
/*
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    23
 * Copyright 2009 Emulex.  All rights reserved.
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    24
 * Use is subject to license terms.
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    25
 */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    26
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    27
/*
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    28
 * Source file containing the implementation of the driver entry points
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    29
 * and related helper functions
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    30
 */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    31
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    32
#include <oce_impl.h>
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    33
#include <oce_stat.h>
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    34
#include <oce_ioctl.h>
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    35
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    36
#define	ATTACH_DEV_INIT 	0x1
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    37
#define	ATTACH_FM_INIT		0x2
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
    38
#define	ATTACH_LOCK_INIT	0x4
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
    39
#define	ATTACH_PCI_INIT 	0x8
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
    40
#define	ATTACH_HW_INIT		0x10
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
    41
#define	ATTACH_SETUP_TXRX 	0x20
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
    42
#define	ATTACH_SETUP_ADAP	0x40
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    43
#define	ATTACH_STAT_INIT	0x100
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    44
#define	ATTACH_MAC_REG		0x200
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    45
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    46
/* ---[ globals and externs ]-------------------------------------------- */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    47
const char oce_ident_string[] = OCE_IDENT_STRING;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    48
const char oce_mod_name[] = OCE_MOD_NAME;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    49
static const char oce_desc_string[] = OCE_DESC_STRING;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    50
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    51
char oce_version[] = OCE_REVISION;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    52
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    53
/* driver properties */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    54
static const char mtu_prop_name[] = "oce_default_mtu";
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    55
static const char tx_ring_size_name[] = "oce_tx_ring_size";
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
    56
static const char tx_bcopy_limit_name[] = "oce_tx_bcopy_limit";
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
    57
static const char rx_bcopy_limit_name[] = "oce_rx_bcopy_limit";
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    58
static const char fm_cap_name[] = "oce_fm_capability";
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    59
static const char log_level_name[] = "oce_log_level";
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    60
static const char lso_capable_name[] = "oce_lso_capable";
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    61
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    62
/* --[ static function prototypes here ]------------------------------- */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    63
static int oce_attach(dev_info_t *devinfo, ddi_attach_cmd_t cmd);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    64
static int oce_detach(dev_info_t *dip, ddi_detach_cmd_t cmd);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    65
static int oce_quiesce(dev_info_t *dip);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    66
static int oce_suspend(dev_info_t *dip);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    67
static int oce_resume(dev_info_t *dip);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    68
static void oce_unconfigure(struct oce_dev *dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    69
static void oce_init_locks(struct oce_dev *dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    70
static void oce_destroy_locks(struct oce_dev *dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    71
static void oce_get_params(struct oce_dev *dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    72
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    73
static struct cb_ops oce_cb_ops = {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    74
	nulldev,		/* cb_open */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    75
	nulldev,		/* cb_close */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    76
	nodev,			/* cb_strategy */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    77
	nodev,			/* cb_print */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    78
	nodev,			/* cb_dump */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    79
	nodev,			/* cb_read */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    80
	nodev,			/* cb_write */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    81
	nodev,			/* cb_ioctl */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    82
	nodev,			/* cb_devmap */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    83
	nodev,			/* cb_mmap */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    84
	nodev,			/* cb_segmap */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    85
	nochpoll,		/* cb_chpoll */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    86
	ddi_prop_op,	/* cb_prop_op */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    87
	NULL,			/* cb_stream */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    88
	D_MP,			/* cb_flag */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    89
	CB_REV,			/* cb_rev */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    90
	nodev,			/* cb_aread */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    91
	nodev			/* cb_awrite */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    92
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    93
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    94
static struct dev_ops oce_dev_ops = {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    95
	DEVO_REV,	/* devo_rev */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    96
	0,		/* devo_refcnt */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    97
	NULL,		/* devo_getinfo */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    98
	NULL,		/* devo_identify */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    99
	nulldev,	/* devo_probe */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   100
	oce_attach,	/* devo_attach */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   101
	oce_detach,	/* devo_detach */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   102
	nodev,		/* devo_reset */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   103
	&oce_cb_ops,	/* devo_cb_ops */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   104
	NULL,		/* devo_bus_ops */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   105
	nodev,		/* devo_power */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   106
	oce_quiesce	/* devo_quiesce */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   107
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   108
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   109
static struct modldrv oce_drv = {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   110
	&mod_driverops,	/* Type of module.  This one is a driver */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   111
	(char *)oce_ident_string, /* Description string */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   112
	&oce_dev_ops,	/* driver ops */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   113
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   114
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   115
static struct modlinkage oce_mod_linkage = {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   116
	MODREV_1, &oce_drv, NULL
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   117
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   118
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   119
#define	OCE_M_CB_FLAGS	(MC_IOCTL | MC_GETCAPAB | MC_SETPROP | MC_GETPROP)
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   120
static mac_callbacks_t oce_mac_cb = {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   121
	OCE_M_CB_FLAGS,		/* mc_callbacks */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   122
	oce_m_stat,		/* mc_getstat */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   123
	oce_m_start,		/* mc_start */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   124
	oce_m_stop,		/* mc_stop */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   125
	oce_m_promiscuous,	/* mc_setpromisc */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   126
	oce_m_multicast,	/* mc_multicast */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   127
	oce_m_unicast,		/* mc_unicast */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   128
	oce_m_send,		/* mc_tx */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   129
	oce_m_ioctl,		/* mc_ioctl */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   130
	oce_m_getcap,		/* mc_getcapab */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   131
	NULL,			/* open */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   132
	NULL,			/* close */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   133
	oce_m_setprop,		/* set properties */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   134
	oce_m_getprop		/* get properties */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   135
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   136
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   137
extern mac_priv_prop_t oce_priv_props[];
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   138
extern uint32_t oce_num_props;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   139
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   140
/* Module Init */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   141
int
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   142
_info(struct modinfo *modinfop)
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   143
{
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   144
	return (mod_info(&oce_mod_linkage, modinfop));
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   145
} /* _info */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   146
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   147
int
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   148
_init(void)
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   149
{
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   150
	int ret = 0;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   151
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   152
	/* install the module */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   153
	mac_init_ops(&oce_dev_ops, "oce");
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   154
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   155
	ret = mod_install(&oce_mod_linkage);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   156
	if (ret) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   157
		cmn_err(CE_WARN, "mod_install failed  rval=%x", ret);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   158
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   159
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   160
	return (ret);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   161
} /* _init */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   162
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   163
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   164
int
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   165
_fini(void)
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   166
{
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   167
	int ret = 0;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   168
	/* remove the module */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   169
	ret = mod_remove(&oce_mod_linkage);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   170
	if (ret != 0) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   171
		return (ret);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   172
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   173
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   174
	mac_fini_ops(&oce_dev_ops);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   175
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   176
	return (ret);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   177
} /* _fini */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   178
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   179
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   180
static int
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   181
oce_attach(dev_info_t *dip, ddi_attach_cmd_t cmd)
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   182
{
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   183
	int ret = 0;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   184
	struct oce_dev *dev = NULL;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   185
	mac_register_t *mac;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   186
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   187
	switch (cmd) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   188
	case DDI_RESUME:
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   189
		return (oce_resume(dip));
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   190
	default:
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   191
		return (DDI_FAILURE);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   192
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   193
	case DDI_ATTACH:
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   194
		break;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   195
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   196
	oce_log(dev, CE_CONT, MOD_CONFIG, "!%s, %s",
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   197
	    oce_desc_string, oce_version);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   198
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   199
	/* allocate dev */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   200
	dev = kmem_zalloc(sizeof (struct oce_dev), KM_SLEEP);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   201
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   202
	/* populate the dev structure */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   203
	dev->dip = dip;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   204
	dev->dev_id = ddi_get_instance(dip);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   205
	dev->suspended = B_FALSE;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   206
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   207
	/* get the parameters */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   208
	oce_get_params(dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   209
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   210
	/*
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   211
	 * set the ddi driver private data pointer. This is
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   212
	 * sent to all mac callback entry points
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   213
	 */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   214
	ddi_set_driver_private(dip, dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   215
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   216
	dev->attach_state |= ATTACH_DEV_INIT;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   217
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   218
	oce_fm_init(dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   219
	dev->attach_state |= ATTACH_FM_INIT;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   220
	ret = oce_setup_intr(dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   221
	if (ret != DDI_SUCCESS) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   222
		oce_log(dev, CE_WARN, MOD_CONFIG,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   223
		    "Interrupt setup failed with %d", ret);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   224
		goto attach_fail;
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   225
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   226
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   227
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   228
	/* initialize locks */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   229
	oce_init_locks(dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   230
	dev->attach_state |= ATTACH_LOCK_INIT;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   231
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   232
	/* setup PCI bars */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   233
	ret = oce_pci_init(dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   234
	if (ret != DDI_SUCCESS) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   235
		oce_log(dev, CE_WARN, MOD_CONFIG,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   236
		    "PCI initialization failed with %d", ret);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   237
		goto attach_fail;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   238
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   239
	dev->attach_state |= ATTACH_PCI_INIT;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   240
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   241
	/* HW init */
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   242
	ret = oce_hw_init(dev);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   243
	if (ret != DDI_SUCCESS) {
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   244
		oce_log(dev, CE_WARN, MOD_CONFIG,
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   245
		    "HW initialization failed with %d", ret);
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   246
		goto attach_fail;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   247
	}
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   248
	dev->attach_state |= ATTACH_HW_INIT;
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   249
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   250
	ret = oce_init_txrx(dev);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   251
	if (ret  != DDI_SUCCESS) {
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   252
		oce_log(dev, CE_WARN, MOD_CONFIG, "%s",
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   253
		    "Failed to init rings");
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   254
		goto attach_fail;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   255
	}
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   256
	dev->attach_state |= ATTACH_SETUP_TXRX;
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   257
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   258
	ret = oce_setup_adapter(dev);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   259
	if (ret != DDI_SUCCESS) {
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   260
		oce_log(dev, CE_WARN, MOD_CONFIG, "%s",
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   261
		    "Failed to setup adapter");
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   262
		goto attach_fail;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   263
	}
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   264
	dev->attach_state |=  ATTACH_SETUP_ADAP;
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   265
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   266
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   267
	ret = oce_stat_init(dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   268
	if (ret != DDI_SUCCESS) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   269
		oce_log(dev, CE_WARN, MOD_CONFIG,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   270
		    "kstat setup Failed with %d", ret);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   271
		goto attach_fail;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   272
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   273
	dev->attach_state |= ATTACH_STAT_INIT;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   274
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   275
	/* mac_register_t */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   276
	oce_log(dev, CE_NOTE, MOD_CONFIG,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   277
	    "MAC_VERSION = 0x%x", MAC_VERSION);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   278
	mac = mac_alloc(MAC_VERSION);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   279
	if (mac == NULL) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   280
		oce_log(dev, CE_WARN, MOD_CONFIG, "%s",
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   281
		    "MAC allocation Failed");
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   282
		goto attach_fail;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   283
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   284
	/*
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   285
	 * fill the mac structure before calling mac_register
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   286
	 */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   287
	mac->m_type_ident = MAC_PLUGIN_IDENT_ETHER;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   288
	mac->m_driver = dev;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   289
	mac->m_dip = dip;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   290
	mac->m_src_addr = dev->mac_addr;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   291
	mac->m_callbacks = &oce_mac_cb;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   292
	mac->m_min_sdu = 0;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   293
	mac->m_max_sdu = dev->mtu;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   294
	mac->m_margin = VLAN_TAGSZ;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   295
	mac->m_priv_props = oce_priv_props;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   296
	mac->m_priv_prop_count = oce_num_props;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   297
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   298
	oce_log(dev, CE_NOTE, MOD_CONFIG,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   299
	    "Driver Private structure = 0x%p", (void *)dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   300
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   301
	/* now register with GLDv3 */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   302
	ret = mac_register(mac, (mac_handle_t *)&dev->mac_handle);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   303
	/* regardless of the status, free mac_register */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   304
	mac_free(mac);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   305
	mac = NULL;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   306
	if (ret != DDI_SUCCESS) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   307
		oce_log(dev, CE_WARN, MOD_CONFIG,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   308
		    "MAC registration failed :0x%x", ret);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   309
		goto attach_fail;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   310
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   311
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   312
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   313
	/* correct link status only after start */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   314
	mac_link_update(dev->mac_handle, LINK_STATE_UNKNOWN);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   315
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   316
	dev->attach_state |= ATTACH_MAC_REG;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   317
	dev->state |= STATE_INIT;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   318
	oce_log(dev, CE_NOTE, MOD_CONFIG, "%s",
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   319
	    "ATTACH SUCCESS");
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   320
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   321
	return (DDI_SUCCESS);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   322
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   323
attach_fail:
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   324
	oce_unconfigure(dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   325
	return (DDI_FAILURE);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   326
} /* oce_attach */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   327
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   328
static int
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   329
oce_detach(dev_info_t *dip, ddi_detach_cmd_t cmd)
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   330
{
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   331
	struct oce_dev *dev;
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   332
	int pcnt = 0;
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   333
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   334
	dev = ddi_get_driver_private(dip);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   335
	if (dev == NULL) {
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   336
		return (DDI_FAILURE);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   337
	}
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   338
	oce_log(dev, CE_NOTE, MOD_CONFIG,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   339
	    "Detaching driver: cmd = 0x%x", cmd);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   340
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   341
	switch (cmd) {
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   342
	default:
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   343
		return (DDI_FAILURE);
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   344
	case DDI_SUSPEND:
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   345
		return (oce_suspend(dip));
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   346
	case DDI_DETACH:
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   347
		break;
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   348
	} /* switch cmd */
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   349
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   350
	/* Fail detach if MAC unregister is unsuccessfule */
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   351
	if (mac_unregister(dev->mac_handle) != 0) {
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   352
		oce_log(dev, CE_WARN, MOD_CONFIG, "%s",
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   353
		    "Failed to unregister MAC ");
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   354
		return (DDI_FAILURE);
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   355
	}
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   356
	dev->attach_state &= ~ATTACH_MAC_REG;
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   357
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   358
	/* check if the detach is called with out stopping */
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   359
	DEV_LOCK(dev);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   360
	if (dev->state & STATE_MAC_STARTED) {
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   361
		dev->state &= ~STATE_MAC_STARTED;
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   362
		oce_stop(dev);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   363
		DEV_UNLOCK(dev);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   364
	} else
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   365
		DEV_UNLOCK(dev);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   366
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   367
	/*
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   368
	 * Wait for Packets sent up to be freed
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   369
	 */
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   370
	if ((pcnt = oce_rx_pending(dev)) != 0) {
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   371
		oce_log(dev, CE_WARN, MOD_CONFIG,
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   372
		    "%d Pending Buffers Detach failed", pcnt);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   373
		return (DDI_FAILURE);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   374
	}
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   375
	oce_unconfigure(dev);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   376
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   377
	return (DDI_SUCCESS);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   378
} /* oce_detach */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   379
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   380
static int
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   381
oce_quiesce(dev_info_t *dip)
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   382
{
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   383
	int ret = DDI_SUCCESS;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   384
	struct oce_dev *dev = ddi_get_driver_private(dip);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   385
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   386
	if (dev == NULL) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   387
		return (DDI_FAILURE);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   388
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   389
	if (dev->suspended) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   390
		return (DDI_SUCCESS);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   391
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   392
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   393
	oce_chip_di(dev);
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   394
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   395
	ret = oce_reset_fun(dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   396
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   397
	return (ret);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   398
}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   399
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   400
static int
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   401
oce_suspend(dev_info_t *dip)
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   402
{
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   403
	struct oce_dev *dev = ddi_get_driver_private(dip);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   404
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   405
	mutex_enter(&dev->dev_lock);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   406
	/* Suspend the card */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   407
	dev->suspended = B_TRUE;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   408
	/* stop the adapter */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   409
	if (dev->state & STATE_MAC_STARTED) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   410
		oce_stop(dev);
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   411
		oce_unsetup_adapter(dev);
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   412
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   413
	dev->state &= ~STATE_MAC_STARTED;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   414
	mutex_exit(&dev->dev_lock);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   415
	return (DDI_SUCCESS);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   416
} /* oce_suspend */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   417
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   418
static int
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   419
oce_resume(dev_info_t *dip)
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   420
{
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   421
	struct oce_dev *dev;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   422
	int ret;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   423
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   424
	/* get the dev pointer from dip */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   425
	dev = ddi_get_driver_private(dip);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   426
	mutex_enter(&dev->dev_lock);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   427
	if (!dev->suspended) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   428
		mutex_exit(&dev->dev_lock);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   429
		return (DDI_SUCCESS);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   430
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   431
	if (dev->state & STATE_MAC_STARTED) {
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   432
		ret = oce_setup_adapter(dev);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   433
		if (ret != DDI_SUCCESS) {
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   434
			mutex_exit(&dev->dev_lock);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   435
			return (DDI_FAILURE);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   436
		}
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   437
		ret = oce_start(dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   438
		if (ret != DDI_SUCCESS) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   439
			mutex_exit(&dev->dev_lock);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   440
			return (DDI_FAILURE);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   441
		}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   442
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   443
	dev->suspended = B_FALSE;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   444
	dev->state |= STATE_MAC_STARTED;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   445
	mutex_exit(&dev->dev_lock);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   446
	return (ret);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   447
} /* oce_resume */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   448
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   449
static void
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   450
oce_init_locks(struct oce_dev *dev)
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   451
{
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   452
	/* initialize locks */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   453
	mutex_init(&dev->dev_lock, NULL, MUTEX_DRIVER,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   454
	    DDI_INTR_PRI(dev->intr_pri));
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   455
	mutex_init(&dev->bmbx_lock, NULL, MUTEX_DRIVER,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   456
	    DDI_INTR_PRI(dev->intr_pri));
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   457
} /* oce_init_locks */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   458
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   459
static void
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   460
oce_destroy_locks(struct oce_dev *dev)
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   461
{
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   462
	mutex_destroy(&dev->dev_lock);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   463
	mutex_destroy(&dev->bmbx_lock);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   464
} /* oce_destroy_locks */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   465
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   466
static void
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   467
oce_unconfigure(struct oce_dev *dev)
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   468
{
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   469
	uint32_t state = dev->attach_state;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   470
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   471
	if (state & ATTACH_MAC_REG) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   472
		(void) mac_unregister(dev->mac_handle);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   473
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   474
	if (state & ATTACH_STAT_INIT) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   475
		oce_stat_fini(dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   476
	}
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   477
	if (state & ATTACH_SETUP_ADAP) {
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   478
		oce_unsetup_adapter(dev);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   479
	}
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   480
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   481
	if (state & ATTACH_SETUP_TXRX) {
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   482
		oce_fini_txrx(dev);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   483
	}
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   484
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   485
	if (state & ATTACH_HW_INIT) {
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   486
		oce_hw_fini(dev);
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   487
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   488
	if (state & ATTACH_PCI_INIT) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   489
		oce_pci_fini(dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   490
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   491
	if (state & ATTACH_LOCK_INIT) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   492
		oce_destroy_locks(dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   493
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   494
	if (state & ATTACH_FM_INIT) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   495
		oce_fm_fini(dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   496
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   497
	if (state & ATTACH_DEV_INIT) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   498
		ddi_set_driver_private(dev->dip, NULL);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   499
		kmem_free(dev, sizeof (struct oce_dev));
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   500
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   501
} /* oce_unconfigure */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   502
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   503
static void
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   504
oce_get_params(struct oce_dev *dev)
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   505
{
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   506
	uint32_t log_level;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   507
	uint16_t mod_mask;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   508
	uint16_t severity;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   509
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   510
	/* non tunables  */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   511
	dev->rx_ring_size = OCE_DEFAULT_RX_RING_SIZE;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   512
	dev->flow_control = OCE_DEFAULT_FLOW_CONTROL;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   513
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   514
	/* configurable parameters */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   515
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   516
	/* restrict MTU to 1500 and 9000 only */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   517
	dev->mtu = ddi_prop_get_int(DDI_DEV_T_ANY, dev->dip,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   518
	    DDI_PROP_DONTPASS, (char *)mtu_prop_name, OCE_MIN_MTU);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   519
	if (dev->mtu != OCE_MIN_MTU && dev->mtu != OCE_MAX_MTU)
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   520
		dev->mtu = OCE_MIN_MTU;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   521
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   522
	dev->tx_ring_size = ddi_prop_get_int(DDI_DEV_T_ANY, dev->dip,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   523
	    DDI_PROP_DONTPASS, (char *)tx_ring_size_name,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   524
	    OCE_DEFAULT_TX_RING_SIZE);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   525
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   526
	dev->tx_bcopy_limit = ddi_prop_get_int(DDI_DEV_T_ANY, dev->dip,
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   527
	    DDI_PROP_DONTPASS, (char *)tx_bcopy_limit_name,
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   528
	    OCE_DEFAULT_TX_BCOPY_LIMIT);
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   529
	dev->rx_bcopy_limit = ddi_prop_get_int(DDI_DEV_T_ANY, dev->dip,
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   530
	    DDI_PROP_DONTPASS, (char *)rx_bcopy_limit_name,
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   531
	    OCE_DEFAULT_RX_BCOPY_LIMIT);
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   532
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   533
	dev->lso_capable = (boolean_t)ddi_prop_get_int(DDI_DEV_T_ANY, dev->dip,
11723
b7b5ccb8e5c5 6907671 oce driver should make MAC_PROP_ADV_10GFDX_CAP property as MAC_PROP_PERM_RW
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents: 11374
diff changeset
   534
	    DDI_PROP_DONTPASS, (char *)lso_capable_name, 1);
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   535
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   536
	dev->fm_caps = ddi_prop_get_int(DDI_DEV_T_ANY, dev->dip,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   537
	    DDI_PROP_DONTPASS, (char *)fm_cap_name, OCE_FM_CAPABILITY);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   538
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   539
	log_level = ddi_prop_get_int(DDI_DEV_T_ANY, dev->dip,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   540
	    DDI_PROP_DONTPASS, (char *)log_level_name,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   541
	    OCE_DEFAULT_LOG_SETTINGS);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   542
	severity = (uint16_t)(log_level & 0xffff);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   543
	mod_mask = (uint16_t)(log_level >> 16);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   544
	if (mod_mask > MOD_ISR) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   545
		mod_mask = 0;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   546
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   547
	if (severity > CE_IGNORE) {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   548
		severity = 0;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   549
	}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   550
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   551
	dev->mod_mask = mod_mask;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   552
	dev->severity = severity;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   553
} /* oce_get_params */