--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
-@@ -2951,6 +2951,9 @@ struct wiphy_vendor_command {
+@@ -2953,6 +2953,9 @@ struct wiphy_vendor_command {
struct wiphy {
/* assign these fields before you register the wiphy */
spin_lock(&fq->q.lock);
-@@ -393,31 +397,55 @@ static int zero;
+@@ -393,24 +397,44 @@ static int zero;
static struct ctl_table lowpan_frags_ns_ctl_table[] = {
{
.procname = "6lowpanfrag_high_thresh",
.maxlen = sizeof(int),
.mode = 0644,
.proc_handler = proc_dointvec_jiffies,
- },
- {
- .procname = "6lowpanfrag_max_datagram_size",
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0))
- .data = &init_net.ieee802154_lowpan.max_dsize,
-+#else
-+ .data = &ieee802154_lowpan.max_dsize,
-+#endif
- .maxlen = sizeof(int),
- .mode = 0644,
- .proc_handler = proc_dointvec
--- a/net/ieee802154/reassembly.c
+++ b/net/ieee802154/reassembly.c
-@@ -491,9 +491,11 @@ static int __net_init lowpan_frags_ns_sy
+@@ -479,9 +479,11 @@ static int __net_init lowpan_frags_ns_sy
+ table[1].extra2 = &ieee802154_lowpan->frags.high_thresh;
table[2].data = &ieee802154_lowpan->frags.timeout;
- table[3].data = &ieee802154_lowpan->max_dsize;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)
/* Don't export sysctls to unprivileged users */
device_initialize(&rdev->wiphy.dev);
rdev->wiphy.dev.class = &ieee80211_class;
rdev->wiphy.dev.platform_data = rdev;
-@@ -925,6 +921,15 @@ static int cfg80211_netdev_notifier_call
+@@ -918,6 +914,15 @@ static int cfg80211_netdev_notifier_call
}
wdev->netdev = dev;
#ifdef CONFIG_CFG80211_WEXT
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
-@@ -2067,6 +2067,7 @@ netdev_tx_t ieee80211_subif_start_xmit(s
+@@ -2070,6 +2070,7 @@ netdev_tx_t ieee80211_subif_start_xmit(s
goto fail_rcu;
}
if (unlikely(!multicast && skb->sk &&
skb_shinfo(skb)->tx_flags & SKBTX_WIFI_STATUS)) {
struct sk_buff *orig_skb = skb;
-@@ -2095,6 +2096,7 @@ netdev_tx_t ieee80211_subif_start_xmit(s
+@@ -2098,6 +2099,7 @@ netdev_tx_t ieee80211_subif_start_xmit(s
skb = orig_skb;
}
}
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -6149,7 +6149,9 @@ static int nl80211_dump_scan(struct sk_b
+@@ -6157,7 +6157,9 @@ static int nl80211_dump_scan(struct sk_b
spin_lock_bh(&rdev->bss_lock);
cfg80211_bss_expire(rdev);
[NL80211_MCGRP_CONFIG] = { .name = "config", },
[NL80211_MCGRP_SCAN] = { .name = "scan", },
[NL80211_MCGRP_REGULATORY] = { .name = "regulatory", },
-@@ -9372,7 +9372,7 @@ static int nl80211_set_qos_map(struct sk
+@@ -9380,7 +9380,7 @@ static int nl80211_set_qos_map(struct sk
#define NL80211_FLAG_NEED_WDEV_UP (NL80211_FLAG_NEED_WDEV |\
NL80211_FLAG_CHECK_NETDEV_UP)
struct genl_info *info)
{
struct cfg80211_registered_device *rdev;
-@@ -9441,7 +9441,7 @@ static int nl80211_pre_doit(const struct
+@@ -9449,7 +9449,7 @@ static int nl80211_pre_doit(const struct
return 0;
}
struct genl_info *info)
{
if (info->user_ptr[1]) {
-@@ -9458,7 +9458,7 @@ static void nl80211_post_doit(const stru
+@@ -9466,7 +9466,7 @@ static void nl80211_post_doit(const stru
rtnl_unlock();
}
.err_handler = &igb_err_handler
};
-@@ -7639,6 +7643,7 @@ static int igb_sriov_reinit(struct pci_d
+@@ -7640,6 +7644,7 @@ static int igb_sriov_reinit(struct pci_d
return 0;
}
static int igb_pci_disable_sriov(struct pci_dev *dev)
{
int err = igb_disable_sriov(dev);
-@@ -7648,6 +7653,7 @@ static int igb_pci_disable_sriov(struct
+@@ -7649,6 +7654,7 @@ static int igb_pci_disable_sriov(struct
return err;
}
static int igb_pci_enable_sriov(struct pci_dev *dev, int num_vfs)
{
-@@ -7665,6 +7671,7 @@ out:
+@@ -7666,6 +7672,7 @@ out:
}
#endif
static int igb_pci_sriov_configure(struct pci_dev *dev, int num_vfs)
{
#ifdef CONFIG_PCI_IOV
-@@ -7675,6 +7682,7 @@ static int igb_pci_sriov_configure(struc
+@@ -7676,6 +7683,7 @@ static int igb_pci_sriov_configure(struc
#endif
return 0;
}
static void igb_restore_vlan(struct igb_adapter *);
static void igb_rar_set_qsel(struct igb_adapter *, u8 *, u32 , u8);
static void igb_ping_all_vfs(struct igb_adapter *);
-@@ -7307,8 +7315,14 @@ static void igb_vlan_mode(struct net_dev
+@@ -7308,8 +7316,14 @@ static void igb_vlan_mode(struct net_dev
igb_rlpml_set(adapter);
}
{
struct igb_adapter *adapter = netdev_priv(netdev);
struct e1000_hw *hw = &adapter->hw;
-@@ -7322,11 +7336,19 @@ static int igb_vlan_rx_add_vid(struct ne
+@@ -7323,11 +7337,19 @@ static int igb_vlan_rx_add_vid(struct ne
set_bit(vid, adapter->active_vlans);
{
struct igb_adapter *adapter = netdev_priv(netdev);
struct e1000_hw *hw = &adapter->hw;
-@@ -7342,7 +7364,9 @@ static int igb_vlan_rx_kill_vid(struct n
+@@ -7343,7 +7365,9 @@ static int igb_vlan_rx_kill_vid(struct n
clear_bit(vid, adapter->active_vlans);
}
static void igb_restore_vlan(struct igb_adapter *adapter)
-@@ -7352,7 +7376,11 @@ static void igb_restore_vlan(struct igb_
+@@ -7353,7 +7377,11 @@ static void igb_restore_vlan(struct igb_
igb_vlan_mode(adapter->netdev, adapter->netdev->features);
for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID)
.ndo_get_vf_config = igb_ndo_get_vf_config,
#ifdef CONFIG_NET_POLL_CONTROLLER
.ndo_poll_controller = igb_netpoll,
-@@ -7990,6 +7994,7 @@ static int igb_ndo_set_vf_bw(struct net_
+@@ -7991,6 +7995,7 @@ static int igb_ndo_set_vf_bw(struct net_
return 0;
}
static int igb_ndo_set_vf_spoofchk(struct net_device *netdev, int vf,
bool setting)
{
-@@ -8016,6 +8021,7 @@ static int igb_ndo_set_vf_spoofchk(struc
+@@ -8017,6 +8022,7 @@ static int igb_ndo_set_vf_spoofchk(struc
adapter->vf_data[vf].spoofchk_enabled = setting;
return 0;
}
static int igb_ndo_get_vf_config(struct net_device *netdev,
int vf, struct ifla_vf_info *ivi)
-@@ -8029,7 +8035,9 @@ static int igb_ndo_get_vf_config(struct
+@@ -8030,7 +8036,9 @@ static int igb_ndo_get_vf_config(struct
ivi->min_tx_rate = 0;
ivi->vlan = adapter->vf_data[vf].pf_vlan;
ivi->qos = adapter->vf_data[vf].pf_qos;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)
.ndo_set_vf_spoofchk = igb_ndo_set_vf_spoofchk,
#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0) */
-@@ -7972,8 +7980,12 @@ static void igb_check_vf_rate_limit(stru
+@@ -7973,8 +7981,12 @@ static void igb_check_vf_rate_limit(stru
}
}
{
struct igb_adapter *adapter = netdev_priv(netdev);
struct e1000_hw *hw = &adapter->hw;
-@@ -7982,6 +7994,7 @@ static int igb_ndo_set_vf_bw(struct net_
+@@ -7983,6 +7995,7 @@ static int igb_ndo_set_vf_bw(struct net_
if (hw->mac.type != e1000_82576)
return -EOPNOTSUPP;
if (min_tx_rate)
return -EINVAL;
-@@ -7995,7 +8008,17 @@ static int igb_ndo_set_vf_bw(struct net_
+@@ -7996,7 +8009,17 @@ static int igb_ndo_set_vf_bw(struct net_
adapter->vf_rate_link_speed = actual_link_speed;
adapter->vf_data[vf].tx_rate = (u16)max_tx_rate;
igb_set_vf_rate_limit(hw, vf, max_tx_rate, actual_link_speed);
return 0;
}
-@@ -8036,8 +8059,12 @@ static int igb_ndo_get_vf_config(struct
+@@ -8037,8 +8060,12 @@ static int igb_ndo_get_vf_config(struct
return -EINVAL;
ivi->vf = vf;
memcpy(&ivi->mac, adapter->vf_data[vf].vf_mac_addresses, ETH_ALEN);