u8                              ethaddr[ETH_ALEN];
        u32                             vendorID;
        const char                      *manufacturer;
-       int                             config;
+       struct rndis_params             *params;
 
        struct usb_ep                   *notify;
        struct usb_request              *notify_req;
 
        /* received RNDIS command from USB_CDC_SEND_ENCAPSULATED_COMMAND */
 //     spin_lock(&dev->lock);
-       status = rndis_msg_parser(rndis->config, (u8 *) req->buf);
+       status = rndis_msg_parser(rndis->params, (u8 *) req->buf);
        if (status < 0)
                pr_err("RNDIS command error %d, %d/%d\n",
                        status, req->actual, req->length);
                        u32 n;
 
                        /* return the result */
-                       buf = rndis_get_next_response(rndis->config, &n);
+                       buf = rndis_get_next_response(rndis->params, &n);
                        if (buf) {
                                memcpy(req->buf, buf, n);
                                req->complete = rndis_response_complete;
                                req->context = rndis;
-                               rndis_free_response(rndis->config, buf);
+                               rndis_free_response(rndis->params, buf);
                                value = n;
                        }
                        /* else stalls ... spec says to avoid that */
                if (IS_ERR(net))
                        return PTR_ERR(net);
 
-               rndis_set_param_dev(rndis->config, net,
+               rndis_set_param_dev(rndis->params, net,
                                &rndis->port.cdc_filter);
        } else
                goto fail;
 
        DBG(cdev, "rndis deactivated\n");
 
-       rndis_uninit(rndis->config);
+       rndis_uninit(rndis->params);
        gether_disconnect(&rndis->port);
 
        usb_ep_disable(rndis->notify);
 
        DBG(cdev, "%s\n", __func__);
 
-       rndis_set_param_medium(rndis->config, RNDIS_MEDIUM_802_3,
+       rndis_set_param_medium(rndis->params, RNDIS_MEDIUM_802_3,
                                bitrate(cdev->gadget) / 100);
-       rndis_signal_connect(rndis->config);
+       rndis_signal_connect(rndis->params);
 }
 
 static void rndis_close(struct gether *geth)
 
        DBG(geth->func.config->cdev, "%s\n", __func__);
 
-       rndis_set_param_medium(rndis->config, RNDIS_MEDIUM_802_3, 0);
-       rndis_signal_disconnect(rndis->config);
+       rndis_set_param_medium(rndis->params, RNDIS_MEDIUM_802_3, 0);
+       rndis_signal_disconnect(rndis->params);
 }
 
 /*-------------------------------------------------------------------------*/
        rndis->port.open = rndis_open;
        rndis->port.close = rndis_close;
 
