Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next
Johan Hedberg says: ==================== pull request: bluetooth-next 2016-03-01 Here's our main set of Bluetooth & 802.15.4 patches for the 4.6 kernel. - New Bluetooth HCI driver for Intel/AG6xx controllers - New Broadcom ACPI IDs - LED trigger support for indicating Bluetooth powered state - Various fixes in mac802154, 6lowpan and related drivers - New USB IDs for AR3012 Bluetooth controllers Please let me know if there are any issues pulling. Thanks. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -75,6 +75,8 @@
|
||||
#define LOWPAN_IPHC_MAX_HC_BUF_LEN (sizeof(struct ipv6hdr) + \
|
||||
LOWPAN_IPHC_MAX_HEADER_LEN + \
|
||||
LOWPAN_NHC_MAX_HDR_LEN)
|
||||
/* SCI/DCI is 4 bit width, so we have maximum 16 entries */
|
||||
#define LOWPAN_IPHC_CTX_TABLE_SIZE (1 << 4)
|
||||
|
||||
#define LOWPAN_DISPATCH_IPV6 0x41 /* 01000001 = 65 */
|
||||
#define LOWPAN_DISPATCH_IPHC 0x60 /* 011xxxxx = ... */
|
||||
@@ -98,9 +100,39 @@ enum lowpan_lltypes {
|
||||
LOWPAN_LLTYPE_IEEE802154,
|
||||
};
|
||||
|
||||
enum lowpan_iphc_ctx_flags {
|
||||
LOWPAN_IPHC_CTX_FLAG_ACTIVE,
|
||||
LOWPAN_IPHC_CTX_FLAG_COMPRESSION,
|
||||
};
|
||||
|
||||
struct lowpan_iphc_ctx {
|
||||
u8 id;
|
||||
struct in6_addr pfx;
|
||||
u8 plen;
|
||||
unsigned long flags;
|
||||
};
|
||||
|
||||
struct lowpan_iphc_ctx_table {
|
||||
spinlock_t lock;
|
||||
const struct lowpan_iphc_ctx_ops *ops;
|
||||
struct lowpan_iphc_ctx table[LOWPAN_IPHC_CTX_TABLE_SIZE];
|
||||
};
|
||||
|
||||
static inline bool lowpan_iphc_ctx_is_active(const struct lowpan_iphc_ctx *ctx)
|
||||
{
|
||||
return test_bit(LOWPAN_IPHC_CTX_FLAG_ACTIVE, &ctx->flags);
|
||||
}
|
||||
|
||||
static inline bool
|
||||
lowpan_iphc_ctx_is_compression(const struct lowpan_iphc_ctx *ctx)
|
||||
{
|
||||
return test_bit(LOWPAN_IPHC_CTX_FLAG_COMPRESSION, &ctx->flags);
|
||||
}
|
||||
|
||||
struct lowpan_priv {
|
||||
enum lowpan_lltypes lltype;
|
||||
struct dentry *iface_debugfs;
|
||||
struct lowpan_iphc_ctx_table ctx;
|
||||
|
||||
/* must be last */
|
||||
u8 priv[0] __aligned(sizeof(void *));
|
||||
|
@@ -25,6 +25,7 @@
|
||||
#ifndef __HCI_CORE_H
|
||||
#define __HCI_CORE_H
|
||||
|
||||
#include <linux/leds.h>
|
||||
#include <net/bluetooth/hci.h>
|
||||
#include <net/bluetooth/hci_sock.h>
|
||||
|
||||
@@ -396,6 +397,8 @@ struct hci_dev {
|
||||
struct delayed_work rpa_expired;
|
||||
bdaddr_t rpa;
|
||||
|
||||
struct led_trigger *power_led;
|
||||
|
||||
int (*open)(struct hci_dev *hdev);
|
||||
int (*close)(struct hci_dev *hdev);
|
||||
int (*flush)(struct hci_dev *hdev);
|
||||
|
@@ -247,8 +247,9 @@ struct ieee802154_ops {
|
||||
*/
|
||||
static inline __le16 ieee802154_get_fc_from_skb(const struct sk_buff *skb)
|
||||
{
|
||||
/* return some invalid fc on failure */
|
||||
if (unlikely(skb->len < 2)) {
|
||||
/* check if we can fc at skb_mac_header of sk buffer */
|
||||
if (unlikely(!skb_mac_header_was_set(skb) ||
|
||||
(skb_tail_pointer(skb) - skb_mac_header(skb)) < 2)) {
|
||||
WARN_ON(1);
|
||||
return cpu_to_le16(0);
|
||||
}
|
||||
|
Reference in New Issue
Block a user