diff options
author | scottl <scottl@FreeBSD.org> | 2003-06-26 00:03:59 +0000 |
---|---|---|
committer | scottl <scottl@FreeBSD.org> | 2003-06-26 00:03:59 +0000 |
commit | 2c94c4118c28e42becd45242eccfb3dbc15e199c (patch) | |
tree | a44cbcf05050fb0e7ea38906671beb724d169bf6 /sys/dev/ips/ips_commands.c | |
parent | 3a0952afbd82dda0c03d4f658194fd1503720a44 (diff) | |
download | FreeBSD-src-2c94c4118c28e42becd45242eccfb3dbc15e199c.zip FreeBSD-src-2c94c4118c28e42becd45242eccfb3dbc15e199c.tar.gz |
- Zero the buffers used to hold configuration data from the card. Not doing
so can leave stale data in the buffer and confuse the driver.
- enable the ability to set the 'disable' hint for the driver to keep it
from attaching. i.e. 'hw.ips.0.disable=1' will prevent the driver from
attaching.
- Only detach if attach suceeded.
Submitted by: mjacob
Diffstat (limited to 'sys/dev/ips/ips_commands.c')
-rw-r--r-- | sys/dev/ips/ips_commands.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/sys/dev/ips/ips_commands.c b/sys/dev/ips/ips_commands.c index 6b47af5..7efb56c 100644 --- a/sys/dev/ips/ips_commands.c +++ b/sys/dev/ips/ips_commands.c @@ -266,7 +266,7 @@ int ips_get_adapter_info(ips_softc_t *sc) { int error = 0; ips_cmd_status_t *status; - status = malloc(sizeof(ips_cmd_status_t), M_DEVBUF, M_NOWAIT); + status = malloc(sizeof(ips_cmd_status_t), M_DEVBUF, M_NOWAIT|M_ZERO); if(!status) return ENOMEM; if(ips_get_free_cmd(sc, ips_send_adapter_info_cmd, status, @@ -275,7 +275,7 @@ int ips_get_adapter_info(ips_softc_t *sc) free(status, M_DEVBUF); return ENXIO; } - if(COMMAND_ERROR(status)){ + if (COMMAND_ERROR(status)){ error = ENXIO; } free(status, M_DEVBUF); @@ -372,7 +372,7 @@ int ips_get_drive_info(ips_softc_t *sc) { int error = 0; ips_cmd_status_t *status; - status = malloc(sizeof(ips_cmd_status_t), M_DEVBUF, M_NOWAIT); + status = malloc(sizeof(ips_cmd_status_t), M_DEVBUF, M_NOWAIT|M_ZERO); if(!status) return ENOMEM; if(ips_get_free_cmd(sc, ips_send_drive_info_cmd, status, @@ -415,7 +415,7 @@ static int ips_send_flush_cache_cmd(ips_command_t *command) int ips_flush_cache(ips_softc_t *sc) { ips_cmd_status_t *status; - status = malloc(sizeof(ips_cmd_status_t), M_DEVBUF, M_NOWAIT); + status = malloc(sizeof(ips_cmd_status_t), M_DEVBUF, M_NOWAIT|M_ZERO); if(!status) return ENOMEM; device_printf(sc->dev, "flushing cache\n"); @@ -534,7 +534,7 @@ exit: int ips_update_nvram(ips_softc_t *sc) { ips_cmd_status_t *status; - status = malloc(sizeof(ips_cmd_status_t), M_DEVBUF, M_NOWAIT); + status = malloc(sizeof(ips_cmd_status_t), M_DEVBUF, M_NOWAIT|M_ZERO); if(!status) return ENOMEM; if(ips_get_free_cmd(sc, ips_read_nvram, status, IPS_NOWAIT_FLAG)){ @@ -602,7 +602,7 @@ static int ips_send_error_table_cmd(ips_command_t *command) int ips_clear_adapter(ips_softc_t *sc) { ips_cmd_status_t *status; - status = malloc(sizeof(ips_cmd_status_t), M_DEVBUF, M_NOWAIT); + status = malloc(sizeof(ips_cmd_status_t), M_DEVBUF, M_NOWAIT|M_ZERO); if(!status) return ENOMEM; device_printf(sc->dev, "syncing config\n"); |