tree:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git 
ath11k-bringup
head:   e495d474d12aaf6e6288bf7cb3ba0eab4888f27f
commit: 258bbf525e652e244aa8b2331f55fda573fbe926 [3/44] ath11k: add driver

New smatch warnings:
drivers/net/wireless/ath/ath11k/mac.c:2186 ath11k_set_key() warn: impossible 
condition '(arvif->def_wep_key_index == -1) => (0-255 == (-1))'
drivers/net/wireless/ath/ath11k/mac.c:2304 ath11k_mac_set_peer_vht_fixed_rate() 
error: uninitialized symbol 'ar'.
drivers/net/wireless/ath/ath11k/mac.c:2390 ath11k_station_assoc() warn: always 
true condition '(arvif->def_wep_key_index != -1) => (0-255 != (-1))'
drivers/net/wireless/ath/ath11k/dp_tx.c:641 ath11k_dp_htt_srng_setup() warn: 
unsigned 'ring_entry_sz' is never less than zero.
drivers/net/wireless/ath/ath11k/dp_rx.c:278 ath11k_dp_rx_tid_del_func() error: 
not allocating enough data 36 vs 4
drivers/net/wireless/ath/ath11k/dp_rx.c:620 
ath11k_dp_peer_rx_pn_replay_config() warn: inconsistent returns 
'spin_lock:&ar->ab->data_lock'.
  Locked on:   line 571
  Unlocked on: line 620
drivers/net/wireless/ath/ath11k/dp_rx.c:620 
ath11k_dp_peer_rx_pn_replay_config() warn: inconsistent returns 
'spin_lock:&ab->data_lock'.
  Locked on:   line 620
  Unlocked on: line 571
drivers/net/wireless/ath/ath11k/dp_rx.c:976 ath11k_dp_htt_get_ppdu_desc() 
error: we previously assumed 'ppdu_info' could be null (see line 977)
drivers/net/wireless/ath/ath11k/ce.c:193 ath11k_ce_rx_post_pipe() error: we 
previously assumed 'pipe->dest_ring' could be null (see line 168)
drivers/net/wireless/ath/ath11k/debugfs_sta.c:170 
ath11k_update_per_peer_stats_from_txcompl() error: uninitialized symbol 
'rate_idx'.

Old smatch warnings:
drivers/net/wireless/ath/ath11k/dp_rx.c:2051 ath11k_dp_process_rx_err() warn: 
was && intended here instead of ||?

# 
https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/commit/?id=258bbf525e652e244aa8b2331f55fda573fbe926
git remote add ath6kl 
https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
git remote update ath6kl
git checkout 258bbf525e652e244aa8b2331f55fda573fbe926
vim +2186 drivers/net/wireless/ath/ath11k/mac.c

