Commit | Line | Data |
---|---|---|
85b4aa49 RL |
1 | #ifndef FC_TRANSPORT_FCOE_H |
2 | #define FC_TRANSPORT_FCOE_H | |
3 | ||
4 | #include <linux/device.h> | |
5 | #include <linux/netdevice.h> | |
6 | #include <scsi/scsi_host.h> | |
7 | #include <scsi/libfc.h> | |
8 | ||
9 | /** | |
10 | * struct fcoe_transport - FCoE transport struct for generic transport | |
11 | * for Ethernet devices as well as pure HBAs | |
12 | * | |
13 | * @name: name for thsi transport | |
14 | * @bus: physical bus type (pci_bus_type) | |
15 | * @driver: physical bus driver for network device | |
16 | * @create: entry create function | |
17 | * @destroy: exit destroy function | |
18 | * @list: list of transports | |
19 | */ | |
20 | struct fcoe_transport { | |
21 | char *name; | |
22 | unsigned short vendor; | |
23 | unsigned short device; | |
24 | struct bus_type *bus; | |
25 | struct device_driver *driver; | |
26 | int (*create)(struct net_device *device); | |
27 | int (*destroy)(struct net_device *device); | |
28 | bool (*match)(struct net_device *device); | |
29 | struct list_head list; | |
30 | struct list_head devlist; | |
31 | struct mutex devlock; | |
32 | }; | |
33 | ||
34 | /** | |
35 | * MODULE_ALIAS_FCOE_PCI | |
36 | * | |
37 | * some care must be taken with this, vendor and device MUST be a hex value | |
38 | * preceded with 0x and with letters in lower case (0x12ab, not 0x12AB or 12AB) | |
39 | */ | |
40 | #define MODULE_ALIAS_FCOE_PCI(vendor, device) \ | |
41 | MODULE_ALIAS("fcoe-pci-" __stringify(vendor) "-" __stringify(device)) | |
42 | ||
43 | /* exported funcs */ | |
44 | int fcoe_transport_attach(struct net_device *netdev); | |
45 | int fcoe_transport_release(struct net_device *netdev); | |
46 | int fcoe_transport_register(struct fcoe_transport *t); | |
47 | int fcoe_transport_unregister(struct fcoe_transport *t); | |
48 | int fcoe_load_transport_driver(struct net_device *netdev); | |
49 | int __init fcoe_transport_init(void); | |
50 | int __exit fcoe_transport_exit(void); | |
51 | ||
52 | /* fcow_sw is the default transport */ | |
53 | extern struct fcoe_transport fcoe_sw_transport; | |
54 | #endif /* FC_TRANSPORT_FCOE_H */ |