Skip to content

Commit

Permalink
brcmfmac: use brcmf_cfg80211_priv to interface with wl_cfg80211 code
Browse files Browse the repository at this point in the history
The low-level driver part interfaces with wl_cfg80211 part using
brcmf_cfg80211_dev structure as handle. As brcmf_cfg80211_priv
is defined in interface it is more efficient to use that as handle
in function calls.

Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Arend van Spriel authored and John W. Linville committed Sep 28, 2012
1 parent c3567a0 commit b451ec9
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 47 deletions.
2 changes: 1 addition & 1 deletion drivers/net/wireless/brcm80211/brcmfmac/dhd.h
Original file line number Diff line number Diff line change
Expand Up @@ -585,7 +585,7 @@ struct brcmf_pub {
/* Linkage ponters */
struct brcmf_bus *bus_if;
struct brcmf_proto *prot;
struct brcmf_cfg80211_dev *config;
struct brcmf_cfg80211_priv *config;
struct device *dev; /* fullmac dongle device pointer */

/* Internal brcmf items */
Expand Down
48 changes: 8 additions & 40 deletions drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,27 +57,6 @@ static const u8 ether_bcast[ETH_ALEN] = {255, 255, 255, 255, 255, 255};

static u32 brcmf_dbg_level = WL_DBG_ERR;

static void brcmf_set_drvdata(struct brcmf_cfg80211_dev *dev, void *data)
{
dev->driver_data = data;
}

static void *brcmf_get_drvdata(struct brcmf_cfg80211_dev *dev)
{
void *data = NULL;

if (dev)
data = dev->driver_data;
return data;
}

static
struct brcmf_cfg80211_priv *brcmf_priv_get(struct brcmf_cfg80211_dev *cfg_dev)
{
struct brcmf_cfg80211_iface *ci = brcmf_get_drvdata(cfg_dev);
return ci->cfg_priv;
}

static bool check_sys_up(struct wiphy *wiphy)
{
struct brcmf_cfg80211_priv *cfg_priv = wiphy_to_cfg(wiphy);
Expand Down Expand Up @@ -4338,9 +4317,9 @@ static void wl_deinit_priv(struct brcmf_cfg80211_priv *cfg_priv)
brcmf_deinit_priv_mem(cfg_priv);
}

struct brcmf_cfg80211_dev *brcmf_cfg80211_attach(struct net_device *ndev,
struct device *busdev,
struct brcmf_pub *drvr)
struct brcmf_cfg80211_priv *brcmf_cfg80211_attach(struct net_device *ndev,
struct device *busdev,
struct brcmf_pub *drvr)
{
struct wireless_dev *wdev;
struct brcmf_cfg80211_priv *cfg_priv;
Expand Down Expand Up @@ -4376,26 +4355,19 @@ struct brcmf_cfg80211_dev *brcmf_cfg80211_attach(struct net_device *ndev,
WL_ERR("Failed to init iwm_priv (%d)\n", err);
goto cfg80211_attach_out;
}
brcmf_set_drvdata(cfg_dev, ci);

return cfg_dev;
kfree(cfg_dev);
return cfg_priv;

cfg80211_attach_out:
brcmf_free_wdev(cfg_priv);
kfree(cfg_dev);
return NULL;
}

void brcmf_cfg80211_detach(struct brcmf_cfg80211_dev *cfg_dev)
void brcmf_cfg80211_detach(struct brcmf_cfg80211_priv *cfg_priv)
{
struct brcmf_cfg80211_priv *cfg_priv;

cfg_priv = brcmf_priv_get(cfg_dev);

wl_deinit_priv(cfg_priv);
brcmf_free_wdev(cfg_priv);
brcmf_set_drvdata(cfg_dev, NULL);
kfree(cfg_dev);
}

void
Expand Down Expand Up @@ -4754,25 +4726,21 @@ static s32 __brcmf_cfg80211_down(struct brcmf_cfg80211_priv *cfg_priv)
return 0;
}

s32 brcmf_cfg80211_up(struct brcmf_cfg80211_dev *cfg_dev)
s32 brcmf_cfg80211_up(struct brcmf_cfg80211_priv *cfg_priv)
{
struct brcmf_cfg80211_priv *cfg_priv;
s32 err = 0;

cfg_priv = brcmf_priv_get(cfg_dev);
mutex_lock(&cfg_priv->usr_sync);
err = __brcmf_cfg80211_up(cfg_priv);
mutex_unlock(&cfg_priv->usr_sync);

return err;
}

s32 brcmf_cfg80211_down(struct brcmf_cfg80211_dev *cfg_dev)
s32 brcmf_cfg80211_down(struct brcmf_cfg80211_priv *cfg_priv)
{
struct brcmf_cfg80211_priv *cfg_priv;
s32 err = 0;

cfg_priv = brcmf_priv_get(cfg_dev);
mutex_lock(&cfg_priv->usr_sync);
err = __brcmf_cfg80211_down(cfg_priv);
mutex_unlock(&cfg_priv->usr_sync);
Expand Down
12 changes: 6 additions & 6 deletions drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.h
Original file line number Diff line number Diff line change
Expand Up @@ -497,15 +497,15 @@ brcmf_cfg80211_connect_info *cfg_to_conn(struct brcmf_cfg80211_priv *cfg)
return &cfg->conn_info;
}

struct brcmf_cfg80211_dev *brcmf_cfg80211_attach(struct net_device *ndev,
struct device *busdev,
struct brcmf_pub *drvr);
void brcmf_cfg80211_detach(struct brcmf_cfg80211_dev *cfg);
struct brcmf_cfg80211_priv *brcmf_cfg80211_attach(struct net_device *ndev,
struct device *busdev,
struct brcmf_pub *drvr);
void brcmf_cfg80211_detach(struct brcmf_cfg80211_priv *cfg_priv);

/* event handler from dongle */
void brcmf_cfg80211_event(struct net_device *ndev,
const struct brcmf_event_msg *e, void *data);
s32 brcmf_cfg80211_up(struct brcmf_cfg80211_dev *cfg_dev);
s32 brcmf_cfg80211_down(struct brcmf_cfg80211_dev *cfg_dev);
s32 brcmf_cfg80211_up(struct brcmf_cfg80211_priv *cfg_priv);
s32 brcmf_cfg80211_down(struct brcmf_cfg80211_priv *cfg_priv);

#endif /* _wl_cfg80211_h_ */

0 comments on commit b451ec9

Please sign in to comment.