Skip to content
Snippets Groups Projects
Select Git revision
  • 7f26b8577e60ed8952dbcea760aee4f955ea7dcc
  • experimental
  • master
  • v2021.1.2-ffs
  • v2021.1.1-ffs
  • nrb/gluon-master-cpe510
  • v2021.1-ffs
  • v2020.2.3-ffs
  • nrbffs/fastd-remove-delay
  • v2020.2.2-ffs
  • v2020.2.1-ffs
  • v2020.2-ffs
  • v2020.2.x
  • v2020.1.3-ffs
  • v2020.1.1-ffs
  • v2020.1-ffs
  • v2019.1.2-ffs
  • v2019.1.1-ffs
  • nrb/test-radv-filter
  • v2019.1-ffs
  • nrbffs/netgear-ex6120
  • v2021.1.2-ffs0.2
  • v2021.1.2-ffs0.1
  • v2021.1.1-ffs0.4
  • v2021.1.1-ffs0.3
  • v2021.1.1-ffs0.2
  • v2021.1.1-ffs0.1
  • v2021.1-ffs0.1
  • v2020.2.3-ffs0.3
  • v2020.2.3-ffs0.2
  • v2020.2.3-ffs0.1
  • v2020.2.2-ffs0.1
  • v2020.2.1-ffs0.1
  • v2020.2-ffs0.1
  • v2020.2
  • v2020.2.x-ffs0.1
  • v2020.1.3-ffs0.1
  • v2020.1.1-ffs0.1
  • v2020.1-ffs0.1
  • v2019.1.2-ffs0.1
  • v2019.1.1-ffs0.1
41 results

wan.rst

Blame
  • Forked from firmware / FFS Gluon
    Source project has a limited visibility.
    0002-batman-adv-unaligned-access-fix.patch 3.72 KiB
    From: Matthias Schiffer <mschiffer@universe-factory.net>
    Date: Tue, 23 Jan 2018 21:18:34 +0100
    Subject: batman-adv: unaligned access fix
    
    Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
    
    diff --git a/batman-adv/patches/900-unaligned-access.patch b/batman-adv/patches/900-unaligned-access.patch
    new file mode 100644
    index 0000000000000000000000000000000000000000..eb067329bc5e9f112b56d03c20c612fb1fd1e32d
    --- /dev/null
    +++ b/batman-adv/patches/900-unaligned-access.patch
    @@ -0,0 +1,87 @@
    +From: Matthias Schiffer <mschiffer@universe-factory.net>
    +Date: Wed, 24 Jan 2018 11:21:37 +0000 (+0100)
    +Subject: batman-adv: always assume 2-byte packet alignment
    +X-Git-Url: https://git.open-mesh.org/batman-adv.git/commitdiff_plain/0509fc0c128ba2891770305c57c9b6a3a61ea7bd
    +
    +batman-adv: always assume 2-byte packet alignment
    +
    +NIC drivers generally try to ensure that the "network header" is aligned
    +to a 4-byte boundary. This is not always possible: When Ethernet frames are
    +encapsulated in other packets with 4-byte aligned headers, the inner
    +Ethernet header will have 4-byte alignment, and in consequence, the inner
    +network header is aligned to 2, but not to 4 bytes.
    +
    +Most parts of batman-adv only care about 2-byte alignment; in particular,
    +no unaligned accesses occur in performance-critical paths that handle
    +actual payload data. This is not true for OGM handling: the seqno and crc
    +fields are accessed as 32-bit values. To avoid these unaligned accesses,
    +this patch reduces the expected packet alignment to 2 bytes for all of
    +batadv's packet types.
    +
    +As no unaligned accesses existed on the performance-critical paths anyways,
    +this chance does have any (positive or negative) effect on performance, but
    +it still makes sense to avoid these accesses to prevent log noise when
    +examining other unaligned accesses in the kernel while batman-adv is
    +active.
    +
    +Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
    +Signed-off-by: Sven Eckelmann <sven@narfation.org>
    +---
    +
    +diff --git a/include/uapi/linux/batadv_packet.h b/include/uapi/linux/batadv_packet.h
    +index daefd72..894d8d2 100644
    +--- a/include/uapi/linux/batadv_packet.h
    ++++ b/include/uapi/linux/batadv_packet.h
    +@@ -196,8 +196,6 @@ struct batadv_bla_claim_dst {
    + 	__be16 group;		/* group id */
    + };
    + 
    +-#pragma pack()
    +-
    + /**
    +  * struct batadv_ogm_packet - ogm (routing protocol) packet
    +  * @packet_type: batman-adv packet type, part of the general header
    +@@ -222,9 +220,6 @@ struct batadv_ogm_packet {
    + 	__u8   reserved;
    + 	__u8   tq;
    + 	__be16 tvlv_len;
    +-	/* __packed is not needed as the struct size is divisible by 4,
    +-	 * and the largest data type in this struct has a size of 4.
    +-	 */
    + };
    + 
    + #define BATADV_OGM_HLEN sizeof(struct batadv_ogm_packet)
    +@@ -249,9 +244,6 @@ struct batadv_ogm2_packet {
    + 	__u8   orig[ETH_ALEN];
    + 	__be16 tvlv_len;
    + 	__be32 throughput;
    +-	/* __packed is not needed as the struct size is divisible by 4,
    +-	 * and the largest data type in this struct has a size of 4.
    +-	 */
    + };
    + 
    + #define BATADV_OGM2_HLEN sizeof(struct batadv_ogm2_packet)
    +@@ -405,7 +397,6 @@ struct batadv_icmp_packet_rr {
    +  * misalignment of the payload after the ethernet header. It may also lead to
    +  * leakage of information when the padding it not initialized before sending.
    +  */
    +-#pragma pack(2)
    + 
    + /**
    +  * struct batadv_unicast_packet - unicast packet for network payload
    +@@ -533,8 +524,6 @@ struct batadv_coded_packet {
    + 	__be16 coded_len;
    + };
    + 
    +-#pragma pack()
    +-
    + /**
    +  * struct batadv_unicast_tvlv_packet - generic unicast packet with tvlv payload
    +  * @packet_type: batman-adv packet type, part of the general header
    +@@ -641,4 +630,6 @@ struct batadv_tvlv_mcast_data {
    + 	__u8 reserved[3];
    + };
    + 
    ++#pragma pack()
    ++
    + #endif /* _UAPI_LINUX_BATADV_PACKET_H_ */