usb: gadget: f_ncm/u_ether: Move 'SKB reserve' quirk setup to u_ether
authorDmitry Osipenko <digetx@gmail.com>
Wed, 16 Aug 2017 10:32:38 +0000 (13:32 +0300)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Fri, 18 Aug 2017 09:29:10 +0000 (12:29 +0300)
That quirk is required to make USB Ethernet gadget working on HW that
can't cope with unaligned DMA. For some reason only f_ncm sets up that
quirk, let's setup it directly in u_ether so other network models would
have that quirk applied as well. All network models have been tested with
ChipIdea UDC driver on NVIDIA Tegra20 SoC that require DMA to be aligned.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/gadget/function/f_ncm.c
drivers/usb/gadget/function/u_ether.c
drivers/usb/gadget/function/u_ether.h

index 24e34cf..45b334c 100644 (file)
@@ -925,8 +925,6 @@ static int ncm_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
                         */
                        ncm->port.is_zlp_ok =
                                gadget_is_zlp_supported(cdev->gadget);
-                       ncm->port.no_skb_reserve =
-                               gadget_avoids_skb_reserve(cdev->gadget);
                        ncm->port.cdc_filter = DEFAULT_FILTER;
                        DBG(cdev, "activate ncm\n");
                        net = gether_connect(&ncm->port);
index a8b40d0..bdbc3fd 100644 (file)
@@ -1073,7 +1073,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;
+               dev->no_skb_reserve = gadget_avoids_skb_reserve(dev->gadget);
                DBG(dev, "qlen %d\n", qlen(dev->gadget, dev->qmult));
 
                dev->header_len = link->header_len;
index 81d94a7..c77145b 100644 (file)
@@ -64,7 +64,6 @@ struct gether {
        struct usb_ep                   *out_ep;
 
        bool                            is_zlp_ok;
-       bool                            no_skb_reserve;
 
        u16                             cdc_filter;