[SCSI] bfa: FCS authentication related changes.
authorKrishna Gudipati <kgudipat@brocade.com>
Sat, 6 Mar 2010 03:36:00 +0000 (19:36 -0800)
committerJames Bottomley <James.Bottomley@suse.de>
Sun, 7 Mar 2010 07:28:41 +0000 (12:58 +0530)
Made FCS authentication related changes to state machines and header
files.

Made changes in FCS state machines to handle the case when secret
string is NULL.

Signed-off-by: Krishna Gudipati <kgudipat@brocade.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/bfa/bfa_fcs_lport.c
drivers/scsi/bfa/fabric.c
drivers/scsi/bfa/fcs_fabric.h
drivers/scsi/bfa/include/defs/bfa_defs_auth.h
drivers/scsi/bfa/include/defs/bfa_defs_pport.h

index 7bb182dcbd7d434925abf748f0dff052a9580993..4a51aac7ab04f21f71ccfae7a6bbf3f351af1042 100644 (file)
@@ -931,6 +931,8 @@ bfa_fcs_port_get_attr(struct bfa_fcs_port_s *port,
        if (port->fabric) {
                port_attr->port_type = bfa_fcs_fabric_port_type(port->fabric);
                port_attr->loopback = bfa_fcs_fabric_is_loopback(port->fabric);
+               port_attr->authfail =
+                               bfa_fcs_fabric_is_auth_failed(port->fabric);
                port_attr->fabric_name = bfa_fcs_port_get_fabric_name(port);
                memcpy(port_attr->fabric_ip_addr,
                       bfa_fcs_port_get_fabric_ipaddr(port),
index 20a686a420a2485018525ff3e144b763e43a5311..b02ed7653eb60dbecc382ed2bd43e05f03c5d05e 100644 (file)
@@ -895,6 +895,12 @@ bfa_fcs_fabric_is_loopback(struct bfa_fcs_fabric_s *fabric)
        return bfa_sm_cmp_state(fabric, bfa_fcs_fabric_sm_loopback);
 }
 
+bfa_boolean_t
+bfa_fcs_fabric_is_auth_failed(struct bfa_fcs_fabric_s *fabric)
+{
+       return bfa_sm_cmp_state(fabric, bfa_fcs_fabric_sm_auth_failed);
+}
+
 enum bfa_pport_type
 bfa_fcs_fabric_port_type(struct bfa_fcs_fabric_s *fabric)
 {
index 8237bd5e72178b4772d863212d407678cb696481..244c3f00c50c8b65c0ffc51c1af69beba73bdd7c 100644 (file)
@@ -47,6 +47,7 @@ void            bfa_fcs_fabric_uf_recv(struct bfa_fcs_fabric_s *fabric,
                        struct fchs_s *fchs, u16 len);
 u16        bfa_fcs_fabric_vport_count(struct bfa_fcs_fabric_s *fabric);
 bfa_boolean_t   bfa_fcs_fabric_is_loopback(struct bfa_fcs_fabric_s *fabric);
+bfa_boolean_t  bfa_fcs_fabric_is_auth_failed(struct bfa_fcs_fabric_s *fabric);
 enum bfa_pport_type bfa_fcs_fabric_port_type(struct bfa_fcs_fabric_s *fabric);
 void           bfa_fcs_fabric_psymb_init(struct bfa_fcs_fabric_s *fabric);
 void bfa_fcs_fabric_port_delete_comp(struct bfa_fcs_fabric_s *fabric);
index dd19c83aba5831c9b612d33fef4d6456f65df5e2..45df3282091130752abcd265f82c2801f95d0a59 100644 (file)
@@ -23,6 +23,7 @@
 #define PRIVATE_KEY                    19009
 #define KEY_LEN                                32399
 #define BFA_AUTH_SECRET_STRING_LEN     256
+#define BFA_AUTH_FAIL_NO_PASSWORD      0xFE
 #define BFA_AUTH_FAIL_TIMEOUT          0xFF
 
 /**
@@ -41,6 +42,27 @@ enum bfa_auth_status {
        BFA_AUTH_STATUS_UNKNOWN = 9,    /*  authentication status unknown */
 };
 
+enum bfa_auth_rej_code {
+       BFA_AUTH_RJT_CODE_AUTH_FAILURE   = 1, /* auth failure */
+       BFA_AUTH_RJT_CODE_LOGICAL_ERR    = 2, /* logical error */
+};
+
+/**
+ * Authentication reject codes
+ */
+enum bfa_auth_rej_code_exp {
+       BFA_AUTH_MECH_NOT_USABLE        = 1, /* auth. mechanism not usable */
+       BFA_AUTH_DH_GROUP_NOT_USABLE    = 2, /* DH Group not usable */
+       BFA_AUTH_HASH_FUNC_NOT_USABLE   = 3, /* hash Function not usable */
+       BFA_AUTH_AUTH_XACT_STARTED      = 4, /* auth xact started */
+       BFA_AUTH_AUTH_FAILED            = 5, /* auth failed */
+       BFA_AUTH_INCORRECT_PLD          = 6, /* incorrect payload */
+       BFA_AUTH_INCORRECT_PROTO_MSG    = 7, /* incorrect proto msg */
+       BFA_AUTH_RESTART_AUTH_PROTO     = 8, /* restart auth protocol */
+       BFA_AUTH_AUTH_CONCAT_NOT_SUPP   = 9, /* auth concat not supported */
+       BFA_AUTH_PROTO_VER_NOT_SUPP     = 10,/* proto version not supported */
+};
+
 struct auth_proto_stats_s {
        u32        auth_rjts;
        u32        auth_negs;
index bf320412ee24bd859cd3f8eaf07260d158c6fe9a..88662a15a21bc805f3aef9c3766504ce961f60b3 100644 (file)
@@ -232,7 +232,7 @@ struct bfa_pport_attr_s {
        u32             pid;            /*  port ID */
        enum bfa_pport_type     port_type;      /*  current topology */
        u32             loopback;       /*  external loopback */
-       u32             rsvd1;
+       u32             authfail;       /* auth fail state */
        u32             rsvd2;          /*  padding for 64 bit */
 };
 
@@ -247,7 +247,7 @@ struct bfa_pport_fc_stats_s {
        u64        rx_words;    /*  received words */
        u64        lip_count;   /*  LIPs seen */
        u64        nos_count;   /*  NOS count */
-       u64        error_frames;        /*  errored frames (sent?) */
+       u64        error_frames;        /*  errored frames */
        u64        dropped_frames;      /*  dropped frames */
        u64        link_failures;       /*  link failure count */
        u64        loss_of_syncs;       /*  loss of sync count */