brcmfmac: remove use of unconditional access of struct wireless_dev::netdev
authorArend van Spriel <arend@broadcom.com>
Fri, 5 Apr 2013 08:57:47 +0000 (10:57 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 8 Apr 2013 19:28:44 +0000 (15:28 -0400)
With the introduction of the P2P_DEVICE interface type an instance of
struct wireless_dev does not always have a netdev assigned to it. Better
use container_of() construct to obtain internal structure and go from
there.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Piotr Haber <phaber@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c

index beba7f69577b9708614837bf00fa972a7795e347..56359e3e7eb697715e7b4e0653c0b588b8213a89 100644 (file)
@@ -3868,13 +3868,13 @@ brcmf_cfg80211_mgmt_frame_register(struct wiphy *wiphy,
                                   struct wireless_dev *wdev,
                                   u16 frame_type, bool reg)
 {
-       struct brcmf_if *ifp = netdev_priv(wdev->netdev);
-       struct brcmf_cfg80211_vif *vif = ifp->vif;
+       struct brcmf_cfg80211_vif *vif;
        u16 mgmt_type;
 
        brcmf_dbg(TRACE, "Enter, frame_type %04x, reg=%d\n", frame_type, reg);
 
        mgmt_type = (frame_type & IEEE80211_FCTL_STYPE) >> 4;
+       vif = container_of(wdev, struct brcmf_cfg80211_vif, wdev);
        if (reg)
                vif->mgmt_rx_reg |= BIT(mgmt_type);
        else
@@ -3890,7 +3890,6 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
 {
        struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
        const struct ieee80211_mgmt *mgmt;
-       struct brcmf_if *ifp;
        struct brcmf_cfg80211_vif *vif;
        s32 err = 0;
        s32 ie_offset;
@@ -3926,8 +3925,7 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
                ie_offset =  DOT11_MGMT_HDR_LEN +
                             DOT11_BCN_PRB_FIXED_LEN;
                ie_len = len - ie_offset;
-               ifp = netdev_priv(wdev->netdev);
-               vif = ifp->vif;
+               vif = container_of(wdev, struct brcmf_cfg80211_vif, wdev);
                if (vif == cfg->p2p.bss_idx[P2PAPI_BSSCFG_PRIMARY].vif)
                        vif = cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif;
                err = brcmf_vif_set_mgmt_ie(vif,
@@ -3962,7 +3960,7 @@ brcmf_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
                          *cookie, le16_to_cpu(action_frame->len),
                          chan->center_freq);
 
-               ack = brcmf_p2p_send_action_frame(cfg, wdev->netdev,
+               ack = brcmf_p2p_send_action_frame(cfg, cfg_to_ndev(cfg),
                                                  af_params);
 
                cfg80211_mgmt_tx_status(wdev, *cookie, buf, len, ack,