forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/drivers/staging/vt6656/key.c
....@@ -35,7 +35,7 @@
3535
3636 static int vnt_set_keymode(struct ieee80211_hw *hw, u8 *mac_addr,
3737 struct ieee80211_key_conf *key, u32 key_type,
38
- u32 mode, bool onfly_latch)
38
+ u32 mode)
3939 {
4040 struct vnt_private *priv = hw->priv;
4141 u8 broadcast[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
....@@ -63,20 +63,16 @@
6363 }
6464
6565 switch (key_type) {
66
- /* fallthrough */
6766 case VNT_KEY_DEFAULTKEY:
6867 /* default key last entry */
6968 entry = MAX_KEY_TABLE - 1;
7069 key->hw_key_idx = entry;
71
- case VNT_KEY_ALLGROUP:
72
- key_mode |= VNT_KEY_ALLGROUP;
73
- if (onfly_latch)
74
- key_mode |= VNT_KEY_ONFLY_ALL;
70
+ fallthrough;
7571 case VNT_KEY_GROUP_ADDRESS:
76
- key_mode |= mode;
72
+ key_mode = mode | (mode << 4);
73
+ break;
7774 case VNT_KEY_GROUP:
78
- key_mode |= (mode << 4);
79
- key_mode |= VNT_KEY_GROUP;
75
+ key_mode = mode << 4;
8076 break;
8177 case VNT_KEY_PAIRWISE:
8278 key_mode |= mode;
....@@ -86,8 +82,7 @@
8682 return -EINVAL;
8783 }
8884
89
- if (onfly_latch)
90
- key_mode |= VNT_KEY_ONFLY;
85
+ key_mode |= key_type;
9186
9287 if (mode == KEY_CTL_WEP) {
9388 if (key->keylen == WLAN_KEY_LEN_WEP40)
....@@ -96,9 +91,8 @@
9691 key->key[15] |= 0x80;
9792 }
9893
99
- vnt_mac_set_keyentry(priv, key_mode, entry, key_inx, bssid, key->key);
100
-
101
- return 0;
94
+ return vnt_mac_set_keyentry(priv, key_mode, entry,
95
+ key_inx, bssid, key->key);
10296 }
10397
10498 int vnt_set_keys(struct ieee80211_hw *hw, struct ieee80211_sta *sta,
....@@ -107,28 +101,21 @@
107101 struct vnt_private *priv = hw->priv;
108102 u8 *mac_addr = NULL;
109103 u8 key_dec_mode = 0;
110
- int ret = 0, u;
111104
112105 if (sta)
113106 mac_addr = &sta->addr[0];
114107
115108 switch (key->cipher) {
116
- case 0:
117
- for (u = 0 ; u < MAX_KEY_TABLE; u++)
118
- vnt_mac_disable_keyentry(priv, u);
119
- return ret;
120
-
121109 case WLAN_CIPHER_SUITE_WEP40:
122110 case WLAN_CIPHER_SUITE_WEP104:
123
- for (u = 0; u < MAX_KEY_TABLE; u++)
124
- vnt_mac_disable_keyentry(priv, u);
125
-
126111 vnt_set_keymode(hw, mac_addr, key, VNT_KEY_DEFAULTKEY,
127
- KEY_CTL_WEP, true);
112
+ KEY_CTL_WEP);
128113
129114 key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV;
130115
131
- return ret;
116
+ return vnt_set_keymode(hw, mac_addr, key, VNT_KEY_DEFAULTKEY,
117
+ KEY_CTL_WEP);
118
+
132119 case WLAN_CIPHER_SUITE_TKIP:
133120 key->flags |= IEEE80211_KEY_FLAG_GENERATE_MMIC;
134121 key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV;
....@@ -138,19 +125,20 @@
138125 break;
139126 case WLAN_CIPHER_SUITE_CCMP:
140127 if (priv->local_id <= MAC_REVISION_A1)
141
- return -EINVAL;
128
+ return -EOPNOTSUPP;
142129
143130 key_dec_mode = KEY_CTL_CCMP;
144131
145132 key->flags |= IEEE80211_KEY_FLAG_GENERATE_IV;
133
+ break;
134
+ default:
135
+ return -EOPNOTSUPP;
146136 }
147137
148138 if (key->flags & IEEE80211_KEY_FLAG_PAIRWISE)
149
- vnt_set_keymode(hw, mac_addr, key, VNT_KEY_PAIRWISE,
150
- key_dec_mode, true);
151
- else
152
- vnt_set_keymode(hw, mac_addr, key, VNT_KEY_GROUP_ADDRESS,
153
- key_dec_mode, true);
139
+ return vnt_set_keymode(hw, mac_addr, key, VNT_KEY_PAIRWISE,
140
+ key_dec_mode);
154141
155
- return 0;
142
+ return vnt_set_keymode(hw, mac_addr, key,
143
+ VNT_KEY_GROUP_ADDRESS, key_dec_mode);
156144 }