diff options
Diffstat (limited to 'drivers/infiniband/core/sysfs.c')
| -rw-r--r-- | drivers/infiniband/core/sysfs.c | 30 | 
1 files changed, 20 insertions, 10 deletions
diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c index b477295a96c2..7a50cedcef1f 100644 --- a/drivers/infiniband/core/sysfs.c +++ b/drivers/infiniband/core/sysfs.c @@ -289,6 +289,24 @@ static ssize_t rate_show(struct ib_port *p, struct port_attribute *unused,  		       ib_width_enum_to_int(attr.active_width), speed);  } +static const char *phys_state_to_str(enum ib_port_phys_state phys_state) +{ +	static const char * phys_state_str[] = { +		"<unknown>", +		"Sleep", +		"Polling", +		"Disabled", +		"PortConfigurationTraining", +		"LinkUp", +		"LinkErrorRecovery", +		"Phy Test", +	}; + +	if (phys_state < ARRAY_SIZE(phys_state_str)) +		return phys_state_str[phys_state]; +	return "<unknown>"; +} +  static ssize_t phys_state_show(struct ib_port *p, struct port_attribute *unused,  			       char *buf)  { @@ -300,16 +318,8 @@ static ssize_t phys_state_show(struct ib_port *p, struct port_attribute *unused,  	if (ret)  		return ret; -	switch (attr.phys_state) { -	case 1:  return sprintf(buf, "1: Sleep\n"); -	case 2:  return sprintf(buf, "2: Polling\n"); -	case 3:  return sprintf(buf, "3: Disabled\n"); -	case 4:  return sprintf(buf, "4: PortConfigurationTraining\n"); -	case 5:  return sprintf(buf, "5: LinkUp\n"); -	case 6:  return sprintf(buf, "6: LinkErrorRecovery\n"); -	case 7:  return sprintf(buf, "7: Phy Test\n"); -	default: return sprintf(buf, "%d: <unknown>\n", attr.phys_state); -	} +	return sprintf(buf, "%d: %s\n", attr.phys_state, +		       phys_state_to_str(attr.phys_state));  }  static ssize_t link_layer_show(struct ib_port *p, struct port_attribute *unused,  |