-       rndis_set_param_medium(rndis->config, RNDIS_MEDIUM_802_3, 0);
-       rndis_set_host_mac(rndis->config, rndis->ethaddr);
+       rndis_set_param_medium(rndis->params, RNDIS_MEDIUM_802_3, 0);
+       rndis_set_host_mac(rndis->params, rndis->ethaddr);
 
        if (rndis->manufacturer && rndis->vendorID &&
-                       rndis_set_param_vendor(rndis->config, rndis->vendorID,
+                       rndis_set_param_vendor(rndis->params, rndis->vendorID,
                                               rndis->manufacturer)) {
                status = -EINVAL;
                goto fail_free_descs;
        struct f_rndis_opts *opts;
 
        rndis = func_to_rndis(f);
-       rndis_deregister(rndis->config);
+       rndis_deregister(rndis->params);
        opts = container_of(f->fi, struct f_rndis_opts, func_inst);
        kfree(rndis);
        mutex_lock(&opts->lock);
 {
        struct f_rndis  *rndis;
        struct f_rndis_opts *opts;
-       int status;
+       struct rndis_params *params;
 
        /* allocate and initialize one new instance */
        rndis = kzalloc(sizeof(*rndis), GFP_KERNEL);
        rndis->port.func.disable = rndis_disable;
        rndis->port.func.free_func = rndis_free;
 
-       status = rndis_register(rndis_response_available, rndis);
-       if (status < 0) {
+       params = rndis_register(rndis_response_available, rndis);
+       if (IS_ERR(params)) {
                kfree(rndis);
-               return ERR_PTR(status);
+               return ERR_CAST(params);
        }
-       rndis->config = status;
+       rndis->params = params;
 
        return &rndis->port.func;
 }
 
 static const __le32 rndis_driver_version = cpu_to_le32(1);
 
 /* Function Prototypes */
-static rndis_resp_t *rndis_add_response(int configNr, u32 length);
+static rndis_resp_t *rndis_add_response(struct rndis_params *params,
+                                       u32 length);
 
 
 /* supported OIDs */
 
 
 /* NDIS Functions */
-static int gen_ndis_query_resp(int configNr, u32 OID, u8 *buf,
+static int gen_ndis_query_resp(struct rndis_params *params, u32 OID, u8 *buf,
                               unsigned buf_len, rndis_resp_t *r)
 {
        int retval = -ENOTSUPP;
        outbuf = (__le32 *)&resp[1];
        resp->InformationBufferOffset = cpu_to_le32(16);
 
-       net = rndis_per_dev_params[configNr].dev;
+       net = params->dev;
        stats = dev_get_stats(net, &temp);
 
        switch (OID) {
        /* mandatory */
        case RNDIS_OID_GEN_MEDIA_SUPPORTED:
                pr_debug("%s: RNDIS_OID_GEN_MEDIA_SUPPORTED\n", __func__);
-               *outbuf = cpu_to_le32(rndis_per_dev_params[configNr].medium);
+               *outbuf = cpu_to_le32(params->medium);
                retval = 0;
                break;
 
        case RNDIS_OID_GEN_MEDIA_IN_USE:
                pr_debug("%s: RNDIS_OID_GEN_MEDIA_IN_USE\n", __func__);
                /* one medium, one transport... (maybe you do it better) */
-               *outbuf = cpu_to_le32(rndis_per_dev_params[configNr].medium);
+               *outbuf = cpu_to_le32(params->medium);
                retval = 0;
                break;
 
        /* mandatory */
        case RNDIS_OID_GEN_MAXIMUM_FRAME_SIZE:
                pr_debug("%s: RNDIS_OID_GEN_MAXIMUM_FRAME_SIZE\n", __func__);
-               if (rndis_per_dev_params[configNr].dev) {
-                       *outbuf = cpu_to_le32(
-                               rndis_per_dev_params[configNr].dev->mtu);
+               if (params->dev) {
+                       *outbuf = cpu_to_le32(params->dev->mtu);
                        retval = 0;
                }
                break;
        case RNDIS_OID_GEN_LINK_SPEED:
                if (rndis_debug > 1)
                        pr_debug("%s: RNDIS_OID_GEN_LINK_SPEED\n", __func__);
-               if (rndis_per_dev_params[configNr].media_state
-                               == RNDIS_MEDIA_STATE_DISCONNECTED)
+               if (params->media_state == RNDIS_MEDIA_STATE_DISCONNECTED)
                        *outbuf = cpu_to_le32(0);
                else
-                       *outbuf = cpu_to_le32(
-                               rndis_per_dev_params[configNr].speed);
+                       *outbuf = cpu_to_le32(params->speed);
                retval = 0;
                break;
 
        /* mandatory */
        case RNDIS_OID_GEN_TRANSMIT_BLOCK_SIZE:
                pr_debug("%s: RNDIS_OID_GEN_TRANSMIT_BLOCK_SIZE\n", __func__);
-               if (rndis_per_dev_params[configNr].dev) {
-                       *outbuf = cpu_to_le32(
-                               rndis_per_dev_params[configNr].dev->mtu);
+               if (params->dev) {
+                       *outbuf = cpu_to_le32(params->dev->mtu);
                        retval = 0;
                }
                break;
        /* mandatory */
        case RNDIS_OID_GEN_RECEIVE_BLOCK_SIZE:
                pr_debug("%s: RNDIS_OID_GEN_RECEIVE_BLOCK_SIZE\n", __func__);
-               if (rndis_per_dev_params[configNr].dev) {
-                       *outbuf = cpu_to_le32(
-                               rndis_per_dev_params[configNr].dev->mtu);
+               if (params->dev) {
+                       *outbuf = cpu_to_le32(params->dev->mtu);
                        retval = 0;
                }
                break;
        /* mandatory */
        case RNDIS_OID_GEN_VENDOR_ID:
                pr_debug("%s: RNDIS_OID_GEN_VENDOR_ID\n", __func__);
-               *outbuf = cpu_to_le32(
-                       rndis_per_dev_params[configNr].vendorID);
+               *outbuf = cpu_to_le32(params->vendorID);
                retval = 0;
                break;
 
        /* mandatory */
        case RNDIS_OID_GEN_VENDOR_DESCRIPTION:
                pr_debug("%s: RNDIS_OID_GEN_VENDOR_DESCRIPTION\n", __func__);
-               if (rndis_per_dev_params[configNr].vendorDescr) {
-                       length = strlen(rndis_per_dev_params[configNr].
-                                       vendorDescr);
-                       memcpy(outbuf,
-                               rndis_per_dev_params[configNr].vendorDescr,
-                               length);
+               if (params->vendorDescr) {
+                       length = strlen(params->vendorDescr);
+                       memcpy(outbuf, params->vendorDescr, length);
                } else {
                        outbuf[0] = 0;
                }
        /* mandatory */
        case RNDIS_OID_GEN_CURRENT_PACKET_FILTER:
                pr_debug("%s: RNDIS_OID_GEN_CURRENT_PACKET_FILTER\n", __func__);
-               *outbuf = cpu_to_le32(*rndis_per_dev_params[configNr].filter);
+               *outbuf = cpu_to_le32(*params->filter);
                retval = 0;
                break;
 
        case RNDIS_OID_GEN_MEDIA_CONNECT_STATUS:
                if (rndis_debug > 1)
                        pr_debug("%s: RNDIS_OID_GEN_MEDIA_CONNECT_STATUS\n", __func__);
-               *outbuf = cpu_to_le32(rndis_per_dev_params[configNr]
-                                               .media_state);
+               *outbuf = cpu_to_le32(params->media_state);
                retval = 0;
                break;
 
        /* mandatory */
        case RNDIS_OID_802_3_PERMANENT_ADDRESS:
                pr_debug("%s: RNDIS_OID_802_3_PERMANENT_ADDRESS\n", __func__);
-               if (rndis_per_dev_params[configNr].dev) {
+               if (params->dev) {
                        length = ETH_ALEN;
-                       memcpy(outbuf,
-                               rndis_per_dev_params[configNr].host_mac,
-                               length);
+                       memcpy(outbuf, params->host_mac, length);
                        retval = 0;
                }
                break;
        /* mandatory */
        case RNDIS_OID_802_3_CURRENT_ADDRESS:
                pr_debug("%s: RNDIS_OID_802_3_CURRENT_ADDRESS\n", __func__);
-               if (rndis_per_dev_params[configNr].dev) {
+               if (params->dev) {
                        length = ETH_ALEN;
-                       memcpy(outbuf,
-                               rndis_per_dev_params [configNr].host_mac,
-                               length);
+                       memcpy(outbuf, params->host_mac, length);
                        retval = 0;
                }
                break;
        return retval;
 }
 
-static int gen_ndis_set_resp(u8 configNr, u32 OID, u8 *buf, u32 buf_len,
-                            rndis_resp_t *r)
+static int gen_ndis_set_resp(struct rndis_params *params, u32 OID,
+                            u8 *buf, u32 buf_len, rndis_resp_t *r)
 {
        rndis_set_cmplt_type *resp;
        int i, retval = -ENOTSUPP;
-       struct rndis_params *params;
 
        if (!r)
                return -ENOMEM;
                }
        }
 
-       params = &rndis_per_dev_params[configNr];
        switch (OID) {
        case RNDIS_OID_GEN_CURRENT_PACKET_FILTER:
 
  * Response Functions
  */
 
-static int rndis_init_response(int configNr, rndis_init_msg_type *buf)
+static int rndis_init_response(struct rndis_params *params,
+                              rndis_init_msg_type *buf)
 {
        rndis_init_cmplt_type *resp;
        rndis_resp_t *r;
-       struct rndis_params *params = rndis_per_dev_params + configNr;
 
        if (!params->dev)
                return -ENOTSUPP;
 
-       r = rndis_add_response(configNr, sizeof(rndis_init_cmplt_type));
+       r = rndis_add_response(params, sizeof(rndis_init_cmplt_type));
        if (!r)
                return -ENOMEM;
        resp = (rndis_init_cmplt_type *)r->buf;
        return 0;
 }
 
-static int rndis_query_response(int configNr, rndis_query_msg_type *buf)
+static int rndis_query_response(struct rndis_params *params,
+                               rndis_query_msg_type *buf)
 {
        rndis_query_cmplt_type *resp;
        rndis_resp_t *r;
-       struct rndis_params *params = rndis_per_dev_params + configNr;
 
        /* pr_debug("%s: OID = %08X\n", __func__, cpu_to_le32(buf->OID)); */
        if (!params->dev)
         * rndis_query_cmplt_type followed by data.
         * oid_supported_list is the largest data reply
         */
-       r = rndis_add_response(configNr,
+       r = rndis_add_response(params,
                sizeof(oid_supported_list) + sizeof(rndis_query_cmplt_type));
        if (!r)
                return -ENOMEM;
        resp->MessageType = cpu_to_le32(RNDIS_MSG_QUERY_C);
        resp->RequestID = buf->RequestID; /* Still LE in msg buffer */
 
-       if (gen_ndis_query_resp(configNr, le32_to_cpu(buf->OID),
+       if (gen_ndis_query_resp(params, le32_to_cpu(buf->OID),
                        le32_to_cpu(buf->InformationBufferOffset)
                                        + 8 + (u8 *)buf,
                        le32_to_cpu(buf->InformationBufferLength),
        return 0;
 }
 
-static int rndis_set_response(int configNr, rndis_set_msg_type *buf)
+static int rndis_set_response(struct rndis_params *params,
+                             rndis_set_msg_type *buf)
 {
        u32 BufLength, BufOffset;
        rndis_set_cmplt_type *resp;
        rndis_resp_t *r;
-       struct rndis_params *params = rndis_per_dev_params + configNr;
 
-       r = rndis_add_response(configNr, sizeof(rndis_set_cmplt_type));
+       r = rndis_add_response(params, sizeof(rndis_set_cmplt_type));
        if (!r)
                return -ENOMEM;
        resp = (rndis_set_cmplt_type *)r->buf;
        resp->MessageType = cpu_to_le32(RNDIS_MSG_SET_C);
        resp->MessageLength = cpu_to_le32(16);
        resp->RequestID = buf->RequestID; /* Still LE in msg buffer */
-       if (gen_ndis_set_resp(configNr, le32_to_cpu(buf->OID),
+       if (gen_ndis_set_resp(params, le32_to_cpu(buf->OID),
                        ((u8 *)buf) + 8 + BufOffset, BufLength, r))
                resp->Status = cpu_to_le32(RNDIS_STATUS_NOT_SUPPORTED);
        else
        return 0;
 }
 
-static int rndis_reset_response(int configNr, rndis_reset_msg_type *buf)
+static int rndis_reset_response(struct rndis_params *params,
+                               rndis_reset_msg_type *buf)
 {
        rndis_reset_cmplt_type *resp;
        rndis_resp_t *r;
-       struct rndis_params *params = rndis_per_dev_params + configNr;
 
-       r = rndis_add_response(configNr, sizeof(rndis_reset_cmplt_type));
+       r = rndis_add_response(params, sizeof(rndis_reset_cmplt_type));
        if (!r)
                return -ENOMEM;
        resp = (rndis_reset_cmplt_type *)r->buf;
        return 0;
 }
 
-static int rndis_keepalive_response(int configNr,
+static int rndis_keepalive_response(struct rndis_params *params,
                                    rndis_keepalive_msg_type *buf)
 {
        rndis_keepalive_cmplt_type *resp;
        rndis_resp_t *r;
-       struct rndis_params *params = rndis_per_dev_params + configNr;
 
        /* host "should" check only in RNDIS_DATA_INITIALIZED state */
 
-       r = rndis_add_response(configNr, sizeof(rndis_keepalive_cmplt_type));
+       r = rndis_add_response(params, sizeof(rndis_keepalive_cmplt_type));
        if (!r)
                return -ENOMEM;
        resp = (rndis_keepalive_cmplt_type *)r->buf;
 /*
  * Device to Host Comunication
  */
-static int rndis_indicate_status_msg(int configNr, u32 status)
+static int rndis_indicate_status_msg(struct rndis_params *params, u32 status)
 {
        rndis_indicate_status_msg_type *resp;
        rndis_resp_t *r;
-       struct rndis_params *params = rndis_per_dev_params + configNr;
 
        if (params->state == RNDIS_UNINITIALIZED)
                return -ENOTSUPP;
 
-       r = rndis_add_response(configNr,
-                               sizeof(rndis_indicate_status_msg_type));
+       r = rndis_add_response(params, sizeof(rndis_indicate_status_msg_type));
        if (!r)
                return -ENOMEM;
        resp = (rndis_indicate_status_msg_type *)r->buf;
        return 0;
 }
 
-int rndis_signal_connect(int configNr)
+int rndis_signal_connect(struct rndis_params *params)
 {
-       rndis_per_dev_params[configNr].media_state
-                       = RNDIS_MEDIA_STATE_CONNECTED;
-       return rndis_indicate_status_msg(configNr,
-                                         RNDIS_STATUS_MEDIA_CONNECT);
+       params->media_state = RNDIS_MEDIA_STATE_CONNECTED;
+       return rndis_indicate_status_msg(params, RNDIS_STATUS_MEDIA_CONNECT);
 }
 EXPORT_SYMBOL_GPL(rndis_signal_connect);
 
-int rndis_signal_disconnect(int configNr)
+int rndis_signal_disconnect(struct rndis_params *params)
 {
-       rndis_per_dev_params[configNr].media_state
-                       = RNDIS_MEDIA_STATE_DISCONNECTED;
-       return rndis_indicate_status_msg(configNr,
-                                         RNDIS_STATUS_MEDIA_DISCONNECT);
+       params->media_state = RNDIS_MEDIA_STATE_DISCONNECTED;
+       return rndis_indicate_status_msg(params, RNDIS_STATUS_MEDIA_DISCONNECT);
 }
 EXPORT_SYMBOL_GPL(rndis_signal_disconnect);
 
-void rndis_uninit(int configNr)
+void rndis_uninit(struct rndis_params *params)
 {
        u8 *buf;
        u32 length;
 
-       if (configNr >= RNDIS_MAX_CONFIGS)
+       if (!params)
                return;
-       rndis_per_dev_params[configNr].state = RNDIS_UNINITIALIZED;
+       params->state = RNDIS_UNINITIALIZED;
 
        /* drain the response queue */
-       while ((buf = rndis_get_next_response(configNr, &length)))
-               rndis_free_response(configNr, buf);
+       while ((buf = rndis_get_next_response(params, &length)))
+               rndis_free_response(params, buf);
 }
 EXPORT_SYMBOL_GPL(rndis_uninit);
 
-void rndis_set_host_mac(int configNr, const u8 *addr)
+void rndis_set_host_mac(struct rndis_params *params, const u8 *addr)
 {
-       rndis_per_dev_params[configNr].host_mac = addr;
+       params->host_mac = addr;
 }
 EXPORT_SYMBOL_GPL(rndis_set_host_mac);
 
 /*
  * Message Parser
  */
-int rndis_msg_parser(u8 configNr, u8 *buf)
+int rndis_msg_parser(struct rndis_params *params, u8 *buf)
 {
        u32 MsgType, MsgLength;
        __le32 *tmp;
-       struct rndis_params *params;
 
        if (!buf)
                return -ENOMEM;
        MsgType   = get_unaligned_le32(tmp++);
        MsgLength = get_unaligned_le32(tmp++);
 
-       if (configNr >= RNDIS_MAX_CONFIGS)
+       if (!params)
                return -ENOTSUPP;
-       params = &rndis_per_dev_params[configNr];
 
        /* NOTE: RNDIS is *EXTREMELY* chatty ... Windows constantly polls for
         * rx/tx statistics and link status, in addition to KEEPALIVE traffic
                pr_debug("%s: RNDIS_MSG_INIT\n",
                        __func__);
                params->state = RNDIS_INITIALIZED;
-               return rndis_init_response(configNr,
-                                       (rndis_init_msg_type *)buf);
+               return rndis_init_response(params, (rndis_init_msg_type *)buf);
 
        case RNDIS_MSG_HALT:
                pr_debug("%s: RNDIS_MSG_HALT\n",
                return 0;
 
        case RNDIS_MSG_QUERY:
-               return rndis_query_response(configNr,
+               return rndis_query_response(params,
                                        (rndis_query_msg_type *)buf);
 
        case RNDIS_MSG_SET:
-               return rndis_set_response(configNr,
-                                       (rndis_set_msg_type *)buf);
+               return rndis_set_response(params, (rndis_set_msg_type *)buf);
 
        case RNDIS_MSG_RESET:
                pr_debug("%s: RNDIS_MSG_RESET\n",
                        __func__);
-               return rndis_reset_response(configNr,
+               return rndis_reset_response(params,
                                        (rndis_reset_msg_type *)buf);
 
        case RNDIS_MSG_KEEPALIVE:
                if (rndis_debug > 1)
                        pr_debug("%s: RNDIS_MSG_KEEPALIVE\n",
                                __func__);
-               return rndis_keepalive_response(configNr,
+               return rndis_keepalive_response(params,
                                                 (rndis_keepalive_msg_type *)
                                                 buf);
 
 }
 EXPORT_SYMBOL_GPL(rndis_msg_parser);
 
-int rndis_register(void (*resp_avail)(void *v), void *v)
+struct rndis_params *rndis_register(void (*resp_avail)(void *v), void *v)
 {
        u8 i;
 
        if (!resp_avail)
-               return -EINVAL;
+               return ERR_PTR(-EINVAL);
 
        for (i = 0; i < RNDIS_MAX_CONFIGS; i++) {
                if (!rndis_per_dev_params[i].used) {
                        rndis_per_dev_params[i].resp_avail = resp_avail;
                        rndis_per_dev_params[i].v = v;
                        pr_debug("%s: configNr = %d\n", __func__, i);
-                       return i;
+                       return &rndis_per_dev_params[i];
                }
        }
        pr_debug("failed\n");
 
-       return -ENODEV;
+       return ERR_PTR(-ENODEV);
 }
 EXPORT_SYMBOL_GPL(rndis_register);
 
-void rndis_deregister(int configNr)
+void rndis_deregister(struct rndis_params *params)
 {
        pr_debug("%s:\n", __func__);
 
-       if (configNr >= RNDIS_MAX_CONFIGS) return;
-       rndis_per_dev_params[configNr].used = 0;
+       if (!params)
+               return;
+       params->used = 0;
 }
 EXPORT_SYMBOL_GPL(rndis_deregister);
 
-int rndis_set_param_dev(u8 configNr, struct net_device *dev, u16 *cdc_filter)
+int rndis_set_param_dev(struct rndis_params *params, struct net_device *dev,
+                       u16 *cdc_filter)
 {
        pr_debug("%s:\n", __func__);
        if (!dev)
                return -EINVAL;
-       if (configNr >= RNDIS_MAX_CONFIGS) return -1;
+       if (!params)
+               return -1;
 
-       rndis_per_dev_params[configNr].dev = dev;
-       rndis_per_dev_params[configNr].filter = cdc_filter;
+       params->dev = dev;
+       params->filter = cdc_filter;
 
        return 0;
 }
 EXPORT_SYMBOL_GPL(rndis_set_param_dev);
 
-int rndis_set_param_vendor(u8 configNr, u32 vendorID, const char *vendorDescr)
+int rndis_set_param_vendor(struct rndis_params *params, u32 vendorID,
+                          const char *vendorDescr)
 {
        pr_debug("%s:\n", __func__);
        if (!vendorDescr) return -1;
-       if (configNr >= RNDIS_MAX_CONFIGS) return -1;
+       if (!params)
+               return -1;
 
-       rndis_per_dev_params[configNr].vendorID = vendorID;
-       rndis_per_dev_params[configNr].vendorDescr = vendorDescr;
+       params->vendorID = vendorID;
+       params->vendorDescr = vendorDescr;
 
        return 0;
 }
 EXPORT_SYMBOL_GPL(rndis_set_param_vendor);
 
-int rndis_set_param_medium(u8 configNr, u32 medium, u32 speed)
+int rndis_set_param_medium(struct rndis_params *params, u32 medium, u32 speed)
 {
        pr_debug("%s: %u %u\n", __func__, medium, speed);
-       if (configNr >= RNDIS_MAX_CONFIGS) return -1;
+       if (!params)
+               return -1;
 
-       rndis_per_dev_params[configNr].medium = medium;
-       rndis_per_dev_params[configNr].speed = speed;
+       params->medium = medium;
+       params->speed = speed;
 
        return 0;
 }
 }
 EXPORT_SYMBOL_GPL(rndis_add_hdr);
 
-void rndis_free_response(int configNr, u8 *buf)
+void rndis_free_response(struct rndis_params *params, u8 *buf)
 {
        rndis_resp_t *r;
        struct list_head *act, *tmp;
 
-       list_for_each_safe(act, tmp,
-                       &(rndis_per_dev_params[configNr].resp_queue))
+       list_for_each_safe(act, tmp, &(params->resp_queue))
        {
                r = list_entry(act, rndis_resp_t, list);
                if (r && r->buf == buf) {
 }
 EXPORT_SYMBOL_GPL(rndis_free_response);
 
-u8 *rndis_get_next_response(int configNr, u32 *length)
+u8 *rndis_get_next_response(struct rndis_params *params, u32 *length)
 {
        rndis_resp_t *r;
        struct list_head *act, *tmp;
 
        if (!length) return NULL;
 
-       list_for_each_safe(act, tmp,
-                       &(rndis_per_dev_params[configNr].resp_queue))
+       list_for_each_safe(act, tmp, &(params->resp_queue))
        {
                r = list_entry(act, rndis_resp_t, list);
                if (!r->send) {
 }
 EXPORT_SYMBOL_GPL(rndis_get_next_response);
 
-static rndis_resp_t *rndis_add_response(int configNr, u32 length)
+static rndis_resp_t *rndis_add_response(struct rndis_params *params, u32 length)
 {
        rndis_resp_t *r;
 
        r->length = length;
        r->send = 0;
 
-       list_add_tail(&r->list,
-               &(rndis_per_dev_params[configNr].resp_queue));
+       list_add_tail(&r->list, &(params->resp_queue));
        return r;
 }