123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- /*
- * Copyright (c) 2005-2009 Brocade Communications Systems, Inc.
- * All rights reserved
- * www.brocade.com
- *
- * Linux driver for Brocade Fibre Channel Host Bus Adapter.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License (GPL) Version 2 as
- * published by the Free Software Foundation
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- */
- #ifndef __BFA_FCPIM_H__
- #define __BFA_FCPIM_H__
- #include <bfa.h>
- #include <bfa_svc.h>
- #include <bfi/bfi_fcpim.h>
- #include <defs/bfa_defs_fcpim.h>
- /*
- * forward declarations
- */
- struct bfa_itnim_s;
- struct bfa_ioim_s;
- struct bfa_tskim_s;
- struct bfad_ioim_s;
- struct bfad_tskim_s;
- /*
- * bfa fcpim module API functions
- */
- void bfa_fcpim_path_tov_set(struct bfa_s *bfa, u16 path_tov);
- u16 bfa_fcpim_path_tov_get(struct bfa_s *bfa);
- void bfa_fcpim_qdepth_set(struct bfa_s *bfa, u16 q_depth);
- u16 bfa_fcpim_qdepth_get(struct bfa_s *bfa);
- bfa_status_t bfa_fcpim_get_modstats(struct bfa_s *bfa,
- struct bfa_fcpim_stats_s *modstats);
- bfa_status_t bfa_fcpim_clr_modstats(struct bfa_s *bfa);
- /*
- * bfa itnim API functions
- */
- struct bfa_itnim_s *bfa_itnim_create(struct bfa_s *bfa,
- struct bfa_rport_s *rport, void *itnim);
- void bfa_itnim_delete(struct bfa_itnim_s *itnim);
- void bfa_itnim_online(struct bfa_itnim_s *itnim,
- bfa_boolean_t seq_rec);
- void bfa_itnim_offline(struct bfa_itnim_s *itnim);
- void bfa_itnim_get_stats(struct bfa_itnim_s *itnim,
- struct bfa_itnim_hal_stats_s *stats);
- void bfa_itnim_clear_stats(struct bfa_itnim_s *itnim);
- /**
- * BFA completion callback for bfa_itnim_online().
- *
- * @param[in] itnim FCS or driver itnim instance
- *
- * return None
- */
- void bfa_cb_itnim_online(void *itnim);
- /**
- * BFA completion callback for bfa_itnim_offline().
- *
- * @param[in] itnim FCS or driver itnim instance
- *
- * return None
- */
- void bfa_cb_itnim_offline(void *itnim);
- void bfa_cb_itnim_tov_begin(void *itnim);
- void bfa_cb_itnim_tov(void *itnim);
- /**
- * BFA notification to FCS/driver for second level error recovery.
- *
- * Atleast one I/O request has timedout and target is unresponsive to
- * repeated abort requests. Second level error recovery should be initiated
- * by starting implicit logout and recovery procedures.
- *
- * @param[in] itnim FCS or driver itnim instance
- *
- * return None
- */
- void bfa_cb_itnim_sler(void *itnim);
- /*
- * bfa ioim API functions
- */
- struct bfa_ioim_s *bfa_ioim_alloc(struct bfa_s *bfa,
- struct bfad_ioim_s *dio,
- struct bfa_itnim_s *itnim,
- u16 nsgles);
- void bfa_ioim_free(struct bfa_ioim_s *ioim);
- void bfa_ioim_start(struct bfa_ioim_s *ioim);
- void bfa_ioim_abort(struct bfa_ioim_s *ioim);
- void bfa_ioim_delayed_comp(struct bfa_ioim_s *ioim,
- bfa_boolean_t iotov);
- /**
- * I/O completion notification.
- *
- * @param[in] dio driver IO structure
- * @param[in] io_status IO completion status
- * @param[in] scsi_status SCSI status returned by target
- * @param[in] sns_len SCSI sense length, 0 if none
- * @param[in] sns_info SCSI sense data, if any
- * @param[in] residue Residual length
- *
- * @return None
- */
- void bfa_cb_ioim_done(void *bfad, struct bfad_ioim_s *dio,
- enum bfi_ioim_status io_status,
- u8 scsi_status, int sns_len,
- u8 *sns_info, s32 residue);
- /**
- * I/O good completion notification.
- *
- * @param[in] dio driver IO structure
- *
- * @return None
- */
- void bfa_cb_ioim_good_comp(void *bfad, struct bfad_ioim_s *dio);
- /**
- * I/O abort completion notification
- *
- * @param[in] dio driver IO that was aborted
- *
- * @return None
- */
- void bfa_cb_ioim_abort(void *bfad, struct bfad_ioim_s *dio);
- void bfa_cb_ioim_resfree(void *hcb_bfad);
- void bfa_cb_ioim_resfree(void *hcb_bfad);
- /*
- * bfa tskim API functions
- */
- struct bfa_tskim_s *bfa_tskim_alloc(struct bfa_s *bfa,
- struct bfad_tskim_s *dtsk);
- void bfa_tskim_free(struct bfa_tskim_s *tskim);
- void bfa_tskim_start(struct bfa_tskim_s *tskim,
- struct bfa_itnim_s *itnim, lun_t lun,
- enum fcp_tm_cmnd tm, u8 t_secs);
- void bfa_cb_tskim_done(void *bfad, struct bfad_tskim_s *dtsk,
- enum bfi_tskim_status tsk_status);
- #endif /* __BFA_FCPIM_H__ */
|