diff options
author | Stanislaw Gruszka | 2018-08-29 13:16:38 +0200 |
---|---|---|
committer | Kalle Valo | 2018-09-04 10:02:55 +0200 |
commit | 047aed1c38cf4bfd5cf42ed845ef721aa6ed1283 (patch) | |
tree | a4ddd7db6cb49413a0b56218128f60e57b408b83 /drivers/net/wireless/mediatek/mt76/mt76x02_mac.c | |
parent | mt76: add helpers for register access with mt76_dev struct (diff) | |
download | kernel-qcow2-linux-047aed1c38cf4bfd5cf42ed845ef721aa6ed1283.tar.gz kernel-qcow2-linux-047aed1c38cf4bfd5cf42ed845ef721aa6ed1283.tar.xz kernel-qcow2-linux-047aed1c38cf4bfd5cf42ed845ef721aa6ed1283.zip |
mt76: unify mac_shared_key_setup
Merge mt76x{0,2} mac_shared_key_setup into common code.
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/mediatek/mt76/mt76x02_mac.c')
-rw-r--r-- | drivers/net/wireless/mediatek/mt76/mt76x02_mac.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c b/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c index 7137fd2a370e..6d45adc0522f 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c +++ b/drivers/net/wireless/mediatek/mt76/mt76x02_mac.c @@ -44,3 +44,26 @@ mt76x02_mac_get_key_info(struct ieee80211_key_conf *key, u8 *key_data) } } EXPORT_SYMBOL_GPL(mt76x02_mac_get_key_info); + +int mt76x02_mac_shared_key_setup(struct mt76_dev *dev, u8 vif_idx, u8 key_idx, + struct ieee80211_key_conf *key) +{ + enum mt76x02_cipher_type cipher; + u8 key_data[32]; + u32 val; + + cipher = mt76x02_mac_get_key_info(key, key_data); + if (cipher == MT_CIPHER_NONE && key) + return -EOPNOTSUPP; + + val = __mt76_rr(dev, MT_SKEY_MODE(vif_idx)); + val &= ~(MT_SKEY_MODE_MASK << MT_SKEY_MODE_SHIFT(vif_idx, key_idx)); + val |= cipher << MT_SKEY_MODE_SHIFT(vif_idx, key_idx); + __mt76_wr(dev, MT_SKEY_MODE(vif_idx), val); + + __mt76_wr_copy(dev, MT_SKEY(vif_idx, key_idx), key_data, + sizeof(key_data)); + + return 0; +} +EXPORT_SYMBOL_GPL(mt76x02_mac_shared_key_setup); |