aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/bfa/bfa_ioc.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/bfa/bfa_ioc.h')
-rw-r--r--drivers/scsi/bfa/bfa_ioc.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/drivers/scsi/bfa/bfa_ioc.h b/drivers/scsi/bfa/bfa_ioc.h
index c717b2035573..337d0366845f 100644
--- a/drivers/scsi/bfa/bfa_ioc.h
+++ b/drivers/scsi/bfa/bfa_ioc.h
@@ -91,6 +91,7 @@ struct bfa_pcidev_s {
91 int pci_slot; 91 int pci_slot;
92 u8 pci_func; 92 u8 pci_func;
93 u16 device_id; 93 u16 device_id;
94 u16 ssid;
94 void __iomem *pci_bar_kva; 95 void __iomem *pci_bar_kva;
95}; 96};
96 97
@@ -261,6 +262,9 @@ struct bfa_ioc_s {
261 enum bfi_asic_mode asic_mode; 262 enum bfi_asic_mode asic_mode;
262 enum bfi_port_mode port0_mode; 263 enum bfi_port_mode port0_mode;
263 enum bfi_port_mode port1_mode; 264 enum bfi_port_mode port1_mode;
265 enum bfa_mode_s port_mode;
266 u8 ad_cap_bm; /* adapter cap bit mask */
267 u8 port_mode_cfg; /* config port mode */
264}; 268};
265 269
266struct bfa_ioc_hwif_s { 270struct bfa_ioc_hwif_s {
@@ -281,6 +285,24 @@ struct bfa_ioc_hwif_s {
281 bfa_boolean_t (*ioc_lpu_read_stat) (struct bfa_ioc_s *ioc); 285 bfa_boolean_t (*ioc_lpu_read_stat) (struct bfa_ioc_s *ioc);
282}; 286};
283 287
288/*
289 * ASIC block configurtion related
290 */
291
292typedef void (*bfa_ablk_cbfn_t)(void *, enum bfa_status);
293
294struct bfa_ablk_s {
295 struct bfa_ioc_s *ioc;
296 struct bfa_ablk_cfg_s *cfg;
297 u16 *pcifn;
298 struct bfa_dma_s dma_addr;
299 bfa_boolean_t busy;
300 struct bfa_mbox_cmd_s mb;
301 bfa_ablk_cbfn_t cbfn;
302 void *cbarg;
303 struct bfa_ioc_notify_s ioc_notify;
304};
305
284#define bfa_ioc_pcifn(__ioc) ((__ioc)->pcidev.pci_func) 306#define bfa_ioc_pcifn(__ioc) ((__ioc)->pcidev.pci_func)
285#define bfa_ioc_devid(__ioc) ((__ioc)->pcidev.device_id) 307#define bfa_ioc_devid(__ioc) ((__ioc)->pcidev.device_id)
286#define bfa_ioc_bar0(__ioc) ((__ioc)->pcidev.pci_bar_kva) 308#define bfa_ioc_bar0(__ioc) ((__ioc)->pcidev.pci_bar_kva)
@@ -402,6 +424,33 @@ bfa_status_t bfa_ioc_fw_stats_get(struct bfa_ioc_s *ioc, void *stats);
402bfa_status_t bfa_ioc_fw_stats_clear(struct bfa_ioc_s *ioc); 424bfa_status_t bfa_ioc_fw_stats_clear(struct bfa_ioc_s *ioc);
403 425
404/* 426/*
427 * asic block configuration related APIs
428 */
429u32 bfa_ablk_meminfo(void);
430void bfa_ablk_memclaim(struct bfa_ablk_s *ablk, u8 *dma_kva, u64 dma_pa);
431void bfa_ablk_attach(struct bfa_ablk_s *ablk, struct bfa_ioc_s *ioc);
432bfa_status_t bfa_ablk_query(struct bfa_ablk_s *ablk,
433 struct bfa_ablk_cfg_s *ablk_cfg,
434 bfa_ablk_cbfn_t cbfn, void *cbarg);
435bfa_status_t bfa_ablk_adapter_config(struct bfa_ablk_s *ablk,
436 enum bfa_mode_s mode, int max_pf, int max_vf,
437 bfa_ablk_cbfn_t cbfn, void *cbarg);
438bfa_status_t bfa_ablk_port_config(struct bfa_ablk_s *ablk, int port,
439 enum bfa_mode_s mode, int max_pf, int max_vf,
440 bfa_ablk_cbfn_t cbfn, void *cbarg);
441bfa_status_t bfa_ablk_pf_create(struct bfa_ablk_s *ablk, u16 *pcifn,
442 u8 port, enum bfi_pcifn_class personality, int bw,
443 bfa_ablk_cbfn_t cbfn, void *cbarg);
444bfa_status_t bfa_ablk_pf_delete(struct bfa_ablk_s *ablk, int pcifn,
445 bfa_ablk_cbfn_t cbfn, void *cbarg);
446bfa_status_t bfa_ablk_pf_update(struct bfa_ablk_s *ablk, int pcifn, int bw,
447 bfa_ablk_cbfn_t cbfn, void *cbarg);
448bfa_status_t bfa_ablk_optrom_en(struct bfa_ablk_s *ablk,
449 bfa_ablk_cbfn_t cbfn, void *cbarg);
450bfa_status_t bfa_ablk_optrom_dis(struct bfa_ablk_s *ablk,
451 bfa_ablk_cbfn_t cbfn, void *cbarg);
452
453/*
405 * bfa mfg wwn API functions 454 * bfa mfg wwn API functions
406 */ 455 */
407mac_t bfa_ioc_get_mac(struct bfa_ioc_s *ioc); 456mac_t bfa_ioc_get_mac(struct bfa_ioc_s *ioc);