mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-13 15:53:56 +08:00
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
This commit is contained in:
commit
eca6fc7836
@ -48,6 +48,7 @@
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/cache.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/pci-aspm.h>
|
||||
#include <linux/ethtool.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/slab.h>
|
||||
@ -476,6 +477,26 @@ ath5k_pci_probe(struct pci_dev *pdev,
|
||||
int ret;
|
||||
u8 csz;
|
||||
|
||||
/*
|
||||
* L0s needs to be disabled on all ath5k cards.
|
||||
*
|
||||
* For distributions shipping with CONFIG_PCIEASPM (this will be enabled
|
||||
* by default in the future in 2.6.36) this will also mean both L1 and
|
||||
* L0s will be disabled when a pre 1.1 PCIe device is detected. We do
|
||||
* know L1 works correctly even for all ath5k pre 1.1 PCIe devices
|
||||
* though but cannot currently undue the effect of a blacklist, for
|
||||
* details you can read pcie_aspm_sanity_check() and see how it adjusts
|
||||
* the device link capability.
|
||||
*
|
||||
* It may be possible in the future to implement some PCI API to allow
|
||||
* drivers to override blacklists for pre 1.1 PCIe but for now it is
|
||||
* best to accept that both L0s and L1 will be disabled completely for
|
||||
* distributions shipping with CONFIG_PCIEASPM rather than having this
|
||||
* issue present. Motivation for adding this new API will be to help
|
||||
* with power consumption for some of these devices.
|
||||
*/
|
||||
pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S);
|
||||
|
||||
ret = pci_enable_device(pdev);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "can't enable device\n");
|
||||
|
@ -191,6 +191,7 @@
|
||||
#define AR9287_EEP_NO_BACK_VER AR9287_EEP_MINOR_VER_1
|
||||
|
||||
#define AR9287_EEP_START_LOC 128
|
||||
#define AR9287_HTC_EEP_START_LOC 256
|
||||
#define AR9287_NUM_2G_CAL_PIERS 3
|
||||
#define AR9287_NUM_2G_CCK_TARGET_POWERS 3
|
||||
#define AR9287_NUM_2G_20_TARGET_POWERS 3
|
||||
|
@ -34,9 +34,14 @@ static bool ath9k_hw_ar9287_fill_eeprom(struct ath_hw *ah)
|
||||
struct ar9287_eeprom *eep = &ah->eeprom.map9287;
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
u16 *eep_data;
|
||||
int addr, eep_start_loc = AR9287_EEP_START_LOC;
|
||||
int addr, eep_start_loc;
|
||||
eep_data = (u16 *)eep;
|
||||
|
||||
if (ah->hw_version.devid == 0x7015)
|
||||
eep_start_loc = AR9287_HTC_EEP_START_LOC;
|
||||
else
|
||||
eep_start_loc = AR9287_EEP_START_LOC;
|
||||
|
||||
if (!ath9k_hw_use_flash(ah)) {
|
||||
ath_print(common, ATH_DBG_EEPROM,
|
||||
"Reading from EEPROM, not flash\n");
|
||||
|
@ -799,7 +799,7 @@ static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev)
|
||||
}
|
||||
kfree(buf);
|
||||
|
||||
if (hif_dev->device_id == 0x7010)
|
||||
if ((hif_dev->device_id == 0x7010) || (hif_dev->device_id == 0x7015))
|
||||
firm_offset = AR7010_FIRMWARE_TEXT;
|
||||
else
|
||||
firm_offset = AR9271_FIRMWARE_TEXT;
|
||||
@ -901,6 +901,7 @@ static int ath9k_hif_usb_probe(struct usb_interface *interface,
|
||||
|
||||
switch(hif_dev->device_id) {
|
||||
case 0x7010:
|
||||
case 0x7015:
|
||||
case 0x9018:
|
||||
if (le16_to_cpu(udev->descriptor.bcdDevice) == 0x0202)
|
||||
hif_dev->fw_name = FIRMWARE_AR7010_1_1;
|
||||
@ -912,11 +913,6 @@ static int ath9k_hif_usb_probe(struct usb_interface *interface,
|
||||
break;
|
||||
}
|
||||
|
||||
if (!hif_dev->fw_name) {
|
||||
dev_err(&udev->dev, "Can't determine firmware !\n");
|
||||
goto err_htc_hw_alloc;
|
||||
}
|
||||
|
||||
ret = ath9k_hif_usb_dev_init(hif_dev);
|
||||
if (ret) {
|
||||
ret = -EINVAL;
|
||||
|
@ -245,6 +245,7 @@ static int ath9k_init_htc_services(struct ath9k_htc_priv *priv, u16 devid)
|
||||
|
||||
switch(devid) {
|
||||
case 0x7010:
|
||||
case 0x7015:
|
||||
case 0x9018:
|
||||
priv->htc->credits = 45;
|
||||
break;
|
||||
|
@ -366,7 +366,8 @@ static void ath9k_htc_setup_rate(struct ath9k_htc_priv *priv,
|
||||
caps = WLAN_RC_HT_FLAG;
|
||||
if (sta->ht_cap.mcs.rx_mask[1])
|
||||
caps |= WLAN_RC_DS_FLAG;
|
||||
if (sta->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40)
|
||||
if ((sta->ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40) &&
|
||||
(conf_is_ht40(&priv->hw->conf)))
|
||||
caps |= WLAN_RC_40_FLAG;
|
||||
if (conf_is_ht40(&priv->hw->conf) &&
|
||||
(sta->ht_cap.cap & IEEE80211_HT_CAP_SGI_40))
|
||||
|
@ -78,18 +78,23 @@ int ath9k_htc_tx_start(struct ath9k_htc_priv *priv, struct sk_buff *skb)
|
||||
struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
|
||||
struct ieee80211_sta *sta = tx_info->control.sta;
|
||||
struct ath9k_htc_sta *ista;
|
||||
struct ath9k_htc_vif *avp;
|
||||
struct ath9k_htc_tx_ctl tx_ctl;
|
||||
enum htc_endpoint_id epid;
|
||||
u16 qnum;
|
||||
__le16 fc;
|
||||
u8 *tx_fhdr;
|
||||
u8 sta_idx;
|
||||
u8 sta_idx, vif_idx;
|
||||
|
||||
hdr = (struct ieee80211_hdr *) skb->data;
|
||||
fc = hdr->frame_control;
|
||||
|
||||
avp = (struct ath9k_htc_vif *) tx_info->control.vif->drv_priv;
|
||||
if (tx_info->control.vif &&
|
||||
(struct ath9k_htc_vif *) tx_info->control.vif->drv_priv)
|
||||
vif_idx = ((struct ath9k_htc_vif *)
|
||||
tx_info->control.vif->drv_priv)->index;
|
||||
else
|
||||
vif_idx = priv->nvifs;
|
||||
|
||||
if (sta) {
|
||||
ista = (struct ath9k_htc_sta *) sta->drv_priv;
|
||||
sta_idx = ista->index;
|
||||
@ -106,7 +111,7 @@ int ath9k_htc_tx_start(struct ath9k_htc_priv *priv, struct sk_buff *skb)
|
||||
memset(&tx_hdr, 0, sizeof(struct tx_frame_hdr));
|
||||
|
||||
tx_hdr.node_idx = sta_idx;
|
||||
tx_hdr.vif_idx = avp->index;
|
||||
tx_hdr.vif_idx = vif_idx;
|
||||
|
||||
if (tx_info->flags & IEEE80211_TX_CTL_AMPDU) {
|
||||
tx_ctl.type = ATH9K_HTC_AMPDU;
|
||||
@ -169,7 +174,7 @@ int ath9k_htc_tx_start(struct ath9k_htc_priv *priv, struct sk_buff *skb)
|
||||
tx_ctl.type = ATH9K_HTC_NORMAL;
|
||||
|
||||
mgmt_hdr.node_idx = sta_idx;
|
||||
mgmt_hdr.vif_idx = avp->index;
|
||||
mgmt_hdr.vif_idx = vif_idx;
|
||||
mgmt_hdr.tidno = 0;
|
||||
mgmt_hdr.flags = 0;
|
||||
|
||||
|
@ -899,6 +899,7 @@
|
||||
|
||||
#define AR_DEVID_7010(_ah) \
|
||||
(((_ah)->hw_version.devid == 0x7010) || \
|
||||
((_ah)->hw_version.devid == 0x7015) || \
|
||||
((_ah)->hw_version.devid == 0x9018))
|
||||
|
||||
#define AR_RADIO_SREV_MAJOR 0xf0
|
||||
|
@ -6665,12 +6665,13 @@ static int __init ipw2100_init(void)
|
||||
printk(KERN_INFO DRV_NAME ": %s, %s\n", DRV_DESCRIPTION, DRV_VERSION);
|
||||
printk(KERN_INFO DRV_NAME ": %s\n", DRV_COPYRIGHT);
|
||||
|
||||
pm_qos_add_request(&ipw2100_pm_qos_req, PM_QOS_CPU_DMA_LATENCY,
|
||||
PM_QOS_DEFAULT_VALUE);
|
||||
|
||||
ret = pci_register_driver(&ipw2100_pci_driver);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
pm_qos_add_request(&ipw2100_pm_qos_req, PM_QOS_CPU_DMA_LATENCY,
|
||||
PM_QOS_DEFAULT_VALUE);
|
||||
#ifdef CONFIG_IPW2100_DEBUG
|
||||
ipw2100_debug_level = debug;
|
||||
ret = driver_create_file(&ipw2100_pci_driver.driver,
|
||||
|
@ -484,7 +484,7 @@ int wl1251_cmd_trigger_scan_to(struct wl1251 *wl, u32 timeout)
|
||||
|
||||
cmd->timeout = timeout;
|
||||
|
||||
ret = wl1251_cmd_send(wl, CMD_SCAN, cmd, sizeof(*cmd));
|
||||
ret = wl1251_cmd_send(wl, CMD_TRIGGER_SCAN_TO, cmd, sizeof(*cmd));
|
||||
if (ret < 0) {
|
||||
wl1251_error("cmd trigger scan to failed: %d", ret);
|
||||
goto out;
|
||||
|
@ -2580,7 +2580,7 @@ ctl_table ipv6_route_table_template[] = {
|
||||
.data = &init_net.ipv6.sysctl.ip6_rt_gc_elasticity,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.procname = "mtu_expires",
|
||||
@ -2594,7 +2594,7 @@ ctl_table ipv6_route_table_template[] = {
|
||||
.data = &init_net.ipv6.sysctl.ip6_rt_min_advmss,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0644,
|
||||
.proc_handler = proc_dointvec_jiffies,
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.procname = "gc_min_interval_ms",
|
||||
|
@ -1406,7 +1406,7 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock,
|
||||
struct netlink_sock *nlk = nlk_sk(sk);
|
||||
int noblock = flags&MSG_DONTWAIT;
|
||||
size_t copied;
|
||||
struct sk_buff *skb;
|
||||
struct sk_buff *skb, *frag __maybe_unused = NULL;
|
||||
int err;
|
||||
|
||||
if (flags&MSG_OOB)
|
||||
@ -1441,21 +1441,7 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock,
|
||||
kfree_skb(skb);
|
||||
skb = compskb;
|
||||
} else {
|
||||
/*
|
||||
* Before setting frag_list to NULL, we must get a
|
||||
* private copy of skb if shared (because of MSG_PEEK)
|
||||
*/
|
||||
if (skb_shared(skb)) {
|
||||
struct sk_buff *nskb;
|
||||
|
||||
nskb = pskb_copy(skb, GFP_KERNEL);
|
||||
kfree_skb(skb);
|
||||
skb = nskb;
|
||||
err = -ENOMEM;
|
||||
if (!skb)
|
||||
goto out;
|
||||
}
|
||||
kfree_skb(skb_shinfo(skb)->frag_list);
|
||||
frag = skb_shinfo(skb)->frag_list;
|
||||
skb_shinfo(skb)->frag_list = NULL;
|
||||
}
|
||||
}
|
||||
@ -1492,6 +1478,10 @@ static int netlink_recvmsg(struct kiocb *kiocb, struct socket *sock,
|
||||
if (flags & MSG_TRUNC)
|
||||
copied = skb->len;
|
||||
|
||||
#ifdef CONFIG_COMPAT_NETLINK_MESSAGES
|
||||
skb_shinfo(skb)->frag_list = frag;
|
||||
#endif
|
||||
|
||||
skb_free_datagram(sk, skb);
|
||||
|
||||
if (nlk->cb && atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf / 2)
|
||||
|
@ -2504,7 +2504,7 @@ static struct xfrm_policy *xfrm_compile_policy(struct sock *sk, int opt,
|
||||
if (p->dir > XFRM_POLICY_OUT)
|
||||
return NULL;
|
||||
|
||||
xp = xfrm_policy_alloc(net, GFP_KERNEL);
|
||||
xp = xfrm_policy_alloc(net, GFP_ATOMIC);
|
||||
if (xp == NULL) {
|
||||
*dir = -ENOBUFS;
|
||||
return NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user