Robert Love | 85b4aa4 | 2008-12-09 15:10:24 -0800 | [diff] [blame] | 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 */ |