diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/bcma/Kconfig | 3 | ||||
| -rw-r--r-- | drivers/bcma/driver_chipcommon_sflash.c | 2 | ||||
| -rw-r--r-- | drivers/net/ethernet/nvidia/forcedeth.c | 35 | ||||
| -rw-r--r-- | drivers/net/usb/qmi_wwan.c | 1 | ||||
| -rw-r--r-- | drivers/net/vxlan.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/Kconfig | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_hw.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/carl9170/fw.c | 6 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmsmac/debug.h | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/p54/p54usb.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/pci.c | 6 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192ce/trx.c | 11 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192de/trx.c | 10 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192se/trx.c | 13 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8723ae/trx.c | 10 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/usb.c | 8 | ||||
| -rw-r--r-- | drivers/net/xen-netfront.c | 27 | ||||
| -rw-r--r-- | drivers/ssb/Kconfig | 3 |
20 files changed, 116 insertions, 41 deletions
diff --git a/drivers/bcma/Kconfig b/drivers/bcma/Kconfig index d7b56a88c9f4..8b4221cfd118 100644 --- a/drivers/bcma/Kconfig +++ b/drivers/bcma/Kconfig | |||
| @@ -67,8 +67,7 @@ config BCMA_DRIVER_GMAC_CMN | |||
| 67 | 67 | ||
| 68 | config BCMA_DRIVER_GPIO | 68 | config BCMA_DRIVER_GPIO |
| 69 | bool "BCMA GPIO driver" | 69 | bool "BCMA GPIO driver" |
| 70 | depends on BCMA | 70 | depends on BCMA && GPIOLIB |
| 71 | select GPIOLIB | ||
| 72 | help | 71 | help |
| 73 | Driver to provide access to the GPIO pins of the bcma bus. | 72 | Driver to provide access to the GPIO pins of the bcma bus. |
| 74 | 73 | ||
diff --git a/drivers/bcma/driver_chipcommon_sflash.c b/drivers/bcma/driver_chipcommon_sflash.c index 63e688393825..1e694db4532d 100644 --- a/drivers/bcma/driver_chipcommon_sflash.c +++ b/drivers/bcma/driver_chipcommon_sflash.c | |||
| @@ -35,7 +35,7 @@ static struct bcma_sflash_tbl_e bcma_sflash_st_tbl[] = { | |||
| 35 | { "M25P40", 0x12, 0x10000, 8, }, | 35 | { "M25P40", 0x12, 0x10000, 8, }, |
| 36 | 36 | ||
| 37 | { "M25P16", 0x14, 0x10000, 32, }, | 37 | { "M25P16", 0x14, 0x10000, 32, }, |
| 38 | { "M25P32", 0x14, 0x10000, 64, }, | 38 | { "M25P32", 0x15, 0x10000, 64, }, |
| 39 | { "M25P64", 0x16, 0x10000, 128, }, | 39 | { "M25P64", 0x16, 0x10000, 128, }, |
| 40 | { "M25FL128", 0x17, 0x10000, 256, }, | 40 | { "M25FL128", 0x17, 0x10000, 256, }, |
| 41 | { 0 }, | 41 | { 0 }, |
diff --git a/drivers/net/ethernet/nvidia/forcedeth.c b/drivers/net/ethernet/nvidia/forcedeth.c index 653487dc7b52..87fa5919c455 100644 --- a/drivers/net/ethernet/nvidia/forcedeth.c +++ b/drivers/net/ethernet/nvidia/forcedeth.c | |||
| @@ -1821,6 +1821,11 @@ static int nv_alloc_rx(struct net_device *dev) | |||
| 1821 | skb->data, | 1821 | skb->data, |
| 1822 | skb_tailroom(skb), | 1822 | skb_tailroom(skb), |
| 1823 | PCI_DMA_FROMDEVICE); | 1823 | PCI_DMA_FROMDEVICE); |
| 1824 | if (pci_dma_mapping_error(np->pci_dev, | ||
| 1825 | np->put_rx_ctx->dma)) { | ||
| 1826 | kfree_skb(skb); | ||
| 1827 | goto packet_dropped; | ||
| 1828 | } | ||
| 1824 | np->put_rx_ctx->dma_len = skb_tailroom(skb); | 1829 | np->put_rx_ctx->dma_len = skb_tailroom(skb); |
| 1825 | np->put_rx.orig->buf = cpu_to_le32(np->put_rx_ctx->dma); | 1830 | np->put_rx.orig->buf = cpu_to_le32(np->put_rx_ctx->dma); |
| 1826 | wmb(); | 1831 | wmb(); |
| @@ -1830,6 +1835,7 @@ static int nv_alloc_rx(struct net_device *dev) | |||
| 1830 | if (unlikely(np->put_rx_ctx++ == np->last_rx_ctx)) | 1835 | if (unlikely(np->put_rx_ctx++ == np->last_rx_ctx)) |
| 1831 | np->put_rx_ctx = np->first_rx_ctx; | 1836 | np->put_rx_ctx = np->first_rx_ctx; |
| 1832 | } else { | 1837 | } else { |
| 1838 | packet_dropped: | ||
| 1833 | u64_stats_update_begin(&np->swstats_rx_syncp); | 1839 | u64_stats_update_begin(&np->swstats_rx_syncp); |
| 1834 | np->stat_rx_dropped++; | 1840 | np->stat_rx_dropped++; |
| 1835 | u64_stats_update_end(&np->swstats_rx_syncp); | 1841 | u64_stats_update_end(&np->swstats_rx_syncp); |
| @@ -1856,6 +1862,11 @@ static int nv_alloc_rx_optimized(struct net_device *dev) | |||
| 1856 | skb->data, | 1862 | skb->data, |
| 1857 | skb_tailroom(skb), | 1863 | skb_tailroom(skb), |
| 1858 | PCI_DMA_FROMDEVICE); | 1864 | PCI_DMA_FROMDEVICE); |
| 1865 | if (pci_dma_mapping_error(np->pci_dev, | ||
| 1866 | np->put_rx_ctx->dma)) { | ||
| 1867 | kfree_skb(skb); | ||
| 1868 | goto packet_dropped; | ||
| 1869 | } | ||
| 1859 | np->put_rx_ctx->dma_len = skb_tailroom(skb); | 1870 | np->put_rx_ctx->dma_len = skb_tailroom(skb); |
| 1860 | np->put_rx.ex->bufhigh = cpu_to_le32(dma_high(np->put_rx_ctx->dma)); | 1871 | np->put_rx.ex->bufhigh = cpu_to_le32(dma_high(np->put_rx_ctx->dma)); |
| 1861 | np->put_rx.ex->buflow = cpu_to_le32(dma_low(np->put_rx_ctx->dma)); | 1872 | np->put_rx.ex->buflow = cpu_to_le32(dma_low(np->put_rx_ctx->dma)); |
| @@ -1866,6 +1877,7 @@ static int nv_alloc_rx_optimized(struct net_device *dev) | |||
| 1866 | if (unlikely(np->put_rx_ctx++ == np->last_rx_ctx)) | 1877 | if (unlikely(np->put_rx_ctx++ == np->last_rx_ctx)) |
| 1867 | np->put_rx_ctx = np->first_rx_ctx; | 1878 | np->put_rx_ctx = np->first_rx_ctx; |
| 1868 | } else { | 1879 | } else { |
| 1880 | packet_dropped: | ||
| 1869 | u64_stats_update_begin(&np->swstats_rx_syncp); | 1881 | u64_stats_update_begin(&np->swstats_rx_syncp); |
| 1870 | np->stat_rx_dropped++; | 1882 | np->stat_rx_dropped++; |
| 1871 | u64_stats_update_end(&np->swstats_rx_syncp); | 1883 | u64_stats_update_end(&np->swstats_rx_syncp); |
| @@ -2217,6 +2229,15 @@ static netdev_tx_t nv_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 2217 | bcnt = (size > NV_TX2_TSO_MAX_SIZE) ? NV_TX2_TSO_MAX_SIZE : size; | 2229 | bcnt = (size > NV_TX2_TSO_MAX_SIZE) ? NV_TX2_TSO_MAX_SIZE : size; |
| 2218 | np->put_tx_ctx->dma = pci_map_single(np->pci_dev, skb->data + offset, bcnt, | 2230 | np->put_tx_ctx->dma = pci_map_single(np->pci_dev, skb->data + offset, bcnt, |
| 2219 | PCI_DMA_TODEVICE); | 2231 | PCI_DMA_TODEVICE); |
| 2232 | if (pci_dma_mapping_error(np->pci_dev, | ||
| 2233 | np->put_tx_ctx->dma)) { | ||
| 2234 | /* on DMA mapping error - drop the packet */ | ||
| 2235 | kfree_skb(skb); | ||
| 2236 | u64_stats_update_begin(&np->swstats_tx_syncp); | ||
| 2237 | np->stat_tx_dropped++; | ||
| 2238 | u64_stats_update_end(&np->swstats_tx_syncp); | ||
| 2239 | return NETDEV_TX_OK; | ||
| 2240 | } | ||
| 2220 | np->put_tx_ctx->dma_len = bcnt; | 2241 | np->put_tx_ctx->dma_len = bcnt; |
| 2221 | np->put_tx_ctx->dma_single = 1; | 2242 | np->put_tx_ctx->dma_single = 1; |
| 2222 | put_tx->buf = cpu_to_le32(np->put_tx_ctx->dma); | 2243 | put_tx->buf = cpu_to_le32(np->put_tx_ctx->dma); |
| @@ -2337,6 +2358,15 @@ static netdev_tx_t nv_start_xmit_optimized(struct sk_buff *skb, | |||
| 2337 | bcnt = (size > NV_TX2_TSO_MAX_SIZE) ? NV_TX2_TSO_MAX_SIZE : size; | 2358 | bcnt = (size > NV_TX2_TSO_MAX_SIZE) ? NV_TX2_TSO_MAX_SIZE : size; |
| 2338 | np->put_tx_ctx->dma = pci_map_single(np->pci_dev, skb->data + offset, bcnt, | 2359 | np->put_tx_ctx->dma = pci_map_single(np->pci_dev, skb->data + offset, bcnt, |
| 2339 | PCI_DMA_TODEVICE); | 2360 | PCI_DMA_TODEVICE); |
| 2361 | if (pci_dma_mapping_error(np->pci_dev, | ||
| 2362 | np->put_tx_ctx->dma)) { | ||
| 2363 | /* on DMA mapping error - drop the packet */ | ||
| 2364 | kfree_skb(skb); | ||
| 2365 | u64_stats_update_begin(&np->swstats_tx_syncp); | ||
| 2366 | np->stat_tx_dropped++; | ||
| 2367 | u64_stats_update_end(&np->swstats_tx_syncp); | ||
| 2368 | return NETDEV_TX_OK; | ||
| 2369 | } | ||
| 2340 | np->put_tx_ctx->dma_len = bcnt; | 2370 | np->put_tx_ctx->dma_len = bcnt; |
| 2341 | np->put_tx_ctx->dma_single = 1; | 2371 | np->put_tx_ctx->dma_single = 1; |
| 2342 | put_tx->bufhigh = cpu_to_le32(dma_high(np->put_tx_ctx->dma)); | 2372 | put_tx->bufhigh = cpu_to_le32(dma_high(np->put_tx_ctx->dma)); |
| @@ -5003,6 +5033,11 @@ static int nv_loopback_test(struct net_device *dev) | |||
| 5003 | test_dma_addr = pci_map_single(np->pci_dev, tx_skb->data, | 5033 | test_dma_addr = pci_map_single(np->pci_dev, tx_skb->data, |
| 5004 | skb_tailroom(tx_skb), | 5034 | skb_tailroom(tx_skb), |
| 5005 | PCI_DMA_FROMDEVICE); | 5035 | PCI_DMA_FROMDEVICE); |
| 5036 | if (pci_dma_mapping_error(np->pci_dev, | ||
| 5037 | test_dma_addr)) { | ||
| 5038 | dev_kfree_skb_any(tx_skb); | ||
| 5039 | goto out; | ||
| 5040 | } | ||
| 5006 | pkt_data = skb_put(tx_skb, pkt_len); | 5041 | pkt_data = skb_put(tx_skb, pkt_len); |
| 5007 | for (i = 0; i < pkt_len; i++) | 5042 | for (i = 0; i < pkt_len; i++) |
| 5008 | pkt_data[i] = (u8)(i & 0xff); | 5043 | pkt_data[i] = (u8)(i & 0xff); |
diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c index 91d7cb9728eb..6a1ca500e612 100644 --- a/drivers/net/usb/qmi_wwan.c +++ b/drivers/net/usb/qmi_wwan.c | |||
| @@ -458,6 +458,7 @@ static const struct usb_device_id products[] = { | |||
| 458 | {QMI_FIXED_INTF(0x1199, 0x68a2, 8)}, /* Sierra Wireless MC7710 in QMI mode */ | 458 | {QMI_FIXED_INTF(0x1199, 0x68a2, 8)}, /* Sierra Wireless MC7710 in QMI mode */ |
| 459 | {QMI_FIXED_INTF(0x1199, 0x68a2, 19)}, /* Sierra Wireless MC7710 in QMI mode */ | 459 | {QMI_FIXED_INTF(0x1199, 0x68a2, 19)}, /* Sierra Wireless MC7710 in QMI mode */ |
| 460 | {QMI_FIXED_INTF(0x1199, 0x901c, 8)}, /* Sierra Wireless EM7700 */ | 460 | {QMI_FIXED_INTF(0x1199, 0x901c, 8)}, /* Sierra Wireless EM7700 */ |
| 461 | {QMI_FIXED_INTF(0x1bbb, 0x011e, 4)}, /* Telekom Speedstick LTE II (Alcatel One Touch L100V LTE) */ | ||
| 461 | 462 | ||
| 462 | /* 4. Gobi 1000 devices */ | 463 | /* 4. Gobi 1000 devices */ |
| 463 | {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */ | 464 | {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */ |
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c index 40f2cc135a49..656230e0d18c 100644 --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c | |||
| @@ -1191,6 +1191,7 @@ static void vxlan_setup(struct net_device *dev) | |||
| 1191 | 1191 | ||
| 1192 | dev->hw_features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXCSUM; | 1192 | dev->hw_features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXCSUM; |
| 1193 | dev->priv_flags &= ~IFF_XMIT_DST_RELEASE; | 1193 | dev->priv_flags &= ~IFF_XMIT_DST_RELEASE; |
| 1194 | dev->priv_flags |= IFF_LIVE_ADDR_CHANGE; | ||
| 1194 | 1195 | ||
| 1195 | spin_lock_init(&vxlan->hash_lock); | 1196 | spin_lock_init(&vxlan->hash_lock); |
| 1196 | 1197 | ||
diff --git a/drivers/net/wireless/ath/ath9k/Kconfig b/drivers/net/wireless/ath/ath9k/Kconfig index 5fc15bf8be09..7647ed6b73d7 100644 --- a/drivers/net/wireless/ath/ath9k/Kconfig +++ b/drivers/net/wireless/ath/ath9k/Kconfig | |||
| @@ -2,6 +2,7 @@ config ATH9K_HW | |||
| 2 | tristate | 2 | tristate |
| 3 | config ATH9K_COMMON | 3 | config ATH9K_COMMON |
| 4 | tristate | 4 | tristate |
| 5 | select ATH_COMMON | ||
| 5 | config ATH9K_DFS_DEBUGFS | 6 | config ATH9K_DFS_DEBUGFS |
| 6 | def_bool y | 7 | def_bool y |
| 7 | depends on ATH9K_DEBUGFS && ATH9K_DFS_CERTIFIED | 8 | depends on ATH9K_DEBUGFS && ATH9K_DFS_CERTIFIED |
| @@ -17,7 +18,6 @@ config ATH9K_BTCOEX_SUPPORT | |||
| 17 | config ATH9K | 18 | config ATH9K |
| 18 | tristate "Atheros 802.11n wireless cards support" | 19 | tristate "Atheros 802.11n wireless cards support" |
| 19 | depends on MAC80211 | 20 | depends on MAC80211 |
| 20 | select ATH_COMMON | ||
| 21 | select ATH9K_HW | 21 | select ATH9K_HW |
| 22 | select MAC80211_LEDS | 22 | select MAC80211_LEDS |
| 23 | select LEDS_CLASS | 23 | select LEDS_CLASS |
| @@ -56,7 +56,8 @@ config ATH9K_AHB | |||
| 56 | 56 | ||
| 57 | config ATH9K_DEBUGFS | 57 | config ATH9K_DEBUGFS |
| 58 | bool "Atheros ath9k debugging" | 58 | bool "Atheros ath9k debugging" |
| 59 | depends on ATH9K && DEBUG_FS | 59 | depends on ATH9K |
| 60 | select MAC80211_DEBUGFS | ||
| 60 | ---help--- | 61 | ---help--- |
| 61 | Say Y, if you need access to ath9k's statistics for | 62 | Say Y, if you need access to ath9k's statistics for |
| 62 | interrupts, rate control, etc. | 63 | interrupts, rate control, etc. |
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_hw.c b/drivers/net/wireless/ath/ath9k/ar9003_hw.c index 74fd3977feeb..59bf5f31e212 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_hw.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_hw.c | |||
| @@ -544,7 +544,7 @@ static void ar9003_rx_gain_table_mode0(struct ath_hw *ah) | |||
| 544 | ar9340Common_rx_gain_table_1p0); | 544 | ar9340Common_rx_gain_table_1p0); |
| 545 | else if (AR_SREV_9485_11(ah)) | 545 | else if (AR_SREV_9485_11(ah)) |
| 546 | INIT_INI_ARRAY(&ah->iniModesRxGain, | 546 | INIT_INI_ARRAY(&ah->iniModesRxGain, |
| 547 | ar9485Common_wo_xlna_rx_gain_1_1); | 547 | ar9485_common_rx_gain_1_1); |
| 548 | else if (AR_SREV_9550(ah)) { | 548 | else if (AR_SREV_9550(ah)) { |
| 549 | INIT_INI_ARRAY(&ah->iniModesRxGain, | 549 | INIT_INI_ARRAY(&ah->iniModesRxGain, |
| 550 | ar955x_1p0_common_rx_gain_table); | 550 | ar955x_1p0_common_rx_gain_table); |
diff --git a/drivers/net/wireless/ath/carl9170/fw.c b/drivers/net/wireless/ath/carl9170/fw.c index aaebecd19e59..63fd9af3fd39 100644 --- a/drivers/net/wireless/ath/carl9170/fw.c +++ b/drivers/net/wireless/ath/carl9170/fw.c | |||
| @@ -336,8 +336,12 @@ static int carl9170_fw(struct ar9170 *ar, const __u8 *data, size_t len) | |||
| 336 | if (SUPP(CARL9170FW_WLANTX_CAB)) { | 336 | if (SUPP(CARL9170FW_WLANTX_CAB)) { |
| 337 | if_comb_types |= | 337 | if_comb_types |= |
| 338 | BIT(NL80211_IFTYPE_AP) | | 338 | BIT(NL80211_IFTYPE_AP) | |
| 339 | BIT(NL80211_IFTYPE_MESH_POINT) | | ||
| 340 | BIT(NL80211_IFTYPE_P2P_GO); | 339 | BIT(NL80211_IFTYPE_P2P_GO); |
| 340 | |||
| 341 | #ifdef CONFIG_MAC80211_MESH | ||
| 342 | if_comb_types |= | ||
| 343 | BIT(NL80211_IFTYPE_MESH_POINT); | ||
| 344 | #endif /* CONFIG_MAC80211_MESH */ | ||
| 341 | } | 345 | } |
| 342 | } | 346 | } |
| 343 | 347 | ||
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c index 1261a9b84e04..75464ad4fbd1 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c | |||
| @@ -3091,10 +3091,11 @@ brcmf_configure_wpaie(struct net_device *ndev, struct brcmf_vs_tlv *wpa_ie, | |||
| 3091 | 3091 | ||
| 3092 | len = wpa_ie->len + TLV_HDR_LEN; | 3092 | len = wpa_ie->len + TLV_HDR_LEN; |
| 3093 | data = (u8 *)wpa_ie; | 3093 | data = (u8 *)wpa_ie; |
| 3094 | offset = 0; | 3094 | offset = TLV_HDR_LEN; |
| 3095 | if (!is_rsn_ie) | 3095 | if (!is_rsn_ie) |
| 3096 | offset += VS_IE_FIXED_HDR_LEN; | 3096 | offset += VS_IE_FIXED_HDR_LEN; |
| 3097 | offset += WPA_IE_VERSION_LEN; | 3097 | else |
| 3098 | offset += WPA_IE_VERSION_LEN; | ||
| 3098 | 3099 | ||
| 3099 | /* check for multicast cipher suite */ | 3100 | /* check for multicast cipher suite */ |
| 3100 | if (offset + WPA_IE_MIN_OUI_LEN > len) { | 3101 | if (offset + WPA_IE_MIN_OUI_LEN > len) { |
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/debug.h b/drivers/net/wireless/brcm80211/brcmsmac/debug.h index 796836b0f469..822781cf15d4 100644 --- a/drivers/net/wireless/brcm80211/brcmsmac/debug.h +++ b/drivers/net/wireless/brcm80211/brcmsmac/debug.h | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2012 Broadcom Corporation | 2 | * Copyright (c) 2012 Broadcom Corporation |
| 3 | * Copyright (c) 2012 Canonical Ltd. | ||
| 3 | * | 4 | * |
| 4 | * Permission to use, copy, modify, and/or distribute this software for any | 5 | * Permission to use, copy, modify, and/or distribute this software for any |
| 5 | * purpose with or without fee is hereby granted, provided that the above | 6 | * purpose with or without fee is hereby granted, provided that the above |
diff --git a/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c b/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c index 606b534347bc..21a824232478 100644 --- a/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/phy/phy_lcn.c | |||
| @@ -1343,13 +1343,13 @@ static bool wlc_lcnphy_rx_iq_cal_gain(struct brcms_phy *pi, u16 biq1_gain, | |||
| 1343 | 1343 | ||
| 1344 | wlc_lcnphy_rx_gain_override_enable(pi, true); | 1344 | wlc_lcnphy_rx_gain_override_enable(pi, true); |
| 1345 | wlc_lcnphy_start_tx_tone(pi, 2000, (40 >> 1), 0); | 1345 | wlc_lcnphy_start_tx_tone(pi, 2000, (40 >> 1), 0); |
| 1346 | usleep_range(500, 500); | 1346 | udelay(500); |
| 1347 | write_radio_reg(pi, RADIO_2064_REG112, 0); | 1347 | write_radio_reg(pi, RADIO_2064_REG112, 0); |
| 1348 | if (!wlc_lcnphy_rx_iq_est(pi, 1024, 32, &iq_est_l)) | 1348 | if (!wlc_lcnphy_rx_iq_est(pi, 1024, 32, &iq_est_l)) |
| 1349 | return false; | 1349 | return false; |
| 1350 | 1350 | ||
| 1351 | wlc_lcnphy_start_tx_tone(pi, 2000, 40, 0); | 1351 | wlc_lcnphy_start_tx_tone(pi, 2000, 40, 0); |
| 1352 | usleep_range(500, 500); | 1352 | udelay(500); |
| 1353 | write_radio_reg(pi, RADIO_2064_REG112, 0); | 1353 | write_radio_reg(pi, RADIO_2064_REG112, 0); |
| 1354 | if (!wlc_lcnphy_rx_iq_est(pi, 1024, 32, &iq_est_h)) | 1354 | if (!wlc_lcnphy_rx_iq_est(pi, 1024, 32, &iq_est_h)) |
| 1355 | return false; | 1355 | return false; |
diff --git a/drivers/net/wireless/p54/p54usb.c b/drivers/net/wireless/p54/p54usb.c index e71c702e2eb1..800a16526c8e 100644 --- a/drivers/net/wireless/p54/p54usb.c +++ b/drivers/net/wireless/p54/p54usb.c | |||
| @@ -47,6 +47,7 @@ static struct usb_device_id p54u_table[] = { | |||
| 47 | {USB_DEVICE(0x0411, 0x0050)}, /* Buffalo WLI2-USB2-G54 */ | 47 | {USB_DEVICE(0x0411, 0x0050)}, /* Buffalo WLI2-USB2-G54 */ |
| 48 | {USB_DEVICE(0x045e, 0x00c2)}, /* Microsoft MN-710 */ | 48 | {USB_DEVICE(0x045e, 0x00c2)}, /* Microsoft MN-710 */ |
| 49 | {USB_DEVICE(0x0506, 0x0a11)}, /* 3COM 3CRWE254G72 */ | 49 | {USB_DEVICE(0x0506, 0x0a11)}, /* 3COM 3CRWE254G72 */ |
| 50 | {USB_DEVICE(0x0675, 0x0530)}, /* DrayTek Vigor 530 */ | ||
| 50 | {USB_DEVICE(0x06b9, 0x0120)}, /* Thomson SpeedTouch 120g */ | 51 | {USB_DEVICE(0x06b9, 0x0120)}, /* Thomson SpeedTouch 120g */ |
| 51 | {USB_DEVICE(0x0707, 0xee06)}, /* SMC 2862W-G */ | 52 | {USB_DEVICE(0x0707, 0xee06)}, /* SMC 2862W-G */ |
| 52 | {USB_DEVICE(0x07aa, 0x001c)}, /* Corega CG-WLUSB2GT */ | 53 | {USB_DEVICE(0x07aa, 0x001c)}, /* Corega CG-WLUSB2GT */ |
| @@ -82,6 +83,8 @@ static struct usb_device_id p54u_table[] = { | |||
| 82 | {USB_DEVICE(0x06a9, 0x000e)}, /* Westell 802.11g USB (A90-211WG-01) */ | 83 | {USB_DEVICE(0x06a9, 0x000e)}, /* Westell 802.11g USB (A90-211WG-01) */ |
| 83 | {USB_DEVICE(0x06b9, 0x0121)}, /* Thomson SpeedTouch 121g */ | 84 | {USB_DEVICE(0x06b9, 0x0121)}, /* Thomson SpeedTouch 121g */ |
| 84 | {USB_DEVICE(0x0707, 0xee13)}, /* SMC 2862W-G version 2 */ | 85 | {USB_DEVICE(0x0707, 0xee13)}, /* SMC 2862W-G version 2 */ |
| 86 | {USB_DEVICE(0x0803, 0x4310)}, /* Zoom 4410a */ | ||
| 87 | {USB_DEVICE(0x083a, 0x4503)}, /* T-Com Sinus 154 data II */ | ||
| 85 | {USB_DEVICE(0x083a, 0x4521)}, /* Siemens Gigaset USB Adapter 54 version 2 */ | 88 | {USB_DEVICE(0x083a, 0x4521)}, /* Siemens Gigaset USB Adapter 54 version 2 */ |
| 86 | {USB_DEVICE(0x083a, 0xc501)}, /* Zoom Wireless-G 4410 */ | 89 | {USB_DEVICE(0x083a, 0xc501)}, /* Zoom Wireless-G 4410 */ |
| 87 | {USB_DEVICE(0x083a, 0xf503)}, /* Accton FD7050E ver 1010ec */ | 90 | {USB_DEVICE(0x083a, 0xf503)}, /* Accton FD7050E ver 1010ec */ |
| @@ -101,6 +104,7 @@ static struct usb_device_id p54u_table[] = { | |||
| 101 | {USB_DEVICE(0x13B1, 0x000C)}, /* Linksys WUSB54AG */ | 104 | {USB_DEVICE(0x13B1, 0x000C)}, /* Linksys WUSB54AG */ |
| 102 | {USB_DEVICE(0x1413, 0x5400)}, /* Telsey 802.11g USB2.0 Adapter */ | 105 | {USB_DEVICE(0x1413, 0x5400)}, /* Telsey 802.11g USB2.0 Adapter */ |
| 103 | {USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */ | 106 | {USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */ |
| 107 | /* {USB_DEVICE(0x15a9, 0x0002)}, * Also SparkLAN WL-682 with 3887 */ | ||
| 104 | {USB_DEVICE(0x1668, 0x1050)}, /* Actiontec 802UIG-1 */ | 108 | {USB_DEVICE(0x1668, 0x1050)}, /* Actiontec 802UIG-1 */ |
| 105 | {USB_DEVICE(0x1740, 0x1000)}, /* Senao NUB-350 */ | 109 | {USB_DEVICE(0x1740, 0x1000)}, /* Senao NUB-350 */ |
| 106 | {USB_DEVICE(0x2001, 0x3704)}, /* DLink DWL-G122 rev A2 */ | 110 | {USB_DEVICE(0x2001, 0x3704)}, /* DLink DWL-G122 rev A2 */ |
diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c index 3deacafdcd5e..4261e8ecc4c3 100644 --- a/drivers/net/wireless/rtlwifi/pci.c +++ b/drivers/net/wireless/rtlwifi/pci.c | |||
| @@ -743,6 +743,8 @@ static void _rtl_pci_rx_interrupt(struct ieee80211_hw *hw) | |||
| 743 | 743 | ||
| 744 | done: | 744 | done: |
| 745 | bufferaddress = (*((dma_addr_t *)skb->cb)); | 745 | bufferaddress = (*((dma_addr_t *)skb->cb)); |
| 746 | if (pci_dma_mapping_error(rtlpci->pdev, bufferaddress)) | ||
| 747 | return; | ||
| 746 | tmp_one = 1; | 748 | tmp_one = 1; |
| 747 | rtlpriv->cfg->ops->set_desc((u8 *) pdesc, false, | 749 | rtlpriv->cfg->ops->set_desc((u8 *) pdesc, false, |
| 748 | HW_DESC_RXBUFF_ADDR, | 750 | HW_DESC_RXBUFF_ADDR, |
| @@ -1115,6 +1117,10 @@ static int _rtl_pci_init_rx_ring(struct ieee80211_hw *hw) | |||
| 1115 | PCI_DMA_FROMDEVICE); | 1117 | PCI_DMA_FROMDEVICE); |
| 1116 | 1118 | ||
| 1117 | bufferaddress = (*((dma_addr_t *)skb->cb)); | 1119 | bufferaddress = (*((dma_addr_t *)skb->cb)); |
| 1120 | if (pci_dma_mapping_error(rtlpci->pdev, bufferaddress)) { | ||
| 1121 | dev_kfree_skb_any(skb); | ||
| 1122 | return 1; | ||
| 1123 | } | ||
| 1118 | rtlpriv->cfg->ops->set_desc((u8 *)entry, false, | 1124 | rtlpriv->cfg->ops->set_desc((u8 *)entry, false, |
| 1119 | HW_DESC_RXBUFF_ADDR, | 1125 | HW_DESC_RXBUFF_ADDR, |
| 1120 | (u8 *)&bufferaddress); | 1126 | (u8 *)&bufferaddress); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c index 173424756149..c31795e379f7 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c | |||
| @@ -611,8 +611,14 @@ void rtl92ce_tx_fill_desc(struct ieee80211_hw *hw, | |||
| 611 | dma_addr_t mapping = pci_map_single(rtlpci->pdev, | 611 | dma_addr_t mapping = pci_map_single(rtlpci->pdev, |
| 612 | skb->data, skb->len, | 612 | skb->data, skb->len, |
| 613 | PCI_DMA_TODEVICE); | 613 | PCI_DMA_TODEVICE); |
| 614 | |||
| 614 | u8 bw_40 = 0; | 615 | u8 bw_40 = 0; |
| 615 | 616 | ||
| 617 | if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { | ||
| 618 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, | ||
| 619 | "DMA mapping error"); | ||
| 620 | return; | ||
| 621 | } | ||
| 616 | rcu_read_lock(); | 622 | rcu_read_lock(); |
| 617 | sta = get_sta(hw, mac->vif, mac->bssid); | 623 | sta = get_sta(hw, mac->vif, mac->bssid); |
| 618 | if (mac->opmode == NL80211_IFTYPE_STATION) { | 624 | if (mac->opmode == NL80211_IFTYPE_STATION) { |
| @@ -774,6 +780,11 @@ void rtl92ce_tx_fill_cmddesc(struct ieee80211_hw *hw, | |||
| 774 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)(skb->data); | 780 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)(skb->data); |
| 775 | __le16 fc = hdr->frame_control; | 781 | __le16 fc = hdr->frame_control; |
| 776 | 782 | ||
| 783 | if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { | ||
| 784 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, | ||
| 785 | "DMA mapping error"); | ||
| 786 | return; | ||
| 787 | } | ||
| 777 | CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE); | 788 | CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE); |
| 778 | 789 | ||
| 779 | if (firstseg) | 790 | if (firstseg) |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/trx.c b/drivers/net/wireless/rtlwifi/rtl8192de/trx.c index f9f3861046c1..a0fbf284420e 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192de/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192de/trx.c | |||
| @@ -587,6 +587,11 @@ void rtl92de_tx_fill_desc(struct ieee80211_hw *hw, | |||
| 587 | buf_len = skb->len; | 587 | buf_len = skb->len; |
| 588 | mapping = pci_map_single(rtlpci->pdev, skb->data, skb->len, | 588 | mapping = pci_map_single(rtlpci->pdev, skb->data, skb->len, |
| 589 | PCI_DMA_TODEVICE); | 589 | PCI_DMA_TODEVICE); |
| 590 | if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { | ||
| 591 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, | ||
| 592 | "DMA mapping error"); | ||
| 593 | return; | ||
| 594 | } | ||
| 590 | CLEAR_PCI_TX_DESC_CONTENT(pdesc, sizeof(struct tx_desc_92d)); | 595 | CLEAR_PCI_TX_DESC_CONTENT(pdesc, sizeof(struct tx_desc_92d)); |
| 591 | if (ieee80211_is_nullfunc(fc) || ieee80211_is_ctl(fc)) { | 596 | if (ieee80211_is_nullfunc(fc) || ieee80211_is_ctl(fc)) { |
| 592 | firstseg = true; | 597 | firstseg = true; |
| @@ -740,6 +745,11 @@ void rtl92de_tx_fill_cmddesc(struct ieee80211_hw *hw, | |||
| 740 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)(skb->data); | 745 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)(skb->data); |
| 741 | __le16 fc = hdr->frame_control; | 746 | __le16 fc = hdr->frame_control; |
| 742 | 747 | ||
| 748 | if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { | ||
| 749 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, | ||
| 750 | "DMA mapping error"); | ||
| 751 | return; | ||
| 752 | } | ||
| 743 | CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE); | 753 | CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE); |
| 744 | if (firstseg) | 754 | if (firstseg) |
| 745 | SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN); | 755 | SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN); |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/trx.c b/drivers/net/wireless/rtlwifi/rtl8192se/trx.c index 0e9f6ebf078a..206561d7282f 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192se/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192se/trx.c | |||
| @@ -611,6 +611,11 @@ void rtl92se_tx_fill_desc(struct ieee80211_hw *hw, | |||
| 611 | PCI_DMA_TODEVICE); | 611 | PCI_DMA_TODEVICE); |
| 612 | u8 bw_40 = 0; | 612 | u8 bw_40 = 0; |
| 613 | 613 | ||
| 614 | if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { | ||
| 615 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, | ||
| 616 | "DMA mapping error"); | ||
| 617 | return; | ||
| 618 | } | ||
| 614 | if (mac->opmode == NL80211_IFTYPE_STATION) { | 619 | if (mac->opmode == NL80211_IFTYPE_STATION) { |
| 615 | bw_40 = mac->bw_40; | 620 | bw_40 = mac->bw_40; |
| 616 | } else if (mac->opmode == NL80211_IFTYPE_AP || | 621 | } else if (mac->opmode == NL80211_IFTYPE_AP || |
| @@ -763,6 +768,7 @@ void rtl92se_tx_fill_desc(struct ieee80211_hw *hw, | |||
| 763 | void rtl92se_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, | 768 | void rtl92se_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, |
| 764 | bool firstseg, bool lastseg, struct sk_buff *skb) | 769 | bool firstseg, bool lastseg, struct sk_buff *skb) |
| 765 | { | 770 | { |
| 771 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
| 766 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); | 772 | struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); |
| 767 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); | 773 | struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); |
| 768 | struct rtl_tcb_desc *tcb_desc = (struct rtl_tcb_desc *)(skb->cb); | 774 | struct rtl_tcb_desc *tcb_desc = (struct rtl_tcb_desc *)(skb->cb); |
| @@ -770,7 +776,12 @@ void rtl92se_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, | |||
| 770 | dma_addr_t mapping = pci_map_single(rtlpci->pdev, skb->data, skb->len, | 776 | dma_addr_t mapping = pci_map_single(rtlpci->pdev, skb->data, skb->len, |
| 771 | PCI_DMA_TODEVICE); | 777 | PCI_DMA_TODEVICE); |
| 772 | 778 | ||
| 773 | /* Clear all status */ | 779 | if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { |
| 780 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, | ||
| 781 | "DMA mapping error"); | ||
| 782 | return; | ||
| 783 | } | ||
| 784 | /* Clear all status */ | ||
| 774 | CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_CMDDESC_SIZE_RTL8192S); | 785 | CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_CMDDESC_SIZE_RTL8192S); |
| 775 | 786 | ||
| 776 | /* This bit indicate this packet is used for FW download. */ | 787 | /* This bit indicate this packet is used for FW download. */ |
diff --git a/drivers/net/wireless/rtlwifi/rtl8723ae/trx.c b/drivers/net/wireless/rtlwifi/rtl8723ae/trx.c index 87331d826d73..a313be8c21d2 100644 --- a/drivers/net/wireless/rtlwifi/rtl8723ae/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8723ae/trx.c | |||
| @@ -387,6 +387,11 @@ void rtl8723ae_tx_fill_desc(struct ieee80211_hw *hw, | |||
| 387 | PCI_DMA_TODEVICE); | 387 | PCI_DMA_TODEVICE); |
| 388 | u8 bw_40 = 0; | 388 | u8 bw_40 = 0; |
| 389 | 389 | ||
| 390 | if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { | ||
| 391 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, | ||
| 392 | "DMA mapping error"); | ||
| 393 | return; | ||
| 394 | } | ||
| 390 | if (mac->opmode == NL80211_IFTYPE_STATION) { | 395 | if (mac->opmode == NL80211_IFTYPE_STATION) { |
| 391 | bw_40 = mac->bw_40; | 396 | bw_40 = mac->bw_40; |
| 392 | } else if (mac->opmode == NL80211_IFTYPE_AP || | 397 | } else if (mac->opmode == NL80211_IFTYPE_AP || |
| @@ -542,6 +547,11 @@ void rtl8723ae_tx_fill_cmddesc(struct ieee80211_hw *hw, | |||
| 542 | PCI_DMA_TODEVICE); | 547 | PCI_DMA_TODEVICE); |
| 543 | __le16 fc = hdr->frame_control; | 548 | __le16 fc = hdr->frame_control; |
| 544 | 549 | ||
| 550 | if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { | ||
| 551 | RT_TRACE(rtlpriv, COMP_SEND, DBG_TRACE, | ||
| 552 | "DMA mapping error"); | ||
| 553 | return; | ||
| 554 | } | ||
| 545 | CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE); | 555 | CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE); |
| 546 | 556 | ||
| 547 | if (firstseg) | 557 | if (firstseg) |
diff --git a/drivers/net/wireless/rtlwifi/usb.c b/drivers/net/wireless/rtlwifi/usb.c index 29f0969e4ba0..f2ecdeb3a90d 100644 --- a/drivers/net/wireless/rtlwifi/usb.c +++ b/drivers/net/wireless/rtlwifi/usb.c | |||
| @@ -210,17 +210,16 @@ static void _usb_writeN_sync(struct rtl_priv *rtlpriv, u32 addr, void *data, | |||
| 210 | u16 index = REALTEK_USB_VENQT_CMD_IDX; | 210 | u16 index = REALTEK_USB_VENQT_CMD_IDX; |
| 211 | int pipe = usb_sndctrlpipe(udev, 0); /* write_out */ | 211 | int pipe = usb_sndctrlpipe(udev, 0); /* write_out */ |
| 212 | u8 *buffer; | 212 | u8 *buffer; |
| 213 | dma_addr_t dma_addr; | ||
| 214 | 213 | ||
| 215 | wvalue = (u16)(addr&0x0000ffff); | 214 | wvalue = (u16)(addr & 0x0000ffff); |
| 216 | buffer = usb_alloc_coherent(udev, (size_t)len, GFP_ATOMIC, &dma_addr); | 215 | buffer = kmalloc(len, GFP_ATOMIC); |
| 217 | if (!buffer) | 216 | if (!buffer) |
| 218 | return; | 217 | return; |
| 219 | memcpy(buffer, data, len); | 218 | memcpy(buffer, data, len); |
| 220 | usb_control_msg(udev, pipe, request, reqtype, wvalue, | 219 | usb_control_msg(udev, pipe, request, reqtype, wvalue, |
| 221 | index, buffer, len, 50); | 220 | index, buffer, len, 50); |
| 222 | 221 | ||
| 223 | usb_free_coherent(udev, (size_t)len, buffer, dma_addr); | 222 | kfree(buffer); |
| 224 | } | 223 | } |
| 225 | 224 | ||
| 226 | static void _rtl_usb_io_handler_init(struct device *dev, | 225 | static void _rtl_usb_io_handler_init(struct device *dev, |
| @@ -640,6 +639,7 @@ static int _rtl_usb_receive(struct ieee80211_hw *hw) | |||
| 640 | RT_TRACE(rtlpriv, COMP_USB, DBG_EMERG, | 639 | RT_TRACE(rtlpriv, COMP_USB, DBG_EMERG, |
| 641 | "Failed to prep_rx_urb!!\n"); | 640 | "Failed to prep_rx_urb!!\n"); |
| 642 | err = PTR_ERR(skb); | 641 | err = PTR_ERR(skb); |
| 642 | usb_free_urb(urb); | ||
| 643 | goto err_out; | 643 | goto err_out; |
| 644 | } | 644 | } |
| 645 | 645 | ||
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c index c26e28b4bd9f..7ffa43bd7cf9 100644 --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c | |||
| @@ -1015,29 +1015,10 @@ err: | |||
| 1015 | i = xennet_fill_frags(np, skb, &tmpq); | 1015 | i = xennet_fill_frags(np, skb, &tmpq); |
| 1016 | 1016 | ||
| 1017 | /* | 1017 | /* |
| 1018 | * Truesize approximates the size of true data plus | 1018 | * Truesize is the actual allocation size, even if the |
| 1019 | * any supervisor overheads. Adding hypervisor | 1019 | * allocation is only partially used. |
| 1020 | * overheads has been shown to significantly reduce | 1020 | */ |
| 1021 | * achievable bandwidth with the default receive | 1021 | skb->truesize += PAGE_SIZE * skb_shinfo(skb)->nr_frags; |
| 1022 | * buffer size. It is therefore not wise to account | ||
| 1023 | * for it here. | ||
| 1024 | * | ||
| 1025 | * After alloc_skb(RX_COPY_THRESHOLD), truesize is set | ||
| 1026 | * to RX_COPY_THRESHOLD + the supervisor | ||
| 1027 | * overheads. Here, we add the size of the data pulled | ||
| 1028 | * in xennet_fill_frags(). | ||
| 1029 | * | ||
| 1030 | * We also adjust for any unused space in the main | ||
| 1031 | * data area by subtracting (RX_COPY_THRESHOLD - | ||
| 1032 | * len). This is especially important with drivers | ||
| 1033 | * which split incoming packets into header and data, | ||
| 1034 | * using only 66 bytes of the main data area (see the | ||
| 1035 | * e1000 driver for example.) On such systems, | ||
| 1036 | * without this last adjustement, our achievable | ||
| 1037 | * receive throughout using the standard receive | ||
| 1038 | * buffer size was cut by 25%(!!!). | ||
| 1039 | */ | ||
| 1040 | skb->truesize += skb->data_len - RX_COPY_THRESHOLD; | ||
| 1041 | skb->len += skb->data_len; | 1022 | skb->len += skb->data_len; |
| 1042 | 1023 | ||
| 1043 | if (rx->flags & XEN_NETRXF_csum_blank) | 1024 | if (rx->flags & XEN_NETRXF_csum_blank) |
diff --git a/drivers/ssb/Kconfig b/drivers/ssb/Kconfig index ff3c8a21f10d..5d6f2ec1c705 100644 --- a/drivers/ssb/Kconfig +++ b/drivers/ssb/Kconfig | |||
| @@ -162,8 +162,7 @@ config SSB_DRIVER_GIGE | |||
| 162 | 162 | ||
| 163 | config SSB_DRIVER_GPIO | 163 | config SSB_DRIVER_GPIO |
| 164 | bool "SSB GPIO driver" | 164 | bool "SSB GPIO driver" |
| 165 | depends on SSB | 165 | depends on SSB && GPIOLIB |
| 166 | select GPIOLIB | ||
| 167 | help | 166 | help |
| 168 | Driver to provide access to the GPIO pins on the bus. | 167 | Driver to provide access to the GPIO pins on the bus. |
| 169 | 168 | ||
