mt76: mt7615: add hw support for AES_CMAC cipher
Subsystems (2)
Lorenzo Bianconi
maintainercover mt76: mt7615: add hw support for AES_CMAC cipher
Fall back to sw encryption for unsupported ciphers
Lorenzo Bianconi (2):
mt76: mt7615: fall back to sw encryption for unsupported ciphers
mt76: mt7615: add BIP_CMAC_128 cipher support
drivers/net/wireless/mediatek/mt76/mac80211.c | 5 +++-- drivers/net/wireless/mediatek/mt76/mt7615/mac.c | 9 +++++++-- drivers/net/wireless/mediatek/mt76/mt7615/main.c | 16 ++++++++++++++++ drivers/net/wireless/mediatek/mt76/mt7615/mcu.c | 3 +++ 4 files changed, 29 insertions(+), 4 deletions(-)
Signature · 1 line
2.21.0
Lorenzo Bianconi
maintainerPATCH 1/2 mt76: mt7615: fall back to sw encryption for unsupported ciphers
Fix following warning falling back to sw encryption for unsupported ciphers
WARNING: CPU: 2 PID: 1495 at backports-4.19.32-1/net/mac80211/key.c:1023 mt76_wcid_key_setup+0x68/0xbc [mt76] CPU: 2 PID: 1495 Comm: hostapd Not tainted 4.14.131 #0 Stack : 00000000 8f0f8bc0 00000000 8007ccec 805f0000 8058ec18 00000000 00000000 80559788 8dca79bc 8fefb10c 805c89c7 805545c8 00000001 8dca7960 53261662 00000000 00000000 80640000 00004668 00000000 000000e9 00000007 00000000 00000000 805d0000 00072537 00000000 80000000 00000000 805f0000 8f1e70d0 8e8fa098 000003ff 805c0000 8f0f8bc0 00000001 802d4340 00000008 80630008 [<800108d0>] show_stack+0x58/0x100 [<8049214c>] dump_stack+0x9c/0xe0 [<80033998>] __warn+0xe0/0x138 [<80033a80>] warn_slowpath_null+0x1c/0x2c [<8e8fa098>] mt76_wcid_key_setup+0x68/0xbc [mt76] [<8e889930>] mt7615_eeprom_init+0x7c0/0xe14 [mt7615e]
Suggested-by Sebastian Gottschall <[email protected]>
Signed-off-by Ryder Lee <[email protected]>
Signed-off-by Lorenzo Bianconi <[email protected]>
--- drivers/net/wireless/mediatek/mt76/mt7615/main.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
drivers/net/wireless/mediatek/mt76/mt7615/main.c +15 -0
@@ -178,6 +178,21 @@ static int mt7615_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, !(key->flags & IEEE80211_KEY_FLAG_PAIRWISE))return -EOPNOTSUPP ; +/* fall back to sw encryption for unsupported ciphers */ +switch (key->cipher) { +case WLAN_CIPHER_SUITE_WEP40 : +case WLAN_CIPHER_SUITE_WEP104 : +case WLAN_CIPHER_SUITE_TKIP : +case WLAN_CIPHER_SUITE_CCMP : +case WLAN_CIPHER_SUITE_CCMP_256 : +case WLAN_CIPHER_SUITE_GCMP : +case WLAN_CIPHER_SUITE_GCMP_256 : +case WLAN_CIPHER_SUITE_SMS4 : +break ; +default : +return -EOPNOTSUPP ; + } +if (cmd ==SET_KEY ) { key->hw_key_idx = wcid->idx; wcid->hw_key_idx = idx;
Signature · 1 line
2.21.0
Lorenzo Bianconi
maintainerPATCH 2/2 mt76: mt7615: add BIP_CMAC_128 cipher support
In reply to Lorenzo BianconiEnable hw support for BIP_CMAC_128 cipher
Signed-off-by Ryder Lee <[email protected]>
Signed-off-by Lorenzo Bianconi <[email protected]>
--- drivers/net/wireless/mediatek/mt76/mac80211.c | 5 +++-- drivers/net/wireless/mediatek/mt76/mt7615/mac.c | 9 +++++++-- drivers/net/wireless/mediatek/mt76/mt7615/main.c | 1 + drivers/net/wireless/mediatek/mt76/mt7615/mcu.c | 3 +++ 4 files changed, 14 insertions(+), 4 deletions(-)
drivers/net/wireless/mediatek/mt76/mac80211.c +3 -2
@@ -487,9 +487,10 @@ void mt76_wcid_key_setup(struct mt76_dev *dev, struct mt76_wcid *wcid,if (!key)return ; -if (key->cipher ==WLAN_CIPHER_SUITE_CCMP ) - wcid->rx_check_pn = true; +if (key->cipher !=WLAN_CIPHER_SUITE_CCMP ) +return ; + wcid->rx_check_pn = true;for (i =0 ; i <IEEE80211_NUM_TIDS ; i++) {ieee80211_get_key_rx_seq (key, i, &seq);memcpy (wcid->rx_key_pn[i], seq.ccmp.pn,sizeof (seq.ccmp.pn));
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +7 -2
@@ -309,6 +309,7 @@ int mt7615_mac_write_txwi(struct mt7615_dev *dev, __le32 *txwi,struct ieee80211_tx_info *info =IEEE80211_SKB_CB (skb);struct ieee80211_tx_rate *rate = &info->control.rates[0 ];struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; +bool multicast =is_multicast_ether_addr (hdr->addr1);struct ieee80211_vif *vif = info->control.vif;int tx_count =8 ;u8 fc_type, fc_stype, p_fmt, q_idx, omac_idx =0 ;
@@ -360,8 +361,12 @@ int mt7615_mac_write_txwi(struct mt7615_dev *dev, __le32 *txwi, val =FIELD_PREP (MT_TXD2_FRAME_TYPE , fc_type) |FIELD_PREP (MT_TXD2_SUB_TYPE , fc_stype) | -FIELD_PREP (MT_TXD2_MULTICAST , -is_multicast_ether_addr (hdr->addr1)); +FIELD_PREP (MT_TXD2_MULTICAST , multicast); +if (key) + val |=FIELD_PREP (MT_TXD2_BIP , + multicast && +ieee80211_is_robust_mgmt_frame (skb) && + key->cipher ==WLAN_CIPHER_SUITE_AES_CMAC ); txwi[2 ] =cpu_to_le32 (val);if (!(info->flags &IEEE80211_TX_CTL_AMPDU ))
drivers/net/wireless/mediatek/mt76/mt7615/main.c +1 -0
@@ -188,6 +188,7 @@ static int mt7615_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,case WLAN_CIPHER_SUITE_GCMP :case WLAN_CIPHER_SUITE_GCMP_256 :case WLAN_CIPHER_SUITE_SMS4 : +case WLAN_CIPHER_SUITE_AES_CMAC :break ;default :return -EOPNOTSUPP ;
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +3 -0
@@ -908,6 +908,8 @@ mt7615_get_key_info(struct ieee80211_key_conf *key, u8 *key_data)return MT_CIPHER_GCMP_256 ;case WLAN_CIPHER_SUITE_SMS4 :return MT_CIPHER_WAPI ; +case WLAN_CIPHER_SUITE_AES_CMAC : +return MT_CIPHER_BIP_CMAC_128 ;default :return MT_CIPHER_NONE ; }
@@ -940,6 +942,7 @@ int mt7615_mcu_set_wtbl_key(struct mt7615_dev *dev, int wcid,if (cipher ==MT_CIPHER_NONE )return -EOPNOTSUPP ; + req.key.ikv = (cipher ==MT_CIPHER_BIP_CMAC_128 ); req.key.rkv =1 ; req.key.cipher_id = cipher; req.key.key_id = key->keyidx;
Signature · 1 line
2.21.0