]>
Commit | Line | Data |
---|---|---|
92d7f7b0 JS |
1 | /******************************************************************* |
2 | * This file is part of the Emulex Linux Device Driver for * | |
3 | * Fibre Channel Host Bus Adapters. * | |
4ae2ebde JS |
4 | * Copyright (C) 2017-2018 Broadcom. All Rights Reserved. The term * |
5 | * “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. * | |
92d7f7b0 JS |
6 | * Copyright (C) 2004-2006 Emulex. All rights reserved. * |
7 | * EMULEX and SLI are trademarks of Emulex. * | |
d080abe0 | 8 | * www.broadcom.com * |
92d7f7b0 JS |
9 | * Portions Copyright (C) 2004-2005 Christoph Hellwig * |
10 | * * | |
11 | * This program is free software; you can redistribute it and/or * | |
12 | * modify it under the terms of version 2 of the GNU General * | |
13 | * Public License as published by the Free Software Foundation. * | |
14 | * This program is distributed in the hope that it will be useful. * | |
15 | * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND * | |
16 | * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, * | |
17 | * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE * | |
18 | * DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS ARE HELD * | |
19 | * TO BE LEGALLY INVALID. See the GNU General Public License for * | |
20 | * more details, a copy of which can be found in the file COPYING * | |
21 | * included with this package. * | |
22 | *******************************************************************/ | |
23 | ||
24 | #ifndef _H_LPFC_VPORT | |
25 | #define _H_LPFC_VPORT | |
26 | ||
27 | /* API version values (each will be an individual bit) */ | |
28 | #define VPORT_API_VERSION_1 0x01 | |
29 | ||
30 | /* Values returned via lpfc_vport_getinfo() */ | |
31 | struct vport_info { | |
32 | ||
33 | uint32_t api_versions; | |
34 | uint8_t linktype; | |
35 | #define VPORT_TYPE_PHYSICAL 0 | |
36 | #define VPORT_TYPE_VIRTUAL 1 | |
37 | ||
38 | uint8_t state; | |
39 | #define VPORT_STATE_OFFLINE 0 | |
40 | #define VPORT_STATE_ACTIVE 1 | |
41 | #define VPORT_STATE_FAILED 2 | |
42 | ||
43 | uint8_t fail_reason; | |
44 | uint8_t prev_fail_reason; | |
45 | #define VPORT_FAIL_UNKNOWN 0 | |
46 | #define VPORT_FAIL_LINKDOWN 1 | |
47 | #define VPORT_FAIL_FAB_UNSUPPORTED 2 | |
48 | #define VPORT_FAIL_FAB_NORESOURCES 3 | |
49 | #define VPORT_FAIL_FAB_LOGOUT 4 | |
50 | #define VPORT_FAIL_ADAP_NORESOURCES 5 | |
51 | ||
52 | uint8_t node_name[8]; /* WWNN */ | |
53 | uint8_t port_name[8]; /* WWPN */ | |
54 | ||
55 | struct Scsi_Host *shost; | |
56 | ||
57 | /* Following values are valid only on physical links */ | |
58 | uint32_t vports_max; | |
59 | uint32_t vports_inuse; | |
60 | uint32_t rpi_max; | |
61 | uint32_t rpi_inuse; | |
62 | #define VPORT_CNT_INVALID 0xFFFFFFFF | |
63 | }; | |
64 | ||
65 | /* data used in link creation */ | |
66 | struct vport_data { | |
67 | uint32_t api_version; | |
68 | ||
69 | uint32_t options; | |
70 | #define VPORT_OPT_AUTORETRY 0x01 | |
71 | ||
72 | uint8_t node_name[8]; /* WWNN */ | |
73 | uint8_t port_name[8]; /* WWPN */ | |
74 | ||
75 | /* | |
76 | * Upon successful creation, vport_shost will point to the new Scsi_Host | |
77 | * structure for the new virtual link. | |
78 | */ | |
79 | struct Scsi_Host *vport_shost; | |
80 | }; | |
81 | ||
82 | /* API function return codes */ | |
83 | #define VPORT_OK 0 | |
84 | #define VPORT_ERROR -1 | |
85 | #define VPORT_INVAL -2 | |
86 | #define VPORT_NOMEM -3 | |
87 | #define VPORT_NORESOURCES -4 | |
88 | ||
89 | int lpfc_vport_create(struct fc_vport *, bool); | |
90 | int lpfc_vport_delete(struct fc_vport *); | |
91 | int lpfc_vport_getinfo(struct Scsi_Host *, struct vport_info *); | |
92 | int lpfc_vport_tgt_remove(struct Scsi_Host *, uint, uint); | |
549e55cd | 93 | struct lpfc_vport **lpfc_create_vport_work_array(struct lpfc_hba *); |
09372820 | 94 | void lpfc_destroy_vport_work_array(struct lpfc_hba *, struct lpfc_vport **); |
16a3a208 | 95 | int lpfc_alloc_vpi(struct lpfc_hba *phba); |
92d7f7b0 JS |
96 | |
97 | /* | |
98 | * queuecommand VPORT-specific return codes. Specified in the host byte code. | |
99 | * Returned when the virtual link has failed or is not active. | |
100 | */ | |
101 | #define DID_VPORT_ERROR 0x0f | |
102 | ||
103 | #define VPORT_INFO 0x1 | |
104 | #define VPORT_CREATE 0x2 | |
105 | #define VPORT_DELETE 0x4 | |
106 | ||
107 | struct vport_cmd_tag { | |
108 | uint32_t cmd; | |
109 | struct vport_data cdata; | |
110 | struct vport_info cinfo; | |
111 | void *vport; | |
112 | int vport_num; | |
113 | }; | |
114 | ||
115 | void lpfc_vport_set_state(struct lpfc_vport *vport, | |
116 | enum fc_vport_state new_state); | |
117 | ||
ea2151b4 JS |
118 | void lpfc_vport_reset_stat_data(struct lpfc_vport *); |
119 | void lpfc_alloc_bucket(struct lpfc_vport *); | |
120 | void lpfc_free_bucket(struct lpfc_vport *); | |
121 | ||
92d7f7b0 | 122 | #endif /* H_LPFC_VPORT */ |