aboutsummaryrefslogtreecommitdiff
path: root/drivers/staging/benet/asyncmesg.h
blob: d1e779adb848b97f73ff6fc0c03b90d1aaadfd1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/*
 * Copyright (C) 2005 - 2008 ServerEngines
 * All rights reserved.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License version 2
 * as published by the Free Software Foundation.  The full GNU General
 * Public License is included in this distribution in the file called COPYING.
 *
 * Contact Information:
 * linux-drivers@serverengines.com
 *
 * ServerEngines
 * 209 N. Fair Oaks Ave
 * Sunnyvale, CA 94085
 */
/*
 * Autogenerated by srcgen version: 0127
 */
#ifndef __asyncmesg_amap_h__
#define __asyncmesg_amap_h__
#include "fwcmd_common.h"

/* --- ASYNC_EVENT_CODES --- */
#define ASYNC_EVENT_CODE_LINK_STATE     (1)
#define ASYNC_EVENT_CODE_ISCSI          (2)

/* --- ASYNC_LINK_STATES --- */
#define ASYNC_EVENT_LINK_DOWN           (0)	/* Link Down on a port */
#define ASYNC_EVENT_LINK_UP             (1)	/* Link Up on a port */

/*
 * The last 4 bytes of the async events have this common format.  It allows
 * the driver to distinguish [link]MCC_CQ_ENTRY[/link] structs from
 * asynchronous events.  Both arrive on the same completion queue.  This
 * structure also contains the common fields used to decode the async event.
 */
struct BE_ASYNC_EVENT_TRAILER_AMAP {
	u8 rsvd0[8];	/* DWORD 0 */
	u8 event_code[8];	/* DWORD 0 */
	u8 event_type[8];	/* DWORD 0 */
	u8 rsvd1[6];	/* DWORD 0 */
	u8 async_event;	/* DWORD 0 */
	u8 valid;		/* DWORD 0 */
} __packed;
struct ASYNC_EVENT_TRAILER_AMAP {
	u32 dw[1];
};

/*
 * Applicable in Initiator, Target and NIC modes.
 * A link state async event is seen by all device drivers as soon they
 * create an MCC ring. Thereafter, anytime the link status changes the
 * drivers will receive a link state async event. Notifications continue to
 * be sent until a driver destroys its MCC ring. A link down event is
 * reported when either port loses link. A link up event is reported
 * when either port regains link. When BE's failover mechanism is enabled, a
 * link down on the active port causes traffic to be diverted to the standby
 * port by the BE's ARM firmware (assuming the standby port has link). In
 * this case, the standy port assumes the active status. Note: when link is
 * restored on the failed port, traffic continues on the currently active
 * port. The ARM firmware does not attempt to 'fail back' traffic to
 * the restored port.
 */
struct BE_ASYNC_EVENT_LINK_STATE_AMAP {
	u8 port0_link_status[8];
	u8 port1_link_status[8];
	u8 active_port[8];
	u8 rsvd0[8];	/* DWORD 0 */
	u8 port0_duplex[8];
	u8 port0_speed[8];
	u8 port1_duplex[8];
	u8 port1_speed[8];
	u8 port0_fault[8];
	u8 port1_fault[8];
	u8 rsvd1[2][8];	/* DWORD 2 */
	struct BE_ASYNC_EVENT_TRAILER_AMAP trailer;
} __packed;
struct ASYNC_EVENT_LINK_STATE_AMAP {
	u32 dw[4];
};
#endif /* __asyncmesg_amap_h__ */