diff options
| author | John W. Linville <linville@tuxdriver.com> | 2013-06-12 10:57:04 -0400 |
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2013-06-12 10:57:04 -0400 |
| commit | 42d887a68013b0a04f7b8ebfa4999a8d5df6775c (patch) | |
| tree | 8cbd8cebe7420f3bcee87e3be0421aed215db450 /drivers/net/wireless/rtlwifi/rtl8192cu/mac.c | |
| parent | b79462a8b9f9a452edc20c64a70a89ba3b0a6a88 (diff) | |
| parent | e0e29b683d6784ef59bbc914eac85a04b650e63c (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem
Diffstat (limited to 'drivers/net/wireless/rtlwifi/rtl8192cu/mac.c')
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192cu/mac.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c b/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c index 85b6bdb163c0..da4f587199ee 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c @@ -289,14 +289,30 @@ void rtl92c_set_key(struct ieee80211_hw *hw, u32 key_index, macaddr = cam_const_broad; entry_id = key_index; } else { + if (mac->opmode == NL80211_IFTYPE_AP || + mac->opmode == NL80211_IFTYPE_MESH_POINT) { + entry_id = rtl_cam_get_free_entry(hw, + p_macaddr); + if (entry_id >= TOTAL_CAM_ENTRY) { + RT_TRACE(rtlpriv, COMP_SEC, + DBG_EMERG, + "Can not find free hw security cam entry\n"); + return; + } + } else { + entry_id = CAM_PAIRWISE_KEY_POSITION; + } + key_index = PAIRWISE_KEYIDX; - entry_id = CAM_PAIRWISE_KEY_POSITION; is_pairwise = true; } } if (rtlpriv->sec.key_len[key_index] == 0) { RT_TRACE(rtlpriv, COMP_SEC, DBG_DMESG, "delete one entry\n"); + if (mac->opmode == NL80211_IFTYPE_AP || + mac->opmode == NL80211_IFTYPE_MESH_POINT) + rtl_cam_del_entry(hw, p_macaddr); rtl_cam_delete_one_entry(hw, p_macaddr, entry_id); } else { RT_TRACE(rtlpriv, COMP_SEC, DBG_LOUD, |
