Lines Matching defs:vif
767 static void wmi_evt_ready(struct wil6210_vif *vif, int id, void *d, int len)
769 struct wil6210_priv *wil = vif_to_wil(vif);
815 static void wmi_evt_rx_mgmt(struct wil6210_vif *vif, int id, void *d, int len)
817 struct wil6210_priv *wil = vif_to_wil(vif);
903 cfg80211_rx_mgmt(vif_to_radio_wdev(wil, vif), freq, signal,
909 static void wmi_evt_tx_mgmt(struct wil6210_vif *vif, int id, void *d, int len)
920 static void wmi_evt_scan_complete(struct wil6210_vif *vif, int id,
923 struct wil6210_priv *wil = vif_to_wil(vif);
926 if (vif->scan_request) {
936 vif->scan_request, info.aborted);
937 del_timer_sync(&vif->scan_timer);
938 cfg80211_scan_done(vif->scan_request, &info);
939 if (vif->mid == 0)
941 vif->scan_request = NULL;
943 if (vif->p2p.pending_listen_wdev) {
945 schedule_work(&vif->p2p.delayed_listen_work);
953 static void wmi_evt_connect(struct wil6210_vif *vif, int id, void *d, int len)
955 struct wil6210_priv *wil = vif_to_wil(vif);
956 struct net_device *ndev = vif_to_ndev(vif);
957 struct wireless_dev *wdev = vif_to_wdev(vif);
1022 if (!test_bit(wil_vif_fwconnecting, vif->status)) {
1027 del_timer_sync(&vif->connect_timer);
1039 wil->sta[evt->cid].mid = vif->mid;
1042 rc = wil_ring_init_tx(vif, evt->cid);
1046 wmi_disconnect_sta(vif, wil->sta[evt->cid].addr,
1066 cfg80211_ref_bss(wiphy, vif->bss);
1067 cfg80211_connect_bss(ndev, evt->bssid, vif->bss,
1073 vif->bss = NULL;
1108 if (!test_and_set_bit(wil_vif_fwconnected, vif->status))
1110 wil_update_net_queues_bh(wil, vif, NULL, false);
1117 clear_bit(wil_vif_fwconnecting, vif->status);
1121 static void wmi_evt_disconnect(struct wil6210_vif *vif, int id,
1124 struct wil6210_priv *wil = vif_to_wil(vif);
1141 wil6210_disconnect_complete(vif, evt->bssid, reason_code);
1143 struct wireless_dev *wdev = vif_to_wdev(vif);
1144 struct net_device *ndev = vif_to_ndev(vif);
1166 static void wmi_evt_eapol_rx(struct wil6210_vif *vif, int id, void *d, int len)
1168 struct wil6210_priv *wil = vif_to_wil(vif);
1169 struct net_device *ndev = vif_to_ndev(vif);
1179 evt->src_mac, vif->mid);
1181 cid = wil_find_cid(wil, vif->mid, evt->src_mac);
1216 static void wmi_evt_ring_en(struct wil6210_vif *vif, int id, void *d, int len)
1218 struct wil6210_priv *wil = vif_to_wil(vif);
1221 struct wireless_dev *wdev = vif_to_wdev(vif);
1226 wil_dbg_wmi(wil, "Enable vring %d MID %d\n", vri, vif->mid);
1234 test_bit(wil_vif_ft_roam, vif->status))
1239 if (vri == vif->bcast_ring) /* no BA for bcast */
1253 if (test_bit(wil_vif_ft_roam, vif->status)) {
1257 clear_bit(wil_vif_ft_roam, vif->status);
1264 static void wmi_evt_ba_status(struct wil6210_vif *vif, int id,
1267 struct wil6210_priv *wil = vif_to_wil(vif);
1296 static void wmi_evt_addba_rx_req(struct wil6210_vif *vif, int id,
1299 struct wil6210_priv *wil = vif_to_wil(vif);
1309 wil_addba_rx_request(wil, vif->mid, cid, tid, evt->dialog_token,
1314 static void wmi_evt_delba(struct wil6210_vif *vif, int id, void *d, int len)
1317 struct wil6210_priv *wil = vif_to_wil(vif);
1339 vif->mid, cid, tid,
1376 wmi_evt_sched_scan_result(struct wil6210_vif *vif, int id, void *d, int len)
1378 struct wil6210_priv *wil = vif_to_wil(vif);
1452 static void wil_link_stats_store_basic(struct wil6210_vif *vif,
1455 struct wil6210_priv *wil = vif_to_wil(vif);
1468 static void wil_link_stats_store_global(struct wil6210_vif *vif,
1471 struct wil6210_priv *wil = vif_to_wil(vif);
1476 static void wmi_link_stats_parse(struct wil6210_vif *vif, u64 tsf,
1480 struct wil6210_priv *wil = vif_to_wil(vif);
1509 if (vif->fw_stats_ready) {
1511 vif->fw_stats_tsf = 0;
1512 vif->fw_stats_ready = false;
1515 wil_link_stats_store_basic(vif, payload + hdr_size);
1518 vif->fw_stats_tsf = tsf;
1519 vif->fw_stats_ready = true;
1537 wil_link_stats_store_global(vif, payload + hdr_size);
1556 wmi_evt_link_stats(struct wil6210_vif *vif, int id, void *d, int len)
1558 struct wil6210_priv *wil = vif_to_wil(vif);
1572 wmi_link_stats_parse(vif, le64_to_cpu(evt->tsf), evt->has_next,
1576 /* find cid and ringid for the station vif
1581 struct wil6210_vif *vif,
1591 if (!(vif->wdev.iftype == NL80211_IFTYPE_STATION ||
1592 vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT)) {
1593 wil_err(wil, "invalid interface type %d\n", vif->wdev.iftype);
1604 if (!ring->va || !txdata->enabled || txdata->mid != vif->mid)
1623 wmi_evt_auth_status(struct wil6210_vif *vif, int id, void *d, int len)
1625 struct wil6210_priv *wil = vif_to_wil(vif);
1626 struct net_device *ndev = vif_to_ndev(vif);
1677 rc = wil_find_cid_ringid_sta(wil, vif, &cid, &ringid);
1683 if (vif->privacy) {
1685 rc = wmi_del_cipher_key(vif, 0, wil->sta[cid].addr,
1691 rc = wmi_del_cipher_key(vif, 0, wil->sta[cid].addr,
1708 wil6210_disconnect(vif, NULL, WLAN_REASON_PREV_AUTH_NOT_VALID);
1712 wmi_evt_reassoc_status(struct wil6210_vif *vif, int id, void *d, int len)
1714 struct wil6210_priv *wil = vif_to_wil(vif);
1715 struct net_device *ndev = vif_to_ndev(vif);
1762 rc = wil_find_cid_ringid_sta(wil, vif, &cid, &ringid);
1806 rc = wil->txrx_ops.tx_ring_modify(vif, ringid, cid, 0);
1809 cid, vif->mid, ringid, rc);
1817 ether_addr_copy(wil->sta[cid].addr, vif->bss->bssid);
1819 del_timer_sync(&vif->connect_timer);
1821 cfg80211_ref_bss(wiphy, vif->bss);
1826 info.links[0].bss = vif->bss;
1832 vif->bss = NULL;
1837 wil6210_disconnect(vif, NULL, WLAN_REASON_PREV_AUTH_NOT_VALID);
1841 wmi_evt_link_monitor(struct wil6210_vif *vif, int id, void *d, int len)
1843 struct wil6210_priv *wil = vif_to_wil(vif);
1844 struct net_device *ndev = vif_to_ndev(vif);
1869 static void wmi_evt_ignore(struct wil6210_vif *vif, int id, void *d, int len)
1871 struct wil6210_priv *wil = vif_to_wil(vif);
1878 void (*handler)(struct wil6210_vif *vif,
2090 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev);
2095 return wmi_call(wil, WMI_ECHO_CMDID, vif->mid, &cmd, sizeof(cmd),
2102 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev);
2109 return wmi_send(wil, WMI_SET_MAC_ADDRESS_CMDID, vif->mid,
2115 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev);
2154 rc = wmi_call(wil, WMI_LED_CFG_CMDID, vif->mid, &cmd, sizeof(cmd),
2172 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev);
2186 rc = wmi_call(wil, WMI_RBUFCAP_CFG_CMDID, vif->mid, &cmd, sizeof(cmd),
2201 int wmi_pcp_start(struct wil6210_vif *vif, int bi, u8 wmi_nettype,
2204 struct wil6210_priv *wil = vif_to_wil(vif);
2228 if (!vif->privacy)
2249 rc = wmi_call(wil, WMI_PCP_START_CMDID, vif->mid, &cmd, sizeof(cmd),
2264 int wmi_pcp_stop(struct wil6210_vif *vif)
2266 struct wil6210_priv *wil = vif_to_wil(vif);
2273 return wmi_call(wil, WMI_PCP_STOP_CMDID, vif->mid, NULL, 0,
2278 int wmi_set_ssid(struct wil6210_vif *vif, u8 ssid_len, const void *ssid)
2280 struct wil6210_priv *wil = vif_to_wil(vif);
2290 return wmi_send(wil, WMI_SET_SSID_CMDID, vif->mid, &cmd, sizeof(cmd));
2293 int wmi_get_ssid(struct wil6210_vif *vif, u8 *ssid_len, void *ssid)
2295 struct wil6210_priv *wil = vif_to_wil(vif);
2305 rc = wmi_call(wil, WMI_GET_SSID_CMDID, vif->mid, NULL, 0,
2323 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev);
2328 return wmi_send(wil, WMI_SET_PCP_CHANNEL_CMDID, vif->mid,
2334 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev);
2343 rc = wmi_call(wil, WMI_GET_PCP_CHANNEL_CMDID, vif->mid, NULL, 0,
2357 int wmi_p2p_cfg(struct wil6210_vif *vif, int channel, int bi)
2359 struct wil6210_priv *wil = vif_to_wil(vif);
2375 rc = wmi_call(wil, WMI_P2P_CFG_CMDID, vif->mid, &cmd, sizeof(cmd),
2385 int wmi_start_listen(struct wil6210_vif *vif)
2387 struct wil6210_priv *wil = vif_to_wil(vif);
2398 rc = wmi_call(wil, WMI_START_LISTEN_CMDID, vif->mid, NULL, 0,
2409 int wmi_start_search(struct wil6210_vif *vif)
2411 struct wil6210_priv *wil = vif_to_wil(vif);
2422 rc = wmi_call(wil, WMI_START_SEARCH_CMDID, vif->mid, NULL, 0,
2433 int wmi_stop_discovery(struct wil6210_vif *vif)
2435 struct wil6210_priv *wil = vif_to_wil(vif);
2440 rc = wmi_call(wil, WMI_DISCOVERY_STOP_CMDID, vif->mid, NULL, 0,
2450 int wmi_del_cipher_key(struct wil6210_vif *vif, u8 key_index,
2453 struct wil6210_priv *wil = vif_to_wil(vif);
2461 return wmi_send(wil, WMI_DELETE_CIPHER_KEY_CMDID, vif->mid,
2465 int wmi_add_cipher_key(struct wil6210_vif *vif, u8 key_index,
2469 struct wil6210_priv *wil = vif_to_wil(vif);
2490 return wmi_send(wil, WMI_ADD_CIPHER_KEY_CMDID, vif->mid,
2494 int wmi_set_ie(struct wil6210_vif *vif, u8 type, u16 ie_len, const void *ie)
2496 struct wil6210_priv *wil = vif_to_wil(vif);
2526 rc = wmi_send(wil, WMI_SET_APPIE_CMDID, vif->mid, cmd, len);
2538 int wmi_update_ft_ies(struct wil6210_vif *vif, u16 ie_len, const void *ie)
2540 struct wil6210_priv *wil = vif_to_wil(vif);
2563 rc = wmi_send(wil, WMI_UPDATE_FT_IES_CMDID, vif->mid, cmd, len);
2584 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev);
2596 rc = wmi_call(wil, WMI_START_LISTEN_CMDID, vif->mid, NULL, 0,
2603 rc = wmi_call(wil, WMI_DISCOVERY_STOP_CMDID, vif->mid, NULL, 0,
2615 struct wil6210_vif *vif = ndev_to_vif(ndev);
2661 rc = wmi_call(wil, WMI_CFG_RX_CHAIN_CMDID, vif->mid, &cmd, sizeof(cmd),
2679 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev);
2693 rc = wmi_call(wil, WMI_TEMP_SENSE_CMDID, vif->mid, &cmd, sizeof(cmd),
2711 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev);
2730 rc = wmi_call(wil, WMI_TEMP_SENSE_ALL_CMDID, vif->mid, &cmd,
2745 int wmi_disconnect_sta(struct wil6210_vif *vif, const u8 *mac, u16 reason,
2748 struct wil6210_priv *wil = vif_to_wil(vif);
2764 vif->locally_generated_disc = true;
2767 rc = wmi_call(wil, WMI_DEL_STA_CMDID, vif->mid, &del_sta_cmd,
2772 rc = wmi_call(wil, WMI_DISCONNECT_STA_CMDID, vif->mid,
2941 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev);
2956 rc = wmi_call(wil, WMI_PS_DEV_PROFILE_CFG_CMDID, vif->mid,
2976 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev);
2993 rc = wmi_call(wil, WMI_SET_MGMT_RETRY_LIMIT_CMDID, vif->mid,
3011 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev);
3024 rc = wmi_call(wil, WMI_GET_MGMT_RETRY_LIMIT_CMDID, vif->mid, NULL, 0,
3036 int wmi_abort_scan(struct wil6210_vif *vif)
3038 struct wil6210_priv *wil = vif_to_wil(vif);
3043 rc = wmi_send(wil, WMI_ABORT_SCAN_CMDID, vif->mid, NULL, 0);
3050 int wmi_new_sta(struct wil6210_vif *vif, const u8 *mac, u8 aid)
3052 struct wil6210_priv *wil = vif_to_wil(vif);
3062 rc = wmi_send(wil, WMI_NEW_STA_CMDID, vif->mid, &cmd, sizeof(cmd));
3102 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev);
3119 rc = wmi_call(wil, WMI_TRAFFIC_SUSPEND_CMDID, vif->mid,
3191 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev);
3203 rc = wmi_call(wil, WMI_TRAFFIC_RESUME_CMDID, vif->mid, NULL, 0,
3303 static bool wmi_evt_call_handler(struct wil6210_vif *vif, int id,
3310 wmi_evt_handlers[i].handler(vif, id, d, len);
3322 struct wil6210_vif *vif;
3342 vif = wil->vifs[mid];
3343 if (!vif) {
3365 wmi_evt_call_handler(vif, id, evt_data,
3374 if (!wmi_evt_call_handler(vif, id, evt_data,
3544 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev);
3571 rc = wmi_call(wil, WMI_START_SCHED_SCAN_CMDID, vif->mid,
3589 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev);
3601 rc = wmi_call(wil, WMI_STOP_SCHED_SCAN_CMDID, vif->mid, NULL, 0,
3616 int wmi_mgmt_tx(struct wil6210_vif *vif, const u8 *buf, size_t len)
3619 struct wil6210_priv *wil = vif_to_wil(vif);
3630 wil_dbg_misc(wil, "mgmt_tx mid %d\n", vif->mid);
3651 rc = wmi_call(wil, WMI_SW_TX_REQ_CMDID, vif->mid, cmd, total,
3664 int wmi_mgmt_tx_ext(struct wil6210_vif *vif, const u8 *buf, size_t len,
3668 struct wil6210_priv *wil = vif_to_wil(vif);
3680 vif->mid, channel, duration_ms);
3705 rc = wmi_call(wil, WMI_SW_TX_REQ_EXT_CMDID, vif->mid, cmd, total,
3721 struct wil6210_vif *vif = ndev_to_vif(wil->main_ndev);
3739 rc = wmi_call(wil, WMI_TX_STATUS_RING_ADD_CMDID, vif->mid, &cmd,
3761 struct wil6210_vif *vif = ndev_to_vif(ndev);
3777 rc = wmi_call(wil, WMI_CFG_DEF_RX_OFFLOAD_CMDID, vif->mid, &cmd,
3797 struct wil6210_vif *vif = ndev_to_vif(ndev);
3818 rc = wmi_call(wil, WMI_RX_STATUS_RING_ADD_CMDID, vif->mid, &cmd,
3840 struct wil6210_vif *vif = ndev_to_vif(ndev);
3860 rc = wmi_call(wil, WMI_RX_DESC_RING_ADD_CMDID, vif->mid, &cmd,
3879 int wil_wmi_tx_desc_ring_add(struct wil6210_vif *vif, int ring_id, int cid,
3882 struct wil6210_priv *wil = vif_to_wil(vif);
3910 rc = wmi_call(wil, WMI_TX_DESC_RING_ADD_CMDID, vif->mid, &cmd,
3926 txdata->mid = vif->mid;
3933 int wil_wmi_bcast_desc_ring_add(struct wil6210_vif *vif, int ring_id)
3935 struct wil6210_priv *wil = vif_to_wil(vif);
3956 rc = wmi_call(wil, WMI_BCAST_DESC_RING_ADD_CMDID, vif->mid, &cmd,
3972 txdata->mid = vif->mid;
3979 int wmi_link_stats_cfg(struct wil6210_vif *vif, u32 type, u8 cid, u32 interval)
3981 struct wil6210_priv *wil = vif_to_wil(vif);
3996 rc = wmi_call(wil, WMI_LINK_STATS_CMDID, vif->mid, &cmd, sizeof(cmd),
4017 struct wil6210_vif *vif = ndev_to_vif(ndev);
4039 rc = wmi_call(wil, WMI_SET_LINK_MONITOR_CMDID, vif->mid, &cmd,