* [PATCH 00/0] iwmc3200wifi: fix WPA connect problem @ 2009-07-20 3:47 Zhu Yi 2009-07-20 3:47 ` [PATCH 1/5] cfg80211: set_default_key only for WEP Zhu Yi 0 siblings, 1 reply; 11+ messages in thread From: Zhu Yi @ 2009-07-20 3:47 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Zhu Yi Hi, Below patches make iwmc3200wifi WPA work again with the latest cfg80211 change. [PATCH 1/5] cfg80211: set_default_key only for WEP [PATCH 2/5] cfg80211: fix typo of IWEVASSOCRESPIE [PATCH 3/5] iwmc3200wifi: use cfg80211_connect_result to send req/resp IE [PATCH 4/5] iwmc3200wifi: fix cfg80211_connect_result is called in IBSS [PATCH 5/5] iwmc3200wifi: fix a use-after-free bug Thanks, -yi ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/5] cfg80211: set_default_key only for WEP 2009-07-20 3:47 [PATCH 00/0] iwmc3200wifi: fix WPA connect problem Zhu Yi @ 2009-07-20 3:47 ` Zhu Yi 2009-07-20 3:47 ` [PATCH 2/5] cfg80211: fix typo of IWEVASSOCRESPIE Zhu Yi 2009-07-20 10:34 ` [PATCH 1/5] cfg80211: set_default_key only for WEP Johannes Berg 0 siblings, 2 replies; 11+ messages in thread From: Zhu Yi @ 2009-07-20 3:47 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Zhu Yi We invoke the cfg80211 set_default_key callback only for WEP key configuring. Signed-off-by: Zhu Yi <yi.zhu@intel.com> --- net/wireless/wext-compat.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c index aa80c0c..c63e10e 100644 --- a/net/wireless/wext-compat.c +++ b/net/wireless/wext-compat.c @@ -531,7 +531,8 @@ static int __cfg80211_set_encryption(struct cfg80211_registered_device *rdev, wdev->wext.keys->data[idx]; } - if (params->cipher != WLAN_CIPHER_SUITE_AES_CMAC && + if ((params->cipher == WLAN_CIPHER_SUITE_WEP40 || + params->cipher == WLAN_CIPHER_SUITE_WEP104) && (tx_key || (!addr && wdev->wext.default_key == -1))) { if (wdev->current_bss) err = rdev->ops->set_default_key(&rdev->wiphy, -- 1.6.0.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/5] cfg80211: fix typo of IWEVASSOCRESPIE 2009-07-20 3:47 ` [PATCH 1/5] cfg80211: set_default_key only for WEP Zhu Yi @ 2009-07-20 3:47 ` Zhu Yi 2009-07-20 3:47 ` [PATCH 3/5] iwmc3200wifi: use cfg80211_connect_result to send req/resp IE Zhu Yi 2009-07-20 10:36 ` [PATCH 2/5] cfg80211: fix typo of IWEVASSOCRESPIE Johannes Berg 2009-07-20 10:34 ` [PATCH 1/5] cfg80211: set_default_key only for WEP Johannes Berg 1 sibling, 2 replies; 11+ messages in thread From: Zhu Yi @ 2009-07-20 3:47 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Zhu Yi It should be IWEVASSOCREQIE instead. Signed-off-by: Zhu Yi <yi.zhu@intel.com> --- net/wireless/sme.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/net/wireless/sme.c b/net/wireless/sme.c index e7a8851..82de2d9 100644 --- a/net/wireless/sme.c +++ b/net/wireless/sme.c @@ -341,7 +341,7 @@ void __cfg80211_connect_result(struct net_device *dev, const u8 *bssid, if (req_ie && status == WLAN_STATUS_SUCCESS) { memset(&wrqu, 0, sizeof(wrqu)); wrqu.data.length = req_ie_len; - wireless_send_event(dev, IWEVASSOCRESPIE, &wrqu, req_ie); + wireless_send_event(dev, IWEVASSOCREQIE, &wrqu, req_ie); } if (resp_ie && status == WLAN_STATUS_SUCCESS) { @@ -474,7 +474,7 @@ void __cfg80211_roamed(struct wireless_dev *wdev, const u8 *bssid, if (req_ie) { memset(&wrqu, 0, sizeof(wrqu)); wrqu.data.length = req_ie_len; - wireless_send_event(wdev->netdev, IWEVASSOCRESPIE, + wireless_send_event(wdev->netdev, IWEVASSOCREQIE, &wrqu, req_ie); } -- 1.6.0.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/5] iwmc3200wifi: use cfg80211_connect_result to send req/resp IE 2009-07-20 3:47 ` [PATCH 2/5] cfg80211: fix typo of IWEVASSOCRESPIE Zhu Yi @ 2009-07-20 3:47 ` Zhu Yi 2009-07-20 3:47 ` [PATCH 4/5] iwmc3200wifi: fix cfg80211_connect_result is called in IBSS Zhu Yi 2009-07-20 10:37 ` [PATCH 3/5] iwmc3200wifi: use cfg80211_connect_result to send req/resp IE Johannes Berg 2009-07-20 10:36 ` [PATCH 2/5] cfg80211: fix typo of IWEVASSOCRESPIE Johannes Berg 1 sibling, 2 replies; 11+ messages in thread From: Zhu Yi @ 2009-07-20 3:47 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Zhu Yi cfg80211_connect_result() let us specify associate request and response IEs as parameters after we are connected. We use this capability instead of doing it ourselves with WEXT. Signed-off-by: Zhu Yi <yi.zhu@intel.com> --- drivers/net/wireless/iwmc3200wifi/iwm.h | 5 ++++ drivers/net/wireless/iwmc3200wifi/main.c | 7 +++++ drivers/net/wireless/iwmc3200wifi/rx.c | 36 +++++++++++++++++++---------- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/drivers/net/wireless/iwmc3200wifi/iwm.h b/drivers/net/wireless/iwmc3200wifi/iwm.h index 79d9d89..2175a48 100644 --- a/drivers/net/wireless/iwmc3200wifi/iwm.h +++ b/drivers/net/wireless/iwmc3200wifi/iwm.h @@ -281,6 +281,11 @@ struct iwm_priv { struct work_struct reset_worker; struct mutex mutex; + u8 *req_ie; + int req_ie_len; + u8 *resp_ie; + int resp_ie_len; + char private[0] __attribute__((__aligned__(NETDEV_ALIGN))); }; diff --git a/drivers/net/wireless/iwmc3200wifi/main.c b/drivers/net/wireless/iwmc3200wifi/main.c index 484f110..cf25744 100644 --- a/drivers/net/wireless/iwmc3200wifi/main.c +++ b/drivers/net/wireless/iwmc3200wifi/main.c @@ -497,6 +497,13 @@ void iwm_link_off(struct iwm_priv *iwm) memset(wstats, 0, sizeof(struct iw_statistics)); wstats->qual.updated = IW_QUAL_ALL_INVALID; + kfree(iwm->req_ie); + iwm->req_ie = NULL; + iwm->req_ie_len = 0; + kfree(iwm->resp_ie); + iwm->resp_ie = NULL; + iwm->resp_ie_len = 0; + del_timer_sync(&iwm->watchdog); } diff --git a/drivers/net/wireless/iwmc3200wifi/rx.c b/drivers/net/wireless/iwmc3200wifi/rx.c index 82b572a..6743391 100644 --- a/drivers/net/wireless/iwmc3200wifi/rx.c +++ b/drivers/net/wireless/iwmc3200wifi/rx.c @@ -519,7 +519,8 @@ static int iwm_mlme_assoc_complete(struct iwm_priv *iwm, u8 *buf, cfg80211_connect_result(iwm_to_ndev(iwm), complete->bssid, - NULL, 0, NULL, 0, + iwm->req_ie, iwm->req_ie_len, + iwm->resp_ie, iwm->resp_ie_len, WLAN_STATUS_SUCCESS, GFP_KERNEL); break; case UMAC_ASSOC_COMPLETE_FAILURE: @@ -771,37 +772,46 @@ static int iwm_mlme_mgt_frame(struct iwm_priv *iwm, u8 *buf, unsigned long buf_size, struct iwm_wifi_cmd *cmd) { struct iwm_umac_notif_mgt_frame *mgt_frame = - (struct iwm_umac_notif_mgt_frame *)buf; + (struct iwm_umac_notif_mgt_frame *)buf; struct ieee80211_mgmt *mgt = (struct ieee80211_mgmt *)mgt_frame->frame; u8 *ie; - unsigned int event; - union iwreq_data wrqu; IWM_HEXDUMP(iwm, DBG, MLME, "MGT: ", mgt_frame->frame, le16_to_cpu(mgt_frame->len)); if (ieee80211_is_assoc_req(mgt->frame_control)) { ie = mgt->u.assoc_req.variable;; - event = IWEVASSOCREQIE; + iwm->req_ie_len = + le16_to_cpu(mgt_frame->len) - (ie - (u8 *)mgt); + kfree(iwm->req_ie); + iwm->req_ie = kmemdup(mgt->u.assoc_req.variable, + iwm->req_ie_len, GFP_KERNEL); } else if (ieee80211_is_reassoc_req(mgt->frame_control)) { ie = mgt->u.reassoc_req.variable;; - event = IWEVASSOCREQIE; + iwm->req_ie_len = + le16_to_cpu(mgt_frame->len) - (ie - (u8 *)mgt); + kfree(iwm->req_ie); + iwm->req_ie = kmemdup(mgt->u.reassoc_req.variable, + iwm->req_ie_len, GFP_KERNEL); } else if (ieee80211_is_assoc_resp(mgt->frame_control)) { ie = mgt->u.assoc_resp.variable;; - event = IWEVASSOCRESPIE; + iwm->resp_ie_len = + le16_to_cpu(mgt_frame->len) - (ie - (u8 *)mgt); + kfree(iwm->resp_ie); + iwm->resp_ie = kmemdup(mgt->u.assoc_resp.variable, + iwm->resp_ie_len, GFP_KERNEL); } else if (ieee80211_is_reassoc_resp(mgt->frame_control)) { ie = mgt->u.reassoc_resp.variable;; - event = IWEVASSOCRESPIE; + iwm->resp_ie_len = + le16_to_cpu(mgt_frame->len) - (ie - (u8 *)mgt); + kfree(iwm->resp_ie); + iwm->resp_ie = kmemdup(mgt->u.reassoc_resp.variable, + iwm->resp_ie_len, GFP_KERNEL); } else { IWM_ERR(iwm, "Unsupported management frame"); return 0; } - wrqu.data.length = le16_to_cpu(mgt_frame->len) - (ie - (u8 *)mgt); - - IWM_HEXDUMP(iwm, DBG, MLME, "EVT: ", ie, wrqu.data.length); - wireless_send_event(iwm_to_ndev(iwm), event, &wrqu, ie); - return 0; } -- 1.6.0.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/5] iwmc3200wifi: fix cfg80211_connect_result is called in IBSS 2009-07-20 3:47 ` [PATCH 3/5] iwmc3200wifi: use cfg80211_connect_result to send req/resp IE Zhu Yi @ 2009-07-20 3:47 ` Zhu Yi 2009-07-20 3:47 ` [PATCH 5/5] iwmc3200wifi: fix a use-after-free bug Zhu Yi 2009-07-20 10:37 ` [PATCH 3/5] iwmc3200wifi: use cfg80211_connect_result to send req/resp IE Johannes Berg 1 sibling, 1 reply; 11+ messages in thread From: Zhu Yi @ 2009-07-20 3:47 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Zhu Yi Avoid calling cfg80211_connect_result() in IBSS mode. Signed-off-by: Zhu Yi <yi.zhu@intel.com> --- drivers/net/wireless/iwmc3200wifi/rx.c | 13 +++++++++---- 1 files changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/iwmc3200wifi/rx.c b/drivers/net/wireless/iwmc3200wifi/rx.c index 6743391..86079a1 100644 --- a/drivers/net/wireless/iwmc3200wifi/rx.c +++ b/drivers/net/wireless/iwmc3200wifi/rx.c @@ -517,6 +517,9 @@ static int iwm_mlme_assoc_complete(struct iwm_priv *iwm, u8 *buf, iwm_link_on(iwm); + if (iwm->conf.mode == UMAC_MODE_IBSS) + goto ibss; + cfg80211_connect_result(iwm_to_ndev(iwm), complete->bssid, iwm->req_ie, iwm->req_ie_len, @@ -530,6 +533,9 @@ static int iwm_mlme_assoc_complete(struct iwm_priv *iwm, u8 *buf, iwm_link_off(iwm); + if (iwm->conf.mode == UMAC_MODE_IBSS) + goto ibss; + cfg80211_connect_result(iwm_to_ndev(iwm), complete->bssid, NULL, 0, NULL, 0, WLAN_STATUS_UNSPECIFIED_FAILURE, @@ -538,11 +544,10 @@ static int iwm_mlme_assoc_complete(struct iwm_priv *iwm, u8 *buf, break; } - if (iwm->conf.mode == UMAC_MODE_IBSS) { - cfg80211_ibss_joined(iwm_to_ndev(iwm), iwm->bssid, GFP_KERNEL); - return 0; - } + return 0; + ibss: + cfg80211_ibss_joined(iwm_to_ndev(iwm), iwm->bssid, GFP_KERNEL); return 0; } -- 1.6.0.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 5/5] iwmc3200wifi: fix a use-after-free bug 2009-07-20 3:47 ` [PATCH 4/5] iwmc3200wifi: fix cfg80211_connect_result is called in IBSS Zhu Yi @ 2009-07-20 3:47 ` Zhu Yi 0 siblings, 0 replies; 11+ messages in thread From: Zhu Yi @ 2009-07-20 3:47 UTC (permalink / raw) To: linville; +Cc: linux-wireless, Zhu Yi The patch fixes a use-after-free bug for cmd->seq_num; Reported-by: Dan Carpenter <error27@gmail.com> Signed-off-by: Zhu Yi <yi.zhu@intel.com> --- drivers/net/wireless/iwmc3200wifi/hal.c | 16 +++++++++------- 1 files changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/net/wireless/iwmc3200wifi/hal.c b/drivers/net/wireless/iwmc3200wifi/hal.c index ee127fe..c430418 100644 --- a/drivers/net/wireless/iwmc3200wifi/hal.c +++ b/drivers/net/wireless/iwmc3200wifi/hal.c @@ -105,9 +105,9 @@ #include "umac.h" #include "debug.h" -static void iwm_nonwifi_cmd_init(struct iwm_priv *iwm, - struct iwm_nonwifi_cmd *cmd, - struct iwm_udma_nonwifi_cmd *udma_cmd) +static int iwm_nonwifi_cmd_init(struct iwm_priv *iwm, + struct iwm_nonwifi_cmd *cmd, + struct iwm_udma_nonwifi_cmd *udma_cmd) { INIT_LIST_HEAD(&cmd->pending); @@ -118,7 +118,7 @@ static void iwm_nonwifi_cmd_init(struct iwm_priv *iwm, cmd->seq_num = iwm->nonwifi_seq_num; udma_cmd->seq_num = cpu_to_le16(cmd->seq_num); - cmd->seq_num = iwm->nonwifi_seq_num++; + iwm->nonwifi_seq_num++; iwm->nonwifi_seq_num %= UMAC_NONWIFI_SEQ_NUM_MAX; if (udma_cmd->resp) @@ -130,6 +130,8 @@ static void iwm_nonwifi_cmd_init(struct iwm_priv *iwm, cmd->buf.len = 0; memcpy(&cmd->udma_cmd, udma_cmd, sizeof(*udma_cmd)); + + return cmd->seq_num; } u16 iwm_alloc_wifi_cmd_seq(struct iwm_priv *iwm) @@ -369,7 +371,7 @@ int iwm_hal_send_target_cmd(struct iwm_priv *iwm, const void *payload) { struct iwm_nonwifi_cmd *cmd; - int ret; + int ret, seq_num; cmd = kzalloc(sizeof(struct iwm_nonwifi_cmd), GFP_KERNEL); if (!cmd) { @@ -377,7 +379,7 @@ int iwm_hal_send_target_cmd(struct iwm_priv *iwm, return -ENOMEM; } - iwm_nonwifi_cmd_init(iwm, cmd, udma_cmd); + seq_num = iwm_nonwifi_cmd_init(iwm, cmd, udma_cmd); if (cmd->udma_cmd.opcode == UMAC_HDI_OUT_OPCODE_WRITE || cmd->udma_cmd.opcode == UMAC_HDI_OUT_OPCODE_WRITE_PERSISTENT) { @@ -393,7 +395,7 @@ int iwm_hal_send_target_cmd(struct iwm_priv *iwm, if (ret < 0) return ret; - return cmd->seq_num; + return seq_num; } static void iwm_build_lmac_hdr(struct iwm_priv *iwm, struct iwm_lmac_hdr *hdr, -- 1.6.0.4 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 3/5] iwmc3200wifi: use cfg80211_connect_result to send req/resp IE 2009-07-20 3:47 ` [PATCH 3/5] iwmc3200wifi: use cfg80211_connect_result to send req/resp IE Zhu Yi 2009-07-20 3:47 ` [PATCH 4/5] iwmc3200wifi: fix cfg80211_connect_result is called in IBSS Zhu Yi @ 2009-07-20 10:37 ` Johannes Berg 2009-07-21 1:22 ` Zhu Yi 1 sibling, 1 reply; 11+ messages in thread From: Johannes Berg @ 2009-07-20 10:37 UTC (permalink / raw) To: Zhu Yi; +Cc: linville, linux-wireless [-- Attachment #1: Type: text/plain, Size: 343 bytes --] On Mon, 2009-07-20 at 11:47 +0800, Zhu Yi wrote: > cfg80211_connect_result() let us specify associate request and > response IEs as parameters after we are connected. We use this > capability instead of doing it ourselves with WEXT. I think with this, you can now remove select WIRELESS_EXT from your Kconfig. johannes [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 801 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/5] iwmc3200wifi: use cfg80211_connect_result to send req/resp IE 2009-07-20 10:37 ` [PATCH 3/5] iwmc3200wifi: use cfg80211_connect_result to send req/resp IE Johannes Berg @ 2009-07-21 1:22 ` Zhu Yi 2009-07-21 10:50 ` Johannes Berg 0 siblings, 1 reply; 11+ messages in thread From: Zhu Yi @ 2009-07-21 1:22 UTC (permalink / raw) To: Johannes Berg; +Cc: linville@tuxdriver.com, linux-wireless@vger.kernel.org On Mon, 2009-07-20 at 18:37 +0800, Johannes Berg wrote: > On Mon, 2009-07-20 at 11:47 +0800, Zhu Yi wrote: > > cfg80211_connect_result() let us specify associate request and > > response IEs as parameters after we are connected. We use this > > capability instead of doing it ourselves with WEXT. > > I think with this, you can now remove > > select WIRELESS_EXT > > from your Kconfig. Um, not yet. I need to assign the netdev->wireless_handlers to &iwm_iw_handler_def. The former is ifdef-ed CONFIG_WIRELESS_EXT in struct net_device. I think this can be done until cdg80211 provides a generic iw_handler. Thanks, -yi ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/5] iwmc3200wifi: use cfg80211_connect_result to send req/resp IE 2009-07-21 1:22 ` Zhu Yi @ 2009-07-21 10:50 ` Johannes Berg 0 siblings, 0 replies; 11+ messages in thread From: Johannes Berg @ 2009-07-21 10:50 UTC (permalink / raw) To: Zhu Yi; +Cc: linville@tuxdriver.com, linux-wireless@vger.kernel.org [-- Attachment #1: Type: text/plain, Size: 836 bytes --] On Tue, 2009-07-21 at 09:22 +0800, Zhu Yi wrote: > On Mon, 2009-07-20 at 18:37 +0800, Johannes Berg wrote: > > On Mon, 2009-07-20 at 11:47 +0800, Zhu Yi wrote: > > > cfg80211_connect_result() let us specify associate request and > > > response IEs as parameters after we are connected. We use this > > > capability instead of doing it ourselves with WEXT. > > > > I think with this, you can now remove > > Indeed, I have a patch to remove that. > > select WIRELESS_EXT > > > > from your Kconfig. > > Um, not yet. I need to assign the netdev->wireless_handlers to > &iwm_iw_handler_def. The former is ifdef-ed CONFIG_WIRELESS_EXT in > struct net_device. I think this can be done until cdg80211 provides a > generic iw_handler. Oops, you're right. I have a patch, but John needs to merge stuff. johannes [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 801 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/5] cfg80211: fix typo of IWEVASSOCRESPIE 2009-07-20 3:47 ` [PATCH 2/5] cfg80211: fix typo of IWEVASSOCRESPIE Zhu Yi 2009-07-20 3:47 ` [PATCH 3/5] iwmc3200wifi: use cfg80211_connect_result to send req/resp IE Zhu Yi @ 2009-07-20 10:36 ` Johannes Berg 1 sibling, 0 replies; 11+ messages in thread From: Johannes Berg @ 2009-07-20 10:36 UTC (permalink / raw) To: Zhu Yi; +Cc: linville, linux-wireless [-- Attachment #1: Type: text/plain, Size: 1157 bytes --] On Mon, 2009-07-20 at 11:47 +0800, Zhu Yi wrote: > It should be IWEVASSOCREQIE instead. Indeed, thanks. > Signed-off-by: Zhu Yi <yi.zhu@intel.com> > --- > net/wireless/sme.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/net/wireless/sme.c b/net/wireless/sme.c > index e7a8851..82de2d9 100644 > --- a/net/wireless/sme.c > +++ b/net/wireless/sme.c > @@ -341,7 +341,7 @@ void __cfg80211_connect_result(struct net_device *dev, const u8 *bssid, > if (req_ie && status == WLAN_STATUS_SUCCESS) { > memset(&wrqu, 0, sizeof(wrqu)); > wrqu.data.length = req_ie_len; > - wireless_send_event(dev, IWEVASSOCRESPIE, &wrqu, req_ie); > + wireless_send_event(dev, IWEVASSOCREQIE, &wrqu, req_ie); > } > > if (resp_ie && status == WLAN_STATUS_SUCCESS) { > @@ -474,7 +474,7 @@ void __cfg80211_roamed(struct wireless_dev *wdev, const u8 *bssid, > if (req_ie) { > memset(&wrqu, 0, sizeof(wrqu)); > wrqu.data.length = req_ie_len; > - wireless_send_event(wdev->netdev, IWEVASSOCRESPIE, > + wireless_send_event(wdev->netdev, IWEVASSOCREQIE, > &wrqu, req_ie); > } > [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 801 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/5] cfg80211: set_default_key only for WEP 2009-07-20 3:47 ` [PATCH 1/5] cfg80211: set_default_key only for WEP Zhu Yi 2009-07-20 3:47 ` [PATCH 2/5] cfg80211: fix typo of IWEVASSOCRESPIE Zhu Yi @ 2009-07-20 10:34 ` Johannes Berg 1 sibling, 0 replies; 11+ messages in thread From: Johannes Berg @ 2009-07-20 10:34 UTC (permalink / raw) To: Zhu Yi; +Cc: linville, linux-wireless [-- Attachment #1: Type: text/plain, Size: 986 bytes --] On Mon, 2009-07-20 at 11:47 +0800, Zhu Yi wrote: > We invoke the cfg80211 set_default_key callback only for WEP key > configuring. > > Signed-off-by: Zhu Yi <yi.zhu@intel.com> Acked-by: Johannes Berg <johannes@sipsolutions.net> > --- > net/wireless/wext-compat.c | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c > index aa80c0c..c63e10e 100644 > --- a/net/wireless/wext-compat.c > +++ b/net/wireless/wext-compat.c > @@ -531,7 +531,8 @@ static int __cfg80211_set_encryption(struct cfg80211_registered_device *rdev, > wdev->wext.keys->data[idx]; > } > > - if (params->cipher != WLAN_CIPHER_SUITE_AES_CMAC && > + if ((params->cipher == WLAN_CIPHER_SUITE_WEP40 || > + params->cipher == WLAN_CIPHER_SUITE_WEP104) && > (tx_key || (!addr && wdev->wext.default_key == -1))) { > if (wdev->current_bss) > err = rdev->ops->set_default_key(&rdev->wiphy, [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 801 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2009-07-21 10:50 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-07-20 3:47 [PATCH 00/0] iwmc3200wifi: fix WPA connect problem Zhu Yi 2009-07-20 3:47 ` [PATCH 1/5] cfg80211: set_default_key only for WEP Zhu Yi 2009-07-20 3:47 ` [PATCH 2/5] cfg80211: fix typo of IWEVASSOCRESPIE Zhu Yi 2009-07-20 3:47 ` [PATCH 3/5] iwmc3200wifi: use cfg80211_connect_result to send req/resp IE Zhu Yi 2009-07-20 3:47 ` [PATCH 4/5] iwmc3200wifi: fix cfg80211_connect_result is called in IBSS Zhu Yi 2009-07-20 3:47 ` [PATCH 5/5] iwmc3200wifi: fix a use-after-free bug Zhu Yi 2009-07-20 10:37 ` [PATCH 3/5] iwmc3200wifi: use cfg80211_connect_result to send req/resp IE Johannes Berg 2009-07-21 1:22 ` Zhu Yi 2009-07-21 10:50 ` Johannes Berg 2009-07-20 10:36 ` [PATCH 2/5] cfg80211: fix typo of IWEVASSOCRESPIE Johannes Berg 2009-07-20 10:34 ` [PATCH 1/5] cfg80211: set_default_key only for WEP Johannes Berg
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).