246 * as defined in the Fibre Channel Transport Programmming Guide.
247 */
248 #if (EMLXS_MODREV == EMLXS_MODREV5)
249 static fc_fca_tran_t emlxs_fca_tran = {
250 FCTL_FCA_MODREV_5, /* fca_version, with SUN NPIV support */
251 MAX_VPORTS, /* fca numerb of ports */
252 sizeof (emlxs_buf_t), /* fca pkt size */
253 2048, /* fca cmd max */
254 &emlxs_dma_lim, /* fca dma limits */
255 0, /* fca iblock, to be filled in later */
256 &emlxs_dma_attr, /* fca dma attributes */
257 &emlxs_dma_attr_1sg, /* fca dma fcp cmd attributes */
258 &emlxs_dma_attr_1sg, /* fca dma fcp rsp attributes */
259 &emlxs_dma_attr_ro, /* fca dma fcp data attributes */
260 &emlxs_dma_attr_1sg, /* fca dma fcip cmd attributes */
261 &emlxs_dma_attr_fcip_rsp, /* fca dma fcip rsp attributes */
262 &emlxs_dma_attr_1sg, /* fca dma fcsm cmd attributes */
263 &emlxs_dma_attr, /* fca dma fcsm rsp attributes */
264 &emlxs_data_acc_attr, /* fca access atributes */
265 0, /* fca_num_npivports */
266 {0, 0, 0, 0, 0, 0, 0, 0}, /* Physical port WWPN */
267 emlxs_fca_bind_port,
268 emlxs_fca_unbind_port,
269 emlxs_fca_pkt_init,
270 emlxs_fca_pkt_uninit,
271 emlxs_fca_transport,
272 emlxs_fca_get_cap,
273 emlxs_fca_set_cap,
274 emlxs_fca_get_map,
275 emlxs_fca_transport,
276 emlxs_fca_ub_alloc,
277 emlxs_fca_ub_free,
278 emlxs_fca_ub_release,
279 emlxs_fca_pkt_abort,
280 emlxs_fca_reset,
281 emlxs_fca_port_manage,
282 emlxs_fca_get_device,
283 emlxs_fca_notify
284 };
285 #endif /* EMLXS_MODREV5 */
286
465 #ifdef SAN_DIAG_SUPPORT
466 extern kmutex_t emlxs_sd_bucket_mutex;
467 extern sd_bucket_info_t emlxs_sd_bucket;
468 #endif /* SAN_DIAG_SUPPORT */
469
470 /*
471 * Module linkage information for the kernel.
472 */
473 static struct modldrv emlxs_modldrv = {
474 &mod_driverops, /* module type - driver */
475 emlxs_name, /* module name */
476 &emlxs_ops, /* driver ops */
477 };
478
479
480 /*
481 * Driver module linkage structure
482 */
483 static struct modlinkage emlxs_modlinkage = {
484 MODREV_1, /* ml_rev - must be MODREV_1 */
485 &emlxs_modldrv, /* ml_linkage */
486 NULL /* end of driver linkage */
487 };
488
489
490 /* We only need to add entries for non-default return codes. */
491 /* Entries do not need to be in order. */
492 /* Default: FC_PKT_TRAN_ERROR, FC_REASON_ABORTED, */
493 /* FC_EXPLN_NONE, FC_ACTION_RETRYABLE */
494
495 emlxs_xlat_err_t emlxs_iostat_tbl[] = {
496 /* {f/w code, pkt_state, pkt_reason, */
497 /* pkt_expln, pkt_action} */
498
499 /* 0x00 - Do not remove */
500 {IOSTAT_SUCCESS, FC_PKT_SUCCESS, FC_REASON_NONE,
501 FC_EXPLN_NONE, FC_ACTION_RETRYABLE},
502
503 /* 0x01 - Do not remove */
504 {IOSTAT_FCP_RSP_ERROR, FC_PKT_SUCCESS, FC_REASON_NONE,
505 FC_EXPLN_NONE, FC_ACTION_RETRYABLE},
506
|
246 * as defined in the Fibre Channel Transport Programmming Guide.
247 */
248 #if (EMLXS_MODREV == EMLXS_MODREV5)
249 static fc_fca_tran_t emlxs_fca_tran = {
250 FCTL_FCA_MODREV_5, /* fca_version, with SUN NPIV support */
251 MAX_VPORTS, /* fca numerb of ports */
252 sizeof (emlxs_buf_t), /* fca pkt size */
253 2048, /* fca cmd max */
254 &emlxs_dma_lim, /* fca dma limits */
255 0, /* fca iblock, to be filled in later */
256 &emlxs_dma_attr, /* fca dma attributes */
257 &emlxs_dma_attr_1sg, /* fca dma fcp cmd attributes */
258 &emlxs_dma_attr_1sg, /* fca dma fcp rsp attributes */
259 &emlxs_dma_attr_ro, /* fca dma fcp data attributes */
260 &emlxs_dma_attr_1sg, /* fca dma fcip cmd attributes */
261 &emlxs_dma_attr_fcip_rsp, /* fca dma fcip rsp attributes */
262 &emlxs_dma_attr_1sg, /* fca dma fcsm cmd attributes */
263 &emlxs_dma_attr, /* fca dma fcsm rsp attributes */
264 &emlxs_data_acc_attr, /* fca access atributes */
265 0, /* fca_num_npivports */
266 {{0, 0, 0, 0, 0, 0, 0, 0}}, /* Physical port WWPN */
267 emlxs_fca_bind_port,
268 emlxs_fca_unbind_port,
269 emlxs_fca_pkt_init,
270 emlxs_fca_pkt_uninit,
271 emlxs_fca_transport,
272 emlxs_fca_get_cap,
273 emlxs_fca_set_cap,
274 emlxs_fca_get_map,
275 emlxs_fca_transport,
276 emlxs_fca_ub_alloc,
277 emlxs_fca_ub_free,
278 emlxs_fca_ub_release,
279 emlxs_fca_pkt_abort,
280 emlxs_fca_reset,
281 emlxs_fca_port_manage,
282 emlxs_fca_get_device,
283 emlxs_fca_notify
284 };
285 #endif /* EMLXS_MODREV5 */
286
465 #ifdef SAN_DIAG_SUPPORT
466 extern kmutex_t emlxs_sd_bucket_mutex;
467 extern sd_bucket_info_t emlxs_sd_bucket;
468 #endif /* SAN_DIAG_SUPPORT */
469
470 /*
471 * Module linkage information for the kernel.
472 */
473 static struct modldrv emlxs_modldrv = {
474 &mod_driverops, /* module type - driver */
475 emlxs_name, /* module name */
476 &emlxs_ops, /* driver ops */
477 };
478
479
480 /*
481 * Driver module linkage structure
482 */
483 static struct modlinkage emlxs_modlinkage = {
484 MODREV_1, /* ml_rev - must be MODREV_1 */
485 { &emlxs_modldrv, /* ml_linkage */
486 NULL }
487 };
488
489
490 /* We only need to add entries for non-default return codes. */
491 /* Entries do not need to be in order. */
492 /* Default: FC_PKT_TRAN_ERROR, FC_REASON_ABORTED, */
493 /* FC_EXPLN_NONE, FC_ACTION_RETRYABLE */
494
495 emlxs_xlat_err_t emlxs_iostat_tbl[] = {
496 /* {f/w code, pkt_state, pkt_reason, */
497 /* pkt_expln, pkt_action} */
498
499 /* 0x00 - Do not remove */
500 {IOSTAT_SUCCESS, FC_PKT_SUCCESS, FC_REASON_NONE,
501 FC_EXPLN_NONE, FC_ACTION_RETRYABLE},
502
503 /* 0x01 - Do not remove */
504 {IOSTAT_FCP_RSP_ERROR, FC_PKT_SUCCESS, FC_REASON_NONE,
505 FC_EXPLN_NONE, FC_ACTION_RETRYABLE},
506
|