diff -r a1a6d7719f97 -r 7d9fb723fc4b master/slave_config.c --- a/master/slave_config.c Tue Jul 13 13:52:59 2010 +0200 +++ b/master/slave_config.c Tue Jul 20 10:52:31 2010 +0200 @@ -938,16 +938,22 @@ /*****************************************************************************/ -int ecrt_slave_config_idn(ec_slave_config_t *sc, uint16_t idn, - ec_al_state_t state, const uint8_t *data, size_t size) +int ecrt_slave_config_idn(ec_slave_config_t *sc, uint8_t drive_no, + uint16_t idn, ec_al_state_t state, const uint8_t *data, + size_t size) { ec_slave_t *slave = sc->slave; ec_soe_request_t *req; int ret; - EC_CONFIG_DBG(sc, 1, "%s(sc = 0x%p, idn = 0x%04X, state = %u, " - "data = 0x%p, size = %zu)\n", - __func__, sc, idn, state, data, size); + EC_CONFIG_DBG(sc, 1, "%s(sc = 0x%p, drive_no = %u, idn = 0x%04X, " + "state = %u, data = 0x%p, size = %zu)\n", + __func__, sc, drive_no, idn, state, data, size); + + if (drive_no > 7) { + EC_CONFIG_ERR(sc, "Invalid drive number!\n"); + return -EINVAL; + } if (state != EC_AL_STATE_PREOP && state != EC_AL_STATE_SAFEOP) { EC_CONFIG_ERR(sc, "AL state for IDN config" @@ -967,6 +973,7 @@ } ec_soe_request_init(req); + ec_soe_request_set_drive_no(req, drive_no); ec_soe_request_set_idn(req, idn); req->al_state = state;