Lines Matching refs:params

72 static rndis_resp_t *rndis_add_response(struct rndis_params *params,
171 static int gen_ndis_query_resp(struct rndis_params *params, u32 OID, u8 *buf, in gen_ndis_query_resp() argument
203 net = params->dev; in gen_ndis_query_resp()
236 *outbuf = cpu_to_le32(params->medium); in gen_ndis_query_resp()
244 *outbuf = cpu_to_le32(params->medium); in gen_ndis_query_resp()
251 if (params->dev) { in gen_ndis_query_resp()
252 *outbuf = cpu_to_le32(params->dev->mtu); in gen_ndis_query_resp()
261 if (params->media_state == RNDIS_MEDIA_STATE_DISCONNECTED) in gen_ndis_query_resp()
264 *outbuf = cpu_to_le32(params->speed); in gen_ndis_query_resp()
271 if (params->dev) { in gen_ndis_query_resp()
272 *outbuf = cpu_to_le32(params->dev->mtu); in gen_ndis_query_resp()
280 if (params->dev) { in gen_ndis_query_resp()
281 *outbuf = cpu_to_le32(params->dev->mtu); in gen_ndis_query_resp()
289 *outbuf = cpu_to_le32(params->vendorID); in gen_ndis_query_resp()
296 if (params->vendorDescr) { in gen_ndis_query_resp()
297 length = strlen(params->vendorDescr); in gen_ndis_query_resp()
298 memcpy(outbuf, params->vendorDescr, length); in gen_ndis_query_resp()
315 *outbuf = cpu_to_le32(*params->filter); in gen_ndis_query_resp()
330 *outbuf = cpu_to_le32(params->media_state); in gen_ndis_query_resp()
410 if (params->dev) { in gen_ndis_query_resp()
412 memcpy(outbuf, params->host_mac, length); in gen_ndis_query_resp()
420 if (params->dev) { in gen_ndis_query_resp()
422 memcpy(outbuf, params->host_mac, length); in gen_ndis_query_resp()
486 static int gen_ndis_set_resp(struct rndis_params *params, u32 OID, in gen_ndis_set_resp() argument
518 *params->filter = (u16)get_unaligned_le32(buf); in gen_ndis_set_resp()
520 __func__, *params->filter); in gen_ndis_set_resp()
527 if (*params->filter) { in gen_ndis_set_resp()
528 params->state = RNDIS_DATA_INITIALIZED; in gen_ndis_set_resp()
529 netif_carrier_on(params->dev); in gen_ndis_set_resp()
530 if (netif_running(params->dev)) in gen_ndis_set_resp()
531 netif_wake_queue(params->dev); in gen_ndis_set_resp()
533 params->state = RNDIS_INITIALIZED; in gen_ndis_set_resp()
534 netif_carrier_off(params->dev); in gen_ndis_set_resp()
535 netif_stop_queue(params->dev); in gen_ndis_set_resp()
557 static int rndis_init_response(struct rndis_params *params, in rndis_init_response() argument
563 if (!params->dev) in rndis_init_response()
566 r = rndis_add_response(params, sizeof(rndis_init_cmplt_type)); in rndis_init_response()
581 params->dev->mtu in rndis_init_response()
589 params->resp_avail(params->v); in rndis_init_response()
593 static int rndis_query_response(struct rndis_params *params, in rndis_query_response() argument
600 if (!params->dev) in rndis_query_response()
609 r = rndis_add_response(params, in rndis_query_response()
618 if (gen_ndis_query_resp(params, le32_to_cpu(buf->OID), in rndis_query_response()
631 params->resp_avail(params->v); in rndis_query_response()
635 static int rndis_set_response(struct rndis_params *params, in rndis_set_response() argument
649 r = rndis_add_response(params, sizeof(rndis_set_cmplt_type)); in rndis_set_response()
669 if (gen_ndis_set_resp(params, le32_to_cpu(buf->OID), in rndis_set_response()
675 params->resp_avail(params->v); in rndis_set_response()
679 static int rndis_reset_response(struct rndis_params *params, in rndis_reset_response() argument
688 while ((xbuf = rndis_get_next_response(params, &length))) in rndis_reset_response()
689 rndis_free_response(params, xbuf); in rndis_reset_response()
691 r = rndis_add_response(params, sizeof(rndis_reset_cmplt_type)); in rndis_reset_response()
702 params->resp_avail(params->v); in rndis_reset_response()
706 static int rndis_keepalive_response(struct rndis_params *params, in rndis_keepalive_response() argument
714 r = rndis_add_response(params, sizeof(rndis_keepalive_cmplt_type)); in rndis_keepalive_response()
724 params->resp_avail(params->v); in rndis_keepalive_response()
732 static int rndis_indicate_status_msg(struct rndis_params *params, u32 status) in rndis_indicate_status_msg() argument
737 if (params->state == RNDIS_UNINITIALIZED) in rndis_indicate_status_msg()
740 r = rndis_add_response(params, sizeof(rndis_indicate_status_msg_type)); in rndis_indicate_status_msg()
751 params->resp_avail(params->v); in rndis_indicate_status_msg()
755 int rndis_signal_connect(struct rndis_params *params) in rndis_signal_connect() argument
757 params->media_state = RNDIS_MEDIA_STATE_CONNECTED; in rndis_signal_connect()
758 return rndis_indicate_status_msg(params, RNDIS_STATUS_MEDIA_CONNECT); in rndis_signal_connect()
762 int rndis_signal_disconnect(struct rndis_params *params) in rndis_signal_disconnect() argument
764 params->media_state = RNDIS_MEDIA_STATE_DISCONNECTED; in rndis_signal_disconnect()
765 return rndis_indicate_status_msg(params, RNDIS_STATUS_MEDIA_DISCONNECT); in rndis_signal_disconnect()
769 void rndis_uninit(struct rndis_params *params) in rndis_uninit() argument
774 if (!params) in rndis_uninit()
776 params->state = RNDIS_UNINITIALIZED; in rndis_uninit()
779 while ((buf = rndis_get_next_response(params, &length))) in rndis_uninit()
780 rndis_free_response(params, buf); in rndis_uninit()
784 void rndis_set_host_mac(struct rndis_params *params, const u8 *addr) in rndis_set_host_mac() argument
786 params->host_mac = addr; in rndis_set_host_mac()
793 int rndis_msg_parser(struct rndis_params *params, u8 *buf) in rndis_msg_parser() argument
805 if (!params) in rndis_msg_parser()
818 params->state = RNDIS_INITIALIZED; in rndis_msg_parser()
819 return rndis_init_response(params, (rndis_init_msg_type *)buf); in rndis_msg_parser()
824 params->state = RNDIS_UNINITIALIZED; in rndis_msg_parser()
825 if (params->dev) { in rndis_msg_parser()
826 netif_carrier_off(params->dev); in rndis_msg_parser()
827 netif_stop_queue(params->dev); in rndis_msg_parser()
832 return rndis_query_response(params, in rndis_msg_parser()
836 return rndis_set_response(params, (rndis_set_msg_type *)buf); in rndis_msg_parser()
841 return rndis_reset_response(params, in rndis_msg_parser()
849 return rndis_keepalive_response(params, in rndis_msg_parser()
884 struct rndis_params *params; in rndis_register() local
897 params = kzalloc(sizeof(*params), GFP_KERNEL); in rndis_register()
898 if (!params) { in rndis_register()
911 &rndis_proc_ops, params); in rndis_register()
913 kfree(params); in rndis_register()
921 params->confignr = i; in rndis_register()
922 params->used = 1; in rndis_register()
923 params->state = RNDIS_UNINITIALIZED; in rndis_register()
924 params->media_state = RNDIS_MEDIA_STATE_DISCONNECTED; in rndis_register()
925 params->resp_avail = resp_avail; in rndis_register()
926 params->v = v; in rndis_register()
927 INIT_LIST_HEAD(&params->resp_queue); in rndis_register()
930 return params; in rndis_register()
934 void rndis_deregister(struct rndis_params *params) in rndis_deregister() argument
940 if (!params) in rndis_deregister()
943 i = params->confignr; in rndis_deregister()
954 kfree(params); in rndis_deregister()
958 int rndis_set_param_dev(struct rndis_params *params, struct net_device *dev, in rndis_set_param_dev() argument
964 if (!params) in rndis_set_param_dev()
967 params->dev = dev; in rndis_set_param_dev()
968 params->filter = cdc_filter; in rndis_set_param_dev()
974 int rndis_set_param_vendor(struct rndis_params *params, u32 vendorID, in rndis_set_param_vendor() argument
979 if (!params) in rndis_set_param_vendor()
982 params->vendorID = vendorID; in rndis_set_param_vendor()
983 params->vendorDescr = vendorDescr; in rndis_set_param_vendor()
989 int rndis_set_param_medium(struct rndis_params *params, u32 medium, u32 speed) in rndis_set_param_medium() argument
992 if (!params) in rndis_set_param_medium()
995 params->medium = medium; in rndis_set_param_medium()
996 params->speed = speed; in rndis_set_param_medium()
1017 void rndis_free_response(struct rndis_params *params, u8 *buf) in rndis_free_response() argument
1022 list_for_each_entry_safe(r, n, &params->resp_queue, list) { in rndis_free_response()
1032 u8 *rndis_get_next_response(struct rndis_params *params, u32 *length) in rndis_get_next_response() argument
1039 list_for_each_entry_safe(r, n, &params->resp_queue, list) { in rndis_get_next_response()
1053 static rndis_resp_t *rndis_add_response(struct rndis_params *params, u32 length) in rndis_add_response() argument
1066 list_add_tail(&r->list, &params->resp_queue); in rndis_add_response()