提交 0abb5f21 编写于 作者: A Arend van Spriel 提交者: John W. Linville

brcmfmac: use vif struct to check_sys_up() function

This checks the status that will soon be moved to virtual
interface data so preparing for that use the structure
brcmf_cfg80211_vif as parameter instead.
Reviewed-by: NPieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: NHante Meulemen <meuleman@broadcom.com>
Signed-off-by: NArend van Spriel <arend@broadcom.com>
Signed-off-by: NFranky Lin <frankyl@broadcom.com>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 6ac4f4ed
...@@ -98,9 +98,10 @@ static const u8 ether_bcast[ETH_ALEN] = {255, 255, 255, 255, 255, 255}; ...@@ -98,9 +98,10 @@ static const u8 ether_bcast[ETH_ALEN] = {255, 255, 255, 255, 255, 255};
static u32 brcmf_dbg_level = WL_DBG_ERR; static u32 brcmf_dbg_level = WL_DBG_ERR;
static bool check_sys_up(struct wiphy *wiphy) static bool check_sys_up(struct brcmf_cfg80211_vif *vif)
{ {
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_cfg80211_info *cfg = wdev_priv(&vif->wdev);
if (!test_bit(WL_STATUS_READY, &cfg->status)) { if (!test_bit(WL_STATUS_READY, &cfg->status)) {
WL_INFO("device is not ready : status (%d)\n", WL_INFO("device is not ready : status (%d)\n",
(int)cfg->status); (int)cfg->status);
...@@ -1028,8 +1029,7 @@ brcmf_cfg80211_escan(struct wiphy *wiphy, struct net_device *ndev, ...@@ -1028,8 +1029,7 @@ brcmf_cfg80211_escan(struct wiphy *wiphy, struct net_device *ndev,
} }
static s32 static s32
brcmf_cfg80211_scan(struct wiphy *wiphy, brcmf_cfg80211_scan(struct wiphy *wiphy, struct cfg80211_scan_request *request)
struct cfg80211_scan_request *request)
{ {
struct net_device *ndev = request->wdev->netdev; struct net_device *ndev = request->wdev->netdev;
struct brcmf_cfg80211_info *cfg = ndev_to_cfg(ndev); struct brcmf_cfg80211_info *cfg = ndev_to_cfg(ndev);
...@@ -1037,7 +1037,8 @@ brcmf_cfg80211_scan(struct wiphy *wiphy, ...@@ -1037,7 +1037,8 @@ brcmf_cfg80211_scan(struct wiphy *wiphy,
WL_TRACE("Enter\n"); WL_TRACE("Enter\n");
if (!check_sys_up(wiphy)) if (!check_sys_up(container_of(request->wdev,
struct brcmf_cfg80211_vif, wdev)))
return -EIO; return -EIO;
if (cfg->iscan_on) if (cfg->iscan_on)
...@@ -1093,10 +1094,11 @@ static s32 brcmf_cfg80211_set_wiphy_params(struct wiphy *wiphy, u32 changed) ...@@ -1093,10 +1094,11 @@ static s32 brcmf_cfg80211_set_wiphy_params(struct wiphy *wiphy, u32 changed)
{ {
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
struct net_device *ndev = cfg_to_ndev(cfg); struct net_device *ndev = cfg_to_ndev(cfg);
struct brcmf_if *ifp = netdev_priv(ndev);
s32 err = 0; s32 err = 0;
WL_TRACE("Enter\n"); WL_TRACE("Enter\n");
if (!check_sys_up(wiphy)) if (!check_sys_up(ifp->vif))
return -EIO; return -EIO;
if (changed & WIPHY_PARAM_RTS_THRESHOLD && if (changed & WIPHY_PARAM_RTS_THRESHOLD &&
...@@ -1189,7 +1191,8 @@ brcmf_cfg80211_join_ibss(struct wiphy *wiphy, struct net_device *ndev, ...@@ -1189,7 +1191,8 @@ brcmf_cfg80211_join_ibss(struct wiphy *wiphy, struct net_device *ndev,
struct cfg80211_ibss_params *params) struct cfg80211_ibss_params *params)
{ {
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
struct brcmf_cfg80211_profile *profile = ndev_to_prof(ndev); struct brcmf_if *ifp = netdev_priv(ndev);
struct brcmf_cfg80211_profile *profile = &ifp->vif->profile;
struct brcmf_join_params join_params; struct brcmf_join_params join_params;
size_t join_params_size = 0; size_t join_params_size = 0;
s32 err = 0; s32 err = 0;
...@@ -1197,7 +1200,7 @@ brcmf_cfg80211_join_ibss(struct wiphy *wiphy, struct net_device *ndev, ...@@ -1197,7 +1200,7 @@ brcmf_cfg80211_join_ibss(struct wiphy *wiphy, struct net_device *ndev,
s32 bcnprd; s32 bcnprd;
WL_TRACE("Enter\n"); WL_TRACE("Enter\n");
if (!check_sys_up(wiphy)) if (!check_sys_up(ifp->vif))
return -EIO; return -EIO;
if (params->ssid) if (params->ssid)
...@@ -1332,10 +1335,11 @@ static s32 ...@@ -1332,10 +1335,11 @@ static s32
brcmf_cfg80211_leave_ibss(struct wiphy *wiphy, struct net_device *ndev) brcmf_cfg80211_leave_ibss(struct wiphy *wiphy, struct net_device *ndev)
{ {
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
struct brcmf_if *ifp = netdev_priv(ndev);
s32 err = 0; s32 err = 0;
WL_TRACE("Enter\n"); WL_TRACE("Enter\n");
if (!check_sys_up(wiphy)) if (!check_sys_up(ifp->vif))
return -EIO; return -EIO;
brcmf_link_down(cfg); brcmf_link_down(cfg);
...@@ -1603,7 +1607,8 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, ...@@ -1603,7 +1607,8 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev,
struct cfg80211_connect_params *sme) struct cfg80211_connect_params *sme)
{ {
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
struct brcmf_cfg80211_profile *profile = ndev_to_prof(ndev); struct brcmf_if *ifp = netdev_priv(ndev);
struct brcmf_cfg80211_profile *profile = &ifp->vif->profile;
struct ieee80211_channel *chan = sme->channel; struct ieee80211_channel *chan = sme->channel;
struct brcmf_join_params join_params; struct brcmf_join_params join_params;
size_t join_params_size; size_t join_params_size;
...@@ -1612,7 +1617,7 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev, ...@@ -1612,7 +1617,7 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev,
s32 err = 0; s32 err = 0;
WL_TRACE("Enter\n"); WL_TRACE("Enter\n");
if (!check_sys_up(wiphy)) if (!check_sys_up(ifp->vif))
return -EIO; return -EIO;
if (!sme->ssid) { if (!sme->ssid) {
...@@ -1696,12 +1701,13 @@ brcmf_cfg80211_disconnect(struct wiphy *wiphy, struct net_device *ndev, ...@@ -1696,12 +1701,13 @@ brcmf_cfg80211_disconnect(struct wiphy *wiphy, struct net_device *ndev,
u16 reason_code) u16 reason_code)
{ {
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
struct brcmf_cfg80211_profile *profile = ndev_to_prof(ndev); struct brcmf_if *ifp = netdev_priv(ndev);
struct brcmf_cfg80211_profile *profile = &ifp->vif->profile;
struct brcmf_scb_val_le scbval; struct brcmf_scb_val_le scbval;
s32 err = 0; s32 err = 0;
WL_TRACE("Enter. Reason code = %d\n", reason_code); WL_TRACE("Enter. Reason code = %d\n", reason_code);
if (!check_sys_up(wiphy)) if (!check_sys_up(ifp->vif))
return -EIO; return -EIO;
clear_bit(WL_STATUS_CONNECTED, &cfg->status); clear_bit(WL_STATUS_CONNECTED, &cfg->status);
...@@ -1725,14 +1731,15 @@ brcmf_cfg80211_set_tx_power(struct wiphy *wiphy, ...@@ -1725,14 +1731,15 @@ brcmf_cfg80211_set_tx_power(struct wiphy *wiphy,
{ {
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg)); struct net_device *ndev = cfg_to_ndev(cfg);
struct brcmf_if *ifp = netdev_priv(ndev);
u16 txpwrmw; u16 txpwrmw;
s32 err = 0; s32 err = 0;
s32 disable = 0; s32 disable = 0;
s32 dbm = MBM_TO_DBM(mbm); s32 dbm = MBM_TO_DBM(mbm);
WL_TRACE("Enter\n"); WL_TRACE("Enter\n");
if (!check_sys_up(wiphy)) if (!check_sys_up(ifp->vif))
return -EIO; return -EIO;
switch (type) { switch (type) {
...@@ -1771,16 +1778,16 @@ brcmf_cfg80211_set_tx_power(struct wiphy *wiphy, ...@@ -1771,16 +1778,16 @@ brcmf_cfg80211_set_tx_power(struct wiphy *wiphy,
static s32 brcmf_cfg80211_get_tx_power(struct wiphy *wiphy, s32 *dbm) static s32 brcmf_cfg80211_get_tx_power(struct wiphy *wiphy, s32 *dbm)
{ {
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
struct net_device *ndev = cfg_to_ndev(cfg); struct brcmf_if *ifp = netdev_priv(cfg_to_ndev(cfg));
s32 txpwrdbm; s32 txpwrdbm;
u8 result; u8 result;
s32 err = 0; s32 err = 0;
WL_TRACE("Enter\n"); WL_TRACE("Enter\n");
if (!check_sys_up(wiphy)) if (!check_sys_up(ifp->vif))
return -EIO; return -EIO;
err = brcmf_fil_iovar_int_get(netdev_priv(ndev), "qtxpower", &txpwrdbm); err = brcmf_fil_iovar_int_get(ifp, "qtxpower", &txpwrdbm);
if (err) { if (err) {
WL_ERR("error (%d)\n", err); WL_ERR("error (%d)\n", err);
goto done; goto done;
...@@ -1798,16 +1805,17 @@ static s32 ...@@ -1798,16 +1805,17 @@ static s32
brcmf_cfg80211_config_default_key(struct wiphy *wiphy, struct net_device *ndev, brcmf_cfg80211_config_default_key(struct wiphy *wiphy, struct net_device *ndev,
u8 key_idx, bool unicast, bool multicast) u8 key_idx, bool unicast, bool multicast)
{ {
struct brcmf_if *ifp = netdev_priv(ndev);
u32 index; u32 index;
u32 wsec; u32 wsec;
s32 err = 0; s32 err = 0;
WL_TRACE("Enter\n"); WL_TRACE("Enter\n");
WL_CONN("key index (%d)\n", key_idx); WL_CONN("key index (%d)\n", key_idx);
if (!check_sys_up(wiphy)) if (!check_sys_up(ifp->vif))
return -EIO; return -EIO;
err = brcmf_fil_bsscfg_int_get(netdev_priv(ndev), "wsec", &wsec); err = brcmf_fil_bsscfg_int_get(ifp, "wsec", &wsec);
if (err) { if (err) {
WL_ERR("WLC_GET_WSEC error (%d)\n", err); WL_ERR("WLC_GET_WSEC error (%d)\n", err);
goto done; goto done;
...@@ -1816,7 +1824,7 @@ brcmf_cfg80211_config_default_key(struct wiphy *wiphy, struct net_device *ndev, ...@@ -1816,7 +1824,7 @@ brcmf_cfg80211_config_default_key(struct wiphy *wiphy, struct net_device *ndev,
if (wsec & WEP_ENABLED) { if (wsec & WEP_ENABLED) {
/* Just select a new current key */ /* Just select a new current key */
index = key_idx; index = key_idx;
err = brcmf_fil_cmd_int_set(netdev_priv(ndev), err = brcmf_fil_cmd_int_set(ifp,
BRCMF_C_SET_KEY_PRIMARY, index); BRCMF_C_SET_KEY_PRIMARY, index);
if (err) if (err)
WL_ERR("error (%d)\n", err); WL_ERR("error (%d)\n", err);
...@@ -1911,6 +1919,7 @@ brcmf_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev, ...@@ -1911,6 +1919,7 @@ brcmf_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
struct key_params *params) struct key_params *params)
{ {
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
struct brcmf_if *ifp = netdev_priv(ndev);
struct brcmf_wsec_key key; struct brcmf_wsec_key key;
s32 val; s32 val;
s32 wsec; s32 wsec;
...@@ -1919,7 +1928,7 @@ brcmf_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev, ...@@ -1919,7 +1928,7 @@ brcmf_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
WL_TRACE("Enter\n"); WL_TRACE("Enter\n");
WL_CONN("key index (%d)\n", key_idx); WL_CONN("key index (%d)\n", key_idx);
if (!check_sys_up(wiphy)) if (!check_sys_up(ifp->vif))
return -EIO; return -EIO;
if (mac_addr) { if (mac_addr) {
...@@ -1981,13 +1990,13 @@ brcmf_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev, ...@@ -1981,13 +1990,13 @@ brcmf_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
if (err) if (err)
goto done; goto done;
err = brcmf_fil_bsscfg_int_get(netdev_priv(ndev), "wsec", &wsec); err = brcmf_fil_bsscfg_int_get(ifp, "wsec", &wsec);
if (err) { if (err) {
WL_ERR("get wsec error (%d)\n", err); WL_ERR("get wsec error (%d)\n", err);
goto done; goto done;
} }
wsec |= val; wsec |= val;
err = brcmf_fil_bsscfg_int_set(netdev_priv(ndev), "wsec", wsec); err = brcmf_fil_bsscfg_int_set(ifp, "wsec", wsec);
if (err) { if (err) {
WL_ERR("set wsec error (%d)\n", err); WL_ERR("set wsec error (%d)\n", err);
goto done; goto done;
...@@ -2002,11 +2011,12 @@ static s32 ...@@ -2002,11 +2011,12 @@ static s32
brcmf_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev, brcmf_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev,
u8 key_idx, bool pairwise, const u8 *mac_addr) u8 key_idx, bool pairwise, const u8 *mac_addr)
{ {
struct brcmf_if *ifp = netdev_priv(ndev);
struct brcmf_wsec_key key; struct brcmf_wsec_key key;
s32 err = 0; s32 err = 0;
WL_TRACE("Enter\n"); WL_TRACE("Enter\n");
if (!check_sys_up(wiphy)) if (!check_sys_up(ifp->vif))
return -EIO; return -EIO;
memset(&key, 0, sizeof(key)); memset(&key, 0, sizeof(key));
...@@ -2039,19 +2049,20 @@ brcmf_cfg80211_get_key(struct wiphy *wiphy, struct net_device *ndev, ...@@ -2039,19 +2049,20 @@ brcmf_cfg80211_get_key(struct wiphy *wiphy, struct net_device *ndev,
void (*callback) (void *cookie, struct key_params * params)) void (*callback) (void *cookie, struct key_params * params))
{ {
struct key_params params; struct key_params params;
struct brcmf_cfg80211_profile *profile = ndev_to_prof(ndev); struct brcmf_if *ifp = netdev_priv(ndev);
struct brcmf_cfg80211_profile *profile = &ifp->vif->profile;
struct brcmf_cfg80211_security *sec; struct brcmf_cfg80211_security *sec;
s32 wsec; s32 wsec;
s32 err = 0; s32 err = 0;
WL_TRACE("Enter\n"); WL_TRACE("Enter\n");
WL_CONN("key index (%d)\n", key_idx); WL_CONN("key index (%d)\n", key_idx);
if (!check_sys_up(wiphy)) if (!check_sys_up(ifp->vif))
return -EIO; return -EIO;
memset(&params, 0, sizeof(params)); memset(&params, 0, sizeof(params));
err = brcmf_fil_bsscfg_int_get(netdev_priv(ndev), "wsec", &wsec); err = brcmf_fil_bsscfg_int_get(ifp, "wsec", &wsec);
if (err) { if (err) {
WL_ERR("WLC_GET_WSEC error (%d)\n", err); WL_ERR("WLC_GET_WSEC error (%d)\n", err);
/* Ignore this error, may happen during DISASSOC */ /* Ignore this error, may happen during DISASSOC */
...@@ -2103,7 +2114,8 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev, ...@@ -2103,7 +2114,8 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev,
u8 *mac, struct station_info *sinfo) u8 *mac, struct station_info *sinfo)
{ {
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
struct brcmf_cfg80211_profile *profile = ndev_to_prof(ndev); struct brcmf_if *ifp = netdev_priv(ndev);
struct brcmf_cfg80211_profile *profile = &ifp->vif->profile;
struct brcmf_scb_val_le scb_val; struct brcmf_scb_val_le scb_val;
int rssi; int rssi;
s32 rate; s32 rate;
...@@ -2112,12 +2124,12 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev, ...@@ -2112,12 +2124,12 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev,
struct brcmf_sta_info_le sta_info_le; struct brcmf_sta_info_le sta_info_le;
WL_TRACE("Enter, MAC %pM\n", mac); WL_TRACE("Enter, MAC %pM\n", mac);
if (!check_sys_up(wiphy)) if (!check_sys_up(ifp->vif))
return -EIO; return -EIO;
if (cfg->conf->mode == WL_MODE_AP) { if (cfg->conf->mode == WL_MODE_AP) {
memcpy(&sta_info_le, mac, ETH_ALEN); memcpy(&sta_info_le, mac, ETH_ALEN);
err = brcmf_fil_iovar_data_get(netdev_priv(ndev), "sta_info", err = brcmf_fil_iovar_data_get(ifp, "sta_info",
&sta_info_le, &sta_info_le,
sizeof(sta_info_le)); sizeof(sta_info_le));
if (err < 0) { if (err < 0) {
...@@ -2140,7 +2152,7 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev, ...@@ -2140,7 +2152,7 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev,
goto done; goto done;
} }
/* Report the current tx rate */ /* Report the current tx rate */
err = brcmf_fil_cmd_int_get(netdev_priv(ndev), BRCMF_C_GET_RATE, &rate); err = brcmf_fil_cmd_int_get(ifp, BRCMF_C_GET_RATE, &rate);
if (err) { if (err) {
WL_ERR("Could not get rate (%d)\n", err); WL_ERR("Could not get rate (%d)\n", err);
goto done; goto done;
...@@ -2152,8 +2164,7 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev, ...@@ -2152,8 +2164,7 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev,
if (test_bit(WL_STATUS_CONNECTED, &cfg->status)) { if (test_bit(WL_STATUS_CONNECTED, &cfg->status)) {
memset(&scb_val, 0, sizeof(scb_val)); memset(&scb_val, 0, sizeof(scb_val));
err = brcmf_fil_cmd_data_get(netdev_priv(ndev), err = brcmf_fil_cmd_data_get(ifp, BRCMF_C_GET_RSSI, &scb_val,
BRCMF_C_GET_RSSI, &scb_val,
sizeof(scb_val)); sizeof(scb_val));
if (err) { if (err) {
WL_ERR("Could not get rssi (%d)\n", err); WL_ERR("Could not get rssi (%d)\n", err);
...@@ -2216,6 +2227,7 @@ brcmf_cfg80211_set_bitrate_mask(struct wiphy *wiphy, struct net_device *ndev, ...@@ -2216,6 +2227,7 @@ brcmf_cfg80211_set_bitrate_mask(struct wiphy *wiphy, struct net_device *ndev,
const u8 *addr, const u8 *addr,
const struct cfg80211_bitrate_mask *mask) const struct cfg80211_bitrate_mask *mask)
{ {
struct brcmf_if *ifp = netdev_priv(ndev);
struct brcm_rateset_le rateset_le; struct brcm_rateset_le rateset_le;
s32 rate; s32 rate;
s32 val; s32 val;
...@@ -2225,12 +2237,12 @@ brcmf_cfg80211_set_bitrate_mask(struct wiphy *wiphy, struct net_device *ndev, ...@@ -2225,12 +2237,12 @@ brcmf_cfg80211_set_bitrate_mask(struct wiphy *wiphy, struct net_device *ndev,
s32 err = 0; s32 err = 0;
WL_TRACE("Enter\n"); WL_TRACE("Enter\n");
if (!check_sys_up(wiphy)) if (!check_sys_up(ifp->vif))
return -EIO; return -EIO;
/* addr param is always NULL. ignore it */ /* addr param is always NULL. ignore it */
/* Get current rateset */ /* Get current rateset */
err = brcmf_fil_cmd_data_get(netdev_priv(ndev), BRCM_GET_CURR_RATESET, err = brcmf_fil_cmd_data_get(ifp, BRCM_GET_CURR_RATESET,
&rateset_le, sizeof(rateset_le)); &rateset_le, sizeof(rateset_le));
if (err) { if (err) {
WL_ERR("could not get current rateset (%d)\n", err); WL_ERR("could not get current rateset (%d)\n", err);
...@@ -2258,8 +2270,8 @@ brcmf_cfg80211_set_bitrate_mask(struct wiphy *wiphy, struct net_device *ndev, ...@@ -2258,8 +2270,8 @@ brcmf_cfg80211_set_bitrate_mask(struct wiphy *wiphy, struct net_device *ndev,
* Set rate override, * Set rate override,
* Since the is a/b/g-blind, both a/bg_rate are enforced. * Since the is a/b/g-blind, both a/bg_rate are enforced.
*/ */
err_bg = brcmf_fil_iovar_int_set(netdev_priv(ndev), "bg_rate", rate); err_bg = brcmf_fil_iovar_int_set(ifp, "bg_rate", rate);
err_a = brcmf_fil_iovar_int_set(netdev_priv(ndev), "a_rate", rate); err_a = brcmf_fil_iovar_int_set(ifp, "a_rate", rate);
if (err_bg && err_a) { if (err_bg && err_a) {
WL_ERR("could not set fixed rate (%d) (%d)\n", err_bg, err_a); WL_ERR("could not set fixed rate (%d) (%d)\n", err_bg, err_a);
err = err_bg | err_a; err = err_bg | err_a;
...@@ -3072,13 +3084,14 @@ brcmf_cfg80211_set_pmksa(struct wiphy *wiphy, struct net_device *ndev, ...@@ -3072,13 +3084,14 @@ brcmf_cfg80211_set_pmksa(struct wiphy *wiphy, struct net_device *ndev,
struct cfg80211_pmksa *pmksa) struct cfg80211_pmksa *pmksa)
{ {
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
struct brcmf_if *ifp = netdev_priv(ndev);
struct pmkid_list *pmkids = &cfg->pmk_list->pmkids; struct pmkid_list *pmkids = &cfg->pmk_list->pmkids;
s32 err = 0; s32 err = 0;
int i; int i;
int pmkid_len; int pmkid_len;
WL_TRACE("Enter\n"); WL_TRACE("Enter\n");
if (!check_sys_up(wiphy)) if (!check_sys_up(ifp->vif))
return -EIO; return -EIO;
pmkid_len = le32_to_cpu(pmkids->npmkid); pmkid_len = le32_to_cpu(pmkids->npmkid);
...@@ -3111,12 +3124,13 @@ brcmf_cfg80211_del_pmksa(struct wiphy *wiphy, struct net_device *ndev, ...@@ -3111,12 +3124,13 @@ brcmf_cfg80211_del_pmksa(struct wiphy *wiphy, struct net_device *ndev,
struct cfg80211_pmksa *pmksa) struct cfg80211_pmksa *pmksa)
{ {
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
struct brcmf_if *ifp = netdev_priv(ndev);
struct pmkid_list pmkid; struct pmkid_list pmkid;
s32 err = 0; s32 err = 0;
int i, pmkid_len; int i, pmkid_len;
WL_TRACE("Enter\n"); WL_TRACE("Enter\n");
if (!check_sys_up(wiphy)) if (!check_sys_up(ifp->vif))
return -EIO; return -EIO;
memcpy(&pmkid.pmkid[0].BSSID, pmksa->bssid, ETH_ALEN); memcpy(&pmkid.pmkid[0].BSSID, pmksa->bssid, ETH_ALEN);
...@@ -3161,10 +3175,11 @@ static s32 ...@@ -3161,10 +3175,11 @@ static s32
brcmf_cfg80211_flush_pmksa(struct wiphy *wiphy, struct net_device *ndev) brcmf_cfg80211_flush_pmksa(struct wiphy *wiphy, struct net_device *ndev)
{ {
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy); struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
struct brcmf_if *ifp = netdev_priv(ndev);
s32 err = 0; s32 err = 0;
WL_TRACE("Enter\n"); WL_TRACE("Enter\n");
if (!check_sys_up(wiphy)) if (!check_sys_up(ifp->vif))
return -EIO; return -EIO;
memset(cfg->pmk_list, 0, sizeof(*cfg->pmk_list)); memset(cfg->pmk_list, 0, sizeof(*cfg->pmk_list));
...@@ -4106,6 +4121,7 @@ brcmf_cfg80211_del_station(struct wiphy *wiphy, struct net_device *ndev, ...@@ -4106,6 +4121,7 @@ brcmf_cfg80211_del_station(struct wiphy *wiphy, struct net_device *ndev,
u8 *mac) u8 *mac)
{ {
struct brcmf_scb_val_le scbval; struct brcmf_scb_val_le scbval;
struct brcmf_if *ifp = netdev_priv(ndev);
s32 err; s32 err;
if (!mac) if (!mac)
...@@ -4113,13 +4129,12 @@ brcmf_cfg80211_del_station(struct wiphy *wiphy, struct net_device *ndev, ...@@ -4113,13 +4129,12 @@ brcmf_cfg80211_del_station(struct wiphy *wiphy, struct net_device *ndev,
WL_TRACE("Enter %pM\n", mac); WL_TRACE("Enter %pM\n", mac);
if (!check_sys_up(wiphy)) if (!check_sys_up(ifp->vif))
return -EIO; return -EIO;
memcpy(&scbval.ea, mac, ETH_ALEN); memcpy(&scbval.ea, mac, ETH_ALEN);
scbval.val = cpu_to_le32(WLAN_REASON_DEAUTH_LEAVING); scbval.val = cpu_to_le32(WLAN_REASON_DEAUTH_LEAVING);
err = brcmf_fil_cmd_data_set(netdev_priv(ndev), err = brcmf_fil_cmd_data_set(ifp, BRCMF_C_SCB_DEAUTHENTICATE_FOR_REASON,
BRCMF_C_SCB_DEAUTHENTICATE_FOR_REASON,
&scbval, sizeof(scbval)); &scbval, sizeof(scbval));
if (err) if (err)
WL_ERR("SCB_DEAUTHENTICATE_FOR_REASON failed %d\n", err); WL_ERR("SCB_DEAUTHENTICATE_FOR_REASON failed %d\n", err);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册