Module Name:    src
Committed By:   pgoyette
Date:           Sun Feb 14 23:07:59 UTC 2010

Modified Files:
        src/sys/arch/x86/x86: ipmi.c

Log Message:
Adapt to changes in sysmon's limit structure.


To generate a diff of this commit:
cvs rdiff -u -r1.42 -r1.43 src/sys/arch/x86/x86/ipmi.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/x86/x86/ipmi.c
diff -u src/sys/arch/x86/x86/ipmi.c:1.42 src/sys/arch/x86/x86/ipmi.c:1.43
--- src/sys/arch/x86/x86/ipmi.c:1.42	Sun Jan 31 11:39:55 2010
+++ src/sys/arch/x86/x86/ipmi.c	Sun Feb 14 23:07:59 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: ipmi.c,v 1.42 2010/01/31 11:39:55 mlelstv Exp $ */
+/*	$NetBSD: ipmi.c,v 1.43 2010/02/14 23:07:59 pgoyette Exp $ */
 
 /*
  * Copyright (c) 2006 Manuel Bouyer.
@@ -52,7 +52,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ipmi.c,v 1.42 2010/01/31 11:39:55 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ipmi.c,v 1.43 2010/02/14 23:07:59 pgoyette Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -85,6 +85,7 @@
 	int 		i_envtype; /* envsys compatible type */
 	int		i_envnum; /* envsys index */
 	sysmon_envsys_lim_t i_limits;
+	uint32_t	i_props;
 	SLIST_ENTRY(ipmi_sensor) i_list;
 };
 
@@ -213,11 +214,11 @@
 
 int32_t	ipmi_convert_sensor(uint8_t *, struct ipmi_sensor *);
 void	ipmi_set_limits(struct sysmon_envsys *, envsys_data_t *,
-			sysmon_envsys_lim_t *);
+			sysmon_envsys_lim_t *, uint32_t *);
 void	ipmi_get_limits(struct sysmon_envsys *, envsys_data_t *,
-			sysmon_envsys_lim_t *);
+			sysmon_envsys_lim_t *, uint32_t *);
 void	ipmi_get_sensor_limits(struct ipmi_softc *, struct ipmi_sensor *,
-			       sysmon_envsys_lim_t *);
+			       sysmon_envsys_lim_t *, uint32_t *);
 int	ipmi_sensor_status(struct ipmi_softc *, struct ipmi_sensor *,
 			   envsys_data_t *, uint8_t *);
 
