usr/src/uts/common/sys/fibre-channel/fca/oce/oce_io.h
author Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
Fri, 19 Feb 2010 18:04:10 -0800
changeset 11723 b7b5ccb8e5c5
parent 11374 b345d20da176
child 13032 1b6086d6d5a1
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
 * Header file defining the HW IO elements
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    29
 */
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
#ifndef _OCE_IO_H_
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    32
#define	_OCE_IO_H_
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    33
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    34
#ifdef __cplusplus
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    35
extern "C" {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    36
#endif
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    37
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    38
#include <sys/types.h>
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    39
#include <sys/dditypes.h>
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    40
#include <sys/mutex.h>
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    41
#include <sys/stream.h>
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    42
#include <sys/debug.h>
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    43
#include <sys/byteorder.h>
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    44
#include <oce_hw.h>
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    45
#include <oce_buf.h>
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    46
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    47
#define	DEFAULT_MQ_MBOX_TIMEOUT	(5 * 1000 * 1000) /* 5 sec (in usec) */
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
    48
#define	DEFAULT_DRAIN_TIME 200	/* Default Drain Time */
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    49
#define	MBX_TIMEOUT_SEC		5
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    50
#define	STAT_TIMEOUT		2000000 /* update stats every 2 sec */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    51
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    52
struct oce_dev;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    53
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    54
enum eq_len {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    55
	EQ_LEN_256 = 256,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    56
	EQ_LEN_512 = 512,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    57
	EQ_LEN_1024 = 1024,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    58
	EQ_LEN_2048 = 2048,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    59
	EQ_LEN_4096 = 4096
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    60
};
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
enum eqe_size {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    63
	EQE_SIZE_4 = 4,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    64
	EQE_SIZE_16 = 16
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    65
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    66
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
    67
enum qtype {
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
    68
	QTYPE_EQ,
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
    69
	QTYPE_MQ,
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
    70
	QTYPE_WQ,
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
    71
	QTYPE_RQ,
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
    72
	QTYPE_CQ,
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
    73
	QTYPE_RSS
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
    74
};
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
    75
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
    76
typedef enum qstate_e {
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
    77
	QDELETED = 0x0,
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
    78
	QCREATED = 0x1
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
    79
}qstate_t;
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
    80
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    81
struct eq_config {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    82
	/* number of entries in the eq */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    83
	enum eq_len q_len;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    84
	/* size of each entry */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    85
	enum eqe_size   item_size;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    86
	/* vector associated with this eq */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    87
	uint32_t    q_vector_num;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    88
	/* minimum possible eq delay i usec */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    89
	uint8_t		min_eqd;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    90
	/* max eq delay in usec */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    91
	uint8_t		max_eqd;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    92
	/* currently configured eq delay in usec */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    93
	uint8_t		cur_eqd;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    94
	/* pad */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    95
	uint8_t pad;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    96
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    97
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    98
struct oce_eq {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
    99
	/* configuration of this eq */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   100
	struct eq_config eq_cfg;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   101
	/* id assigned by the hw to this eq */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   102
	uint32_t eq_id;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   103
	/* handle to the creating parent dev */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   104
	void *parent;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   105
	/* callback context */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   106
	void *cb_context;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   107
	/* reference count of this structure */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   108
	uint32_t ref_count;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   109
	/* ring buffer for this eq */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   110
	oce_ring_buffer_t *ring;
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
   111
	/* Queue state */
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
   112
	qstate_t qstate;
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   113
	/* Lock for this queue */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   114
	kmutex_t lock;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   115
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   116
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   117
enum cq_len {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   118
	CQ_LEN_256 = 256,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   119
	CQ_LEN_512 = 512,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   120
	CQ_LEN_1024 = 1024
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   121
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   122
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   123
struct cq_config {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   124
	/* length of queue */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   125
	enum cq_len q_len;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   126
	/* size of each item */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   127
	uint32_t item_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
   128
	/* is eventable */
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
   129
	boolean_t is_eventable;
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   130
	/* solicited eventable? */
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
   131
	boolean_t sol_eventable;
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   132
	/* no delay? */
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
   133
	boolean_t nodelay;
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   134
	/* dma coalescing */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   135
	uint16_t dma_coalescing;
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
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   138
typedef uint16_t (*cq_handler_t)(void *arg1);
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
struct oce_cq {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   141
	/* configuration of this cq */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   142
	struct cq_config cq_cfg;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   143
	/* reference count of this structure */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   144
	uint32_t ref_count;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   145
	/* id given by the hardware */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   146
	uint32_t    cq_id;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   147
	/* parent device to which this cq belongs */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   148
	void *parent;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   149
	/* event queue associated with this cq */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   150
	struct oce_eq *eq;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   151
	cq_handler_t cq_handler;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   152
	/* placeholder for callback context */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   153
	void *cb_arg;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   154
	/* ring buffer for this cq */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   155
	oce_ring_buffer_t *ring;
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
   156
	/* Queue state */
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
   157
	qstate_t qstate;
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   158
	/* lock */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   159
	kmutex_t lock;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   160
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   161
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   162
struct mq_config {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   163
	uint32_t eqd;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   164
	uint8_t q_len;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   165
	uint8_t pad[3];
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
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   168
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   169
struct oce_mq {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   170
	/* configuration of this mq */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   171
	struct mq_config cfg;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   172
	/* handle to the parent device */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   173
	void *parent;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   174
	/* send queue */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   175
	oce_ring_buffer_t *ring;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   176
	/* idnetifier for the mq */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   177
	uint32_t mq_id;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   178
	struct oce_cq *cq;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   179
	struct oce_cq *async_cq;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   180
	/* free entries in Queue */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   181
	uint32_t mq_free;
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
   182
	/* Queue state */
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
   183
	qstate_t qstate;
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
   184
	/* lock for the mq */
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
   185
	kmutex_t lock;
11374
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
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   188
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   189
/*
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   190
 * utility structure that handles context of mbx
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   191
 */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   192
struct oce_mbx_ctx {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   193
	/* pointer to mbx */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   194
	struct oce_mbx *mbx;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   195
	/* call back functioin [optional] */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   196
	void (*cb)(void *ctx);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   197
	/* call back context [optional] */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   198
	void *cb_ctx;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   199
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   200
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   201
struct wq_config {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   202
	/* qtype */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   203
	uint8_t wq_type;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   204
	uint8_t pad[3];
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   205
	uint32_t q_len; /* number of wqes */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   206
	uint16_t pd_id; /* protection domain id */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   207
	uint16_t pci_fn_num; /* pci function number */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   208
	uint32_t eqd;	/* interrupt delay */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   209
	uint32_t nbufs; /* copy buffers */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   210
	uint32_t nhdl; /* preallocated memory handles */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   211
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   212
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   213
struct oce_wq {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   214
	struct wq_config cfg; /* q config */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   215
	void *parent; /* parent of this wq */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   216
	uint16_t wq_id; /* wq ID */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   217
	oce_ring_buffer_t *ring; /* ring buffer managing the wqes */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   218
	struct oce_cq	*cq; 	/* cq associated with this wq */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   219
	kmem_cache_t	*wqed_cache; /* packet desc cache */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   220
	OCE_LIST_T	wqe_desc_list; /* packet descriptor list */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   221
	oce_wq_bdesc_t  *wq_bdesc_array; /* buffer desc array */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   222
	OCE_LIST_T	wq_buf_list; /* buffer list */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   223
	OCE_LIST_T 	wq_mdesc_list; /* free list of memory handles */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   224
	oce_wq_mdesc_t  *wq_mdesc_array; /* preallocated memory handles */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   225
	uint32_t	wqm_used; /* memory handles uses */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   226
	boolean_t	resched; /* used for mac_tx_update */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   227
	uint32_t	wq_free; /* Wqe free */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   228
	uint32_t	tx_deferd; /* Wqe free */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   229
	uint32_t	pkt_drops; /* drops */
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
   230
	/* Queue state */
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
   231
	qstate_t qstate;
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
   232
	kmutex_t tx_lock; /* lock for the WQ */
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
   233
	kmutex_t txc_lock; /* tx compl 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
   234
	kmutex_t resched_lock; /* tx compl lock */
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   235
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   236
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   237
struct rq_config {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   238
	uint32_t q_len; /* q length */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   239
	uint32_t frag_size; /* fragment size. Send log2(size) in commmand */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   240
	uint32_t mtu; /* max frame size for this RQ */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   241
	uint32_t if_id; /* interface ID to associate this RQ with */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   242
	uint32_t is_rss_queue; /* is this RQ an RSS queue? */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   243
	uint32_t eqd;  /* interrupt delay */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   244
	uint32_t nbufs; /* Total data buffers */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   245
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   246
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   247
struct rq_shadow_entry {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   248
	oce_rq_bdesc_t *rqbd;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   249
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   250
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   251
struct oce_rq {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   252
	/* RQ config */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   253
	struct rq_config cfg;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   254
	/* RQ id */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   255
	uint32_t rq_id;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   256
	/* parent of this rq */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   257
	void *parent;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   258
	/* CPU ID assigend to this RQ if it is an RSS queue */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   259
	uint32_t rss_cpuid;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   260
	/* ring buffer managing the RQEs */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   261
	oce_ring_buffer_t *ring;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   262
	/* RQ Buffer cache  */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   263
	/* kmem_cache_t *rqb_cache; */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   264
	/* shadow list of mblk for rq ring */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   265
	struct rq_shadow_entry *shadow_ring;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   266
	/* cq associated with this queue */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   267
	struct oce_cq *cq;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   268
	oce_rq_bdesc_t  *rq_bdesc_array;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   269
	OCE_LIST_T rq_buf_list; /* Free list */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   270
	uint32_t buf_avail; /* buffer avaialable with hw */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   271
	uint32_t pending; /* Buffers sent up */
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
   272
	/* Queue state */
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
   273
	qstate_t qstate;
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   274
	/* rq lock */
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
   275
	kmutex_t rx_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
   276
	kmutex_t rc_lock;
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   277
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   278
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   279
struct link_status {
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   280
	/* dw 0 */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   281
	uint8_t physical_port;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   282
	uint8_t mac_duplex;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   283
	uint8_t mac_speed;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   284
	uint8_t mac_fault;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   285
	/* dw 1 */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   286
	uint8_t mgmt_mac_duplex;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   287
	uint8_t mgmt_mac_speed;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   288
	uint16_t rsvd0;
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   289
};
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   290
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   291
oce_dma_buf_t *oce_alloc_dma_buffer(struct oce_dev *dev,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   292
    uint32_t size, uint32_t flags);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   293
void oce_free_dma_buffer(struct oce_dev *dev, oce_dma_buf_t *dbuf);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   294
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   295
oce_ring_buffer_t *create_ring_buffer(struct oce_dev *dev,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   296
    uint32_t num_items, uint32_t item_size,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   297
    uint32_t flags);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   298
void destroy_ring_buffer(struct oce_dev *dev, oce_ring_buffer_t *ring);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   299
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   300
/* Queues */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   301
int oce_set_eq_delay(struct oce_dev *dev, uint32_t *eq_arr,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   302
    uint32_t eq_cnt, uint32_t eq_delay);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   303
void oce_arm_eq(struct oce_dev *dev, int16_t qid, int npopped,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   304
    boolean_t rearm, boolean_t clearint);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   305
void oce_arm_cq(struct oce_dev *dev, int16_t qid, int npopped,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   306
    boolean_t rearm);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   307
void oce_drain_eq(struct oce_eq *eq);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   308
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   309
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   310
/* Bootstrap */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   311
int oce_mbox_init(struct oce_dev *dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   312
int oce_mbox_fini(struct oce_dev *dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   313
int oce_mbox_dispatch(struct  oce_dev *dev, uint32_t tmo_sec);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   314
int oce_mbox_wait(struct  oce_dev *dev, uint32_t tmo_sec);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   315
int oce_mbox_post(struct oce_dev *dev, struct oce_mbx *mbx,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   316
    struct  oce_mbx_ctx *mbxctx);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   317
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   318
/* Hardware */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   319
boolean_t oce_is_reset_pci(struct oce_dev *dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   320
int oce_pci_soft_reset(struct oce_dev *dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   321
int oce_POST(struct oce_dev *dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   322
int oce_pci_init(struct oce_dev *dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   323
void oce_pci_fini(struct oce_dev *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
   324
int oce_init_txrx(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
   325
void oce_fini_txrx(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
   326
int oce_create_queues(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
   327
void oce_delete_queues(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
   328
void oce_delete_nw_interface(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
   329
int oce_create_nw_interface(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
   330
int oce_reset_fun(struct oce_dev *dev);
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   331
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   332
/* Transmit */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   333
struct oce_wq *oce_get_wq(struct oce_dev *dev, mblk_t *pkt);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   334
uint16_t  oce_drain_wq_cq(void *arg);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   335
mblk_t *oce_send_packet(struct oce_wq *wq, mblk_t *mp);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   336
int oce_start_wq(struct oce_wq *wq);
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
   337
void oce_clean_wq(struct oce_wq *wq);
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
   338
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   339
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   340
/* Recieve */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   341
uint16_t oce_drain_rq_cq(void *arg);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   342
int oce_start_rq(struct oce_rq *rq);
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
   343
void oce_clean_rq(struct oce_rq *rq);
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
   344
void oce_rq_discharge(struct oce_rq *rq);
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
   345
int oce_rx_pending(struct oce_dev *dev);
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   346
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   347
/* event handling */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   348
uint16_t oce_drain_mq_cq(void *arg);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   349
int oce_mq_mbox_post(struct  oce_dev *dev, struct  oce_mbx *mbx,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   350
    struct oce_mbx_ctx *mbxctx);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   351
struct oce_mbx *oce_mq_get_mbx(struct oce_dev *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
   352
void oce_clean_mq(struct oce_mq *mq);
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
int oce_start_mq(struct oce_mq *mq);
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
   354
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   355
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   356
/* mbx functions */
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   357
void mbx_common_req_hdr_init(struct mbx_hdr *hdr, uint8_t dom,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   358
    uint8_t port, uint8_t subsys, uint8_t opcode,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   359
    uint32_t timeout, uint32_t pyld_len);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   360
void mbx_nic_req_hdr_init(struct mbx_hdr *hdr, uint8_t dom, uint8_t port,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   361
    uint8_t opcode, uint32_t timeout, uint32_t pyld_len);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   362
int oce_get_fw_version(struct oce_dev *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
   363
int oce_read_mac_addr(struct oce_dev *dev, uint32_t if_id, uint8_t perm,
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   364
    uint8_t type, struct mac_address_format *mac);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   365
int oce_if_create(struct oce_dev *dev, uint32_t cap_flags, uint32_t en_flags,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   366
    uint16_t vlan_tag, uint8_t *mac_addr, uint32_t *if_id);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   367
int oce_if_del(struct oce_dev *dev, uint32_t if_id);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   368
int oce_num_intr_vectors_set(struct oce_dev *dev, uint32_t num_vectors);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   369
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   370
int oce_get_link_status(struct oce_dev *dev, struct link_status *link);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   371
int oce_set_rx_filter(struct oce_dev *dev,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   372
    struct mbx_set_common_ntwk_rx_filter *filter);
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
   373
int oce_set_multicast_table(struct oce_dev *dev, uint32_t if_id,
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
	struct ether_addr *mca_table, uint16_t mca_cnt, boolean_t promisc);
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   375
int oce_get_fw_config(struct oce_dev *dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   376
int oce_get_hw_stats(struct oce_dev *dev);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   377
int oce_set_flow_control(struct oce_dev *dev, uint32_t flow_control);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   378
int oce_get_flow_control(struct oce_dev *dev, uint32_t *flow_control);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   379
int oce_set_promiscuous(struct oce_dev *dev, boolean_t enable);
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
   380
int oce_add_mac(struct oce_dev *dev, uint32_t if_id,
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
   381
			const uint8_t *mac, uint32_t *pmac_id);
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
   382
int oce_del_mac(struct oce_dev *dev, uint32_t if_id, uint32_t *pmac_id);
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
   383
int oce_config_vlan(struct oce_dev *dev, uint32_t if_id,
11374
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   384
    struct normal_vlan *vtag_arr,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   385
    uint8_t vtag_cnt,  boolean_t untagged,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   386
    boolean_t enable_promisc);
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   387
int oce_config_link(struct oce_dev *dev, boolean_t enable);
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
int oce_issue_mbox(struct oce_dev *dev, queue_t *wq, mblk_t *mp,
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   390
    uint32_t *payload_length);
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
#ifdef __cplusplus
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   393
}
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   394
#endif
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   395
b345d20da176 PSARC/2009/526 oce - Emulex PCIe converged NIC driver
Sukumar Swaminathan <Sukumar.Swaminathan@Sun.COM>
parents:
diff changeset
   396
#endif /* _OCE_IO_H_ */