[SCSI] bfa: Support for FC BB credit recovery
[pandora-kernel.git] / drivers / scsi / bfa / bfa_defs_svc.h
index ec03c8c..c06359b 100644 (file)
@@ -257,8 +257,6 @@ struct bfa_fw_port_lksm_stats_s {
        u32    nos_tx;             /*  No. of times NOS tx started         */
        u32    hwsm_lrr_rx;        /*  No. of times LRR rx-ed by HWSM      */
        u32    hwsm_lr_rx;         /*  No. of times LR rx-ed by HWSM       */
-       u32    bbsc_lr;            /* LKSM LR tx for credit recovery       */
-       u32     rsvd;
 };
 
 struct bfa_fw_port_snsm_stats_s {
@@ -409,7 +407,7 @@ struct bfa_fw_trunk_stats_s {
        u32 rsvd;               /*  padding for 64 bit alignment */
 };
 
-struct bfa_fw_advsm_stats_s {
+struct bfa_fw_aport_stats_s {
        u32 flogi_sent;         /*  Flogi sent                  */
        u32 flogi_acc_recvd;    /*  Flogi Acc received          */
        u32 flogi_rjt_recvd;    /*  Flogi rejects received      */
@@ -419,6 +417,12 @@ struct bfa_fw_advsm_stats_s {
        u32 elp_accepted;       /*  ELP Accepted                */
        u32 elp_rejected;       /*  ELP rejected                */
        u32 elp_dropped;        /*  ELP dropped                 */
+
+       u32 bbcr_lr_count;      /*!< BBCR Link Resets           */
+       u32 frame_lost_intrs;   /*!< BBCR Frame loss intrs      */
+       u32 rrdy_lost_intrs;    /*!< BBCR Rrdy loss intrs       */
+
+       u32 rsvd;
 };
 
 /*
@@ -489,7 +493,7 @@ struct bfa_fw_stats_s {
        struct bfa_fw_fcxchg_stats_s    fcxchg_stats;
        struct bfa_fw_lps_stats_s       lps_stats;
        struct bfa_fw_trunk_stats_s     trunk_stats;
-       struct bfa_fw_advsm_stats_s     advsm_stats;
+       struct bfa_fw_aport_stats_s     aport_stats;
        struct bfa_fw_mac_mod_stats_s   macmod_stats;
        struct bfa_fw_ct_mod_stats_s    ctmod_stats;
        struct bfa_fw_eth_sndrcv_stats_s        ethsndrcv_stats;
@@ -545,6 +549,27 @@ struct bfa_qos_attr_s {
        struct bfa_qos_bw_s qos_bw_op;  /* QOS bw operational */
 };
 
+enum bfa_bbcr_state {
+       BFA_BBCR_DISABLED,      /*!< BBCR is disable */
+       BFA_BBCR_ONLINE,        /*!< BBCR is online  */
+       BFA_BBCR_OFFLINE,       /*!< BBCR is offline */
+};
+
+enum bfa_bbcr_err_reason {
+       BFA_BBCR_ERR_REASON_NONE, /*!< Unknown */
+       BFA_BBCR_ERR_REASON_SPEED_UNSUP, /*!< Port speed < max sup_speed */
+       BFA_BBCR_ERR_REASON_PEER_UNSUP, /*!< BBCR is disable on peer port */
+       BFA_BBCR_ERR_REASON_NON_BRCD_SW, /*!< Connected to non BRCD switch */
+       BFA_BBCR_ERR_REASON_FLOGI_RJT, /*!< Login rejected by the switch */
+};
+
+struct bfa_bbcr_attr_s {
+       u8      state;
+       u8      peer_bb_scn;
+       u8      reason;
+       u8      rsvd;
+};
+
 /*
  * These fields should be displayed only from the CLI.
  * There will be a separate BFAL API (get_qos_vc_attr ?)
@@ -892,6 +917,9 @@ struct bfa_defs_fcpim_throttle_s {
        u16     rsvd;
 };
 
+#define BFA_BB_SCN_DEF 3
+#define BFA_BB_SCN_MAX 0x0F
+
 /*
  *      Physical port configuration
  */
@@ -907,8 +935,8 @@ struct bfa_port_cfg_s {
        u8       tx_bbcredit;   /*  transmit buffer credits     */
        u8       ratelimit;     /*  ratelimit enabled or not    */
        u8       trl_def_speed; /*  ratelimit default speed     */
-       u8       bb_scn;        /*  BB_SCN value from FLOGI Exchg */
-       u8       bb_scn_state;  /*  Config state of BB_SCN */
+       u8       bb_cr_enabled; /*!< Config state of BB_SCN     */
+       u8       bb_scn;        /*!< BB_SCN value for FLOGI Exchg */
        u8       faa_state;     /*  FAA enabled/disabled        */
        u8       rsvd1;
        u16      path_tov;      /*  device path timeout */
@@ -1052,6 +1080,7 @@ struct bfa_port_link_s {
        struct bfa_qos_attr_s  qos_attr;   /* QoS Attributes */
        union {
                struct bfa_fcport_loop_info_s loop_info;
+               struct bfa_bbcr_attr_s bbcr_attr;
                union {
                        struct bfa_qos_vc_attr_s qos_vc_attr;
                                        /*  VC info from ELP */
@@ -1215,9 +1244,11 @@ struct bfa_port_fc_stats_s {
        u64     bad_os_count;   /*  Invalid ordered sets        */
        u64     err_enc_out;    /*  Encoding err nonframe_8b10b */
        u64     err_enc;        /*  Encoding err frame_8b10b    */
-       u64     bbsc_frames_lost; /* Credit Recovery-Frames Lost  */
-       u64     bbsc_credits_lost; /* Credit Recovery-Credits Lost */
-       u64     bbsc_link_resets; /* Credit Recovery-Link Resets   */
+       u64     bbcr_frames_lost; /*!< BBCR Frames Lost */
+       u64     bbcr_rrdys_lost; /*!< BBCR RRDYs Lost */
+       u64     bbcr_link_resets; /*!< BBCR Link Resets */
+       u64     bbcr_frame_lost_intrs; /*!< BBCR Frame loss intrs */
+       u64     bbcr_rrdy_lost_intrs; /*!< BBCR Rrdy loss intrs */
        u64     loop_timeouts;  /*  Loop timeouts               */
 };