emlxs_dfc.c (b3660a96) | emlxs_dfc.c (a9800beb) |
---|---|
1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE --- 6 unchanged lines hidden (view full) --- 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22/* | 1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE --- 6 unchanged lines hidden (view full) --- 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22/* |
23 * Copyright 2009 Emulex. All rights reserved. | 23 * Copyright 2010 Emulex. All rights reserved. |
24 * Use is subject to license terms. 25 */ 26 27 28#include <emlxs.h> 29 30/* Required for EMLXS_CONTEXT in EMLXS_MSGF calls */ 31EMLXS_MSG_DEF(EMLXS_DFC_C); --- 278 unchanged lines hidden (view full) --- 310 emlxs_dfc_xlate(dfc->cmd)); 311 312 rval = DFC_COPYIN_ERROR; 313 break; 314 } 315 316 dfc->cmd = dfc32.cmd; 317 dfc->flag = dfc32.flag; | 24 * Use is subject to license terms. 25 */ 26 27 28#include <emlxs.h> 29 30/* Required for EMLXS_CONTEXT in EMLXS_MSGF calls */ 31EMLXS_MSG_DEF(EMLXS_DFC_C); --- 278 unchanged lines hidden (view full) --- 310 emlxs_dfc_xlate(dfc->cmd)); 311 312 rval = DFC_COPYIN_ERROR; 313 break; 314 } 315 316 dfc->cmd = dfc32.cmd; 317 dfc->flag = dfc32.flag; |
318 dfc->buf1 = (void *)((unsigned long)dfc32.buf1); | 318 dfc->buf1 = (void *)((uintptr_t)dfc32.buf1); |
319 dfc->buf1_size = dfc32.buf1_size; 320 dfc->data1 = dfc32.data1; | 319 dfc->buf1_size = dfc32.buf1_size; 320 dfc->data1 = dfc32.data1; |
321 dfc->buf2 = (void *)((unsigned long)dfc32.buf2); | 321 dfc->buf2 = (void *)((uintptr_t)dfc32.buf2); |
322 dfc->buf2_size = dfc32.buf2_size; 323 dfc->data2 = dfc32.data2; | 322 dfc->buf2_size = dfc32.buf2_size; 323 dfc->data2 = dfc32.data2; |
324 dfc->buf3 = (void *)((unsigned long)dfc32.buf3); | 324 dfc->buf3 = (void *)((uintptr_t)dfc32.buf3); |
325 dfc->buf3_size = dfc32.buf3_size; 326 dfc->data3 = dfc32.data3; | 325 dfc->buf3_size = dfc32.buf3_size; 326 dfc->data3 = dfc32.data3; |
327 dfc->buf4 = (void *)((unsigned long)dfc32.buf4); | 327 dfc->buf4 = (void *)((uintptr_t)dfc32.buf4); |
328 dfc->buf4_size = dfc32.buf4_size; 329 dfc->data4 = dfc32.data4; 330 331 break; 332 } 333 334 case DDI_MODEL_NONE: 335 if (ddi_copyin((void *)arg, (void *)dfc, sizeof (dfc_t), --- 639 unchanged lines hidden (view full) --- 975 pm.pm_cmd_buf = fcio->fcio_ibuf; 976 pm.pm_data_len = fcio->fcio_alen; 977 pm.pm_data_buf = fcio->fcio_abuf; 978 pm.pm_stat_len = fcio->fcio_olen; 979 pm.pm_stat_buf = fcio->fcio_obuf; 980 pm.pm_cmd_code = FC_PORT_DIAG; 981 pm.pm_cmd_flags = fcio->fcio_cmd_flags; 982 | 328 dfc->buf4_size = dfc32.buf4_size; 329 dfc->data4 = dfc32.data4; 330 331 break; 332 } 333 334 case DDI_MODEL_NONE: 335 if (ddi_copyin((void *)arg, (void *)dfc, sizeof (dfc_t), --- 639 unchanged lines hidden (view full) --- 975 pm.pm_cmd_buf = fcio->fcio_ibuf; 976 pm.pm_data_len = fcio->fcio_alen; 977 pm.pm_data_buf = fcio->fcio_abuf; 978 pm.pm_stat_len = fcio->fcio_olen; 979 pm.pm_stat_buf = fcio->fcio_obuf; 980 pm.pm_cmd_code = FC_PORT_DIAG; 981 pm.pm_cmd_flags = fcio->fcio_cmd_flags; 982 |
983 rval = emlxs_port_manage(port, &pm); | 983 rval = emlxs_fca_port_manage(port, &pm); |
984 985 if (rval != FC_SUCCESS) { 986 fcio->fcio_errno = rval; 987 988 if (rval == FC_INVALID_REQUEST) { 989 rval = ENOTTY; 990 } else { 991 rval = EIO; --- 87 unchanged lines hidden (view full) --- 1079 fcio->fcio_ilen != 8) { 1080 rval = EINVAL; 1081 break; 1082 } 1083 1084 bzero(null_wwn, 8); 1085 1086 if (bcmp((uint8_t *)fcio->fcio_ibuf, null_wwn, 8) == 0) { | 984 985 if (rval != FC_SUCCESS) { 986 fcio->fcio_errno = rval; 987 988 if (rval == FC_INVALID_REQUEST) { 989 rval = ENOTTY; 990 } else { 991 rval = EIO; --- 87 unchanged lines hidden (view full) --- 1079 fcio->fcio_ilen != 8) { 1080 rval = EINVAL; 1081 break; 1082 } 1083 1084 bzero(null_wwn, 8); 1085 1086 if (bcmp((uint8_t *)fcio->fcio_ibuf, null_wwn, 8) == 0) { |
1087 rval = emlxs_reset(port, FC_FCA_LINK_RESET); | 1087 rval = emlxs_fca_reset(port, FC_FCA_LINK_RESET); |
1088 1089 if (rval != FC_SUCCESS) { 1090 fcio->fcio_errno = rval; 1091 rval = EIO; 1092 } 1093 } else { 1094 rval = ENOTSUP; 1095 } 1096 break; 1097 } 1098 1099 case FCIO_RESET_HARD: 1100 case FCIO_RESET_HARD_CORE: 1101 { | 1088 1089 if (rval != FC_SUCCESS) { 1090 fcio->fcio_errno = rval; 1091 rval = EIO; 1092 } 1093 } else { 1094 rval = ENOTSUP; 1095 } 1096 break; 1097 } 1098 1099 case FCIO_RESET_HARD: 1100 case FCIO_RESET_HARD_CORE: 1101 { |
1102 rval = emlxs_reset(port, FC_FCA_RESET); | 1102 rval = emlxs_fca_reset(port, FC_FCA_RESET); |
1103 1104 if (rval != FC_SUCCESS) { 1105 fcio->fcio_errno = rval; 1106 rval = EIO; 1107 } 1108 break; 1109 } 1110 1111 case FCIO_DOWNLOAD_FW: 1112 { 1113 fc_fca_pm_t pm; 1114 1115 if (fcio->fcio_xfer != FCIO_XFER_WRITE || | 1103 1104 if (rval != FC_SUCCESS) { 1105 fcio->fcio_errno = rval; 1106 rval = EIO; 1107 } 1108 break; 1109 } 1110 1111 case FCIO_DOWNLOAD_FW: 1112 { 1113 fc_fca_pm_t pm; 1114 1115 if (fcio->fcio_xfer != FCIO_XFER_WRITE || |
1116 fcio->fcio_ilen <= 0) { | 1116 fcio->fcio_ilen == 0) { |
1117 rval = EINVAL; 1118 break; 1119 } 1120 1121 bzero((caddr_t)&pm, sizeof (pm)); 1122 1123 pm.pm_cmd_flags = FC_FCA_PM_WRITE; 1124 pm.pm_cmd_code = FC_PORT_DOWNLOAD_FW; 1125 pm.pm_data_len = fcio->fcio_ilen; 1126 pm.pm_data_buf = fcio->fcio_ibuf; 1127 | 1117 rval = EINVAL; 1118 break; 1119 } 1120 1121 bzero((caddr_t)&pm, sizeof (pm)); 1122 1123 pm.pm_cmd_flags = FC_FCA_PM_WRITE; 1124 pm.pm_cmd_code = FC_PORT_DOWNLOAD_FW; 1125 pm.pm_data_len = fcio->fcio_ilen; 1126 pm.pm_data_buf = fcio->fcio_ibuf; 1127 |
1128 rval = emlxs_port_manage(port, &pm); | 1128 rval = emlxs_fca_port_manage(port, &pm); |
1129 1130 if (rval != FC_SUCCESS) { 1131 fcio->fcio_errno = rval; 1132 rval = EIO; 1133 } 1134 break; 1135 } 1136 --- 9 unchanged lines hidden (view full) --- 1146 1147 bzero((caddr_t)&pm, sizeof (pm)); 1148 1149 pm.pm_cmd_flags = FC_FCA_PM_READ; 1150 pm.pm_cmd_code = FC_PORT_GET_FW_REV; 1151 pm.pm_data_len = fcio->fcio_olen; 1152 pm.pm_data_buf = fcio->fcio_obuf; 1153 | 1129 1130 if (rval != FC_SUCCESS) { 1131 fcio->fcio_errno = rval; 1132 rval = EIO; 1133 } 1134 break; 1135 } 1136 --- 9 unchanged lines hidden (view full) --- 1146 1147 bzero((caddr_t)&pm, sizeof (pm)); 1148 1149 pm.pm_cmd_flags = FC_FCA_PM_READ; 1150 pm.pm_cmd_code = FC_PORT_GET_FW_REV; 1151 pm.pm_data_len = fcio->fcio_olen; 1152 pm.pm_data_buf = fcio->fcio_obuf; 1153 |
1154 rval = emlxs_port_manage(port, &pm); | 1154 rval = emlxs_fca_port_manage(port, &pm); |
1155 1156 if (rval != FC_SUCCESS) { 1157 fcio->fcio_errno = rval; 1158 rval = EIO; 1159 } 1160 break; 1161 } 1162 --- 9 unchanged lines hidden (view full) --- 1172 1173 bzero((caddr_t)&pm, sizeof (pm)); 1174 1175 pm.pm_cmd_flags = FC_FCA_PM_READ; 1176 pm.pm_cmd_code = FC_PORT_GET_FCODE_REV; 1177 pm.pm_data_len = fcio->fcio_olen; 1178 pm.pm_data_buf = fcio->fcio_obuf; 1179 | 1155 1156 if (rval != FC_SUCCESS) { 1157 fcio->fcio_errno = rval; 1158 rval = EIO; 1159 } 1160 break; 1161 } 1162 --- 9 unchanged lines hidden (view full) --- 1172 1173 bzero((caddr_t)&pm, sizeof (pm)); 1174 1175 pm.pm_cmd_flags = FC_FCA_PM_READ; 1176 pm.pm_cmd_code = FC_PORT_GET_FCODE_REV; 1177 pm.pm_data_len = fcio->fcio_olen; 1178 pm.pm_data_buf = fcio->fcio_obuf; 1179 |
1180 rval = emlxs_port_manage(port, &pm); | 1180 rval = emlxs_fca_port_manage(port, &pm); |
1181 1182 if (rval != FC_SUCCESS) { 1183 fcio->fcio_errno = rval; 1184 rval = EIO; 1185 } 1186 break; 1187 } 1188 1189 case FCIO_DOWNLOAD_FCODE: 1190 { 1191 fc_fca_pm_t pm; 1192 1193 if (fcio->fcio_xfer != FCIO_XFER_WRITE || | 1181 1182 if (rval != FC_SUCCESS) { 1183 fcio->fcio_errno = rval; 1184 rval = EIO; 1185 } 1186 break; 1187 } 1188 1189 case FCIO_DOWNLOAD_FCODE: 1190 { 1191 fc_fca_pm_t pm; 1192 1193 if (fcio->fcio_xfer != FCIO_XFER_WRITE || |
1194 fcio->fcio_ilen <= 0) { | 1194 fcio->fcio_ilen == 0) { |
1195 rval = EINVAL; 1196 break; 1197 } 1198 1199 bzero((caddr_t)&pm, sizeof (pm)); 1200 1201 pm.pm_cmd_flags = FC_FCA_PM_WRITE; 1202 pm.pm_cmd_code = FC_PORT_DOWNLOAD_FCODE; 1203 pm.pm_data_len = fcio->fcio_ilen; 1204 pm.pm_data_buf = fcio->fcio_ibuf; 1205 | 1195 rval = EINVAL; 1196 break; 1197 } 1198 1199 bzero((caddr_t)&pm, sizeof (pm)); 1200 1201 pm.pm_cmd_flags = FC_FCA_PM_WRITE; 1202 pm.pm_cmd_code = FC_PORT_DOWNLOAD_FCODE; 1203 pm.pm_data_len = fcio->fcio_ilen; 1204 pm.pm_data_buf = fcio->fcio_ibuf; 1205 |
1206 rval = emlxs_port_manage(port, &pm); | 1206 rval = emlxs_fca_port_manage(port, &pm); |
1207 1208 if (rval != FC_SUCCESS) { 1209 fcio->fcio_errno = rval; 1210 rval = EIO; 1211 } 1212 break; 1213 } 1214 --- 360 unchanged lines hidden (view full) --- 1575 1576 bzero((caddr_t)&pm, sizeof (pm)); 1577 1578 pm.pm_cmd_flags = FC_FCA_PM_READ; 1579 pm.pm_cmd_code = FC_PORT_GET_NODE_ID; 1580 pm.pm_data_len = fcio->fcio_olen; 1581 pm.pm_data_buf = fcio->fcio_obuf; 1582 | 1207 1208 if (rval != FC_SUCCESS) { 1209 fcio->fcio_errno = rval; 1210 rval = EIO; 1211 } 1212 break; 1213 } 1214 --- 360 unchanged lines hidden (view full) --- 1575 1576 bzero((caddr_t)&pm, sizeof (pm)); 1577 1578 pm.pm_cmd_flags = FC_FCA_PM_READ; 1579 pm.pm_cmd_code = FC_PORT_GET_NODE_ID; 1580 pm.pm_data_len = fcio->fcio_olen; 1581 pm.pm_data_buf = fcio->fcio_obuf; 1582 |
1583 rval = emlxs_port_manage(port, &pm); | 1583 rval = emlxs_fca_port_manage(port, &pm); |
1584 1585 if (rval != FC_SUCCESS) { 1586 fcio->fcio_errno = rval; 1587 rval = EIO; 1588 } 1589 break; 1590 } 1591 --- 9 unchanged lines hidden (view full) --- 1601 1602 bzero((caddr_t)&pm, sizeof (pm)); 1603 1604 pm.pm_cmd_flags = FC_FCA_PM_READ; 1605 pm.pm_cmd_code = FC_PORT_SET_NODE_ID; 1606 pm.pm_data_len = fcio->fcio_ilen; 1607 pm.pm_data_buf = fcio->fcio_ibuf; 1608 | 1584 1585 if (rval != FC_SUCCESS) { 1586 fcio->fcio_errno = rval; 1587 rval = EIO; 1588 } 1589 break; 1590 } 1591 --- 9 unchanged lines hidden (view full) --- 1601 1602 bzero((caddr_t)&pm, sizeof (pm)); 1603 1604 pm.pm_cmd_flags = FC_FCA_PM_READ; 1605 pm.pm_cmd_code = FC_PORT_SET_NODE_ID; 1606 pm.pm_data_len = fcio->fcio_ilen; 1607 pm.pm_data_buf = fcio->fcio_ibuf; 1608 |
1609 rval = emlxs_port_manage(port, &pm); | 1609 rval = emlxs_fca_port_manage(port, &pm); |
1610 1611 if (rval != FC_SUCCESS) { 1612 fcio->fcio_errno = rval; 1613 rval = EIO; 1614 } 1615 break; 1616 } 1617 --- 292 unchanged lines hidden (view full) --- 1910 if (portid->port_id == 0 || portid->port_id == port->did) { 1911 bzero((caddr_t)&pm, sizeof (pm)); 1912 1913 pm.pm_cmd_flags = FC_FCA_PM_READ; 1914 pm.pm_cmd_code = FC_PORT_RLS; 1915 pm.pm_data_len = sizeof (fc_rls_acc_t); 1916 pm.pm_data_buf = (caddr_t)rls; 1917 | 1610 1611 if (rval != FC_SUCCESS) { 1612 fcio->fcio_errno = rval; 1613 rval = EIO; 1614 } 1615 break; 1616 } 1617 --- 292 unchanged lines hidden (view full) --- 1910 if (portid->port_id == 0 || portid->port_id == port->did) { 1911 bzero((caddr_t)&pm, sizeof (pm)); 1912 1913 pm.pm_cmd_flags = FC_FCA_PM_READ; 1914 pm.pm_cmd_code = FC_PORT_RLS; 1915 pm.pm_data_len = sizeof (fc_rls_acc_t); 1916 pm.pm_data_buf = (caddr_t)rls; 1917 |
1918 rval = emlxs_port_manage(port, &pm); | 1918 rval = emlxs_fca_port_manage(port, &pm); |
1919 1920 if (rval != FC_SUCCESS) { 1921 fcio->fcio_errno = rval; 1922 rval = EIO; 1923 } 1924 } else { 1925 rval = ENOTSUP; 1926 } --- 211 unchanged lines hidden (view full) --- 2138 2139 (void) strcpy((caddr_t)fcio->fcio_obuf, (caddr_t)port->snn); 2140 2141 break; 2142 } 2143 2144 case FCIO_FORCE_DUMP: 2145 { | 1919 1920 if (rval != FC_SUCCESS) { 1921 fcio->fcio_errno = rval; 1922 rval = EIO; 1923 } 1924 } else { 1925 rval = ENOTSUP; 1926 } --- 211 unchanged lines hidden (view full) --- 2138 2139 (void) strcpy((caddr_t)fcio->fcio_obuf, (caddr_t)port->snn); 2140 2141 break; 2142 } 2143 2144 case FCIO_FORCE_DUMP: 2145 { |
2146 rval = emlxs_reset(port, FC_FCA_CORE); | 2146 rval = emlxs_fca_reset(port, FC_FCA_CORE); |
2147 2148 if (rval != FC_SUCCESS) { 2149 fcio->fcio_errno = rval; 2150 rval = EIO; 2151 break; 2152 } 2153 2154 break; --- 11 unchanged lines hidden (view full) --- 2166 2167 bzero((caddr_t)&pm, sizeof (fc_fca_pm_t)); 2168 2169 pm.pm_data_len = fcio->fcio_olen; 2170 pm.pm_data_buf = fcio->fcio_obuf; 2171 pm.pm_cmd_code = FC_PORT_GET_DUMP_SIZE; 2172 pm.pm_cmd_flags = FC_FCA_PM_READ; 2173 | 2147 2148 if (rval != FC_SUCCESS) { 2149 fcio->fcio_errno = rval; 2150 rval = EIO; 2151 break; 2152 } 2153 2154 break; --- 11 unchanged lines hidden (view full) --- 2166 2167 bzero((caddr_t)&pm, sizeof (fc_fca_pm_t)); 2168 2169 pm.pm_data_len = fcio->fcio_olen; 2170 pm.pm_data_buf = fcio->fcio_obuf; 2171 pm.pm_cmd_code = FC_PORT_GET_DUMP_SIZE; 2172 pm.pm_cmd_flags = FC_FCA_PM_READ; 2173 |
2174 rval = emlxs_port_manage(port, &pm); | 2174 rval = emlxs_fca_port_manage(port, &pm); |
2175 2176 if (rval != FC_SUCCESS) { 2177 fcio->fcio_errno = rval; 2178 2179 if (rval == FC_INVALID_REQUEST) { 2180 rval = ENOTTY; 2181 } else { 2182 rval = EIO; --- 15 unchanged lines hidden (view full) --- 2198 2199 bzero((caddr_t)&pm, sizeof (fc_fca_pm_t)); 2200 2201 pm.pm_data_len = sizeof (uint32_t); 2202 pm.pm_data_buf = (caddr_t)&dump_size; 2203 pm.pm_cmd_code = FC_PORT_GET_DUMP_SIZE; 2204 pm.pm_cmd_flags = FC_FCA_PM_READ; 2205 | 2175 2176 if (rval != FC_SUCCESS) { 2177 fcio->fcio_errno = rval; 2178 2179 if (rval == FC_INVALID_REQUEST) { 2180 rval = ENOTTY; 2181 } else { 2182 rval = EIO; --- 15 unchanged lines hidden (view full) --- 2198 2199 bzero((caddr_t)&pm, sizeof (fc_fca_pm_t)); 2200 2201 pm.pm_data_len = sizeof (uint32_t); 2202 pm.pm_data_buf = (caddr_t)&dump_size; 2203 pm.pm_cmd_code = FC_PORT_GET_DUMP_SIZE; 2204 pm.pm_cmd_flags = FC_FCA_PM_READ; 2205 |
2206 rval = emlxs_port_manage(port, &pm); | 2206 rval = emlxs_fca_port_manage(port, &pm); |
2207 2208 if (rval != FC_SUCCESS) { 2209 fcio->fcio_errno = rval; 2210 2211 if (rval == FC_INVALID_REQUEST) { 2212 rval = ENOTTY; 2213 } else { 2214 rval = EIO; --- 9 unchanged lines hidden (view full) --- 2224 2225 bzero((caddr_t)&pm, sizeof (fc_fca_pm_t)); 2226 2227 pm.pm_data_len = fcio->fcio_olen; 2228 pm.pm_data_buf = fcio->fcio_obuf; 2229 pm.pm_cmd_code = FC_PORT_GET_DUMP; 2230 pm.pm_cmd_flags = FC_FCA_PM_READ; 2231 | 2207 2208 if (rval != FC_SUCCESS) { 2209 fcio->fcio_errno = rval; 2210 2211 if (rval == FC_INVALID_REQUEST) { 2212 rval = ENOTTY; 2213 } else { 2214 rval = EIO; --- 9 unchanged lines hidden (view full) --- 2224 2225 bzero((caddr_t)&pm, sizeof (fc_fca_pm_t)); 2226 2227 pm.pm_data_len = fcio->fcio_olen; 2228 pm.pm_data_buf = fcio->fcio_obuf; 2229 pm.pm_cmd_code = FC_PORT_GET_DUMP; 2230 pm.pm_cmd_flags = FC_FCA_PM_READ; 2231 |
2232 rval = emlxs_port_manage(port, &pm); | 2232 rval = emlxs_fca_port_manage(port, &pm); |
2233 2234 if (rval != FC_SUCCESS) { 2235 fcio->fcio_errno = rval; 2236 2237 if (rval == FC_INVALID_REQUEST) { 2238 rval = ENOTTY; 2239 } else { 2240 rval = EIO; --- 201 unchanged lines hidden (view full) --- 2442 } 2443 2444 /* Establish a WWPN */ 2445 bzero(wwn, 8); 2446 if (!(bcmp(wwn, dfc_vport.wwpn, 8))) { 2447 /* Generate new WWPN */ 2448 bcopy((caddr_t)&hba->wwpn, (caddr_t)dfc_vport.wwpn, 8); 2449 dfc_vport.wwpn[0] = 0x20; | 2233 2234 if (rval != FC_SUCCESS) { 2235 fcio->fcio_errno = rval; 2236 2237 if (rval == FC_INVALID_REQUEST) { 2238 rval = ENOTTY; 2239 } else { 2240 rval = EIO; --- 201 unchanged lines hidden (view full) --- 2442 } 2443 2444 /* Establish a WWPN */ 2445 bzero(wwn, 8); 2446 if (!(bcmp(wwn, dfc_vport.wwpn, 8))) { 2447 /* Generate new WWPN */ 2448 bcopy((caddr_t)&hba->wwpn, (caddr_t)dfc_vport.wwpn, 8); 2449 dfc_vport.wwpn[0] = 0x20; |
2450 dfc_vport.wwpn[1] = vpi; | 2450 dfc_vport.wwpn[1] = (uint8_t)vpi; |
2451 } else { /* use one provided */ 2452 2453 /* Make sure WWPN is unique */ 2454 if (tport = emlxs_vport_find_wwpn(hba, dfc_vport.wwpn)) { 2455 if ((tport->flag & EMLXS_PORT_CONFIG) && 2456 (tport->flag & EMLXS_PORT_BOUND)) { 2457 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 2458 "%s: WWPN already exists. vpi=%d", --- 4 unchanged lines hidden (view full) --- 2463 } 2464 2465 /* Establish a WWNN */ 2466 bzero(wwn, 8); 2467 if (!(bcmp(wwn, dfc_vport.wwnn, 8))) { 2468 /* Generate new WWNN */ 2469 bcopy((caddr_t)&hba->wwnn, (caddr_t)dfc_vport.wwnn, 8); 2470 dfc_vport.wwnn[0] = 0x28; | 2451 } else { /* use one provided */ 2452 2453 /* Make sure WWPN is unique */ 2454 if (tport = emlxs_vport_find_wwpn(hba, dfc_vport.wwpn)) { 2455 if ((tport->flag & EMLXS_PORT_CONFIG) && 2456 (tport->flag & EMLXS_PORT_BOUND)) { 2457 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 2458 "%s: WWPN already exists. vpi=%d", --- 4 unchanged lines hidden (view full) --- 2463 } 2464 2465 /* Establish a WWNN */ 2466 bzero(wwn, 8); 2467 if (!(bcmp(wwn, dfc_vport.wwnn, 8))) { 2468 /* Generate new WWNN */ 2469 bcopy((caddr_t)&hba->wwnn, (caddr_t)dfc_vport.wwnn, 8); 2470 dfc_vport.wwnn[0] = 0x28; |
2471 dfc_vport.wwnn[1] = vpi; | 2471 dfc_vport.wwnn[1] = (uint8_t)vpi; |
2472 } 2473 /* else use WWNN provided */ 2474 2475 /* Generate the symbolic node name */ 2476 if (dfc_vport.snn[0]) { 2477 (void) strcpy(name, dfc_vport.snn); 2478 (void) sprintf(dfc_vport.snn, "%s %s", hba->snn, name); 2479 } else { --- 352 unchanged lines hidden (view full) --- 2832 if (hba->sli_mode == EMLXS_HBA_SLI4_MODE) { 2833 int i; 2834 int total_rpi; 2835 emlxs_port_t *vport; 2836 2837 total_rpi = 0; 2838 for (i = 0; i < hba->sli.sli4.VPICount; i++) { 2839 vport = &VPORT(i); | 2472 } 2473 /* else use WWNN provided */ 2474 2475 /* Generate the symbolic node name */ 2476 if (dfc_vport.snn[0]) { 2477 (void) strcpy(name, dfc_vport.snn); 2478 (void) sprintf(dfc_vport.snn, "%s %s", hba->snn, name); 2479 } else { --- 352 unchanged lines hidden (view full) --- 2832 if (hba->sli_mode == EMLXS_HBA_SLI4_MODE) { 2833 int i; 2834 int total_rpi; 2835 emlxs_port_t *vport; 2836 2837 total_rpi = 0; 2838 for (i = 0; i < hba->sli.sli4.VPICount; i++) { 2839 vport = &VPORT(i); |
2840 total_rpi += vport->outstandingRPIs; | 2840 total_rpi += vport->VPIobj.rpi_online; |
2841 } 2842 2843 vres.vpi_max = hba->sli.sli4.VPICount - 1; | 2841 } 2842 2843 vres.vpi_max = hba->sli.sli4.VPICount - 1; |
2844 vres.vpi_inuse = (port->VFIp == NULL) ? 0 : 2845 port->VFIp->outstandingVPIs - 1; | 2844 vres.vpi_inuse = (port->VPIobj.vfip == NULL) ? 0 : 2845 (port->VPIobj.vfip->vpi_online - 1); |
2846 vres.rpi_max = hba->sli.sli4.RPICount; 2847 vres.rpi_inuse = total_rpi; 2848 2849 if (ddi_copyout((void *)&vres, (void *)dfc->buf1, 2850 sizeof (dfc_vport_resource_t), mode) != 0) { 2851 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 2852 "%s: ddi_copyout failed.", 2853 emlxs_dfc_xlate(dfc->cmd)); --- 295 unchanged lines hidden (view full) --- 3149 checklist |= CL_FABRIC_HAS_RESOURCES; 3150 } 3151 } 3152 3153 /* 3154 * Free up default RPIs and VPI 3155 */ 3156free_resc: | 2846 vres.rpi_max = hba->sli.sli4.RPICount; 2847 vres.rpi_inuse = total_rpi; 2848 2849 if (ddi_copyout((void *)&vres, (void *)dfc->buf1, 2850 sizeof (dfc_vport_resource_t), mode) != 0) { 2851 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 2852 "%s: ddi_copyout failed.", 2853 emlxs_dfc_xlate(dfc->cmd)); --- 295 unchanged lines hidden (view full) --- 3149 checklist |= CL_FABRIC_HAS_RESOURCES; 3150 } 3151 } 3152 3153 /* 3154 * Free up default RPIs and VPI 3155 */ 3156free_resc: |
3157 if (hba->sli_mode == EMLXS_HBA_SLI4_MODE) { 3158 (void) emlxs_sli4_unreg_all_rpi_by_port(vport); 3159 } else { 3160 (void) emlxs_mb_unreg_rpi(vport, 0xffff, 0, 0, 0); 3161 } | 3157 3158 /* Unregister all nodes */ 3159 (void) emlxs_mb_unreg_node(vport, 0, 0, 0, 0); 3160 |
3162 (void) emlxs_mb_unreg_vpi(vport); 3163 3164done: 3165 if (ddi_copyout((void *)&checklist, (void *)dfc->buf1, 3166 sizeof (uint32_t), mode) != 0) { 3167 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 3168 "%s: ddi_copyout failed.", emlxs_dfc_xlate(dfc->cmd)); 3169 rval = DFC_COPYOUT_ERROR; --- 1469 unchanged lines hidden (view full) --- 4639 EMLXS_MSGF(EMLXS_CONTEXT, 4640 &emlxs_invalid_dma_handle_msg, 4641 "emlxs_dfc_send_mbox: hdl=%p", 4642 rx_mp->dma_handle); 4643 rval = DFC_IO_ERROR; 4644 } 4645 } 4646#endif /* FMA_SUPPORT */ | 3161 (void) emlxs_mb_unreg_vpi(vport); 3162 3163done: 3164 if (ddi_copyout((void *)&checklist, (void *)dfc->buf1, 3165 sizeof (uint32_t), mode) != 0) { 3166 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 3167 "%s: ddi_copyout failed.", emlxs_dfc_xlate(dfc->cmd)); 3168 rval = DFC_COPYOUT_ERROR; --- 1469 unchanged lines hidden (view full) --- 4638 EMLXS_MSGF(EMLXS_CONTEXT, 4639 &emlxs_invalid_dma_handle_msg, 4640 "emlxs_dfc_send_mbox: hdl=%p", 4641 rx_mp->dma_handle); 4642 rval = DFC_IO_ERROR; 4643 } 4644 } 4645#endif /* FMA_SUPPORT */ |
4647 (void) emlxs_mem_buf_free(hba, rx_mp); | 4646 emlxs_mem_buf_free(hba, rx_mp); |
4648 } 4649 4650 if (tx_mp) { 4651#ifdef FMA_SUPPORT 4652 if (!rval) { 4653 if (emlxs_fm_check_dma_handle(hba, tx_mp->dma_handle) 4654 != DDI_FM_OK) { 4655 EMLXS_MSGF(EMLXS_CONTEXT, 4656 &emlxs_invalid_dma_handle_msg, 4657 "emlxs_dfc_send_mbox: hdl=%p", 4658 tx_mp->dma_handle); 4659 rval = DFC_IO_ERROR; 4660 } 4661 } 4662#endif /* FMA_SUPPORT */ | 4647 } 4648 4649 if (tx_mp) { 4650#ifdef FMA_SUPPORT 4651 if (!rval) { 4652 if (emlxs_fm_check_dma_handle(hba, tx_mp->dma_handle) 4653 != DDI_FM_OK) { 4654 EMLXS_MSGF(EMLXS_CONTEXT, 4655 &emlxs_invalid_dma_handle_msg, 4656 "emlxs_dfc_send_mbox: hdl=%p", 4657 tx_mp->dma_handle); 4658 rval = DFC_IO_ERROR; 4659 } 4660 } 4661#endif /* FMA_SUPPORT */ |
4663 (void) emlxs_mem_buf_free(hba, tx_mp); | 4662 emlxs_mem_buf_free(hba, tx_mp); |
4664 } 4665 4666 return (rval); 4667 4668} /* emlxs_dfc_send_mbox() */ 4669 4670 4671static int32_t --- 839 unchanged lines hidden (view full) --- 5511extern int32_t 5512emlxs_send_menlo_cmd(emlxs_hba_t *hba, uint8_t *cmd_buf, uint32_t cmd_size, 5513 uint8_t *rsp_buf, uint32_t *rsp_size) 5514{ 5515 emlxs_port_t *port = &PPORT; 5516 uint8_t *data_buf = NULL; 5517 uint32_t data_size = 0; 5518 fc_packet_t *pkt = NULL; | 4663 } 4664 4665 return (rval); 4666 4667} /* emlxs_dfc_send_mbox() */ 4668 4669 4670static int32_t --- 839 unchanged lines hidden (view full) --- 5510extern int32_t 5511emlxs_send_menlo_cmd(emlxs_hba_t *hba, uint8_t *cmd_buf, uint32_t cmd_size, 5512 uint8_t *rsp_buf, uint32_t *rsp_size) 5513{ 5514 emlxs_port_t *port = &PPORT; 5515 uint8_t *data_buf = NULL; 5516 uint32_t data_size = 0; 5517 fc_packet_t *pkt = NULL; |
5519 uint32_t rval = 0; | 5518 int32_t rval = 0; |
5520 menlo_set_cmd_t set_cmd; 5521 menlo_reset_cmd_t reset_cmd; 5522 uint32_t rsp_code; 5523 uint32_t mm_mode = 0; 5524 uint32_t cmd_code; 5525 clock_t timeout; 5526 MAILBOXQ *mbq = NULL; 5527 MAILBOX *mb; --- 3015 unchanged lines hidden (view full) --- 8543 return (rval); 8544} /* emlxs_dfc_loopback_mode() */ 8545 8546 8547static int32_t 8548emlxs_dfc_loopback_test(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode) 8549{ 8550 emlxs_port_t *port = &PPORT; | 5519 menlo_set_cmd_t set_cmd; 5520 menlo_reset_cmd_t reset_cmd; 5521 uint32_t rsp_code; 5522 uint32_t mm_mode = 0; 5523 uint32_t cmd_code; 5524 clock_t timeout; 5525 MAILBOXQ *mbq = NULL; 5526 MAILBOX *mb; --- 3015 unchanged lines hidden (view full) --- 8542 return (rval); 8543} /* emlxs_dfc_loopback_mode() */ 8544 8545 8546static int32_t 8547emlxs_dfc_loopback_test(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode) 8548{ 8549 emlxs_port_t *port = &PPORT; |
8551 uint32_t rval = 0; | 8550 int32_t rval = 0; |
8552 NODELIST *ndlp; 8553 clock_t timeout; 8554 fc_packet_t *pkt = NULL; 8555 SLI_CT_REQUEST *CtCmd; 8556 uint16_t CtRsp; 8557 8558 if (hba->model_info.flags & EMLXS_FCOE_SUPPORTED) { 8559 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, --- 199 unchanged lines hidden (view full) --- 8759 if (rval) { 8760 mutex_enter(&EMLXS_PKT_LOCK); 8761 if (pkt && (hba->loopback_pkt == pkt)) { 8762 hba->loopback_pkt = NULL; 8763 } 8764 mutex_exit(&EMLXS_PKT_LOCK); 8765 8766 /* Reset the adapter */ | 8551 NODELIST *ndlp; 8552 clock_t timeout; 8553 fc_packet_t *pkt = NULL; 8554 SLI_CT_REQUEST *CtCmd; 8555 uint16_t CtRsp; 8556 8557 if (hba->model_info.flags & EMLXS_FCOE_SUPPORTED) { 8558 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, --- 199 unchanged lines hidden (view full) --- 8758 if (rval) { 8759 mutex_enter(&EMLXS_PKT_LOCK); 8760 if (pkt && (hba->loopback_pkt == pkt)) { 8761 hba->loopback_pkt = NULL; 8762 } 8763 mutex_exit(&EMLXS_PKT_LOCK); 8764 8765 /* Reset the adapter */ |
8767 (void) emlxs_reset(port, FC_FCA_LINK_RESET); | 8766 (void) emlxs_fca_reset(port, FC_FCA_LINK_RESET); |
8768 } 8769 8770 if (pkt) { 8771 emlxs_pkt_free(pkt); 8772 } 8773 8774 return (rval); 8775 --- 1486 unchanged lines hidden (view full) --- 10262 10263 10264static int32_t 10265emlxs_dfc_get_fcflist(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode) 10266{ 10267 emlxs_port_t *port = &PPORT; 10268 DFC_FCoEFCFInfo_t *fcflistentry; 10269 DFC_FCoEFCFList_t *fcflist; | 8767 } 8768 8769 if (pkt) { 8770 emlxs_pkt_free(pkt); 8771 } 8772 8773 return (rval); 8774 --- 1486 unchanged lines hidden (view full) --- 10261 10262 10263static int32_t 10264emlxs_dfc_get_fcflist(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode) 10265{ 10266 emlxs_port_t *port = &PPORT; 10267 DFC_FCoEFCFInfo_t *fcflistentry; 10268 DFC_FCoEFCFList_t *fcflist; |
10270 FCFIobj_t *fp; | 10269 FCFIobj_t *fcfp; |
10271 uint32_t size; 10272 uint32_t i; 10273 uint32_t count = 0; 10274 uint32_t rval = 0; 10275 10276 if (!dfc->buf1 || !dfc->buf1_size) { 10277 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 10278 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd)); --- 19 unchanged lines hidden (view full) --- 10298 if (hba->state != FC_READY) { 10299 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 10300 "%s: HBA not ready.", emlxs_dfc_xlate(dfc->cmd)); 10301 10302 return (DFC_DRV_ERROR); 10303 } 10304 10305 size = sizeof (DFC_FCoEFCFList_t) + | 10270 uint32_t size; 10271 uint32_t i; 10272 uint32_t count = 0; 10273 uint32_t rval = 0; 10274 10275 if (!dfc->buf1 || !dfc->buf1_size) { 10276 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 10277 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd)); --- 19 unchanged lines hidden (view full) --- 10297 if (hba->state != FC_READY) { 10298 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 10299 "%s: HBA not ready.", emlxs_dfc_xlate(dfc->cmd)); 10300 10301 return (DFC_DRV_ERROR); 10302 } 10303 10304 size = sizeof (DFC_FCoEFCFList_t) + |
10306 hba->sli.sli4.FCFICount * sizeof (DFC_FCoEFCFInfo_t); | 10305 hba->sli.sli4.fcftab.table_count * sizeof (DFC_FCoEFCFInfo_t); |
10307 fcflist = (DFC_FCoEFCFList_t *)kmem_zalloc(size, KM_SLEEP); 10308 10309 if (ddi_copyin(dfc->buf1, (void *)fcflist, 10310 sizeof (DFC_FCoEFCFList_t), mode) != 0) { 10311 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 10312 "%s: ddi_copyin failed.", emlxs_dfc_xlate(dfc->cmd)); 10313 10314 rval = DFC_COPYIN_ERROR; 10315 goto done; 10316 } 10317 10318 fcflistentry = fcflist->entries; | 10306 fcflist = (DFC_FCoEFCFList_t *)kmem_zalloc(size, KM_SLEEP); 10307 10308 if (ddi_copyin(dfc->buf1, (void *)fcflist, 10309 sizeof (DFC_FCoEFCFList_t), mode) != 0) { 10310 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 10311 "%s: ddi_copyin failed.", emlxs_dfc_xlate(dfc->cmd)); 10312 10313 rval = DFC_COPYIN_ERROR; 10314 goto done; 10315 } 10316 10317 fcflistentry = fcflist->entries; |
10319 mutex_enter(&hba->sli.sli4.id_lock); 10320 fp = hba->sli.sli4.FCFIp; 10321 for (i = 0; i < hba->sli.sli4.FCFICount; i ++) { 10322 if ((fp->state == RESOURCE_ALLOCATED) && 10323 (fp->fcf_rec.fcf_valid)) { 10324 fcflistentry->Priority = fp->fcf_rec.fip_priority; 10325 if (fp->fcf_rec.fcf_available) | 10318 mutex_enter(&EMLXS_FCF_LOCK); 10319 fcfp = hba->sli.sli4.fcftab.table; 10320 for (i = 0; i < hba->sli.sli4.fcftab.table_count; i++, fcfp++) { 10321 if ((fcfp->state != FCFI_STATE_FREE) && 10322 (fcfp->fcf_rec.fcf_valid)) { 10323 fcflistentry->Priority = fcfp->fcf_rec.fip_priority; 10324 if (fcfp->fcf_rec.fcf_available) { |
10326 fcflistentry->State = FCF_AVAILABLE_STATE; | 10325 fcflistentry->State = FCF_AVAILABLE_STATE; |
10327 fcflistentry->LKA_Period = fp->fcf_rec.fka_adv_period; | 10326 } 10327 fcflistentry->LKA_Period = fcfp->fcf_rec.fka_adv_period; |
10328 | 10328 |
10329 bcopy((void *)fp->fcf_rec.vlan_bitmap, | 10329 bcopy((void *)fcfp->fcf_rec.vlan_bitmap, |
10330 (void *)fcflistentry->VLanBitMap, 512); | 10330 (void *)fcflistentry->VLanBitMap, 512); |
10331 bcopy((void *)fp->fcf_rec.fc_map, | 10331 bcopy((void *)fcfp->fcf_rec.fc_map, |
10332 (void *)fcflistentry->FC_Map, 3); | 10332 (void *)fcflistentry->FC_Map, 3); |
10333 bcopy((void *)fp->fcf_rec.fabric_name_identifier, | 10333 bcopy((void *)fcfp->fcf_rec.fabric_name_identifier, |
10334 (void *)fcflistentry->FabricName, 8); | 10334 (void *)fcflistentry->FabricName, 8); |
10335 bcopy((void *)fp->fcf_rec.switch_name_identifier, | 10335 bcopy((void *)fcfp->fcf_rec.switch_name_identifier, |
10336 (void *)fcflistentry->SwitchName, 8); | 10336 (void *)fcflistentry->SwitchName, 8); |
10337 bcopy((void *)&fp->fcf_rec.fcf_mac_address_hi, | 10337 bcopy((void *)&fcfp->fcf_rec.fcf_mac_address_hi, |
10338 (void *)fcflistentry->Mac, 6); 10339 | 10338 (void *)fcflistentry->Mac, 6); 10339 |
10340 count ++; 10341 fcflistentry ++; | 10340 count++; 10341 fcflistentry++; |
10342 } | 10342 } |
10343 fp ++; | |
10344 } | 10343 } |
10345 mutex_exit(&hba->sli.sli4.id_lock); | 10344 mutex_exit(&EMLXS_FCF_LOCK); |
10346 | 10345 |
10347 if (count > fcflist->numberOfEntries) | 10346 fcflist->nActiveFCFs = hba->sli.sli4.fcftab.fcfi_count; 10347 10348 if (count > fcflist->numberOfEntries) { |
10348 rval = DFC_ARG_TOOSMALL; | 10349 rval = DFC_ARG_TOOSMALL; |
10350 } |
|
10349 10350 i = sizeof (DFC_FCoEFCFList_t) + 10351 (fcflist->numberOfEntries - 1) * sizeof (DFC_FCoEFCFInfo_t); | 10351 10352 i = sizeof (DFC_FCoEFCFList_t) + 10353 (fcflist->numberOfEntries - 1) * sizeof (DFC_FCoEFCFInfo_t); |
10352 fcflist->numberOfEntries = count; | 10354 fcflist->numberOfEntries = (uint16_t)count; |
10353 10354 if (ddi_copyout((void *) fcflist, dfc->buf1, 10355 i, mode) != 0) { 10356 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 10357 "%s: ddi_copyout failed.", emlxs_dfc_xlate(dfc->cmd)); 10358 10359 rval = DFC_COPYOUT_ERROR; 10360 goto done; --- 151 unchanged lines hidden (view full) --- 10512 10513 return (rval); 10514} /* emlxs_dfc_send_mbox4() */ 10515 10516 10517static int 10518emlxs_dfc_rd_be_fcf(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode) 10519{ | 10355 10356 if (ddi_copyout((void *) fcflist, dfc->buf1, 10357 i, mode) != 0) { 10358 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 10359 "%s: ddi_copyout failed.", emlxs_dfc_xlate(dfc->cmd)); 10360 10361 rval = DFC_COPYOUT_ERROR; 10362 goto done; --- 151 unchanged lines hidden (view full) --- 10514 10515 return (rval); 10516} /* emlxs_dfc_send_mbox4() */ 10517 10518 10519static int 10520emlxs_dfc_rd_be_fcf(emlxs_hba_t *hba, dfc_t *dfc, int32_t mode) 10521{ |
10520 emlxs_port_t *port = &PPORT; 10521 MATCHMAP *mp; 10522 MAILBOX4 *mb = NULL; 10523 MAILBOXQ *mbq = NULL; 10524 IOCTL_FCOE_READ_FCF_TABLE *fcf; 10525 mbox_req_hdr_t *hdr_req; 10526 FCF_RECORD_t *fcfrec; 10527 int32_t rc = 0; 10528 uint32_t rval = 0; 10529 uint16_t index; | 10522 emlxs_port_t *port = &PPORT; 10523 MATCHMAP *mp; 10524 MAILBOX4 *mb = NULL; 10525 MAILBOXQ *mbq = NULL; 10526 IOCTL_FCOE_READ_FCF_TABLE *fcf; 10527 mbox_req_hdr_t *hdr_req; 10528 mbox_rsp_hdr_t *hdr_rsp; 10529 FCF_RECORD_t *fcfrec; 10530 uint32_t rc = 0; 10531 uint32_t rval = 0; 10532 uint16_t index; |
10530 10531 if (!dfc->buf1 || !dfc->buf1_size) { 10532 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 10533 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd)); 10534 10535 return (DFC_ARG_NULL); 10536 } 10537 --- 4 unchanged lines hidden (view full) --- 10542 mb = (MAILBOX4 *)mbq; 10543 10544 bzero((void *) mb, MAILBOX_CMD_SLI4_BSIZE); 10545 10546 if ((mp = (MATCHMAP *)emlxs_mem_get(hba, MEM_BUF, 1)) == 0) { 10547 rval = DFC_SYSRES_ERROR; 10548 goto done; 10549 } | 10533 10534 if (!dfc->buf1 || !dfc->buf1_size) { 10535 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 10536 "%s: Null buffer1 found.", emlxs_dfc_xlate(dfc->cmd)); 10537 10538 return (DFC_ARG_NULL); 10539 } 10540 --- 4 unchanged lines hidden (view full) --- 10545 mb = (MAILBOX4 *)mbq; 10546 10547 bzero((void *) mb, MAILBOX_CMD_SLI4_BSIZE); 10548 10549 if ((mp = (MATCHMAP *)emlxs_mem_get(hba, MEM_BUF, 1)) == 0) { 10550 rval = DFC_SYSRES_ERROR; 10551 goto done; 10552 } |
10553 bzero(mp->virt, mp->size); 10554 |
|
10550 /* | 10555 /* |
10551 * Save address for completion | |
10552 * Signifies a non-embedded command 10553 */ 10554 mb->un.varSLIConfig.be.embedded = 0; | 10556 * Signifies a non-embedded command 10557 */ 10558 mb->un.varSLIConfig.be.embedded = 0; |
10555 mbq->nonembed = (uint8_t *)mp; | 10559 mbq->nonembed = (void *)mp; |
10556 mbq->mbox_cmpl = NULL; 10557 10558 mb->mbxCommand = MBX_SLI_CONFIG; 10559 mb->mbxOwner = OWN_HOST; 10560 10561 hdr_req = (mbox_req_hdr_t *)mp->virt; | 10560 mbq->mbox_cmpl = NULL; 10561 10562 mb->mbxCommand = MBX_SLI_CONFIG; 10563 mb->mbxOwner = OWN_HOST; 10564 10565 hdr_req = (mbox_req_hdr_t *)mp->virt; |
10566 hdr_rsp = (mbox_rsp_hdr_t *)mp->virt; 10567 |
|
10562 hdr_req->subsystem = IOCTL_SUBSYSTEM_FCOE; 10563 hdr_req->opcode = FCOE_OPCODE_READ_FCF_TABLE; 10564 hdr_req->timeout = 0; 10565 hdr_req->req_length = sizeof (IOCTL_FCOE_READ_FCF_TABLE); 10566 fcf = (IOCTL_FCOE_READ_FCF_TABLE *)(hdr_req + 1); 10567 fcf->params.request.fcf_index = index; 10568 10569 rc = EMLXS_SLI_ISSUE_MBOX_CMD(hba, mbq, MBX_WAIT, 0); --- 7 unchanged lines hidden (view full) --- 10577 (void *)&fcf->params.response.next_valid_fcf_index, 10578 (void *)dfc->buf2, dfc->buf2_size, mode) != 0) { 10579 rval = DFC_COPYOUT_ERROR; 10580 } 10581 } else { 10582 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 10583 "%s: %s failed. mbxstatus=0x%x", emlxs_dfc_xlate(dfc->cmd), 10584 emlxs_mb_cmd_xlate(mb->mbxCommand), rc); | 10568 hdr_req->subsystem = IOCTL_SUBSYSTEM_FCOE; 10569 hdr_req->opcode = FCOE_OPCODE_READ_FCF_TABLE; 10570 hdr_req->timeout = 0; 10571 hdr_req->req_length = sizeof (IOCTL_FCOE_READ_FCF_TABLE); 10572 fcf = (IOCTL_FCOE_READ_FCF_TABLE *)(hdr_req + 1); 10573 fcf->params.request.fcf_index = index; 10574 10575 rc = EMLXS_SLI_ISSUE_MBOX_CMD(hba, mbq, MBX_WAIT, 0); --- 7 unchanged lines hidden (view full) --- 10583 (void *)&fcf->params.response.next_valid_fcf_index, 10584 (void *)dfc->buf2, dfc->buf2_size, mode) != 0) { 10585 rval = DFC_COPYOUT_ERROR; 10586 } 10587 } else { 10588 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 10589 "%s: %s failed. mbxstatus=0x%x", emlxs_dfc_xlate(dfc->cmd), 10590 emlxs_mb_cmd_xlate(mb->mbxCommand), rc); |
10585 rval = DFC_COPYOUT_ERROR; | 10591 10592 if ((rc == MBX_NONEMBED_ERROR) && 10593 (hdr_rsp->status == MBX_RSP_STATUS_NO_FCF)) { 10594 rval = DFC_FCOE_NO_DATA; 10595 } else { 10596 rval = DFC_IO_ERROR; 10597 } |
10586 } 10587done: 10588 if (mp) | 10598 } 10599done: 10600 if (mp) |
10589 (void) emlxs_mem_put(hba, MEM_BUF, (uint8_t *)mp); | 10601 emlxs_mem_put(hba, MEM_BUF, (void *)mp); |
10590 if (mbq) 10591 kmem_free(mbq, sizeof (MAILBOXQ)); 10592 10593 return (rval); 10594} 10595 10596 10597/*ARGSUSED*/ --- 24 unchanged lines hidden (view full) --- 10622 mb->un.varSLIConfig.be.un_hdr.hdr_req.subsystem = 10623 IOCTL_SUBSYSTEM_DCBX; 10624 mb->un.varSLIConfig.be.un_hdr.hdr_req.opcode = 10625 DCBX_OPCODE_SET_DCBX_MODE; 10626 mb->un.varSLIConfig.be.un_hdr.hdr_req.timeout = 0; 10627 mb->un.varSLIConfig.be.un_hdr.hdr_req.req_length = 10628 sizeof (IOCTL_DCBX_SET_DCBX_MODE); 10629 dcbx_mode = (IOCTL_DCBX_SET_DCBX_MODE *)&mb->un.varSLIConfig.payload; | 10602 if (mbq) 10603 kmem_free(mbq, sizeof (MAILBOXQ)); 10604 10605 return (rval); 10606} 10607 10608 10609/*ARGSUSED*/ --- 24 unchanged lines hidden (view full) --- 10634 mb->un.varSLIConfig.be.un_hdr.hdr_req.subsystem = 10635 IOCTL_SUBSYSTEM_DCBX; 10636 mb->un.varSLIConfig.be.un_hdr.hdr_req.opcode = 10637 DCBX_OPCODE_SET_DCBX_MODE; 10638 mb->un.varSLIConfig.be.un_hdr.hdr_req.timeout = 0; 10639 mb->un.varSLIConfig.be.un_hdr.hdr_req.req_length = 10640 sizeof (IOCTL_DCBX_SET_DCBX_MODE); 10641 dcbx_mode = (IOCTL_DCBX_SET_DCBX_MODE *)&mb->un.varSLIConfig.payload; |
10630 dcbx_mode->params.request.port_num = port_num; | 10642 dcbx_mode->params.request.port_num = (uint8_t)port_num; |
10631 dcbx_mode->params.request.dcbx_mode = dfc->data1; 10632 10633 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_detail_msg, 10634 "%s requested on port %d.", emlxs_dfc_xlate(dfc->cmd), port_num); 10635 rval = EMLXS_SLI_ISSUE_MBOX_CMD(hba, mbq, MBX_WAIT, 0); 10636 if (rval != MBX_SUCCESS) { 10637 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 10638 "%s: %s failed. mbxstatus=0x%x", emlxs_dfc_xlate(dfc->cmd), --- 37 unchanged lines hidden (view full) --- 10676 mb->un.varSLIConfig.be.un_hdr.hdr_req.subsystem = 10677 IOCTL_SUBSYSTEM_DCBX; 10678 mb->un.varSLIConfig.be.un_hdr.hdr_req.opcode = 10679 DCBX_OPCODE_GET_DCBX_MODE; 10680 mb->un.varSLIConfig.be.un_hdr.hdr_req.timeout = 0; 10681 mb->un.varSLIConfig.be.un_hdr.hdr_req.req_length = 10682 sizeof (IOCTL_DCBX_SET_DCBX_MODE); 10683 dcbx_mode = (IOCTL_DCBX_GET_DCBX_MODE *)&mb->un.varSLIConfig.payload; | 10643 dcbx_mode->params.request.dcbx_mode = dfc->data1; 10644 10645 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_detail_msg, 10646 "%s requested on port %d.", emlxs_dfc_xlate(dfc->cmd), port_num); 10647 rval = EMLXS_SLI_ISSUE_MBOX_CMD(hba, mbq, MBX_WAIT, 0); 10648 if (rval != MBX_SUCCESS) { 10649 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 10650 "%s: %s failed. mbxstatus=0x%x", emlxs_dfc_xlate(dfc->cmd), --- 37 unchanged lines hidden (view full) --- 10688 mb->un.varSLIConfig.be.un_hdr.hdr_req.subsystem = 10689 IOCTL_SUBSYSTEM_DCBX; 10690 mb->un.varSLIConfig.be.un_hdr.hdr_req.opcode = 10691 DCBX_OPCODE_GET_DCBX_MODE; 10692 mb->un.varSLIConfig.be.un_hdr.hdr_req.timeout = 0; 10693 mb->un.varSLIConfig.be.un_hdr.hdr_req.req_length = 10694 sizeof (IOCTL_DCBX_SET_DCBX_MODE); 10695 dcbx_mode = (IOCTL_DCBX_GET_DCBX_MODE *)&mb->un.varSLIConfig.payload; |
10684 dcbx_mode->params.request.port_num = port_num; | 10696 dcbx_mode->params.request.port_num = (uint8_t)port_num; |
10685 10686 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_detail_msg, 10687 "%s requested on port %d.", emlxs_dfc_xlate(dfc->cmd), port_num); 10688 rval = EMLXS_SLI_ISSUE_MBOX_CMD(hba, mbq, MBX_WAIT, 0); 10689 if (rval != MBX_SUCCESS) { 10690 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 10691 "%s: %s failed. mbxstatus=0x%x", emlxs_dfc_xlate(dfc->cmd), 10692 emlxs_mb_cmd_xlate(mb->mbxCommand), rval); --- 36 unchanged lines hidden (view full) --- 10729 emlxs_dfc_xlate(dfc->cmd)); 10730 10731 rval = DFC_COPYOUT_ERROR; 10732 return (rval); 10733 } 10734 } 10735 10736 return (rval); | 10697 10698 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_detail_msg, 10699 "%s requested on port %d.", emlxs_dfc_xlate(dfc->cmd), port_num); 10700 rval = EMLXS_SLI_ISSUE_MBOX_CMD(hba, mbq, MBX_WAIT, 0); 10701 if (rval != MBX_SUCCESS) { 10702 EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_dfc_error_msg, 10703 "%s: %s failed. mbxstatus=0x%x", emlxs_dfc_xlate(dfc->cmd), 10704 emlxs_mb_cmd_xlate(mb->mbxCommand), rval); --- 36 unchanged lines hidden (view full) --- 10741 emlxs_dfc_xlate(dfc->cmd)); 10742 10743 rval = DFC_COPYOUT_ERROR; 10744 return (rval); 10745 } 10746 } 10747 10748 return (rval); |
10737} | 10749 10750} /* emlxs_dfc_get_qos() */ |