1 From: Arend van Spriel <arend@broadcom.com>
2 Date: Thu, 11 Jun 2015 00:12:22 +0200
3 Subject: [PATCH] brcmfmac: move p2p attach/detach functions
5 Moving two functions in p2p.c as is so next change will be
8 Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
9 Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
10 Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
11 Signed-off-by: Arend van Spriel <arend@broadcom.com>
12 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
15 --- a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
16 +++ b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
17 @@ -1908,105 +1908,6 @@ s32 brcmf_p2p_notify_rx_mgmt_p2p_probere
21 - * brcmf_p2p_attach() - attach for P2P.
23 - * @cfg: driver private data for cfg80211 interface.
25 -s32 brcmf_p2p_attach(struct brcmf_cfg80211_info *cfg)
27 - struct brcmf_if *pri_ifp;
28 - struct brcmf_if *p2p_ifp;
29 - struct brcmf_cfg80211_vif *p2p_vif;
30 - struct brcmf_p2p_info *p2p;
31 - struct brcmf_pub *drvr;
40 - pri_ifp = drvr->iflist[0];
41 - p2p_ifp = drvr->iflist[1];
43 - p2p->bss_idx[P2PAPI_BSSCFG_PRIMARY].vif = pri_ifp->vif;
46 - p2p_vif = brcmf_alloc_vif(cfg, NL80211_IFTYPE_P2P_DEVICE,
48 - if (IS_ERR(p2p_vif)) {
49 - brcmf_err("could not create discovery vif\n");
54 - p2p_vif->ifp = p2p_ifp;
55 - p2p_ifp->vif = p2p_vif;
56 - p2p_vif->wdev.netdev = p2p_ifp->ndev;
57 - p2p_ifp->ndev->ieee80211_ptr = &p2p_vif->wdev;
58 - SET_NETDEV_DEV(p2p_ifp->ndev, wiphy_dev(cfg->wiphy));
60 - p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif = p2p_vif;
62 - brcmf_p2p_generate_bss_mac(p2p, NULL);
63 - memcpy(p2p_ifp->mac_addr, p2p->dev_addr, ETH_ALEN);
64 - brcmf_p2p_set_firmware(pri_ifp, p2p->dev_addr);
66 - /* Initialize P2P Discovery in the firmware */
67 - err = brcmf_fil_iovar_int_set(pri_ifp, "p2p_disc", 1);
69 - brcmf_err("set p2p_disc error\n");
70 - brcmf_free_vif(p2p_vif);
73 - /* obtain bsscfg index for P2P discovery */
74 - err = brcmf_fil_iovar_int_get(pri_ifp, "p2p_dev", &bssidx);
76 - brcmf_err("retrieving discover bsscfg index failed\n");
77 - brcmf_free_vif(p2p_vif);
80 - /* Verify that firmware uses same bssidx as driver !! */
81 - if (p2p_ifp->bssidx != bssidx) {
82 - brcmf_err("Incorrect bssidx=%d, compared to p2p_ifp->bssidx=%d\n",
83 - bssidx, p2p_ifp->bssidx);
84 - brcmf_free_vif(p2p_vif);
88 - init_completion(&p2p->send_af_done);
89 - INIT_WORK(&p2p->afx_hdl.afx_work, brcmf_p2p_afx_handler);
90 - init_completion(&p2p->afx_hdl.act_frm_scan);
91 - init_completion(&p2p->wait_next_af);
99 - * brcmf_p2p_detach() - detach P2P.
101 - * @p2p: P2P specific data.
103 -void brcmf_p2p_detach(struct brcmf_p2p_info *p2p)
105 - struct brcmf_cfg80211_vif *vif;
107 - vif = p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif;
109 - brcmf_p2p_cancel_remain_on_channel(vif->ifp);
110 - brcmf_p2p_deinit_discovery(p2p);
111 - /* remove discovery interface */
112 - brcmf_free_vif(vif);
113 - p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif = NULL;
115 - /* just set it all to zero */
116 - memset(p2p, 0, sizeof(*p2p));
120 * brcmf_p2p_get_current_chanspec() - Get current operation channel.
122 * @p2p: P2P specific data.
123 @@ -2425,3 +2326,102 @@ void brcmf_p2p_stop_device(struct wiphy
124 clear_bit(BRCMF_VIF_STATUS_READY, &vif->sme_state);
125 mutex_unlock(&cfg->usr_sync);
129 + * brcmf_p2p_attach() - attach for P2P.
131 + * @cfg: driver private data for cfg80211 interface.
133 +s32 brcmf_p2p_attach(struct brcmf_cfg80211_info *cfg)
135 + struct brcmf_if *pri_ifp;
136 + struct brcmf_if *p2p_ifp;
137 + struct brcmf_cfg80211_vif *p2p_vif;
138 + struct brcmf_p2p_info *p2p;
139 + struct brcmf_pub *drvr;
148 + pri_ifp = drvr->iflist[0];
149 + p2p_ifp = drvr->iflist[1];
151 + p2p->bss_idx[P2PAPI_BSSCFG_PRIMARY].vif = pri_ifp->vif;
154 + p2p_vif = brcmf_alloc_vif(cfg, NL80211_IFTYPE_P2P_DEVICE,
156 + if (IS_ERR(p2p_vif)) {
157 + brcmf_err("could not create discovery vif\n");
162 + p2p_vif->ifp = p2p_ifp;
163 + p2p_ifp->vif = p2p_vif;
164 + p2p_vif->wdev.netdev = p2p_ifp->ndev;
165 + p2p_ifp->ndev->ieee80211_ptr = &p2p_vif->wdev;
166 + SET_NETDEV_DEV(p2p_ifp->ndev, wiphy_dev(cfg->wiphy));
168 + p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif = p2p_vif;
170 + brcmf_p2p_generate_bss_mac(p2p, NULL);
171 + memcpy(p2p_ifp->mac_addr, p2p->dev_addr, ETH_ALEN);
172 + brcmf_p2p_set_firmware(pri_ifp, p2p->dev_addr);
174 + /* Initialize P2P Discovery in the firmware */
175 + err = brcmf_fil_iovar_int_set(pri_ifp, "p2p_disc", 1);
177 + brcmf_err("set p2p_disc error\n");
178 + brcmf_free_vif(p2p_vif);
181 + /* obtain bsscfg index for P2P discovery */
182 + err = brcmf_fil_iovar_int_get(pri_ifp, "p2p_dev", &bssidx);
184 + brcmf_err("retrieving discover bsscfg index failed\n");
185 + brcmf_free_vif(p2p_vif);
188 + /* Verify that firmware uses same bssidx as driver !! */
189 + if (p2p_ifp->bssidx != bssidx) {
190 + brcmf_err("Incorrect bssidx=%d, compared to p2p_ifp->bssidx=%d\n",
191 + bssidx, p2p_ifp->bssidx);
192 + brcmf_free_vif(p2p_vif);
196 + init_completion(&p2p->send_af_done);
197 + INIT_WORK(&p2p->afx_hdl.afx_work, brcmf_p2p_afx_handler);
198 + init_completion(&p2p->afx_hdl.act_frm_scan);
199 + init_completion(&p2p->wait_next_af);
206 + * brcmf_p2p_detach() - detach P2P.
208 + * @p2p: P2P specific data.
210 +void brcmf_p2p_detach(struct brcmf_p2p_info *p2p)
212 + struct brcmf_cfg80211_vif *vif;
214 + vif = p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif;
216 + brcmf_p2p_cancel_remain_on_channel(vif->ifp);
217 + brcmf_p2p_deinit_discovery(p2p);
218 + /* remove discovery interface */
219 + brcmf_free_vif(vif);
220 + p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif = NULL;
222 + /* just set it all to zero */
223 + memset(p2p, 0, sizeof(*p2p));