--- src/wl/sys/wl_linux.c.orig	2014-06-26 03:42:08.000000000 -0700
+++ src/wl/sys/wl_linux.c	2015-07-29 06:37:51.000000000 -0700
@@ -1307,7 +1307,11 @@
 	dev->priv = priv_link;
 #else
 
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0))
 	dev = alloc_netdev(sizeof(priv_link_t), intf_name, ether_setup);
+#else
+	dev = alloc_netdev(sizeof(priv_link_t), intf_name, NET_NAME_UNKNOWN, ether_setup);
+#endif
 	if (!dev) {
 		WL_ERROR(("wl%d: %s: alloc_netdev failed\n",
 			(wl->pub)?wl->pub->unit:wlif->subunit, __FUNCTION__));
--- src/wl/sys/wl_cfg80211_hybrid.c.orig	2014-06-26 03:42:08.000000000 -0700
+++ src/wl/sys/wl_cfg80211_hybrid.c	2015-07-29 07:03:39.000000000 -0700
@@ -2010,9 +2010,15 @@
 
 	notify_ie = (u8 *)bi + le16_to_cpu(bi->ie_offset);
 	notify_ielen = le32_to_cpu(bi->ie_length);
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0))
 	cbss = cfg80211_inform_bss(wiphy, channel, (const u8 *)(bi->BSSID.octet),
 		0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int,
 		(const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL);
+#else
+	cbss = cfg80211_inform_bss(wiphy, channel, CFG80211_BSS_FTYPE_UNKNOWN, (const u8 *)(bi->BSSID.octet),
+		0, beacon_proberesp->capab_info, beacon_proberesp->beacon_int,
+		(const u8 *)notify_ie, notify_ielen, signal, GFP_KERNEL);
+#endif
 
 	if (unlikely(!cbss))
 		return -ENOMEM;
@@ -2071,7 +2077,12 @@
 			wl_get_assoc_ies(wl);
 			memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN);
 			wl_update_bss_info(wl);
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0))
 			cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, GFP_KERNEL);
+#else
+			cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid,
+					     &wl->conf->channel, GFP_KERNEL);
+#endif
 			set_bit(WL_STATUS_CONNECTED, &wl->status);
 			wl->profile->active = true;
 		}