forked from luck/tmp_suning_uos_patched
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 into for-davem
This commit is contained in:
commit
acc468f5f9
@ -1624,6 +1624,16 @@ static bool _rtl_pci_find_adapter(struct pci_dev *pdev,
|
|||||||
pci_read_config_byte(pdev, 0x8, &revisionid);
|
pci_read_config_byte(pdev, 0x8, &revisionid);
|
||||||
pci_read_config_word(pdev, 0x3C, &irqline);
|
pci_read_config_word(pdev, 0x3C, &irqline);
|
||||||
|
|
||||||
|
/* PCI ID 0x10ec:0x8192 occurs for both RTL8192E, which uses
|
||||||
|
* r8192e_pci, and RTL8192SE, which uses this driver. If the
|
||||||
|
* revision ID is RTL_PCI_REVISION_ID_8192PCIE (0x01), then
|
||||||
|
* the correct driver is r8192e_pci, thus this routine should
|
||||||
|
* return false.
|
||||||
|
*/
|
||||||
|
if (deviceid == RTL_PCI_8192SE_DID &&
|
||||||
|
revisionid == RTL_PCI_REVISION_ID_8192PCIE)
|
||||||
|
return false;
|
||||||
|
|
||||||
if (deviceid == RTL_PCI_8192_DID ||
|
if (deviceid == RTL_PCI_8192_DID ||
|
||||||
deviceid == RTL_PCI_0044_DID ||
|
deviceid == RTL_PCI_0044_DID ||
|
||||||
deviceid == RTL_PCI_0047_DID ||
|
deviceid == RTL_PCI_0047_DID ||
|
||||||
@ -1856,7 +1866,8 @@ int __devinit rtl_pci_probe(struct pci_dev *pdev,
|
|||||||
pci_write_config_byte(pdev, 0x04, 0x07);
|
pci_write_config_byte(pdev, 0x04, 0x07);
|
||||||
|
|
||||||
/* find adapter */
|
/* find adapter */
|
||||||
_rtl_pci_find_adapter(pdev, hw);
|
if (!_rtl_pci_find_adapter(pdev, hw))
|
||||||
|
goto fail3;
|
||||||
|
|
||||||
/* Init IO handler */
|
/* Init IO handler */
|
||||||
_rtl_pci_io_handler_init(&pdev->dev, hw);
|
_rtl_pci_io_handler_init(&pdev->dev, hw);
|
||||||
|
@ -53,6 +53,8 @@ MODULE_FIRMWARE("rtlwifi/rtl8192cufw.bin");
|
|||||||
static int rtl92cu_init_sw_vars(struct ieee80211_hw *hw)
|
static int rtl92cu_init_sw_vars(struct ieee80211_hw *hw)
|
||||||
{
|
{
|
||||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||||
|
const struct firmware *firmware;
|
||||||
|
int err;
|
||||||
|
|
||||||
rtlpriv->dm.dm_initialgain_enable = 1;
|
rtlpriv->dm.dm_initialgain_enable = 1;
|
||||||
rtlpriv->dm.dm_flag = 0;
|
rtlpriv->dm.dm_flag = 0;
|
||||||
@ -64,6 +66,24 @@ static int rtl92cu_init_sw_vars(struct ieee80211_hw *hw)
|
|||||||
("Can't alloc buffer for fw.\n"));
|
("Can't alloc buffer for fw.\n"));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
/* request fw */
|
||||||
|
err = request_firmware(&firmware, rtlpriv->cfg->fw_name,
|
||||||
|
rtlpriv->io.dev);
|
||||||
|
if (err) {
|
||||||
|
RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
|
||||||
|
("Failed to request firmware!\n"));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if (firmware->size > 0x4000) {
|
||||||
|
RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG,
|
||||||
|
("Firmware is too big!\n"));
|
||||||
|
release_firmware(firmware);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
memcpy(rtlpriv->rtlhal.pfirmware, firmware->data, firmware->size);
|
||||||
|
rtlpriv->rtlhal.fwsize = firmware->size;
|
||||||
|
release_firmware(firmware);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -608,11 +608,11 @@ int hci_conn_security(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
|
|||||||
goto encrypt;
|
goto encrypt;
|
||||||
|
|
||||||
auth:
|
auth:
|
||||||
if (test_and_set_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend))
|
if (test_bit(HCI_CONN_ENCRYPT_PEND, &conn->pend))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
hci_conn_auth(conn, sec_level, auth_type);
|
if (!hci_conn_auth(conn, sec_level, auth_type))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
encrypt:
|
encrypt:
|
||||||
if (conn->link_mode & HCI_LM_ENCRYPT)
|
if (conn->link_mode & HCI_LM_ENCRYPT)
|
||||||
|
@ -4002,21 +4002,30 @@ static int l2cap_security_cfm(struct hci_conn *hcon, u8 status, u8 encrypt)
|
|||||||
}
|
}
|
||||||
} else if (sk->sk_state == BT_CONNECT2) {
|
} else if (sk->sk_state == BT_CONNECT2) {
|
||||||
struct l2cap_conn_rsp rsp;
|
struct l2cap_conn_rsp rsp;
|
||||||
__u16 result;
|
__u16 res, stat;
|
||||||
|
|
||||||
if (!status) {
|
if (!status) {
|
||||||
sk->sk_state = BT_CONFIG;
|
if (bt_sk(sk)->defer_setup) {
|
||||||
result = L2CAP_CR_SUCCESS;
|
struct sock *parent = bt_sk(sk)->parent;
|
||||||
|
res = L2CAP_CR_PEND;
|
||||||
|
stat = L2CAP_CS_AUTHOR_PEND;
|
||||||
|
parent->sk_data_ready(parent, 0);
|
||||||
|
} else {
|
||||||
|
sk->sk_state = BT_CONFIG;
|
||||||
|
res = L2CAP_CR_SUCCESS;
|
||||||
|
stat = L2CAP_CS_NO_INFO;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
sk->sk_state = BT_DISCONN;
|
sk->sk_state = BT_DISCONN;
|
||||||
l2cap_sock_set_timer(sk, HZ / 10);
|
l2cap_sock_set_timer(sk, HZ / 10);
|
||||||
result = L2CAP_CR_SEC_BLOCK;
|
res = L2CAP_CR_SEC_BLOCK;
|
||||||
|
stat = L2CAP_CS_NO_INFO;
|
||||||
}
|
}
|
||||||
|
|
||||||
rsp.scid = cpu_to_le16(chan->dcid);
|
rsp.scid = cpu_to_le16(chan->dcid);
|
||||||
rsp.dcid = cpu_to_le16(chan->scid);
|
rsp.dcid = cpu_to_le16(chan->scid);
|
||||||
rsp.result = cpu_to_le16(result);
|
rsp.result = cpu_to_le16(res);
|
||||||
rsp.status = cpu_to_le16(L2CAP_CS_NO_INFO);
|
rsp.status = cpu_to_le16(stat);
|
||||||
l2cap_send_cmd(conn, chan->ident, L2CAP_CONN_RSP,
|
l2cap_send_cmd(conn, chan->ident, L2CAP_CONN_RSP,
|
||||||
sizeof(rsp), &rsp);
|
sizeof(rsp), &rsp);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user