Commit f926a05f authored by Krishna Gudipati's avatar Krishna Gudipati Committed by James Bottomley

[SCSI] bfa: FCS authentication related changes.

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: default avatarKrishna Gudipati <kgudipat@brocade.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent 7af074dc
...@@ -931,6 +931,8 @@ bfa_fcs_port_get_attr(struct bfa_fcs_port_s *port, ...@@ -931,6 +931,8 @@ bfa_fcs_port_get_attr(struct bfa_fcs_port_s *port,
if (port->fabric) { if (port->fabric) {
port_attr->port_type = bfa_fcs_fabric_port_type(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->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); port_attr->fabric_name = bfa_fcs_port_get_fabric_name(port);
memcpy(port_attr->fabric_ip_addr, memcpy(port_attr->fabric_ip_addr,
bfa_fcs_port_get_fabric_ipaddr(port), bfa_fcs_port_get_fabric_ipaddr(port),
......
...@@ -895,6 +895,12 @@ bfa_fcs_fabric_is_loopback(struct bfa_fcs_fabric_s *fabric) ...@@ -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); 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 enum bfa_pport_type
bfa_fcs_fabric_port_type(struct bfa_fcs_fabric_s *fabric) bfa_fcs_fabric_port_type(struct bfa_fcs_fabric_s *fabric)
{ {
......
...@@ -47,6 +47,7 @@ void bfa_fcs_fabric_uf_recv(struct bfa_fcs_fabric_s *fabric, ...@@ -47,6 +47,7 @@ void bfa_fcs_fabric_uf_recv(struct bfa_fcs_fabric_s *fabric,
struct fchs_s *fchs, u16 len); struct fchs_s *fchs, u16 len);
u16 bfa_fcs_fabric_vport_count(struct bfa_fcs_fabric_s *fabric); 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_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); 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_psymb_init(struct bfa_fcs_fabric_s *fabric);
void bfa_fcs_fabric_port_delete_comp(struct bfa_fcs_fabric_s *fabric); void bfa_fcs_fabric_port_delete_comp(struct bfa_fcs_fabric_s *fabric);
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#define PRIVATE_KEY 19009 #define PRIVATE_KEY 19009
#define KEY_LEN 32399 #define KEY_LEN 32399
#define BFA_AUTH_SECRET_STRING_LEN 256 #define BFA_AUTH_SECRET_STRING_LEN 256
#define BFA_AUTH_FAIL_NO_PASSWORD 0xFE
#define BFA_AUTH_FAIL_TIMEOUT 0xFF #define BFA_AUTH_FAIL_TIMEOUT 0xFF
/** /**
...@@ -41,6 +42,27 @@ enum bfa_auth_status { ...@@ -41,6 +42,27 @@ enum bfa_auth_status {
BFA_AUTH_STATUS_UNKNOWN = 9, /* authentication status unknown */ 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 { struct auth_proto_stats_s {
u32 auth_rjts; u32 auth_rjts;
u32 auth_negs; u32 auth_negs;
......
...@@ -232,7 +232,7 @@ struct bfa_pport_attr_s { ...@@ -232,7 +232,7 @@ struct bfa_pport_attr_s {
u32 pid; /* port ID */ u32 pid; /* port ID */
enum bfa_pport_type port_type; /* current topology */ enum bfa_pport_type port_type; /* current topology */
u32 loopback; /* external loopback */ u32 loopback; /* external loopback */
u32 rsvd1; u32 authfail; /* auth fail state */
u32 rsvd2; /* padding for 64 bit */ u32 rsvd2; /* padding for 64 bit */
}; };
...@@ -247,7 +247,7 @@ struct bfa_pport_fc_stats_s { ...@@ -247,7 +247,7 @@ struct bfa_pport_fc_stats_s {
u64 rx_words; /* received words */ u64 rx_words; /* received words */
u64 lip_count; /* LIPs seen */ u64 lip_count; /* LIPs seen */
u64 nos_count; /* NOS count */ u64 nos_count; /* NOS count */
u64 error_frames; /* errored frames (sent?) */ u64 error_frames; /* errored frames */
u64 dropped_frames; /* dropped frames */ u64 dropped_frames; /* dropped frames */
u64 link_failures; /* link failure count */ u64 link_failures; /* link failure count */
u64 loss_of_syncs; /* loss of sync count */ u64 loss_of_syncs; /* loss of sync count */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment