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

Commit 05f6b0ff authored by Yoshihiro Shimoda's avatar Yoshihiro Shimoda Committed by Felipe Balbi
Browse files

usb: gadget: u_ether: add a flag to avoid skb_reserve() calling



This patch adds a flag "no_skb_reserve" in struct eth_dev.
So, if a peripheral driver sets the quirk_avoids_skb_reserve flag,
upper network gadget drivers (e.g. f_ncm.c) can avoid skb_reserve()
calling using the flag as well.

Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
parent 60e7396f
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ struct eth_dev {
#define	WORK_RX_MEMORY		0

	bool			zlp;
	bool			no_skb_reserve;
	u8			host_mac[ETH_ALEN];
	u8			dev_mac[ETH_ALEN];
};
@@ -233,6 +234,7 @@ rx_submit(struct eth_dev *dev, struct usb_request *req, gfp_t gfp_flags)
	 * but on at least one, checksumming fails otherwise.  Note:
	 * RNDIS headers involve variable numbers of LE32 values.
	 */
	if (likely(!dev->no_skb_reserve))
		skb_reserve(skb, NET_IP_ALIGN);

	req->buf = skb->data;
@@ -1063,6 +1065,7 @@ struct net_device *gether_connect(struct gether *link)

	if (result == 0) {
		dev->zlp = link->is_zlp_ok;
		dev->no_skb_reserve = link->no_skb_reserve;
		DBG(dev, "qlen %d\n", qlen(dev->gadget, dev->qmult));

		dev->header_len = link->header_len;
+1 −0
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ struct gether {
	struct usb_ep			*out_ep;

	bool				is_zlp_ok;
	bool				no_skb_reserve;

	u16				cdc_filter;