aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/005-header-backport-nla_put_u64_64bit-and-nla_put_64bit.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/005-header-backport-nla_put_u64_64bit-and-nla_put_64bit.patch')
-rw-r--r--package/kernel/mac80211/patches/005-header-backport-nla_put_u64_64bit-and-nla_put_64bit.patch158
1 files changed, 0 insertions, 158 deletions
diff --git a/package/kernel/mac80211/patches/005-header-backport-nla_put_u64_64bit-and-nla_put_64bit.patch b/package/kernel/mac80211/patches/005-header-backport-nla_put_u64_64bit-and-nla_put_64bit.patch
deleted file mode 100644
index e20d87a7fd..0000000000
--- a/package/kernel/mac80211/patches/005-header-backport-nla_put_u64_64bit-and-nla_put_64bit.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-From: Felix Fietkau <nbd@nbd.name>
-Date: Sat, 14 May 2016 16:40:16 +0200
-Subject: [PATCH] header: backport nla_put_u64_64bit and nla_put_64bit
-
-Signed-off-by: Felix Fietkau <nbd@nbd.name>
----
-
---- a/backport-include/net/netlink.h
-+++ b/backport-include/net/netlink.h
-@@ -189,4 +189,148 @@ static inline __le64 nla_get_le64(const
- }
- #endif /* < 4.4 */
-
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,7,0)
-+
-+/**
-+ * nla_need_padding_for_64bit - test 64-bit alignment of the next attribute
-+ * @skb: socket buffer the message is stored in
-+ *
-+ * Return true if padding is needed to align the next attribute (nla_data()) to
-+ * a 64-bit aligned area.
-+ */
-+static inline bool nla_need_padding_for_64bit(struct sk_buff *skb)
-+{
-+#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
-+ /* The nlattr header is 4 bytes in size, that's why we test
-+ * if the skb->data _is_ aligned. A NOP attribute, plus
-+ * nlattr header for next attribute, will make nla_data()
-+ * 8-byte aligned.
-+ */
-+ if (IS_ALIGNED((unsigned long)skb_tail_pointer(skb), 8))
-+ return true;
-+#endif
-+ return false;
-+}
-+
-+/**
-+ * nla_align_64bit - 64-bit align the nla_data() of next attribute
-+ * @skb: socket buffer the message is stored in
-+ * @padattr: attribute type for the padding
-+ *
-+ * Conditionally emit a padding netlink attribute in order to make
-+ * the next attribute we emit have a 64-bit aligned nla_data() area.
-+ * This will only be done in architectures which do not have
-+ * CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS defined.
-+ *
-+ * Returns zero on success or a negative error code.
-+ */
-+static inline int nla_align_64bit(struct sk_buff *skb, int padattr)
-+{
-+ if (nla_need_padding_for_64bit(skb) &&
-+ !nla_reserve(skb, padattr, 0))
-+ return -EMSGSIZE;
-+
-+ return 0;
-+}
-+
-+/**
-+ * __nla_reserve_64bit - reserve room for attribute on the skb and align it
-+ * @skb: socket buffer to reserve room on
-+ * @attrtype: attribute type
-+ * @attrlen: length of attribute payload
-+ * @padattr: attribute type for the padding
-+ *
-+ * Adds a netlink attribute header to a socket buffer and reserves
-+ * room for the payload but does not copy it. It also ensure that this
-+ * attribute will have a 64-bit aligned nla_data() area.
-+ *
-+ * The caller is responsible to ensure that the skb provides enough
-+ * tailroom for the attribute header and payload.
-+ */
-+static inline struct nlattr *__nla_reserve_64bit(struct sk_buff *skb, int attrtype,
-+ int attrlen, int padattr)
-+{
-+ if (nla_need_padding_for_64bit(skb))
-+ nla_align_64bit(skb, padattr);
-+
-+ return __nla_reserve(skb, attrtype, attrlen);
-+}
-+
-+/**
-+ * __nla_put_64bit - Add a netlink attribute to a socket buffer and align it
-+ * @skb: socket buffer to add attribute to
-+ * @attrtype: attribute type
-+ * @attrlen: length of attribute payload
-+ * @data: head of attribute payload
-+ * @padattr: attribute type for the padding
-+ *
-+ * The caller is responsible to ensure that the skb provides enough
-+ * tailroom for the attribute header and payload.
-+ */
-+static inline void __nla_put_64bit(struct sk_buff *skb, int attrtype, int attrlen,
-+ const void *data, int padattr)
-+{
-+ struct nlattr *nla;
-+
-+ nla = __nla_reserve_64bit(skb, attrtype, attrlen, padattr);
-+ memcpy(nla_data(nla), data, attrlen);
-+}
-+
-+/**
-+ * nla_total_size_64bit - total length of attribute including padding
-+ * @payload: length of payload
-+ */
-+static inline int nla_total_size_64bit(int payload)
-+{
-+ return NLA_ALIGN(nla_attr_size(payload))
-+#ifndef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
-+ + NLA_ALIGN(nla_attr_size(0))
-+#endif
-+ ;
-+}
-+
-+/**
-+ * nla_put_64bit - Add a netlink attribute to a socket buffer and align it
-+ * @skb: socket buffer to add attribute to
-+ * @attrtype: attribute type
-+ * @attrlen: length of attribute payload
-+ * @data: head of attribute payload
-+ * @padattr: attribute type for the padding
-+ *
-+ * Returns -EMSGSIZE if the tailroom of the skb is insufficient to store
-+ * the attribute header and payload.
-+ */
-+static inline int nla_put_64bit(struct sk_buff *skb, int attrtype, int attrlen,
-+ const void *data, int padattr)
-+{
-+ size_t len;
-+
-+ if (nla_need_padding_for_64bit(skb))
-+ len = nla_total_size_64bit(attrlen);
-+ else
-+ len = nla_total_size(attrlen);
-+ if (unlikely(skb_tailroom(skb) < len))
-+ return -EMSGSIZE;
-+
-+ __nla_put_64bit(skb, attrtype, attrlen, data, padattr);
-+ return 0;
-+}
-+
-+/**
-+ * nla_put_u64_64bit - Add a u64 netlink attribute to a skb and align it
-+ * @skb: socket buffer to add attribute to
-+ * @attrtype: attribute type
-+ * @value: numeric value
-+ * @padattr: attribute type for the padding
-+ */
-+static inline int nla_put_u64_64bit(struct sk_buff *skb, int attrtype,
-+ u64 value, int padattr)
-+{
-+ return nla_put_64bit(skb, attrtype, sizeof(u64), &value, padattr);
-+}
-+
-+
-+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4,7,0) */
-+
- #endif /* __BACKPORT_NET_NETLINK_H */