1 #ifndef FC_TRANSPORT_FCOE_H
2 #define FC_TRANSPORT_FCOE_H
4 #include <linux/device.h>
5 #include <linux/netdevice.h>
6 #include <scsi/scsi_host.h>
7 #include <scsi/libfc.h>
10 * struct fcoe_transport - FCoE transport struct for generic transport
11 * for Ethernet devices as well as pure HBAs
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
20 struct fcoe_transport
{
22 unsigned short vendor
;
23 unsigned short device
;
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
;
35 * MODULE_ALIAS_FCOE_PCI
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)
40 #define MODULE_ALIAS_FCOE_PCI(vendor, device) \
41 MODULE_ALIAS("fcoe-pci-" __stringify(vendor) "-" __stringify(device))
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);
52 /* fcow_sw is the default transport */
53 extern struct fcoe_transport fcoe_sw_transport
;
54 #endif /* FC_TRANSPORT_FCOE_H */