Lines Matching refs:params
73 static rndis_resp_t *rndis_add_response(struct rndis_params *params,
173 static int gen_ndis_query_resp(struct rndis_params *params, u32 OID, u8 *buf, in gen_ndis_query_resp() argument
205 net = params->dev; in gen_ndis_query_resp()
238 *outbuf = cpu_to_le32(params->medium); in gen_ndis_query_resp()
246 *outbuf = cpu_to_le32(params->medium); in gen_ndis_query_resp()
253 if (params->dev) { in gen_ndis_query_resp()
254 *outbuf = cpu_to_le32(params->dev->mtu); in gen_ndis_query_resp()
263 if (params->media_state == RNDIS_MEDIA_STATE_DISCONNECTED) in gen_ndis_query_resp()
266 *outbuf = cpu_to_le32(params->speed); in gen_ndis_query_resp()
273 if (params->dev) { in gen_ndis_query_resp()
274 *outbuf = cpu_to_le32(params->dev->mtu); in gen_ndis_query_resp()
282 if (params->dev) { in gen_ndis_query_resp()
283 *outbuf = cpu_to_le32(params->dev->mtu); in gen_ndis_query_resp()
291 *outbuf = cpu_to_le32(params->vendorID); in gen_ndis_query_resp()
298 if (params->vendorDescr) { in gen_ndis_query_resp()
299 length = strlen(params->vendorDescr); in gen_ndis_query_resp()
300 memcpy(outbuf, params->vendorDescr, length); in gen_ndis_query_resp()
317 *outbuf = cpu_to_le32(*params->filter); in gen_ndis_query_resp()
332 *outbuf = cpu_to_le32(params->media_state); in gen_ndis_query_resp()
412 if (params->dev) { in gen_ndis_query_resp()
414 memcpy(outbuf, params->host_mac, length); in gen_ndis_query_resp()
422 if (params->dev) { in gen_ndis_query_resp()
424 memcpy(outbuf, params->host_mac, length); in gen_ndis_query_resp()
489 static int gen_ndis_set_resp(struct rndis_params *params, u32 OID, in gen_ndis_set_resp() argument
521 *params->filter = (u16)get_unaligned_le32(buf); in gen_ndis_set_resp()
523 __func__, *params->filter); in gen_ndis_set_resp()
530 if (*params->filter) { in gen_ndis_set_resp()
531 params->state = RNDIS_DATA_INITIALIZED; in gen_ndis_set_resp()
532 netif_carrier_on(params->dev); in gen_ndis_set_resp()
533 if (netif_running(params->dev)) in gen_ndis_set_resp()
534 netif_wake_queue(params->dev); in gen_ndis_set_resp()
536 params->state = RNDIS_INITIALIZED; in gen_ndis_set_resp()
537 netif_carrier_off(params->dev); in gen_ndis_set_resp()
538 netif_stop_queue(params->dev); in gen_ndis_set_resp()
560 static int rndis_init_response(struct rndis_params *params, in rndis_init_response() argument
566 if (!params->dev) in rndis_init_response()
569 r = rndis_add_response(params, sizeof(rndis_init_cmplt_type)); in rndis_init_response()
584 params->dev->mtu in rndis_init_response()
592 params->resp_avail(params->v); in rndis_init_response()
596 static int rndis_query_response(struct rndis_params *params, in rndis_query_response() argument
603 if (!params->dev) in rndis_query_response()
612 r = rndis_add_response(params, in rndis_query_response()
621 if (gen_ndis_query_resp(params, le32_to_cpu(buf->OID), in rndis_query_response()
634 params->resp_avail(params->v); in rndis_query_response()
638 static int rndis_set_response(struct rndis_params *params, in rndis_set_response() argument
645 r = rndis_add_response(params, sizeof(rndis_set_cmplt_type)); in rndis_set_response()
668 if (gen_ndis_set_resp(params, le32_to_cpu(buf->OID), in rndis_set_response()
674 params->resp_avail(params->v); in rndis_set_response()
678 static int rndis_reset_response(struct rndis_params *params, in rndis_reset_response() argument
684 r = rndis_add_response(params, sizeof(rndis_reset_cmplt_type)); in rndis_reset_response()
695 params->resp_avail(params->v); in rndis_reset_response()
699 static int rndis_keepalive_response(struct rndis_params *params, in rndis_keepalive_response() argument
707 r = rndis_add_response(params, sizeof(rndis_keepalive_cmplt_type)); in rndis_keepalive_response()
717 params->resp_avail(params->v); in rndis_keepalive_response()
725 static int rndis_indicate_status_msg(struct rndis_params *params, u32 status) in rndis_indicate_status_msg() argument
730 if (params->state == RNDIS_UNINITIALIZED) in rndis_indicate_status_msg()
733 r = rndis_add_response(params, sizeof(rndis_indicate_status_msg_type)); in rndis_indicate_status_msg()
744 params->resp_avail(params->v); in rndis_indicate_status_msg()
748 int rndis_signal_connect(struct rndis_params *params) in rndis_signal_connect() argument
750 params->media_state = RNDIS_MEDIA_STATE_CONNECTED; in rndis_signal_connect()
751 return rndis_indicate_status_msg(params, RNDIS_STATUS_MEDIA_CONNECT); in rndis_signal_connect()
755 int rndis_signal_disconnect(struct rndis_params *params) in rndis_signal_disconnect() argument
757 params->media_state = RNDIS_MEDIA_STATE_DISCONNECTED; in rndis_signal_disconnect()
758 return rndis_indicate_status_msg(params, RNDIS_STATUS_MEDIA_DISCONNECT); in rndis_signal_disconnect()
762 void rndis_uninit(struct rndis_params *params) in rndis_uninit() argument
767 if (!params) in rndis_uninit()
769 params->state = RNDIS_UNINITIALIZED; in rndis_uninit()
772 while ((buf = rndis_get_next_response(params, &length))) in rndis_uninit()
773 rndis_free_response(params, buf); in rndis_uninit()
777 void rndis_set_host_mac(struct rndis_params *params, const u8 *addr) in rndis_set_host_mac() argument
779 params->host_mac = addr; in rndis_set_host_mac()
786 int rndis_msg_parser(struct rndis_params *params, u8 *buf) in rndis_msg_parser() argument
798 if (!params) in rndis_msg_parser()
811 params->state = RNDIS_INITIALIZED; in rndis_msg_parser()
812 return rndis_init_response(params, (rndis_init_msg_type *)buf); in rndis_msg_parser()
817 params->state = RNDIS_UNINITIALIZED; in rndis_msg_parser()
818 if (params->dev) { in rndis_msg_parser()
819 netif_carrier_off(params->dev); in rndis_msg_parser()
820 netif_stop_queue(params->dev); in rndis_msg_parser()
825 return rndis_query_response(params, in rndis_msg_parser()
829 return rndis_set_response(params, (rndis_set_msg_type *)buf); in rndis_msg_parser()
834 return rndis_reset_response(params, in rndis_msg_parser()
842 return rndis_keepalive_response(params, in rndis_msg_parser()
874 struct rndis_params *params; in rndis_register() local
887 params = kzalloc(sizeof(*params), GFP_KERNEL); in rndis_register()
888 if (!params) { in rndis_register()
901 &rndis_proc_fops, params); in rndis_register()
903 kfree(params); in rndis_register()
911 params->confignr = i; in rndis_register()
912 params->used = 1; in rndis_register()
913 params->state = RNDIS_UNINITIALIZED; in rndis_register()
914 params->media_state = RNDIS_MEDIA_STATE_DISCONNECTED; in rndis_register()
915 params->resp_avail = resp_avail; in rndis_register()
916 params->v = v; in rndis_register()
917 INIT_LIST_HEAD(&(params->resp_queue)); in rndis_register()
920 return params; in rndis_register()
924 void rndis_deregister(struct rndis_params *params) in rndis_deregister() argument
930 if (!params) in rndis_deregister()
933 i = params->confignr; in rndis_deregister()
944 kfree(params); in rndis_deregister()
948 int rndis_set_param_dev(struct rndis_params *params, struct net_device *dev, in rndis_set_param_dev() argument
954 if (!params) in rndis_set_param_dev()
957 params->dev = dev; in rndis_set_param_dev()
958 params->filter = cdc_filter; in rndis_set_param_dev()
964 int rndis_set_param_vendor(struct rndis_params *params, u32 vendorID, in rndis_set_param_vendor() argument
969 if (!params) in rndis_set_param_vendor()
972 params->vendorID = vendorID; in rndis_set_param_vendor()
973 params->vendorDescr = vendorDescr; in rndis_set_param_vendor()
979 int rndis_set_param_medium(struct rndis_params *params, u32 medium, u32 speed) in rndis_set_param_medium() argument
982 if (!params) in rndis_set_param_medium()
985 params->medium = medium; in rndis_set_param_medium()
986 params->speed = speed; in rndis_set_param_medium()
1007 void rndis_free_response(struct rndis_params *params, u8 *buf) in rndis_free_response() argument
1012 list_for_each_safe(act, tmp, &(params->resp_queue)) in rndis_free_response()
1023 u8 *rndis_get_next_response(struct rndis_params *params, u32 *length) in rndis_get_next_response() argument
1030 list_for_each_safe(act, tmp, &(params->resp_queue)) in rndis_get_next_response()
1044 static rndis_resp_t *rndis_add_response(struct rndis_params *params, u32 length) in rndis_add_response() argument
1056 list_add_tail(&r->list, &(params->resp_queue)); in rndis_add_response()