summaryrefslogtreecommitdiff
path: root/drivers/usb/gadget/function
diff options
context:
space:
mode:
authorHemant Kumar <hemantk@codeaurora.org>2016-02-01 18:54:16 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-22 11:03:05 -0700
commitb4fc5ee2ec9d130ea0399577ec74bd26b04c3ce2 (patch)
treed4b00ba6bc540ad5e18cdb5f8a680ba72c3d7a1d /drivers/usb/gadget/function
parenta86fe70b61b4e724fbab306bb7856a47fd8c8b11 (diff)
usb: gadget: rndis: Add new rndis parameters
Add pkt_alignment_factor rndis parameter. This parameter along with max_pkt_per_xfer allow rndis function driver to aggregate more than one IP packets per transfer. This is done by calling newly added API rndis_set_pkt_alignment_factor(). Change-Id: Ic9c543c388f872452e708a3a26be4ae82b54c082 Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Diffstat (limited to 'drivers/usb/gadget/function')
-rw-r--r--drivers/usb/gadget/function/rndis.c15
-rw-r--r--drivers/usb/gadget/function/rndis.h3
2 files changed, 17 insertions, 1 deletions
diff --git a/drivers/usb/gadget/function/rndis.c b/drivers/usb/gadget/function/rndis.c
index 2c806ea13e90..f0a2d2126f22 100644
--- a/drivers/usb/gadget/function/rndis.c
+++ b/drivers/usb/gadget/function/rndis.c
@@ -595,7 +595,7 @@ static int rndis_init_response(struct rndis_params *params,
+ sizeof(struct ethhdr)
+ sizeof(struct rndis_packet_msg_type)
+ 22));
- resp->PacketAlignmentFactor = cpu_to_le32(0);
+ resp->PacketAlignmentFactor = cpu_to_le32(params->pkt_alignment_factor);
resp->AFListOffset = cpu_to_le32(0);
resp->AFListSize = cpu_to_le32(0);
@@ -1209,6 +1209,19 @@ int rndis_rm_hdr(struct gether *port,
}
EXPORT_SYMBOL_GPL(rndis_rm_hdr);
+void rndis_set_pkt_alignment_factor(struct rndis_params *params,
+ u8 pkt_alignment_factor)
+{
+ pr_debug("%s:\n", __func__);
+
+ if (!params) {
+ pr_err("%s: failed, params NULL\n", __func__);
+ return;
+ }
+
+ params->pkt_alignment_factor = pkt_alignment_factor;
+}
+
#ifdef CONFIG_USB_GADGET_DEBUG_FILES
static int rndis_proc_show(struct seq_file *m, void *v)
diff --git a/drivers/usb/gadget/function/rndis.h b/drivers/usb/gadget/function/rndis.h
index c9edf9cf12d8..939c3bebe015 100644
--- a/drivers/usb/gadget/function/rndis.h
+++ b/drivers/usb/gadget/function/rndis.h
@@ -192,6 +192,7 @@ typedef struct rndis_params
u32 vendorID;
u8 max_pkt_per_xfer;
const char *vendorDescr;
+ u8 pkt_alignment_factor;
void (*resp_avail)(void *v);
void (*flow_ctrl_enable)(bool enable,
struct rndis_params *params);
@@ -224,5 +225,7 @@ int rndis_signal_disconnect(struct rndis_params *params);
int rndis_state(struct rndis_params *params);
extern void rndis_set_host_mac(struct rndis_params *params, const u8 *addr);
void rndis_flow_control(struct rndis_params *params, bool enable_flow_control);
+void rndis_set_pkt_alignment_factor(struct rndis_params *params,
+ u8 pkt_alignment_factor);
#endif /* _LINUX_RNDIS_H */