258bbf52 Kalle Valo 2019-02-05  2128  
258bbf52 Kalle Valo 2019-02-05  2129  static int ath11k_set_key(struct 
ieee80211_hw *hw, enum set_key_cmd cmd,
258bbf52 Kalle Valo 2019-02-05  2130                      struct ieee80211_vif 
*vif, struct ieee80211_sta *sta,
258bbf52 Kalle Valo 2019-02-05  2131                      struct 
ieee80211_key_conf *key)
258bbf52 Kalle Valo 2019-02-05  2132  {
258bbf52 Kalle Valo 2019-02-05  2133    struct ath11k *ar = hw->priv;
258bbf52 Kalle Valo 2019-02-05  2134    struct ath11k_vif *arvif = 
ath11k_vif_to_arvif(vif);
258bbf52 Kalle Valo 2019-02-05  2135    struct ath11k_peer *peer;
258bbf52 Kalle Valo 2019-02-05  2136    struct ath11k_sta *arsta;
258bbf52 Kalle Valo 2019-02-05  2137    const u8 *peer_addr;
258bbf52 Kalle Valo 2019-02-05  2138    bool is_wep = key->cipher == 
WLAN_CIPHER_SUITE_WEP40 ||
258bbf52 Kalle Valo 2019-02-05  2139            key->cipher == 
WLAN_CIPHER_SUITE_WEP104;
258bbf52 Kalle Valo 2019-02-05  2140    int ret = 0;
258bbf52 Kalle Valo 2019-02-05  2141    u32 flags = 0;
258bbf52 Kalle Valo 2019-02-05  2142  
258bbf52 Kalle Valo 2019-02-05  2143    if (key->keyidx > WMI_MAX_KEY_INDEX)
258bbf52 Kalle Valo 2019-02-05  2144            return -ENOSPC;
258bbf52 Kalle Valo 2019-02-05  2145  
258bbf52 Kalle Valo 2019-02-05  2146    mutex_lock(&ar->conf_mutex);
258bbf52 Kalle Valo 2019-02-05  2147  
258bbf52 Kalle Valo 2019-02-05  2148    if (sta)
258bbf52 Kalle Valo 2019-02-05  2149            peer_addr = sta->addr;
258bbf52 Kalle Valo 2019-02-05  2150    else if (arvif->vdev_type == 
WMI_VDEV_TYPE_STA)
258bbf52 Kalle Valo 2019-02-05  2151            peer_addr = vif->bss_conf.bssid;
258bbf52 Kalle Valo 2019-02-05  2152    else
258bbf52 Kalle Valo 2019-02-05  2153            peer_addr = vif->addr;
258bbf52 Kalle Valo 2019-02-05  2154  
258bbf52 Kalle Valo 2019-02-05  2155    key->hw_key_idx = key->keyidx;
258bbf52 Kalle Valo 2019-02-05  2156  
258bbf52 Kalle Valo 2019-02-05  2157    /* the peer should not disappear in 
mid-way (unless FW goes awry) since
258bbf52 Kalle Valo 2019-02-05  2158     * we already hold conf_mutex. we just 
make sure its there now.
258bbf52 Kalle Valo 2019-02-05  2159     */
258bbf52 Kalle Valo 2019-02-05  2160    spin_lock_bh(&ar->data_lock);
258bbf52 Kalle Valo 2019-02-05  2161    peer = ath11k_peer_find(ar->ab, 
arvif->vdev_id, peer_addr);
258bbf52 Kalle Valo 2019-02-05  2162    spin_unlock_bh(&ar->data_lock);
258bbf52 Kalle Valo 2019-02-05  2163  
258bbf52 Kalle Valo 2019-02-05  2164    if (!peer) {
258bbf52 Kalle Valo 2019-02-05  2165            if (cmd == SET_KEY) {
258bbf52 Kalle Valo 2019-02-05  2166                    ath11k_warn(ar->ab, 
"cannot install key for non-existent peer %pM\n",
258bbf52 Kalle Valo 2019-02-05  2167                                peer_addr);
258bbf52 Kalle Valo 2019-02-05  2168                    ret = -EOPNOTSUPP;
258bbf52 Kalle Valo 2019-02-05  2169                    goto exit;
258bbf52 Kalle Valo 2019-02-05  2170            } else {
258bbf52 Kalle Valo 2019-02-05  2171                    /* if the peer doesn't 
exist there is no key to disable
258bbf52 Kalle Valo 2019-02-05  2172                     * anymore
258bbf52 Kalle Valo 2019-02-05  2173                     */
258bbf52 Kalle Valo 2019-02-05  2174                    goto exit;
258bbf52 Kalle Valo 2019-02-05  2175            }
258bbf52 Kalle Valo 2019-02-05  2176    }
258bbf52 Kalle Valo 2019-02-05  2177  
258bbf52 Kalle Valo 2019-02-05  2178    if (key->flags & 
IEEE80211_KEY_FLAG_PAIRWISE)
258bbf52 Kalle Valo 2019-02-05  2179            flags |= WMI_KEY_PAIRWISE;
258bbf52 Kalle Valo 2019-02-05  2180    else
258bbf52 Kalle Valo 2019-02-05  2181            flags |= WMI_KEY_GROUP;
258bbf52 Kalle Valo 2019-02-05  2182  
258bbf52 Kalle Valo 2019-02-05  2183    if (is_wep) {
258bbf52 Kalle Valo 2019-02-05  2184            if (cmd == SET_KEY) {
258bbf52 Kalle Valo 2019-02-05  2185                    
arvif->wep_keys[key->keyidx] = key;
258bbf52 Kalle Valo 2019-02-05 @2186                    if 
(arvif->def_wep_key_index == -1)
                                                            
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

258bbf52 Kalle Valo 2019-02-05  2187                            flags |= 
WMI_KEY_TX_USAGE;
258bbf52 Kalle Valo 2019-02-05  2188            } else {
258bbf52 Kalle Valo 2019-02-05  2189                    
arvif->wep_keys[key->keyidx] = NULL;
258bbf52 Kalle Valo 2019-02-05  2190                    
ath11k_clear_vdev_key(arvif, key);
258bbf52 Kalle Valo 2019-02-05  2191            }
258bbf52 Kalle Valo 2019-02-05  2192            /* TODO mcast fix(ath10k) for 
fw applicable? */
258bbf52 Kalle Valo 2019-02-05  2193    }
258bbf52 Kalle Valo 2019-02-05  2194  
258bbf52 Kalle Valo 2019-02-05  2195    ret = ath11k_install_key(arvif, key, 
cmd, peer_addr, flags);
258bbf52 Kalle Valo 2019-02-05  2196    if (ret) {
258bbf52 Kalle Valo 2019-02-05  2197            ath11k_warn(ar->ab, 
"ath11k_install_key failed (%d)\n", ret);
258bbf52 Kalle Valo 2019-02-05  2198            goto exit;
258bbf52 Kalle Valo 2019-02-05  2199    }
258bbf52 Kalle Valo 2019-02-05  2200  
258bbf52 Kalle Valo 2019-02-05  2201    ret = 
ath11k_dp_peer_rx_pn_replay_config(arvif, peer_addr, cmd, key);
258bbf52 Kalle Valo 2019-02-05  2202    if (ret) {
258bbf52 Kalle Valo 2019-02-05  2203            /* No need to fail because we 
can still perform PN replay
258bbf52 Kalle Valo 2019-02-05  2204             * detection check in mac80211.
258bbf52 Kalle Valo 2019-02-05  2205             */
258bbf52 Kalle Valo 2019-02-05  2206            ath11k_dbg(ar->ab, 
ATH11K_DBG_MAC,
258bbf52 Kalle Valo 2019-02-05  2207                       "failed to enable PN 
replay detection offload support %d\n",
258bbf52 Kalle Valo 2019-02-05  2208                       ret);
258bbf52 Kalle Valo 2019-02-05  2209    }
258bbf52 Kalle Valo 2019-02-05  2210  
258bbf52 Kalle Valo 2019-02-05  2211    spin_lock_bh(&ar->data_lock);
258bbf52 Kalle Valo 2019-02-05  2212    peer = ath11k_peer_find(ar->ab, 
arvif->vdev_id, peer_addr);
258bbf52 Kalle Valo 2019-02-05  2213    if (peer && cmd == SET_KEY)
258bbf52 Kalle Valo 2019-02-05  2214            peer->keys[key->keyidx] = key;
258bbf52 Kalle Valo 2019-02-05  2215    else if (peer && cmd == DISABLE_KEY)
258bbf52 Kalle Valo 2019-02-05  2216            peer->keys[key->keyidx] = NULL;
258bbf52 Kalle Valo 2019-02-05  2217    else if (!peer)
258bbf52 Kalle Valo 2019-02-05  2218            /* impossible unless FW goes 
crazy */
258bbf52 Kalle Valo 2019-02-05  2219            ath11k_warn(ar->ab, "peer %pM 
disappeared!\n", peer_addr);
258bbf52 Kalle Valo 2019-02-05  2220  
258bbf52 Kalle Valo 2019-02-05  2221    if (sta) {
258bbf52 Kalle Valo 2019-02-05  2222            arsta = (struct ath11k_sta 
*)sta->drv_priv;
258bbf52 Kalle Valo 2019-02-05  2223  
258bbf52 Kalle Valo 2019-02-05  2224            switch (key->cipher) {
258bbf52 Kalle Valo 2019-02-05  2225            case WLAN_CIPHER_SUITE_TKIP:
258bbf52 Kalle Valo 2019-02-05  2226            case WLAN_CIPHER_SUITE_CCMP:
258bbf52 Kalle Valo 2019-02-05  2227            case WLAN_CIPHER_SUITE_CCMP_256:
258bbf52 Kalle Valo 2019-02-05  2228            case WLAN_CIPHER_SUITE_GCMP:
258bbf52 Kalle Valo 2019-02-05  2229            case WLAN_CIPHER_SUITE_GCMP_256:
258bbf52 Kalle Valo 2019-02-05  2230                    if (cmd == SET_KEY)
258bbf52 Kalle Valo 2019-02-05  2231                            arsta->pn_type 
= HAL_PN_TYPE_WPA;
258bbf52 Kalle Valo 2019-02-05  2232                    else
258bbf52 Kalle Valo 2019-02-05  2233                            arsta->pn_type 
= HAL_PN_TYPE_NONE;
258bbf52 Kalle Valo 2019-02-05  2234                    break;
258bbf52 Kalle Valo 2019-02-05  2235            default:
258bbf52 Kalle Valo 2019-02-05  2236                    arsta->pn_type = 
HAL_PN_TYPE_NONE;
258bbf52 Kalle Valo 2019-02-05  2237                    break;
258bbf52 Kalle Valo 2019-02-05  2238            }
258bbf52 Kalle Valo 2019-02-05  2239    }
258bbf52 Kalle Valo 2019-02-05  2240    spin_unlock_bh(&ar->data_lock);
258bbf52 Kalle Valo 2019-02-05  2241  
258bbf52 Kalle Valo 2019-02-05  2242  exit:
258bbf52 Kalle Valo 2019-02-05  2243    mutex_unlock(&ar->conf_mutex);
258bbf52 Kalle Valo 2019-02-05  2244    return ret;
258bbf52 Kalle Valo 2019-02-05  2245  }
258bbf52 Kalle Valo 2019-02-05  2246  
258bbf52 Kalle Valo 2019-02-05  2247  static void 
ath11k_set_default_unicast_key(struct ieee80211_hw *hw,
258bbf52 Kalle Valo 2019-02-05  2248                                       
struct ieee80211_vif *vif,
258bbf52 Kalle Valo 2019-02-05  2249                                       int 
keyidx)
258bbf52 Kalle Valo 2019-02-05  2250  {
258bbf52 Kalle Valo 2019-02-05  2251    struct ath11k *ar = hw->priv;
258bbf52 Kalle Valo 2019-02-05  2252    struct ath11k_vif *arvif = (void 
*)vif->drv_priv;
258bbf52 Kalle Valo 2019-02-05  2253    int ret;
258bbf52 Kalle Valo 2019-02-05  2254  
258bbf52 Kalle Valo 2019-02-05  2255    mutex_lock(&arvif->ar->conf_mutex);
258bbf52 Kalle Valo 2019-02-05  2256  
258bbf52 Kalle Valo 2019-02-05  2257    if (arvif->ar->state != ATH11K_STATE_ON)
258bbf52 Kalle Valo 2019-02-05  2258            goto unlock;
258bbf52 Kalle Valo 2019-02-05  2259  
258bbf52 Kalle Valo 2019-02-05  2260    ath11k_dbg(ar->ab, ATH11K_DBG_MAC, "mac 
vdev %d set keyidx %d\n",
258bbf52 Kalle Valo 2019-02-05  2261               arvif->vdev_id, keyidx);
258bbf52 Kalle Valo 2019-02-05  2262  
258bbf52 Kalle Valo 2019-02-05  2263    ret = ath11k_wmi_vdev_set_param_cmd(ar, 
arvif->vdev_id,
258bbf52 Kalle Valo 2019-02-05  2264                                        
WMI_VDEV_PARAM_DEF_KEYID, keyidx);
258bbf52 Kalle Valo 2019-02-05  2265  
258bbf52 Kalle Valo 2019-02-05  2266    if (ret) {
258bbf52 Kalle Valo 2019-02-05  2267            ath11k_warn(ar->ab, "failed to 
update wep key index for vdev %d: %d\n",
258bbf52 Kalle Valo 2019-02-05  2268                        arvif->vdev_id,
258bbf52 Kalle Valo 2019-02-05  2269                        ret);
258bbf52 Kalle Valo 2019-02-05  2270            goto unlock;
258bbf52 Kalle Valo 2019-02-05  2271    }
258bbf52 Kalle Valo 2019-02-05  2272  
258bbf52 Kalle Valo 2019-02-05  2273    arvif->def_wep_key_index = keyidx;
258bbf52 Kalle Valo 2019-02-05  2274  
258bbf52 Kalle Valo 2019-02-05  2275  unlock:
258bbf52 Kalle Valo 2019-02-05  2276    mutex_unlock(&arvif->ar->conf_mutex);
258bbf52 Kalle Valo 2019-02-05  2277  }
258bbf52 Kalle Valo 2019-02-05  2278  
258bbf52 Kalle Valo 2019-02-05  2279  static int
258bbf52 Kalle Valo 2019-02-05  2280  
ath11k_mac_bitrate_mask_num_vht_rates(struct ath11k *ar,
258bbf52 Kalle Valo 2019-02-05  2281                                  enum 
nl80211_band band,
258bbf52 Kalle Valo 2019-02-05  2282                                  const 
struct cfg80211_bitrate_mask *mask)
258bbf52 Kalle Valo 2019-02-05  2283  {
258bbf52 Kalle Valo 2019-02-05  2284    int num_rates = 0;
258bbf52 Kalle Valo 2019-02-05  2285    int i;
258bbf52 Kalle Valo 2019-02-05  2286  
258bbf52 Kalle Valo 2019-02-05  2287    for (i = 0; i < 
ARRAY_SIZE(mask->control[band].vht_mcs); i++)
258bbf52 Kalle Valo 2019-02-05  2288            num_rates += 
hweight16(mask->control[band].vht_mcs[i]);
258bbf52 Kalle Valo 2019-02-05  2289  
258bbf52 Kalle Valo 2019-02-05  2290    return num_rates;
258bbf52 Kalle Valo 2019-02-05  2291  }
258bbf52 Kalle Valo 2019-02-05  2292  
258bbf52 Kalle Valo 2019-02-05  2293  static void
258bbf52 Kalle Valo 2019-02-05  2294  ath11k_mac_set_peer_vht_fixed_rate(struct 
ath11k_vif *arvif,
258bbf52 Kalle Valo 2019-02-05  2295                               struct 
ieee80211_sta *sta,
258bbf52 Kalle Valo 2019-02-05  2296                               const struct 
cfg80211_bitrate_mask *mask,
258bbf52 Kalle Valo 2019-02-05  2297                               enum 
nl80211_band band)
258bbf52 Kalle Valo 2019-02-05  2298  {
258bbf52 Kalle Valo 2019-02-05  2299    struct ath11k *ar;
                                        ^^^^^^^^^^^^^^^^^
258bbf52 Kalle Valo 2019-02-05  2300    u8 vht_rate, nss;
258bbf52 Kalle Valo 2019-02-05  2301    u32 rate_code;
258bbf52 Kalle Valo 2019-02-05  2302    int err, i;
258bbf52 Kalle Valo 2019-02-05  2303  
258bbf52 Kalle Valo 2019-02-05 @2304    lockdep_assert_held(&ar->conf_mutex);
                                                            ^^^^^^^^^^^^^^^
258bbf52 Kalle Valo 2019-02-05  2305  
258bbf52 Kalle Valo 2019-02-05  2306    nss = 0;
258bbf52 Kalle Valo 2019-02-05  2307    ar = arvif->ar;
258bbf52 Kalle Valo 2019-02-05  2308  
258bbf52 Kalle Valo 2019-02-05  2309    for (i = 0; i < 
ARRAY_SIZE(mask->control[band].vht_mcs); i++) {
258bbf52 Kalle Valo 2019-02-05  2310            if 
(hweight16(mask->control[band].vht_mcs[i]) == 1) {
258bbf52 Kalle Valo 2019-02-05  2311                    nss = i + 1;
258bbf52 Kalle Valo 2019-02-05  2312                    vht_rate = 
ffs(mask->control[band].vht_mcs[i]) - 1;
258bbf52 Kalle Valo 2019-02-05  2313            }
258bbf52 Kalle Valo 2019-02-05  2314    }
258bbf52 Kalle Valo 2019-02-05  2315  
258bbf52 Kalle Valo 2019-02-05  2316    if (!nss) {
258bbf52 Kalle Valo 2019-02-05  2317            ath11k_warn(ar->ab, "No single 
VHT Fixed rate found to set for %pM",
258bbf52 Kalle Valo 2019-02-05  2318                        sta->addr);
258bbf52 Kalle Valo 2019-02-05  2319            return;
258bbf52 Kalle Valo 2019-02-05  2320    }
258bbf52 Kalle Valo 2019-02-05  2321  
258bbf52 Kalle Valo 2019-02-05  2322    ath11k_dbg(ar->ab, ATH11K_DBG_MAC,
258bbf52 Kalle Valo 2019-02-05  2323               "Setting Fixed VHT Rate for 
peer %pM. Device will not switch to any other selected rates",
258bbf52 Kalle Valo 2019-02-05  2324               sta->addr);
258bbf52 Kalle Valo 2019-02-05  2325  
258bbf52 Kalle Valo 2019-02-05  2326    rate_code = 
ATH11K_HW_RATE_CODE(vht_rate, nss,
258bbf52 Kalle Valo 2019-02-05  2327                                    
WMI_RATE_PREAMBLE_VHT);
258bbf52 Kalle Valo 2019-02-05  2328    err = ath11k_wmi_set_peer_param(ar, 
sta->addr,
258bbf52 Kalle Valo 2019-02-05  2329                                    
arvif->vdev_id,
258bbf52 Kalle Valo 2019-02-05  2330                                    
WMI_PEER_PARAM_FIXED_RATE,
258bbf52 Kalle Valo 2019-02-05  2331                                    
rate_code);
258bbf52 Kalle Valo 2019-02-05  2332    if (err)
258bbf52 Kalle Valo 2019-02-05  2333            ath11k_warn(ar->ab,
258bbf52 Kalle Valo 2019-02-05  2334                        "failed to update 
STA %pM Fixed Rate %d: %d\n",
258bbf52 Kalle Valo 2019-02-05  2335                         sta->addr, 
rate_code, err);
258bbf52 Kalle Valo 2019-02-05  2336  }
258bbf52 Kalle Valo 2019-02-05  2337  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

_______________________________________________
ath10k mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/ath10k

Reply via email to