Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
net
ethernet
cisco
enic
vnic_dev.h
Go to the documentation of this file.
1
/*
2
* Copyright 2008-2010 Cisco Systems, Inc. All rights reserved.
3
* Copyright 2007 Nuova Systems, Inc. All rights reserved.
4
*
5
* This program is free software; you may redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation; version 2 of the License.
8
*
9
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
10
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
11
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
12
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
13
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
14
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
15
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
16
* SOFTWARE.
17
*
18
*/
19
20
#ifndef _VNIC_DEV_H_
21
#define _VNIC_DEV_H_
22
23
#include "
vnic_resource.h
"
24
#include "
vnic_devcmd.h
"
25
26
#ifndef VNIC_PADDR_TARGET
27
#define VNIC_PADDR_TARGET 0x0000000000000000ULL
28
#endif
29
30
#ifndef readq
31
static
inline
u64
readq
(
void
__iomem
*
reg
)
32
{
33
return
(((
u64
)
readl
(reg + 0x4UL) << 32) |
34
(
u64
)
readl
(reg));
35
}
36
37
static
inline
void
writeq
(
u64
val
,
void
__iomem
*
reg
)
38
{
39
writel
(val & 0xffffffff, reg);
40
writel
(val >> 32, reg + 0x4UL);
41
}
42
#endif
43
44
#undef pr_fmt
45
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
46
47
enum
vnic_dev_intr_mode
{
48
VNIC_DEV_INTR_MODE_UNKNOWN
,
49
VNIC_DEV_INTR_MODE_INTX
,
50
VNIC_DEV_INTR_MODE_MSI
,
51
VNIC_DEV_INTR_MODE_MSIX
,
52
};
53
54
struct
vnic_dev_bar
{
55
void
__iomem
*
vaddr
;
56
dma_addr_t
bus_addr
;
57
unsigned
long
len
;
58
};
59
60
struct
vnic_dev_ring
{
61
void
*
descs
;
62
size_t
size
;
63
dma_addr_t
base_addr
;
64
size_t
base_align
;
65
void
*
descs_unaligned
;
66
size_t
size_unaligned
;
67
dma_addr_t
base_addr_unaligned
;
68
unsigned
int
desc_size
;
69
unsigned
int
desc_count
;
70
unsigned
int
desc_avail
;
71
};
72
73
struct
vnic_dev
;
74
struct
vnic_stats
;
75
76
void
*
vnic_dev_priv
(
struct
vnic_dev
*vdev);
77
unsigned
int
vnic_dev_get_res_count
(
struct
vnic_dev
*vdev,
78
enum
vnic_res_type
type
);
79
void
__iomem
*
vnic_dev_get_res
(
struct
vnic_dev
*vdev,
enum
vnic_res_type
type
,
80
unsigned
int
index
);
81
void
vnic_dev_clear_desc_ring
(
struct
vnic_dev_ring
*
ring
);
82
int
vnic_dev_alloc_desc_ring
(
struct
vnic_dev
*vdev,
struct
vnic_dev_ring
*
ring
,
83
unsigned
int
desc_count
,
unsigned
int
desc_size);
84
void
vnic_dev_free_desc_ring
(
struct
vnic_dev
*vdev,
85
struct
vnic_dev_ring
*
ring
);
86
int
vnic_dev_cmd
(
struct
vnic_dev
*vdev,
enum
vnic_devcmd_cmd
cmd
,
87
u64
*
a0
,
u64
*
a1
,
int
wait
);
88
void
vnic_dev_cmd_proxy_by_index_start
(
struct
vnic_dev
*vdev,
u16
index
);
89
void
vnic_dev_cmd_proxy_end
(
struct
vnic_dev
*vdev);
90
int
vnic_dev_fw_info
(
struct
vnic_dev
*vdev,
91
struct
vnic_devcmd_fw_info
**
fw_info
);
92
int
vnic_dev_spec
(
struct
vnic_dev
*vdev,
unsigned
int
offset
,
unsigned
int
size
,
93
void
*
value
);
94
int
vnic_dev_stats_dump
(
struct
vnic_dev
*vdev,
struct
vnic_stats
**
stats
);
95
int
vnic_dev_hang_notify
(
struct
vnic_dev
*vdev);
96
int
vnic_dev_packet_filter
(
struct
vnic_dev
*vdev,
int
directed,
int
multicast,
97
int
broadcast,
int
promisc,
int
allmulti);
98
int
vnic_dev_add_addr
(
struct
vnic_dev
*vdev,
u8
*
addr
);
99
int
vnic_dev_del_addr
(
struct
vnic_dev
*vdev,
u8
*
addr
);
100
int
vnic_dev_get_mac_addr
(
struct
vnic_dev
*vdev,
u8
*
mac_addr
);
101
int
vnic_dev_notify_set
(
struct
vnic_dev
*vdev,
u16
intr
);
102
int
vnic_dev_notify_unset
(
struct
vnic_dev
*vdev);
103
int
vnic_dev_link_status
(
struct
vnic_dev
*vdev);
104
u32
vnic_dev_port_speed
(
struct
vnic_dev
*vdev);
105
u32
vnic_dev_msg_lvl
(
struct
vnic_dev
*vdev);
106
u32
vnic_dev_mtu
(
struct
vnic_dev
*vdev);
107
int
vnic_dev_close
(
struct
vnic_dev
*vdev);
108
int
vnic_dev_enable_wait
(
struct
vnic_dev
*vdev);
109
int
vnic_dev_disable
(
struct
vnic_dev
*vdev);
110
int
vnic_dev_open
(
struct
vnic_dev
*vdev,
int
arg
);
111
int
vnic_dev_open_done
(
struct
vnic_dev
*vdev,
int
*
done
);
112
int
vnic_dev_init
(
struct
vnic_dev
*vdev,
int
arg
);
113
int
vnic_dev_deinit
(
struct
vnic_dev
*vdev);
114
void
vnic_dev_intr_coal_timer_info_default
(
struct
vnic_dev
*vdev);
115
int
vnic_dev_intr_coal_timer_info
(
struct
vnic_dev
*vdev);
116
int
vnic_dev_hang_reset
(
struct
vnic_dev
*vdev,
int
arg
);
117
int
vnic_dev_hang_reset_done
(
struct
vnic_dev
*vdev,
int
*
done
);
118
void
vnic_dev_set_intr_mode
(
struct
vnic_dev
*vdev,
119
enum
vnic_dev_intr_mode
intr_mode);
120
enum
vnic_dev_intr_mode
vnic_dev_get_intr_mode
(
struct
vnic_dev
*vdev);
121
u32
vnic_dev_intr_coal_timer_usec_to_hw
(
struct
vnic_dev
*vdev,
u32
usec);
122
u32
vnic_dev_intr_coal_timer_hw_to_usec
(
struct
vnic_dev
*vdev,
u32
hw_cycles);
123
u32
vnic_dev_get_intr_coal_timer_max
(
struct
vnic_dev
*vdev);
124
void
vnic_dev_unregister
(
struct
vnic_dev
*vdev);
125
int
vnic_dev_set_ig_vlan_rewrite_mode
(
struct
vnic_dev
*vdev,
126
u8
ig_vlan_rewrite_mode);
127
struct
vnic_dev
*
vnic_dev_register
(
struct
vnic_dev
*vdev,
128
void
*
priv
,
struct
pci_dev
*
pdev
,
struct
vnic_dev_bar
*bar,
129
unsigned
int
num_bars);
130
int
vnic_dev_init_prov2
(
struct
vnic_dev
*vdev,
u8
*
buf
,
u32
len);
131
int
vnic_dev_enable2
(
struct
vnic_dev
*vdev,
int
active
);
132
int
vnic_dev_enable2_done
(
struct
vnic_dev
*vdev,
int
*
status
);
133
int
vnic_dev_deinit_done
(
struct
vnic_dev
*vdev,
int
*
status
);
134
int
vnic_dev_set_mac_addr
(
struct
vnic_dev
*vdev,
u8
*
mac_addr
);
135
136
#endif
/* _VNIC_DEV_H_ */
Generated on Thu Jan 10 2013 14:00:42 for Linux Kernel by
1.8.2