]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drivers/net/wan/hdlc: Change the default of hard_header_len to 0
authorXie He <xie.he.0141@gmail.com>
Wed, 2 Sep 2020 12:07:06 +0000 (05:07 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 2 Sep 2020 22:42:43 +0000 (15:42 -0700)
Change the default value of hard_header_len in hdlc.c from 16 to 0.

Currently there are 6 HDLC protocol drivers, among them:

hdlc_raw_eth, hdlc_cisco, hdlc_ppp, hdlc_x25 set hard_header_len when
attaching the protocol, overriding the default. So this patch does not
affect them.

hdlc_raw and hdlc_fr don't set hard_header_len when attaching the
protocol. So this patch will change the hard_header_len of the HDLC
device for them from 16 to 0.

This is the correct change because both hdlc_raw and hdlc_fr don't have
header_ops, and the code in net/packet/af_packet.c expects the value of
hard_header_len to be consistent with header_ops.

In net/packet/af_packet.c, in the packet_snd function,
for AF_PACKET/DGRAM sockets it would reserve a headroom of
hard_header_len and call dev_hard_header to fill in that headroom,
and for AF_PACKET/RAW sockets, it does not reserve the headroom and
does not call dev_hard_header, but checks if the user has provided a
header of length hard_header_len (in function dev_validate_header).

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: David S. Miller <davem@davemloft.net>
drivers/net/wan/hdlc.c

index 386ed2aa31fd93e63072063cd3fb200b57b23d30..9b00708676cf7123e022445434aa8f9ebb0f9a05 100644 (file)
@@ -229,7 +229,7 @@ static void hdlc_setup_dev(struct net_device *dev)
        dev->min_mtu             = 68;
        dev->max_mtu             = HDLC_MAX_MTU;
        dev->type                = ARPHRD_RAWHDLC;
-       dev->hard_header_len     = 16;
+       dev->hard_header_len     = 0;
        dev->needed_headroom     = 0;
        dev->addr_len            = 0;
        dev->header_ops          = &hdlc_null_ops;