diff options
| author | John W. Linville <linville@tuxdriver.com> | 2011-06-17 12:40:36 -0400 |
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2011-06-17 12:40:36 -0400 |
| commit | 82362ccbf259b960192019deb562bf84549e3d1d (patch) | |
| tree | fee34ec77d908cd32907553eed0f10fb30061708 | |
| parent | 118133e6580a0c912cda86109b6468b5ffe73f1c (diff) | |
| parent | 3373b28e5af4a0b3c6cb39372581dcc1e41322ff (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 into for-davem
| -rw-r--r-- | drivers/bluetooth/btmrvl_debugfs.c | 12 | ||||
| -rw-r--r-- | drivers/net/wireless/mwifiex/cfg80211.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/mwl8k.c | 4 | ||||
| -rw-r--r-- | net/bluetooth/hci_event.c | 18 | ||||
| -rw-r--r-- | net/bluetooth/l2cap_sock.c | 1 | ||||
| -rw-r--r-- | net/bluetooth/rfcomm/sock.c | 1 | ||||
| -rw-r--r-- | net/bluetooth/sco.c | 13 |
7 files changed, 41 insertions, 10 deletions
diff --git a/drivers/bluetooth/btmrvl_debugfs.c b/drivers/bluetooth/btmrvl_debugfs.c index fd6305bf953e..8ecf4c6c2874 100644 --- a/drivers/bluetooth/btmrvl_debugfs.c +++ b/drivers/bluetooth/btmrvl_debugfs.c | |||
| @@ -64,6 +64,8 @@ static ssize_t btmrvl_hscfgcmd_write(struct file *file, | |||
| 64 | return -EFAULT; | 64 | return -EFAULT; |
| 65 | 65 | ||
| 66 | ret = strict_strtol(buf, 10, &result); | 66 | ret = strict_strtol(buf, 10, &result); |
| 67 | if (ret) | ||
| 68 | return ret; | ||
| 67 | 69 | ||
| 68 | priv->btmrvl_dev.hscfgcmd = result; | 70 | priv->btmrvl_dev.hscfgcmd = result; |
| 69 | 71 | ||
| @@ -108,6 +110,8 @@ static ssize_t btmrvl_psmode_write(struct file *file, const char __user *ubuf, | |||
| 108 | return -EFAULT; | 110 | return -EFAULT; |
| 109 | 111 | ||
| 110 | ret = strict_strtol(buf, 10, &result); | 112 | ret = strict_strtol(buf, 10, &result); |
| 113 | if (ret) | ||
| 114 | return ret; | ||
| 111 | 115 | ||
| 112 | priv->btmrvl_dev.psmode = result; | 116 | priv->btmrvl_dev.psmode = result; |
| 113 | 117 | ||
| @@ -147,6 +151,8 @@ static ssize_t btmrvl_pscmd_write(struct file *file, const char __user *ubuf, | |||
| 147 | return -EFAULT; | 151 | return -EFAULT; |
| 148 | 152 | ||
| 149 | ret = strict_strtol(buf, 10, &result); | 153 | ret = strict_strtol(buf, 10, &result); |
| 154 | if (ret) | ||
| 155 | return ret; | ||
| 150 | 156 | ||
| 151 | priv->btmrvl_dev.pscmd = result; | 157 | priv->btmrvl_dev.pscmd = result; |
| 152 | 158 | ||
| @@ -191,6 +197,8 @@ static ssize_t btmrvl_gpiogap_write(struct file *file, const char __user *ubuf, | |||
| 191 | return -EFAULT; | 197 | return -EFAULT; |
| 192 | 198 | ||
| 193 | ret = strict_strtol(buf, 16, &result); | 199 | ret = strict_strtol(buf, 16, &result); |
| 200 | if (ret) | ||
| 201 | return ret; | ||
| 194 | 202 | ||
| 195 | priv->btmrvl_dev.gpio_gap = result; | 203 | priv->btmrvl_dev.gpio_gap = result; |
| 196 | 204 | ||
| @@ -230,6 +238,8 @@ static ssize_t btmrvl_hscmd_write(struct file *file, const char __user *ubuf, | |||
| 230 | return -EFAULT; | 238 | return -EFAULT; |
| 231 | 239 | ||
| 232 | ret = strict_strtol(buf, 10, &result); | 240 | ret = strict_strtol(buf, 10, &result); |
| 241 | if (ret) | ||
| 242 | return ret; | ||
| 233 | 243 | ||
| 234 | priv->btmrvl_dev.hscmd = result; | 244 | priv->btmrvl_dev.hscmd = result; |
| 235 | if (priv->btmrvl_dev.hscmd) { | 245 | if (priv->btmrvl_dev.hscmd) { |
| @@ -272,6 +282,8 @@ static ssize_t btmrvl_hsmode_write(struct file *file, const char __user *ubuf, | |||
| 272 | return -EFAULT; | 282 | return -EFAULT; |
| 273 | 283 | ||
| 274 | ret = strict_strtol(buf, 10, &result); | 284 | ret = strict_strtol(buf, 10, &result); |
| 285 | if (ret) | ||
| 286 | return ret; | ||
| 275 | 287 | ||
| 276 | priv->btmrvl_dev.hsmode = result; | 288 | priv->btmrvl_dev.hsmode = result; |
| 277 | 289 | ||
diff --git a/drivers/net/wireless/mwifiex/cfg80211.c b/drivers/net/wireless/mwifiex/cfg80211.c index 660831ce293c..687c1f223497 100644 --- a/drivers/net/wireless/mwifiex/cfg80211.c +++ b/drivers/net/wireless/mwifiex/cfg80211.c | |||
| @@ -1288,6 +1288,8 @@ int mwifiex_register_cfg80211(struct net_device *dev, u8 *mac, | |||
| 1288 | 1288 | ||
| 1289 | *(unsigned long *) wdev_priv = (unsigned long) priv; | 1289 | *(unsigned long *) wdev_priv = (unsigned long) priv; |
| 1290 | 1290 | ||
| 1291 | set_wiphy_dev(wdev->wiphy, (struct device *) priv->adapter->dev); | ||
| 1292 | |||
| 1291 | ret = wiphy_register(wdev->wiphy); | 1293 | ret = wiphy_register(wdev->wiphy); |
| 1292 | if (ret < 0) { | 1294 | if (ret < 0) { |
| 1293 | dev_err(priv->adapter->dev, "%s: registering cfg80211 device\n", | 1295 | dev_err(priv->adapter->dev, "%s: registering cfg80211 device\n", |
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c index 32261189bcef..aeac3cc4dbe4 100644 --- a/drivers/net/wireless/mwl8k.c +++ b/drivers/net/wireless/mwl8k.c | |||
| @@ -2474,6 +2474,7 @@ struct mwl8k_cmd_set_hw_spec { | |||
| 2474 | * faster client. | 2474 | * faster client. |
| 2475 | */ | 2475 | */ |
| 2476 | #define MWL8K_SET_HW_SPEC_FLAG_ENABLE_LIFE_TIME_EXPIRY 0x00000400 | 2476 | #define MWL8K_SET_HW_SPEC_FLAG_ENABLE_LIFE_TIME_EXPIRY 0x00000400 |
| 2477 | #define MWL8K_SET_HW_SPEC_FLAG_GENERATE_CCMP_HDR 0x00000200 | ||
| 2477 | #define MWL8K_SET_HW_SPEC_FLAG_HOST_DECR_MGMT 0x00000080 | 2478 | #define MWL8K_SET_HW_SPEC_FLAG_HOST_DECR_MGMT 0x00000080 |
| 2478 | #define MWL8K_SET_HW_SPEC_FLAG_HOSTFORM_PROBERESP 0x00000020 | 2479 | #define MWL8K_SET_HW_SPEC_FLAG_HOSTFORM_PROBERESP 0x00000020 |
| 2479 | #define MWL8K_SET_HW_SPEC_FLAG_HOSTFORM_BEACON 0x00000010 | 2480 | #define MWL8K_SET_HW_SPEC_FLAG_HOSTFORM_BEACON 0x00000010 |
| @@ -2510,7 +2511,8 @@ static int mwl8k_cmd_set_hw_spec(struct ieee80211_hw *hw) | |||
| 2510 | cmd->flags = cpu_to_le32(MWL8K_SET_HW_SPEC_FLAG_HOST_DECR_MGMT | | 2511 | cmd->flags = cpu_to_le32(MWL8K_SET_HW_SPEC_FLAG_HOST_DECR_MGMT | |
| 2511 | MWL8K_SET_HW_SPEC_FLAG_HOSTFORM_PROBERESP | | 2512 | MWL8K_SET_HW_SPEC_FLAG_HOSTFORM_PROBERESP | |
| 2512 | MWL8K_SET_HW_SPEC_FLAG_HOSTFORM_BEACON | | 2513 | MWL8K_SET_HW_SPEC_FLAG_HOSTFORM_BEACON | |
| 2513 | MWL8K_SET_HW_SPEC_FLAG_ENABLE_LIFE_TIME_EXPIRY); | 2514 | MWL8K_SET_HW_SPEC_FLAG_ENABLE_LIFE_TIME_EXPIRY | |
| 2515 | MWL8K_SET_HW_SPEC_FLAG_GENERATE_CCMP_HDR); | ||
| 2514 | cmd->num_tx_desc_per_queue = cpu_to_le32(MWL8K_TX_DESCS); | 2516 | cmd->num_tx_desc_per_queue = cpu_to_le32(MWL8K_TX_DESCS); |
| 2515 | cmd->total_rxd = cpu_to_le32(MWL8K_RX_DESCS); | 2517 | cmd->total_rxd = cpu_to_le32(MWL8K_RX_DESCS); |
| 2516 | 2518 | ||
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index f13ddbf858ba..77930aa522e3 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c | |||
| @@ -477,14 +477,16 @@ static void hci_setup_event_mask(struct hci_dev *hdev) | |||
| 477 | * command otherwise */ | 477 | * command otherwise */ |
| 478 | u8 events[8] = { 0xff, 0xff, 0xfb, 0xff, 0x00, 0x00, 0x00, 0x00 }; | 478 | u8 events[8] = { 0xff, 0xff, 0xfb, 0xff, 0x00, 0x00, 0x00, 0x00 }; |
| 479 | 479 | ||
| 480 | /* Events for 1.2 and newer controllers */ | 480 | /* CSR 1.1 dongles does not accept any bitfield so don't try to set |
| 481 | if (hdev->lmp_ver > 1) { | 481 | * any event mask for pre 1.2 devices */ |
| 482 | events[4] |= 0x01; /* Flow Specification Complete */ | 482 | if (hdev->lmp_ver <= 1) |
| 483 | events[4] |= 0x02; /* Inquiry Result with RSSI */ | 483 | return; |
| 484 | events[4] |= 0x04; /* Read Remote Extended Features Complete */ | 484 | |
| 485 | events[5] |= 0x08; /* Synchronous Connection Complete */ | 485 | events[4] |= 0x01; /* Flow Specification Complete */ |
| 486 | events[5] |= 0x10; /* Synchronous Connection Changed */ | 486 | events[4] |= 0x02; /* Inquiry Result with RSSI */ |
| 487 | } | 487 | events[4] |= 0x04; /* Read Remote Extended Features Complete */ |
| 488 | events[5] |= 0x08; /* Synchronous Connection Complete */ | ||
| 489 | events[5] |= 0x10; /* Synchronous Connection Changed */ | ||
| 488 | 490 | ||
| 489 | if (hdev->features[3] & LMP_RSSI_INQ) | 491 | if (hdev->features[3] & LMP_RSSI_INQ) |
| 490 | events[4] |= 0x04; /* Inquiry Result with RSSI */ | 492 | events[4] |= 0x04; /* Inquiry Result with RSSI */ |
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c index 18dc9888d8c2..8248303f44e8 100644 --- a/net/bluetooth/l2cap_sock.c +++ b/net/bluetooth/l2cap_sock.c | |||
| @@ -413,6 +413,7 @@ static int l2cap_sock_getsockopt_old(struct socket *sock, int optname, char __us | |||
| 413 | break; | 413 | break; |
| 414 | } | 414 | } |
| 415 | 415 | ||
| 416 | memset(&cinfo, 0, sizeof(cinfo)); | ||
| 416 | cinfo.hci_handle = chan->conn->hcon->handle; | 417 | cinfo.hci_handle = chan->conn->hcon->handle; |
| 417 | memcpy(cinfo.dev_class, chan->conn->hcon->dev_class, 3); | 418 | memcpy(cinfo.dev_class, chan->conn->hcon->dev_class, 3); |
| 418 | 419 | ||
diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c index 386cfaffd4b7..1b10727ce523 100644 --- a/net/bluetooth/rfcomm/sock.c +++ b/net/bluetooth/rfcomm/sock.c | |||
| @@ -788,6 +788,7 @@ static int rfcomm_sock_getsockopt_old(struct socket *sock, int optname, char __u | |||
| 788 | 788 | ||
| 789 | l2cap_sk = rfcomm_pi(sk)->dlc->session->sock->sk; | 789 | l2cap_sk = rfcomm_pi(sk)->dlc->session->sock->sk; |
| 790 | 790 | ||
| 791 | memset(&cinfo, 0, sizeof(cinfo)); | ||
| 791 | cinfo.hci_handle = conn->hcon->handle; | 792 | cinfo.hci_handle = conn->hcon->handle; |
| 792 | memcpy(cinfo.dev_class, conn->hcon->dev_class, 3); | 793 | memcpy(cinfo.dev_class, conn->hcon->dev_class, 3); |
| 793 | 794 | ||
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c index 42fdffd1d76c..cb4fb7837e5c 100644 --- a/net/bluetooth/sco.c +++ b/net/bluetooth/sco.c | |||
| @@ -369,6 +369,15 @@ static void __sco_sock_close(struct sock *sk) | |||
| 369 | 369 | ||
| 370 | case BT_CONNECTED: | 370 | case BT_CONNECTED: |
| 371 | case BT_CONFIG: | 371 | case BT_CONFIG: |
| 372 | if (sco_pi(sk)->conn) { | ||
| 373 | sk->sk_state = BT_DISCONN; | ||
| 374 | sco_sock_set_timer(sk, SCO_DISCONN_TIMEOUT); | ||
| 375 | hci_conn_put(sco_pi(sk)->conn->hcon); | ||
| 376 | sco_pi(sk)->conn->hcon = NULL; | ||
| 377 | } else | ||
| 378 | sco_chan_del(sk, ECONNRESET); | ||
| 379 | break; | ||
| 380 | |||
| 372 | case BT_CONNECT: | 381 | case BT_CONNECT: |
| 373 | case BT_DISCONN: | 382 | case BT_DISCONN: |
| 374 | sco_chan_del(sk, ECONNRESET); | 383 | sco_chan_del(sk, ECONNRESET); |
| @@ -819,7 +828,9 @@ static void sco_chan_del(struct sock *sk, int err) | |||
| 819 | conn->sk = NULL; | 828 | conn->sk = NULL; |
| 820 | sco_pi(sk)->conn = NULL; | 829 | sco_pi(sk)->conn = NULL; |
| 821 | sco_conn_unlock(conn); | 830 | sco_conn_unlock(conn); |
| 822 | hci_conn_put(conn->hcon); | 831 | |
| 832 | if (conn->hcon) | ||
| 833 | hci_conn_put(conn->hcon); | ||
| 823 | } | 834 | } |
| 824 | 835 | ||
| 825 | sk->sk_state = BT_CLOSED; | 836 | sk->sk_state = BT_CLOSED; |
