• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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