Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 50a21845 authored by Chandana Kishori Chiluveru's avatar Chandana Kishori Chiluveru
Browse files

usb: gadget: Add snapshot of USB RNDIS Function driver



This change adds USB RNDIS function driver which allows communication
between USB BAM and IPA BAM for tethering functionality over USB.

This snapshot is taken as of msm-4.4 'commit fa53f7f14b3c5f ("soc:
qcom: ipc_router_glink_xprt: Add rx intent timeout for glink")'.

This change adding changes to use cdev device instead of misc device
and also fixes different coding style related warnings.

Change-Id: Ic6925c579095dd853a8e165d809dfb7422365ed0
Signed-off-by: default avatarChandana Kishori Chiluveru <cchiluve@codeaurora.org>
parent d5d55ba0
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -182,6 +182,9 @@ config USB_F_SUBSET
config USB_F_RNDIS
	tristate

config USB_F_QCRNDIS
	tristate

config USB_F_MASS_STORAGE
	tristate

@@ -312,6 +315,14 @@ config USB_CONFIGFS_ECM_SUBSET
	  On hardware that can't implement the full protocol,
	  a simple CDC subset is used, placing fewer demands on USB.

config USB_CONFIGFS_QCRNDIS
	bool "QCRNDIS"
	depends on USB_CONFIGFS
	depends on RNDIS_IPA
	depends on NET
	select USB_U_ETHER
	select USB_F_QCRNDIS

config USB_CONFIGFS_RNDIS
	bool "RNDIS"
	depends on USB_CONFIGFS
+2 −0
Original line number Diff line number Diff line
@@ -64,3 +64,5 @@ usb_f_gsi-y := f_gsi.o rndis.o
obj-$(CONFIG_USB_F_GSI)         += usb_f_gsi.o
usb_f_qdss-y			:= f_qdss.o u_qdss.o
obj-$(CONFIG_USB_F_QDSS)        += usb_f_qdss.o
usb_f_qcrndis-y			:= f_qc_rndis.o rndis.o u_data_ipa.o
obj-$(CONFIG_USB_F_QCRNDIS)	+= usb_f_qcrndis.o
+1580 −0

File added.

Preview size limit exceeded, changes collapsed.

+13 −0
Original line number Diff line number Diff line
@@ -596,6 +596,7 @@ static int rndis_init_response(struct rndis_params *params,
	resp->AFListOffset = cpu_to_le32(0);
	resp->AFListSize = cpu_to_le32(0);

	params->ul_max_xfer_size = le32_to_cpu(resp->MaxTransferSize);
	params->resp_avail(params->v);
	return 0;
}
@@ -1015,6 +1016,18 @@ int rndis_set_param_medium(struct rndis_params *params, u32 medium, u32 speed)
}
EXPORT_SYMBOL_GPL(rndis_set_param_medium);

u32 rndis_get_dl_max_xfer_size(struct rndis_params *params)
{
	pr_debug("%s:\n", __func__);
	return params->dl_max_xfer_size;
}

u32 rndis_get_ul_max_xfer_size(struct rndis_params *params)
{
	pr_debug("%s:\n", __func__);
	return params->ul_max_xfer_size;
}

void rndis_set_max_pkt_xfer(struct rndis_params *params, u8 max_pkt_per_xfer)
{
	pr_debug("%s:\n", __func__);
+3 −0
Original line number Diff line number Diff line
@@ -194,6 +194,7 @@ typedef struct rndis_params
	u32			host_rndis_major_ver;
	u32			host_rndis_minor_ver;
	u32			dl_max_xfer_size;
	u32			ul_max_xfer_size;
	const char		*vendorDescr;
	u8			pkt_alignment_factor;
	void			(*resp_avail)(void *v);
@@ -216,6 +217,8 @@ int rndis_set_param_vendor(struct rndis_params *params, u32 vendorID,
int  rndis_set_param_medium(struct rndis_params *params, u32 medium,
			     u32 speed);
void rndis_set_max_pkt_xfer(struct rndis_params *params, u8 max_pkt_per_xfer);
u32  rndis_get_ul_max_xfer_size(struct rndis_params *params);
u32  rndis_get_dl_max_xfer_size(struct rndis_params *params);
void rndis_add_hdr(struct sk_buff *skb);
int rndis_rm_hdr(struct gether *port, struct sk_buff *skb,
			struct sk_buff_head *list);
Loading