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,
516 *params->filter = (u16)get_unaligned_le32(buf);
518 __func__, *params->filter);
525 if (*params->filter) {
526 params->state = RNDIS_DATA_INITIALIZED;
527 netif_carrier_on(params->dev);
528 if (netif_running(params->dev))
529 netif_wake_queue(params->dev);
531 params->state = RNDIS_INITIALIZED;
532 netif_carrier_off(params->dev);
533 netif_stop_queue(params->dev);
555 static int rndis_init_response(struct rndis_params *params,
561 if (!params->dev)
564 r = rndis_add_response(params, sizeof(rndis_init_cmplt_type));
579 params->dev->mtu
587 params->resp_avail(params->v);
591 static int rndis_query_response(struct rndis_params *params,
598 if (!params->dev)
607 r = rndis_add_response(params,
616 if (gen_ndis_query_resp(params, le32_to_cpu(buf->OID),
629 params->resp_avail(params->v);
633 static int rndis_set_response(struct rndis_params *params,
647 r = rndis_add_response(params, sizeof(rndis_set_cmplt_type));
667 if (gen_ndis_set_resp(params, le32_to_cpu(buf->OID),
673 params->resp_avail(params->v);
677 static int rndis_reset_response(struct rndis_params *params,
686 while ((xbuf = rndis_get_next_response(params, &length)))
687 rndis_free_response(params, xbuf);
689 r = rndis_add_response(params, sizeof(rndis_reset_cmplt_type));
700 params->resp_avail(params->v);
704 static int rndis_keepalive_response(struct rndis_params *params,
712 r = rndis_add_response(params, sizeof(rndis_keepalive_cmplt_type));
722 params->resp_avail(params->v);
730 static int rndis_indicate_status_msg(struct rndis_params *params, u32 status)
735 if (params->state == RNDIS_UNINITIALIZED)
738 r = rndis_add_response(params, sizeof(rndis_indicate_status_msg_type));
749 params->resp_avail(params->v);
753 int rndis_signal_connect(struct rndis_params *params)
755 params->media_state = RNDIS_MEDIA_STATE_CONNECTED;
756 return rndis_indicate_status_msg(params, RNDIS_STATUS_MEDIA_CONNECT);
760 int rndis_signal_disconnect(struct rndis_params *params)
762 params->media_state = RNDIS_MEDIA_STATE_DISCONNECTED;
763 return rndis_indicate_status_msg(params, RNDIS_STATUS_MEDIA_DISCONNECT);
767 void rndis_uninit(struct rndis_params *params)
772 if (!params)
774 params->state = RNDIS_UNINITIALIZED;
777 while ((buf = rndis_get_next_response(params, &length)))
778 rndis_free_response(params, buf);
782 void rndis_set_host_mac(struct rndis_params *params, const u8 *addr)
784 params->host_mac = addr;
791 int rndis_msg_parser(struct rndis_params *params, u8 *buf)
803 if (!params)
816 params->state = RNDIS_INITIALIZED;
817 return rndis_init_response(params, (rndis_init_msg_type *)buf);
822 params->state = RNDIS_UNINITIALIZED;
823 if (params->dev) {
824 netif_carrier_off(params->dev);
825 netif_stop_queue(params->dev);
830 return rndis_query_response(params,
834 return rndis_set_response(params, (rndis_set_msg_type *)buf);
839 return rndis_reset_response(params,
847 return rndis_keepalive_response(params,
882 struct rndis_params *params;
895 params = kzalloc(sizeof(*params), GFP_KERNEL);
896 if (!params) {
909 &rndis_proc_ops, params);
911 kfree(params);
919 params->confignr = i;
920 params->used = 1;
921 params->state = RNDIS_UNINITIALIZED;
922 params->media_state = RNDIS_MEDIA_STATE_DISCONNECTED;
923 params->resp_avail = resp_avail;
924 params->v = v;
925 INIT_LIST_HEAD(&params->resp_queue);
926 spin_lock_init(&params->resp_lock);
929 return params;
933 void rndis_deregister(struct rndis_params *params)
939 if (!params)
942 i = params->confignr;
953 kfree(params);
957 int rndis_set_param_dev(struct rndis_params *params, struct net_device *dev,
963 if (!params)
966 params->dev = dev;
967 params->filter = cdc_filter;
973 int rndis_set_param_vendor(struct rndis_params *params, u32 vendorID,
978 if (!params)
981 params->vendorID = vendorID;
982 params->vendorDescr = vendorDescr;
988 int rndis_set_param_medium(struct rndis_params *params, u32 medium, u32 speed)
991 if (!params)
994 params->medium = medium;
995 params->speed = speed;
1016 void rndis_free_response(struct rndis_params *params, u8 *buf)
1020 spin_lock(&params->resp_lock);
1021 list_for_each_entry_safe(r, n, &params->resp_queue, list) {
1027 spin_unlock(&params->resp_lock);
1031 u8 *rndis_get_next_response(struct rndis_params *params, u32 *length)
1037 spin_lock(&params->resp_lock);
1038 list_for_each_entry_safe(r, n, &params->resp_queue, list) {
1042 spin_unlock(&params->resp_lock);
1047 spin_unlock(&params->resp_lock);
1052 static rndis_resp_t *rndis_add_response(struct rndis_params *params, u32 length)
1064 spin_lock(&params->resp_lock);
1065 list_add_tail(&r->list, &params->resp_queue);
1066 spin_unlock(&params->resp_lock);