lkml.org 
[lkml]   [2020]   [Oct]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.8 28/85] drivers/net/wan/hdlc_fr: Add needed_headroom for PVC devices
    Date
    From: Xie He <xie.he.0141@gmail.com>

    [ Upstream commit 44a049c42681de71c783d75cd6e56b4e339488b0 ]

    PVC devices are virtual devices in this driver stacked on top of the
    actual HDLC device. They are the devices normal users would use.
    PVC devices have two types: normal PVC devices and Ethernet-emulating
    PVC devices.

    When transmitting data with PVC devices, the ndo_start_xmit function
    will prepend a header of 4 or 10 bytes. Currently this driver requests
    this headroom to be reserved for normal PVC devices by setting their
    hard_header_len to 10. However, this does not work when these devices
    are used with AF_PACKET/RAW sockets. Also, this driver does not request
    this headroom for Ethernet-emulating PVC devices (but deals with this
    problem by reallocating the skb when needed, which is not optimal).

    This patch replaces hard_header_len with needed_headroom, and set
    needed_headroom for Ethernet-emulating PVC devices, too. This makes
    the driver to request headroom for all PVC devices in all cases.

    Cc: Krzysztof Halasa <khc@pm.waw.pl>
    Cc: Martin Schiller <ms@dev.tdt.de>
    Signed-off-by: Xie He <xie.he.0141@gmail.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wan/hdlc_fr.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/drivers/net/wan/hdlc_fr.c b/drivers/net/wan/hdlc_fr.c
    index 9acad651ea1f6..12b35404cd8e7 100644
    --- a/drivers/net/wan/hdlc_fr.c
    +++ b/drivers/net/wan/hdlc_fr.c
    @@ -1041,7 +1041,7 @@ static void pvc_setup(struct net_device *dev)
    {
    dev->type = ARPHRD_DLCI;
    dev->flags = IFF_POINTOPOINT;
    - dev->hard_header_len = 10;
    + dev->hard_header_len = 0;
    dev->addr_len = 2;
    netif_keep_dst(dev);
    }
    @@ -1093,6 +1093,7 @@ static int fr_add_pvc(struct net_device *frad, unsigned int dlci, int type)
    dev->mtu = HDLC_MAX_MTU;
    dev->min_mtu = 68;
    dev->max_mtu = HDLC_MAX_MTU;
    + dev->needed_headroom = 10;
    dev->priv_flags |= IFF_NO_QUEUE;
    dev->ml_priv = pvc;

    --
    2.25.1


    \
     
     \ /
      Last update: 2020-10-05 17:38    [W:4.738 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site