@@ -1351,15 +1352,16 @@
 
 void
 ipmi_set_limits(struct sysmon_envsys *sme, envsys_data_t *edata,
-		sysmon_envsys_lim_t *limits)
+		sysmon_envsys_lim_t *limits, uint32_t *props)
 {
 	struct ipmi_sensor *ipmi_s;
 
 	/* Find the ipmi_sensor corresponding to this edata */
 	SLIST_FOREACH(ipmi_s, &ipmi_sensor_list, i_list) {
 		if (ipmi_s->i_envnum == edata->sensor) {
-			limits->sel_flags |= PROP_DRIVER_LIMITS;
+			*props |= PROP_DRIVER_LIMITS;
 			ipmi_s->i_limits = *limits;
+			ipmi_s->i_props  = *props;
 			return;
 		}
 	}
@@ -1368,7 +1370,7 @@
 
 void
 ipmi_get_limits(struct sysmon_envsys *sme, envsys_data_t *edata,
-		sysmon_envsys_lim_t *limits)
+		sysmon_envsys_lim_t *limits, uint32_t *props)
 {
 	struct ipmi_sensor *ipmi_s;
 	struct ipmi_softc *sc = sme->sme_cookie;
@@ -1376,8 +1378,9 @@
 	/* Find the ipmi_sensor corresponding to this edata */
 	SLIST_FOREACH(ipmi_s, &ipmi_sensor_list, i_list) {
 		if (ipmi_s->i_envnum == edata->sensor) {
-			ipmi_get_sensor_limits(sc, ipmi_s, limits);
+			ipmi_get_sensor_limits(sc, ipmi_s, limits, props);
 			ipmi_s->i_limits = *limits;
+			ipmi_s->i_props  = *props;
 			return;
 		}
 	}
@@ -1386,14 +1389,14 @@
 
 void
 ipmi_get_sensor_limits(struct ipmi_softc *sc, struct ipmi_sensor *psensor,
-		       sysmon_envsys_lim_t *limits)
+		       sysmon_envsys_lim_t *limits, uint32_t *props)
 {
 	struct sdrtype1	*s1 = (struct sdrtype1 *)psensor->i_sdr;
 	bool failure;
 	int	rxlen;
 	uint8_t	data[32];
 
-	limits->sel_flags = 0;
+	*props = 0;
 	data[0] = psensor->i_num;
 	mutex_enter(&sc->sc_cmd_mtx);
 	failure =
@@ -1409,27 +1412,27 @@
 
 	if (data[0] & 0x20 && data[6] != 0xff) {
 		limits->sel_critmax = ipmi_convert_sensor(&data[6], psensor);
-		limits->sel_flags |= PROP_CRITMAX;
+		*props |= PROP_CRITMAX;
 	}
 	if (data[0] & 0x10 && data[5] != 0xff) {
 		limits->sel_critmax = ipmi_convert_sensor(&data[5], psensor);
-		limits->sel_flags |= PROP_CRITMAX;
+		*props |= PROP_CRITMAX;
 	}
 	if (data[0] & 0x08 && data[4] != 0xff) {
 		limits->sel_warnmax = ipmi_convert_sensor(&data[4], psensor);
-		limits->sel_flags |= PROP_WARNMAX;
+		*props |= PROP_WARNMAX;
 	}
 	if (data[0] & 0x04 && data[3] != 0x00) {
 		limits->sel_critmin = ipmi_convert_sensor(&data[3], psensor);
-		limits->sel_flags |= PROP_CRITMIN;
+		*props |= PROP_CRITMIN;
 	}
 	if (data[0] & 0x02 && data[2] != 0x00) {
 		limits->sel_critmin = ipmi_convert_sensor(&data[2], psensor);
-		limits->sel_flags |= PROP_CRITMIN;
+		*props |= PROP_CRITMIN;
 	}
 	if (data[0] & 0x01 && data[1] != 0x00) {
 		limits->sel_warnmin = ipmi_convert_sensor(&data[1], psensor);
-		limits->sel_flags |= PROP_WARNMIN;
+		*props |= PROP_WARNMIN;
 	}
 	return;
 }
@@ -1449,19 +1452,19 @@
 	case IPMI_SENSOR_TYPE_TEMP:
 	case IPMI_SENSOR_TYPE_VOLT:
 	case IPMI_SENSOR_TYPE_FAN:
-		if (psensor->i_limits.sel_flags & PROP_CRITMAX &&
+		if (psensor->i_props & PROP_CRITMAX &&
 		    edata->value_cur > psensor->i_limits.sel_critmax)
 			return ENVSYS_SCRITOVER;
 
-		if (psensor->i_limits.sel_flags & PROP_WARNMAX &&
+		if (psensor->i_props & PROP_WARNMAX &&
 		    edata->value_cur > psensor->i_limits.sel_warnmax)
 			return ENVSYS_SWARNOVER;
 
-		if (psensor->i_limits.sel_flags & PROP_WARNMIN &&
+		if (psensor->i_props & PROP_WARNMIN &&
 		    edata->value_cur < psensor->i_limits.sel_warnmin)
 			return ENVSYS_SWARNUNDER;
 
-		if (psensor->i_limits.sel_flags & PROP_CRITMIN &&
+		if (psensor->i_props & PROP_CRITMIN &&
 		    edata->value_cur < psensor->i_limits.sel_critmin)
 			return ENVSYS_SCRITUNDER;
 
@@ -1871,7 +1874,7 @@
 		i = current_index_typ[ipmi_s->i_envtype];
 		current_index_typ[ipmi_s->i_envtype]++;
 		ipmi_s->i_envnum = i;
-		ipmi_s->i_limits.sel_flags = 0;
+		ipmi_s->i_props = 0;
 		sc->sc_sensor[i].units = ipmi_s->i_envtype;
 		sc->sc_sensor[i].state = ENVSYS_SINVALID;
 		sc->sc_sensor[i].monitor = true;

Reply via email to