Lines Matching refs:p2p
467 static void brcmf_p2p_generate_bss_mac(struct brcmf_p2p_info *p2p, u8 *dev_addr) in brcmf_p2p_generate_bss_mac() argument
469 struct brcmf_if *pri_ifp = p2p->bss_idx[P2PAPI_BSSCFG_PRIMARY].vif->ifp; in brcmf_p2p_generate_bss_mac()
480 memcpy(p2p->dev_addr, dev_addr, ETH_ALEN); in brcmf_p2p_generate_bss_mac()
482 p2p->dev_addr[0] |= 0x02; in brcmf_p2p_generate_bss_mac()
488 memcpy(p2p->int_addr, p2p->dev_addr, ETH_ALEN); in brcmf_p2p_generate_bss_mac()
489 p2p->int_addr[0] |= 0x02; in brcmf_p2p_generate_bss_mac()
490 p2p->int_addr[4] ^= 0x80; in brcmf_p2p_generate_bss_mac()
548 static s32 brcmf_p2p_deinit_discovery(struct brcmf_p2p_info *p2p) in brcmf_p2p_deinit_discovery() argument
555 vif = p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif; in brcmf_p2p_deinit_discovery()
559 vif = p2p->bss_idx[P2PAPI_BSSCFG_PRIMARY].vif; in brcmf_p2p_deinit_discovery()
572 static int brcmf_p2p_enable_discovery(struct brcmf_p2p_info *p2p) in brcmf_p2p_enable_discovery() argument
578 vif = p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif; in brcmf_p2p_enable_discovery()
585 if (test_bit(BRCMF_P2P_STATUS_ENABLED, &p2p->status)) { in brcmf_p2p_enable_discovery()
591 vif = p2p->bss_idx[P2PAPI_BSSCFG_PRIMARY].vif; in brcmf_p2p_enable_discovery()
597 vif = p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif; in brcmf_p2p_enable_discovery()
616 set_bit(BRCMF_P2P_STATUS_ENABLED, &p2p->status); in brcmf_p2p_enable_discovery()
631 static s32 brcmf_p2p_escan(struct brcmf_p2p_info *p2p, u32 num_chans, in brcmf_p2p_escan() argument
652 vif = p2p->bss_idx[bss_type].vif; in brcmf_p2p_escan()
696 if (p2p->cfg->active_scan) in brcmf_p2p_escan()
715 else if (brcmf_get_vif_state_any(p2p->cfg, BRCMF_VIF_STATUS_CONNECTED)) in brcmf_p2p_escan()
750 set_bit(BRCMF_SCAN_STATUS_BUSY, &p2p->cfg->scan_status); in brcmf_p2p_escan()
772 struct brcmf_p2p_info *p2p = &cfg->p2p; in brcmf_p2p_run_escan() local
794 vif = p2p->bss_idx[P2PAPI_BSSCFG_CONNECTION].vif; in brcmf_p2p_run_escan()
823 chanspecs[i] = channel_to_chanspec(&p2p->cfg->d11inf, in brcmf_p2p_run_escan()
829 err = brcmf_p2p_escan(p2p, num_nodfs, chanspecs, search_state, in brcmf_p2p_run_escan()
891 struct brcmf_p2p_info *p2p = &cfg->p2p; in brcmf_p2p_scan_prep() local
901 p2p->afx_hdl.my_listen_chan = err; in brcmf_p2p_scan_prep()
903 clear_bit(BRCMF_P2P_STATUS_GO_NEG_PHASE, &p2p->status); in brcmf_p2p_scan_prep()
906 err = brcmf_p2p_enable_discovery(p2p); in brcmf_p2p_scan_prep()
910 vif = p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif; in brcmf_p2p_scan_prep()
930 brcmf_p2p_discover_listen(struct brcmf_p2p_info *p2p, u16 channel, u32 duration) in brcmf_p2p_discover_listen() argument
936 vif = p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif; in brcmf_p2p_discover_listen()
943 if (test_bit(BRCMF_P2P_STATUS_DISCOVER_LISTEN, &p2p->status)) { in brcmf_p2p_discover_listen()
951 p2p->cfg->d11inf.encchspec(&ch); in brcmf_p2p_discover_listen()
955 set_bit(BRCMF_P2P_STATUS_DISCOVER_LISTEN, &p2p->status); in brcmf_p2p_discover_listen()
956 p2p->remain_on_channel_cookie++; in brcmf_p2p_discover_listen()
976 struct brcmf_p2p_info *p2p = &cfg->p2p; in brcmf_p2p_remain_on_channel() local
984 err = brcmf_p2p_enable_discovery(p2p); in brcmf_p2p_remain_on_channel()
987 err = brcmf_p2p_discover_listen(p2p, channel_nr, duration); in brcmf_p2p_remain_on_channel()
991 memcpy(&p2p->remain_on_channel, channel, sizeof(*channel)); in brcmf_p2p_remain_on_channel()
992 *cookie = p2p->remain_on_channel_cookie; in brcmf_p2p_remain_on_channel()
1013 struct brcmf_p2p_info *p2p = &cfg->p2p; in brcmf_p2p_notify_listen_complete() local
1017 &p2p->status)) { in brcmf_p2p_notify_listen_complete()
1019 &p2p->status)) { in brcmf_p2p_notify_listen_complete()
1021 &p2p->status); in brcmf_p2p_notify_listen_complete()
1023 complete(&p2p->wait_next_af); in brcmf_p2p_notify_listen_complete()
1027 p2p->remain_on_channel_cookie, in brcmf_p2p_notify_listen_complete()
1028 &p2p->remain_on_channel, in brcmf_p2p_notify_listen_complete()
1059 static s32 brcmf_p2p_act_frm_search(struct brcmf_p2p_info *p2p, u16 channel) in brcmf_p2p_act_frm_search() argument
1083 p2p->cfg->d11inf.encchspec(&ch); in brcmf_p2p_act_frm_search()
1089 p2p->cfg->d11inf.encchspec(&ch); in brcmf_p2p_act_frm_search()
1092 p2p->cfg->d11inf.encchspec(&ch); in brcmf_p2p_act_frm_search()
1095 p2p->cfg->d11inf.encchspec(&ch); in brcmf_p2p_act_frm_search()
1098 err = brcmf_p2p_escan(p2p, channel_cnt, default_chan_list, in brcmf_p2p_act_frm_search()
1116 struct brcmf_p2p_info *p2p = container_of(afx_hdl, in brcmf_p2p_afx_handler() local
1126 err = brcmf_p2p_discover_listen(p2p, afx_hdl->my_listen_chan, in brcmf_p2p_afx_handler()
1129 err = brcmf_p2p_act_frm_search(p2p, afx_hdl->peer_listen_chan); in brcmf_p2p_afx_handler()
1134 &p2p->status)) in brcmf_p2p_afx_handler()
1146 static s32 brcmf_p2p_af_searching_channel(struct brcmf_p2p_info *p2p) in brcmf_p2p_af_searching_channel() argument
1148 struct afx_hdl *afx_hdl = &p2p->afx_hdl; in brcmf_p2p_af_searching_channel()
1155 pri_vif = p2p->bss_idx[P2PAPI_BSSCFG_PRIMARY].vif; in brcmf_p2p_af_searching_channel()
1158 set_bit(BRCMF_P2P_STATUS_FINDING_COMMON_CHANNEL, &p2p->status); in brcmf_p2p_af_searching_channel()
1177 &p2p->status))) in brcmf_p2p_af_searching_channel()
1191 &p2p->status))) in brcmf_p2p_af_searching_channel()
1207 clear_bit(BRCMF_P2P_STATUS_FINDING_COMMON_CHANNEL, &p2p->status); in brcmf_p2p_af_searching_channel()
1224 struct brcmf_p2p_info *p2p = &cfg->p2p; in brcmf_p2p_scan_finding_common_channel() local
1225 struct afx_hdl *afx_hdl = &p2p->afx_hdl; in brcmf_p2p_scan_finding_common_channel()
1231 if (!test_bit(BRCMF_P2P_STATUS_FINDING_COMMON_CHANNEL, &p2p->status)) in brcmf_p2p_scan_finding_common_channel()
1274 struct brcmf_p2p_info *p2p = &cfg->p2p; in brcmf_p2p_stop_wait_next_action_frame() local
1277 if (test_bit(BRCMF_P2P_STATUS_SENDING_ACT_FRAME, &p2p->status) && in brcmf_p2p_stop_wait_next_action_frame()
1278 (test_bit(BRCMF_P2P_STATUS_ACTION_TX_COMPLETED, &p2p->status) || in brcmf_p2p_stop_wait_next_action_frame()
1279 test_bit(BRCMF_P2P_STATUS_ACTION_TX_NOACK, &p2p->status))) { in brcmf_p2p_stop_wait_next_action_frame()
1284 if (p2p->af_sent_channel) in brcmf_p2p_stop_wait_next_action_frame()
1287 &p2p->status)) { in brcmf_p2p_stop_wait_next_action_frame()
1303 brcmf_p2p_gon_req_collision(struct brcmf_p2p_info *p2p, u8 *mac) in brcmf_p2p_gon_req_collision() argument
1305 struct brcmf_cfg80211_info *cfg = p2p->cfg; in brcmf_p2p_gon_req_collision()
1310 if (!test_bit(BRCMF_P2P_STATUS_WAITING_NEXT_ACT_FRAME, &p2p->status) || in brcmf_p2p_gon_req_collision()
1311 !p2p->gon_req_action) in brcmf_p2p_gon_req_collision()
1320 ifp = p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif->ifp; in brcmf_p2p_gon_req_collision()
1323 p2p->block_gon_req_tx = true; in brcmf_p2p_gon_req_collision()
1328 &p2p->status)) in brcmf_p2p_gon_req_collision()
1329 complete(&p2p->afx_hdl.act_frm_scan); in brcmf_p2p_gon_req_collision()
1331 &p2p->status)) in brcmf_p2p_gon_req_collision()
1356 struct brcmf_p2p_info *p2p = &cfg->p2p; in brcmf_p2p_notify_action_frame_rx() local
1357 struct afx_hdl *afx_hdl = &p2p->afx_hdl; in brcmf_p2p_notify_action_frame_rx()
1385 (brcmf_p2p_gon_req_collision(p2p, (u8 *)e->addr))) { in brcmf_p2p_notify_action_frame_rx()
1387 &p2p->status) && in brcmf_p2p_notify_action_frame_rx()
1402 clear_bit(BRCMF_P2P_STATUS_GO_NEG_PHASE, &p2p->status); in brcmf_p2p_notify_action_frame_rx()
1409 if (test_bit(BRCMF_P2P_STATUS_WAITING_NEXT_ACT_FRAME, &p2p->status) && in brcmf_p2p_notify_action_frame_rx()
1410 (p2p->next_af_subtype == action)) { in brcmf_p2p_notify_action_frame_rx()
1413 &p2p->status); in brcmf_p2p_notify_action_frame_rx()
1458 struct brcmf_p2p_info *p2p = &cfg->p2p; in brcmf_p2p_notify_action_tx_complete() local
1465 if (!test_bit(BRCMF_P2P_STATUS_SENDING_ACT_FRAME, &p2p->status)) in brcmf_p2p_notify_action_tx_complete()
1471 &p2p->status); in brcmf_p2p_notify_action_tx_complete()
1473 set_bit(BRCMF_P2P_STATUS_ACTION_TX_NOACK, &p2p->status); in brcmf_p2p_notify_action_tx_complete()
1481 complete(&p2p->send_af_done); in brcmf_p2p_notify_action_tx_complete()
1499 static s32 brcmf_p2p_tx_action_frame(struct brcmf_p2p_info *p2p, in brcmf_p2p_tx_action_frame() argument
1508 reinit_completion(&p2p->send_af_done); in brcmf_p2p_tx_action_frame()
1509 clear_bit(BRCMF_P2P_STATUS_ACTION_TX_COMPLETED, &p2p->status); in brcmf_p2p_tx_action_frame()
1510 clear_bit(BRCMF_P2P_STATUS_ACTION_TX_NOACK, &p2p->status); in brcmf_p2p_tx_action_frame()
1512 vif = p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif; in brcmf_p2p_tx_action_frame()
1520 p2p->af_sent_channel = le32_to_cpu(af_params->channel); in brcmf_p2p_tx_action_frame()
1521 p2p->af_tx_sent_jiffies = jiffies; in brcmf_p2p_tx_action_frame()
1523 timeout = wait_for_completion_timeout(&p2p->send_af_done, in brcmf_p2p_tx_action_frame()
1526 if (test_bit(BRCMF_P2P_STATUS_ACTION_TX_COMPLETED, &p2p->status)) { in brcmf_p2p_tx_action_frame()
1533 clear_bit(BRCMF_P2P_STATUS_ACTION_TX_COMPLETED, &p2p->status); in brcmf_p2p_tx_action_frame()
1534 clear_bit(BRCMF_P2P_STATUS_ACTION_TX_NOACK, &p2p->status); in brcmf_p2p_tx_action_frame()
1554 struct brcmf_p2p_info *p2p = &cfg->p2p; in brcmf_p2p_pub_af_tx() local
1568 set_bit(BRCMF_P2P_STATUS_GO_NEG_PHASE, &p2p->status); in brcmf_p2p_pub_af_tx()
1571 p2p->next_af_subtype = act_frm->subtype + 1; in brcmf_p2p_pub_af_tx()
1572 p2p->gon_req_action = true; in brcmf_p2p_pub_af_tx()
1577 p2p->next_af_subtype = act_frm->subtype + 1; in brcmf_p2p_pub_af_tx()
1584 clear_bit(BRCMF_P2P_STATUS_GO_NEG_PHASE, &p2p->status); in brcmf_p2p_pub_af_tx()
1593 p2p->next_af_subtype = act_frm->subtype + 1; in brcmf_p2p_pub_af_tx()
1604 p2p->next_af_subtype = act_frm->subtype + 1; in brcmf_p2p_pub_af_tx()
1621 p2p->next_af_subtype = act_frm->subtype + 1; in brcmf_p2p_pub_af_tx()
1627 p2p->next_af_subtype = P2P_PAF_GON_REQ; in brcmf_p2p_pub_af_tx()
1651 struct brcmf_p2p_info *p2p = &cfg->p2p; in brcmf_p2p_send_action_frame() local
1655 struct afx_hdl *afx_hdl = &p2p->afx_hdl; in brcmf_p2p_send_action_frame()
1678 p2p->next_af_subtype = P2P_PAF_SUBTYPE_INVALID; in brcmf_p2p_send_action_frame()
1679 p2p->gon_req_action = false; in brcmf_p2p_send_action_frame()
1703 p2p->next_af_subtype = action + 1; in brcmf_p2p_send_action_frame()
1730 &p2p->bss_idx[P2PAPI_BSSCFG_PRIMARY].vif->sme_state)) in brcmf_p2p_send_action_frame()
1744 if (p2p->next_af_subtype != P2P_PAF_SUBTYPE_INVALID) { in brcmf_p2p_send_action_frame()
1746 set_bit(BRCMF_P2P_STATUS_WAITING_NEXT_ACT_FRAME, &p2p->status); in brcmf_p2p_send_action_frame()
1749 p2p->af_sent_channel = 0; in brcmf_p2p_send_action_frame()
1750 set_bit(BRCMF_P2P_STATUS_SENDING_ACT_FRAME, &p2p->status); in brcmf_p2p_send_action_frame()
1754 p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif->saved_ie.probe_req_ie_len) { in brcmf_p2p_send_action_frame()
1755 afx_hdl = &p2p->afx_hdl; in brcmf_p2p_send_action_frame()
1758 if (brcmf_p2p_af_searching_channel(p2p) == in brcmf_p2p_send_action_frame()
1776 while (!p2p->block_gon_req_tx && in brcmf_p2p_send_action_frame()
1778 ack = !brcmf_p2p_tx_action_frame(p2p, af_params); in brcmf_p2p_send_action_frame()
1783 clear_bit(BRCMF_P2P_STATUS_GO_NEG_PHASE, &p2p->status); in brcmf_p2p_send_action_frame()
1787 clear_bit(BRCMF_P2P_STATUS_SENDING_ACT_FRAME, &p2p->status); in brcmf_p2p_send_action_frame()
1794 if (ack && config_af_params.extra_listen && !p2p->block_gon_req_tx && in brcmf_p2p_send_action_frame()
1795 test_bit(BRCMF_P2P_STATUS_WAITING_NEXT_ACT_FRAME, &p2p->status) && in brcmf_p2p_send_action_frame()
1796 p2p->af_sent_channel == afx_hdl->my_listen_chan) { in brcmf_p2p_send_action_frame()
1797 delta_ms = jiffies_to_msecs(jiffies - p2p->af_tx_sent_jiffies); in brcmf_p2p_send_action_frame()
1805 &p2p->status); in brcmf_p2p_send_action_frame()
1810 if (!brcmf_p2p_discover_listen(p2p, in brcmf_p2p_send_action_frame()
1811 p2p->af_sent_channel, in brcmf_p2p_send_action_frame()
1817 wait_for_completion_timeout(&p2p->wait_next_af, in brcmf_p2p_send_action_frame()
1821 &p2p->status); in brcmf_p2p_send_action_frame()
1825 if (p2p->block_gon_req_tx) { in brcmf_p2p_send_action_frame()
1829 p2p->block_gon_req_tx = false; in brcmf_p2p_send_action_frame()
1833 clear_bit(BRCMF_P2P_STATUS_WAITING_NEXT_ACT_FRAME, &p2p->status); in brcmf_p2p_send_action_frame()
1853 struct brcmf_p2p_info *p2p = &cfg->p2p; in brcmf_p2p_notify_rx_mgmt_p2p_probereq() local
1854 struct afx_hdl *afx_hdl = &p2p->afx_hdl; in brcmf_p2p_notify_rx_mgmt_p2p_probereq()
1870 if (test_bit(BRCMF_P2P_STATUS_FINDING_COMMON_CHANNEL, &p2p->status) && in brcmf_p2p_notify_rx_mgmt_p2p_probereq()
1884 if (test_bit(BRCMF_P2P_STATUS_GO_NEG_PHASE, &p2p->status)) { in brcmf_p2p_notify_rx_mgmt_p2p_probereq()
1917 static void brcmf_p2p_get_current_chanspec(struct brcmf_p2p_info *p2p, in brcmf_p2p_get_current_chanspec() argument
1926 ifp = p2p->bss_idx[P2PAPI_BSSCFG_PRIMARY].vif->ifp; in brcmf_p2p_get_current_chanspec()
1946 p2p->cfg->d11inf.encchspec(&ch); in brcmf_p2p_get_current_chanspec()
1959 struct brcmf_p2p_info *p2p = &cfg->p2p; in brcmf_p2p_ifchange() local
1967 vif = p2p->bss_idx[P2PAPI_BSSCFG_PRIMARY].vif; in brcmf_p2p_ifchange()
1973 vif = p2p->bss_idx[P2PAPI_BSSCFG_CONNECTION].vif; in brcmf_p2p_ifchange()
1983 brcmf_p2p_get_current_chanspec(p2p, &chanspec); in brcmf_p2p_ifchange()
1987 memcpy(if_request.addr, p2p->int_addr, sizeof(if_request.addr)); in brcmf_p2p_ifchange()
2011 static int brcmf_p2p_request_p2p_if(struct brcmf_p2p_info *p2p, in brcmf_p2p_request_p2p_if() argument
2020 brcmf_p2p_get_current_chanspec(p2p, &chanspec); in brcmf_p2p_request_p2p_if()
2062 static struct wireless_dev *brcmf_p2p_create_p2pdev(struct brcmf_p2p_info *p2p, in brcmf_p2p_create_p2pdev() argument
2072 if (p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif) in brcmf_p2p_create_p2pdev()
2075 p2p_vif = brcmf_alloc_vif(p2p->cfg, NL80211_IFTYPE_P2P_DEVICE, in brcmf_p2p_create_p2pdev()
2082 pri_ifp = p2p->bss_idx[P2PAPI_BSSCFG_PRIMARY].vif->ifp; in brcmf_p2p_create_p2pdev()
2083 brcmf_p2p_generate_bss_mac(p2p, addr); in brcmf_p2p_create_p2pdev()
2084 brcmf_p2p_set_firmware(pri_ifp, p2p->dev_addr); in brcmf_p2p_create_p2pdev()
2086 brcmf_cfg80211_arm_vif_event(p2p->cfg, p2p_vif); in brcmf_p2p_create_p2pdev()
2094 brcmf_cfg80211_arm_vif_event(p2p->cfg, NULL); in brcmf_p2p_create_p2pdev()
2099 err = brcmf_cfg80211_wait_vif_event_timeout(p2p->cfg, BRCMF_E_IF_ADD, in brcmf_p2p_create_p2pdev()
2101 brcmf_cfg80211_arm_vif_event(p2p->cfg, NULL); in brcmf_p2p_create_p2pdev()
2111 p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif = p2p_vif; in brcmf_p2p_create_p2pdev()
2112 memcpy(p2p_ifp->mac_addr, p2p->dev_addr, ETH_ALEN); in brcmf_p2p_create_p2pdev()
2113 memcpy(&p2p_vif->wdev.address, p2p->dev_addr, sizeof(p2p->dev_addr)); in brcmf_p2p_create_p2pdev()
2124 init_completion(&p2p->send_af_done); in brcmf_p2p_create_p2pdev()
2125 INIT_WORK(&p2p->afx_hdl.afx_work, brcmf_p2p_afx_handler); in brcmf_p2p_create_p2pdev()
2126 init_completion(&p2p->afx_hdl.act_frm_scan); in brcmf_p2p_create_p2pdev()
2127 init_completion(&p2p->wait_next_af); in brcmf_p2p_create_p2pdev()
2170 return brcmf_p2p_create_p2pdev(&cfg->p2p, wiphy, in brcmf_p2p_add_vif()
2181 err = brcmf_p2p_request_p2p_if(&cfg->p2p, ifp, cfg->p2p.int_addr, in brcmf_p2p_add_vif()
2214 cfg->p2p.bss_idx[P2PAPI_BSSCFG_CONNECTION].vif = vif; in brcmf_p2p_add_vif()
2238 struct brcmf_p2p_info *p2p = &cfg->p2p; in brcmf_p2p_del_vif() local
2260 if (!p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif) in brcmf_p2p_del_vif()
2263 brcmf_p2p_deinit_discovery(p2p); in brcmf_p2p_del_vif()
2268 clear_bit(BRCMF_P2P_STATUS_GO_NEG_PHASE, &p2p->status); in brcmf_p2p_del_vif()
2294 p2p->bss_idx[P2PAPI_BSSCFG_CONNECTION].vif = NULL; in brcmf_p2p_del_vif()
2307 cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif = NULL; in brcmf_p2p_ifp_removed()
2317 struct brcmf_p2p_info *p2p = &cfg->p2p; in brcmf_p2p_start_device() local
2323 err = brcmf_p2p_enable_discovery(p2p); in brcmf_p2p_start_device()
2333 struct brcmf_p2p_info *p2p = &cfg->p2p; in brcmf_p2p_stop_device() local
2341 if (p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif == vif) { in brcmf_p2p_stop_device()
2360 struct brcmf_p2p_info *p2p; in brcmf_p2p_attach() local
2365 p2p = &cfg->p2p; in brcmf_p2p_attach()
2366 p2p->cfg = cfg; in brcmf_p2p_attach()
2369 p2p->bss_idx[P2PAPI_BSSCFG_PRIMARY].vif = pri_ifp->vif; in brcmf_p2p_attach()
2372 err_ptr = brcmf_p2p_create_p2pdev(p2p, NULL, NULL); in brcmf_p2p_attach()
2378 p2p->p2pdev_dynamically = true; in brcmf_p2p_attach()
2388 void brcmf_p2p_detach(struct brcmf_p2p_info *p2p) in brcmf_p2p_detach() argument
2392 vif = p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif; in brcmf_p2p_detach()
2395 brcmf_p2p_deinit_discovery(p2p); in brcmf_p2p_detach()
2399 memset(p2p, 0, sizeof(*p2p)); in brcmf_p2p_detach()