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 */ 55