Lines Matching refs:params
70 static rndis_resp_t *rndis_add_response(struct rndis_params *params,
169 static int gen_ndis_query_resp(struct rndis_params *params, u32 OID, u8 *buf,
201 net = params->dev;
234 *outbuf = cpu_to_le32(params->medium);
242 *outbuf = cpu_to_le32(params->medium);
249 if (params->dev) {
250 *outbuf = cpu_to_le32(params->dev->mtu);
259 if (params->media_state == RNDIS_MEDIA_STATE_DISCONNECTED)
262 *outbuf = cpu_to_le32(params->speed);
269 if (params->dev) {
270 *outbuf = cpu_to_le32(params->dev->mtu);
278 if (params->dev) {
279 *outbuf = cpu_to_le32(params->dev->mtu);
287 *outbuf = cpu_to_le32(params->vendorID);
294 if (params->vendorDescr) {
295 length = strlen(params->vendorDescr);
296 memcpy(outbuf, params->vendorDescr, length);
313 *outbuf = cpu_to_le32(*params->filter);
328 *outbuf = cpu_to_le32(params->media_state);
408 if (params->dev) {
410 memcpy(outbuf, params->host_mac, length);
418 if (params->dev) {
420 memcpy(outbuf, params->host_mac, length);
484 static int gen_ndis_set_resp(struct rndis_params *params, u32 OID,
520 *params->filter = (u16)get_unaligned_le32(buf);
522 __func__, *params->filter);
529 if (*params->filter) {
530 params->state = RNDIS_DATA_INITIALIZED;
531 netif_carrier_on(params->dev);
532 if (netif_running(params->dev))
533 netif_wake_queue(params->dev);
535 params->state = RNDIS_INITIALIZED;
536 netif_carrier_off(params->dev);
537 netif_stop_queue(params->dev);
559 static int rndis_init_response(struct rndis_params *params,
565 if (!params->dev)
568 r = rndis_add_response(params, sizeof(rndis_init_cmplt_type));
583 params->dev->mtu
591 params->resp_avail(params->v);
595 static int rndis_query_response(struct rndis_params *params,
603 if (!params->dev)
612 r = rndis_add_response(params,
632 params->resp_avail(params->v);
636 if (gen_ndis_query_resp(params, le32_to_cpu(buf->OID),
647 params->resp_avail(params->v);
651 static int rndis_set_response(struct rndis_params *params,
665 r = rndis_add_response(params, sizeof(rndis_set_cmplt_type));
692 params->resp_avail(params->v);
696 if (gen_ndis_set_resp(params, le32_to_cpu(buf->OID),
702 params->resp_avail(params->v);
706 static int rndis_reset_response(struct rndis_params *params,
715 while ((xbuf = rndis_get_next_response(params, &length)))
716 rndis_free_response(params, xbuf);
718 r = rndis_add_response(params, sizeof(rndis_reset_cmplt_type));
729 params->resp_avail(params->v);
733 static int rndis_keepalive_response(struct rndis_params *params,
741 r = rndis_add_response(params, sizeof(rndis_keepalive_cmplt_type));
751 params->resp_avail(params->v);
759 static int rndis_indicate_status_msg(struct rndis_params *params, u32 status)
764 if (params->state == RNDIS_UNINITIALIZED)
767 r = rndis_add_response(params, sizeof(rndis_indicate_status_msg_type));
778 params->resp_avail(params->v);
782 int rndis_signal_connect(struct rndis_params *params)
784 params->media_state = RNDIS_MEDIA_STATE_CONNECTED;
785 return rndis_indicate_status_msg(params, RNDIS_STATUS_MEDIA_CONNECT);
789 int rndis_signal_disconnect(struct rndis_params *params)
791 params->media_state = RNDIS_MEDIA_STATE_DISCONNECTED;
792 return rndis_indicate_status_msg(params, RNDIS_STATUS_MEDIA_DISCONNECT);
796 void rndis_uninit(struct rndis_params *params)
801 if (!params)
803 params->state = RNDIS_UNINITIALIZED;
806 while ((buf = rndis_get_next_response(params, &length)))
807 rndis_free_response(params, buf);
811 void rndis_set_host_mac(struct rndis_params *params, const u8 *addr)
813 params->host_mac = addr;
820 int rndis_msg_parser(struct rndis_params *params, u8 *buf)
832 if (!params)
845 params->state = RNDIS_INITIALIZED;
846 return rndis_init_response(params, (rndis_init_msg_type *)buf);
851 params->state = RNDIS_UNINITIALIZED;
852 if (params->dev) {
853 netif_carrier_off(params->dev);
854 netif_stop_queue(params->dev);
859 return rndis_query_response(params,
863 return rndis_set_response(params, (rndis_set_msg_type *)buf);
868 return rndis_reset_response(params,
876 return rndis_keepalive_response(params,
911 struct rndis_params *params;
924 params = kzalloc(sizeof(*params), GFP_KERNEL);
925 if (!params) {
938 &rndis_proc_ops, params);
940 kfree(params);
948 params->confignr = i;
949 params->used = 1;
950 params->state = RNDIS_UNINITIALIZED;
951 params->media_state = RNDIS_MEDIA_STATE_DISCONNECTED;
952 params->resp_avail = resp_avail;
953 params->v = v;
954 INIT_LIST_HEAD(¶ms->resp_queue);
955 spin_lock_init(¶ms->resp_lock);
958 return params;
962 void rndis_deregister(struct rndis_params *params)
968 if (!params)
971 i = params->confignr;
982 kfree(params);
986 int rndis_set_param_dev(struct rndis_params *params, struct net_device *dev,
992 if (!params)
995 params->dev = dev;
996 params->filter = cdc_filter;
1002 int rndis_set_param_vendor(struct rndis_params *params, u32 vendorID,
1007 if (!params)
1010 params->vendorID = vendorID;
1011 params->vendorDescr = vendorDescr;
1017 int rndis_set_param_medium(struct rndis_params *params, u32 medium, u32 speed)
1020 if (!params)
1023 params->medium = medium;
1024 params->speed = speed;
1045 void rndis_free_response(struct rndis_params *params, u8 *buf)
1049 spin_lock(¶ms->resp_lock);
1050 list_for_each_entry_safe(r, n, ¶ms->resp_queue, list) {
1056 spin_unlock(¶ms->resp_lock);
1060 u8 *rndis_get_next_response(struct rndis_params *params, u32 *length)
1066 spin_lock(¶ms->resp_lock);
1067 list_for_each_entry_safe(r, n, ¶ms->resp_queue, list) {
1071 spin_unlock(¶ms->resp_lock);
1076 spin_unlock(¶ms->resp_lock);
1081 static rndis_resp_t *rndis_add_response(struct rndis_params *params, u32 length)
1093 spin_lock(¶ms->resp_lock);
1094 list_add_tail(&r->list, ¶ms->resp_queue);
1095 spin_unlock(¶ms->resp_lock);