Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  efct_xport.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (C) 2021 Broadcom. All Rights Reserved. The term
 * “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
 */


#if !defined(__EFCT_XPORT_H__)
#define __EFCT_XPORT_H__

enum efct_xport_ctrl {
 EFCT_XPORT_PORT_ONLINE = 1,
 EFCT_XPORT_PORT_OFFLINE,
 EFCT_XPORT_SHUTDOWN,
 EFCT_XPORT_POST_NODE_EVENT,
 EFCT_XPORT_WWNN_SET,
 EFCT_XPORT_WWPN_SET,
};

enum efct_xport_status {
 EFCT_XPORT_PORT_STATUS,
 EFCT_XPORT_CONFIG_PORT_STATUS,
 EFCT_XPORT_LINK_SPEED,
 EFCT_XPORT_IS_SUPPORTED_LINK_SPEED,
 EFCT_XPORT_LINK_STATISTICS,
 EFCT_XPORT_LINK_STAT_RESET,
 EFCT_XPORT_IS_QUIESCED
};

struct efct_xport_link_stats {
 bool  rec;
 bool  gec;
 bool  w02of;
 bool  w03of;
 bool  w04of;
 bool  w05of;
 bool  w06of;
 bool  w07of;
 bool  w08of;
 bool  w09of;
 bool  w10of;
 bool  w11of;
 bool  w12of;
 bool  w13of;
 bool  w14of;
 bool  w15of;
 bool  w16of;
 bool  w17of;
 bool  w18of;
 bool  w19of;
 bool  w20of;
 bool  w21of;
 bool  clrc;
 bool  clof1;
 u32  link_failure_error_count;
 u32  loss_of_sync_error_count;
 u32  loss_of_signal_error_count;
 u32  primitive_sequence_error_count;
 u32  invalid_transmission_word_error_count;
 u32  crc_error_count;
 u32  primitive_sequence_event_timeout_count;
 u32  elastic_buffer_overrun_error_count;
 u32  arbitration_fc_al_timeout_count;
 u32  advertised_receive_bufftor_to_buffer_credit;
 u32  current_receive_buffer_to_buffer_credit;
 u32  advertised_transmit_buffer_to_buffer_credit;
 u32  current_transmit_buffer_to_buffer_credit;
 u32  received_eofa_count;
 u32  received_eofdti_count;
 u32  received_eofni_count;
 u32  received_soff_count;
 u32  received_dropped_no_aer_count;
 u32  received_dropped_no_available_rpi_resources_count;
 u32  received_dropped_no_available_xri_resources_count;
};

struct efct_xport_host_stats {
 bool  cc;
 u32  transmit_kbyte_count;
 u32  receive_kbyte_count;
 u32  transmit_frame_count;
 u32  receive_frame_count;
 u32  transmit_sequence_count;
 u32  receive_sequence_count;
 u32  total_exchanges_originator;
 u32  total_exchanges_responder;
 u32  receive_p_bsy_count;
 u32  receive_f_bsy_count;
 u32  dropped_frames_due_to_no_rq_buffer_count;
 u32  empty_rq_timeout_count;
 u32  dropped_frames_due_to_no_xri_count;
 u32  empty_xri_pool_count;
};

struct efct_xport_host_statistics {
 struct completion  done;
 struct efct_xport_link_stats link_stats;
 struct efct_xport_host_stats host_stats;
};

union efct_xport_stats_u {
 u32 value;
 struct efct_xport_host_statistics stats;
};

struct efct_xport_fcp_stats {
 u64  input_bytes;
 u64  output_bytes;
 u64  input_requests;
 u64  output_requests;
 u64  control_requests;
};

struct efct_xport {
 struct efct  *efct;
 /* wwpn requested by user for primary nport */
 u64   req_wwpn;
 /* wwnn requested by user for primary nport */
 u64   req_wwnn;

 /* Nodes */
 /* number of allocated nodes */
 u32   nodes_count;
 /* used to track how often IO pool is empty */
 atomic_t  io_alloc_failed_count;
 /* array of pointers to nodes */
 struct efc_node  **nodes;

 /* Io pool and counts */
 /* pointer to IO pool */
 struct efct_io_pool *io_pool;
 /* lock for io_pending_list */
 spinlock_t  io_pending_lock;
 /* list of IOs waiting for HW resources
 *  lock: xport->io_pending_lock
 *  link: efct_io_s->io_pending_link
 */

 struct list_head io_pending_list;
 /* count of totals IOS allocated */
 atomic_t  io_total_alloc;
 /* count of totals IOS free'd */
 atomic_t  io_total_free;
 /* count of totals IOS that were pended */
 atomic_t  io_total_pending;
 /* count of active IOS */
 atomic_t  io_active_count;
 /* count of pending IOS */
 atomic_t  io_pending_count;
 /* non-zero if efct_scsi_check_pending is executing */
 atomic_t  io_pending_recursing;

 /* Port */
 /* requested link state */
 u32   configured_link_state;

 /* Timer for Statistics */
 struct timer_list stats_timer;
 union efct_xport_stats_u fc_xport_stats;
 struct efct_xport_fcp_stats fcp_stats;
};

struct efct_rport_data {
 struct efc_node  *node;
};

struct efct_xport *
efct_xport_alloc(struct efct *efct);
int
efct_xport_attach(struct efct_xport *xport);
int
efct_xport_initialize(struct efct_xport *xport);
void
efct_xport_detach(struct efct_xport *xport);
int
efct_xport_control(struct efct_xport *xport, enum efct_xport_ctrl cmd, ...);
int
efct_xport_status(struct efct_xport *xport, enum efct_xport_status cmd,
    union efct_xport_stats_u *result);
void
efct_xport_free(struct efct_xport *xport);

struct scsi_transport_template *efct_attach_fc_transport(void);
struct scsi_transport_template *efct_attach_vport_fc_transport(void);
void
efct_release_fc_transport(struct scsi_transport_template *transport_template);

#endif /* __EFCT_XPORT_H__ */

Messung V0.5
C=89 H=100 G=94

¤ Dauer der Verarbeitung: 0.15 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge