fc_transport_fcoe.h 1.6 KB

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