mirror of https://gitee.com/openkylin/linux.git
iwmc3200wifi: Tx power setting
We can now set the Tx power from e.g. iwconfig. Signed-off-by: Samuel Ortiz <sameo@linux.intel.com> Signed-off-by: Zhu Yi <yi.zhu@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
7eae165e2d
commit
88e6195a91
|
@ -670,9 +670,19 @@ static int iwm_cfg80211_disconnect(struct wiphy *wiphy, struct net_device *dev,
|
|||
static int iwm_cfg80211_set_txpower(struct wiphy *wiphy,
|
||||
enum tx_power_setting type, int dbm)
|
||||
{
|
||||
struct iwm_priv *iwm = wiphy_to_iwm(wiphy);
|
||||
int ret;
|
||||
|
||||
switch (type) {
|
||||
case TX_POWER_AUTOMATIC:
|
||||
return 0;
|
||||
case TX_POWER_FIXED:
|
||||
ret = iwm_umac_set_config_fix(iwm, UMAC_PARAM_TBL_CFG_FIX,
|
||||
CFG_TX_PWR_LIMIT_USR, dbm * 2);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
return iwm_tx_power_trigger(iwm);
|
||||
default:
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
@ -684,7 +694,7 @@ static int iwm_cfg80211_get_txpower(struct wiphy *wiphy, int *dbm)
|
|||
{
|
||||
struct iwm_priv *iwm = wiphy_to_iwm(wiphy);
|
||||
|
||||
*dbm = iwm->txpower;
|
||||
*dbm = iwm->txpower >> 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -793,6 +793,19 @@ int iwm_invalidate_mlme_profile(struct iwm_priv *iwm)
|
|||
return ret ? 0 : -EBUSY;
|
||||
}
|
||||
|
||||
int iwm_tx_power_trigger(struct iwm_priv *iwm)
|
||||
{
|
||||
struct iwm_umac_pwr_trigger pwr_trigger;
|
||||
|
||||
pwr_trigger.hdr.oid = UMAC_WIFI_IF_CMD_TX_PWR_TRIGGER;
|
||||
pwr_trigger.hdr.buf_size =
|
||||
cpu_to_le16(sizeof(struct iwm_umac_pwr_trigger) -
|
||||
sizeof(struct iwm_umac_wifi_if));
|
||||
|
||||
|
||||
return iwm_send_wifi_if_cmd(iwm, &pwr_trigger, sizeof(pwr_trigger), 1);
|
||||
}
|
||||
|
||||
int iwm_send_umac_stats_req(struct iwm_priv *iwm, u32 flags)
|
||||
{
|
||||
struct iwm_udma_wifi_cmd udma_cmd = UDMA_UMAC_INIT;
|
||||
|
|
|
@ -441,6 +441,11 @@ struct iwm_umac_tx_key_id {
|
|||
u8 reserved[3];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct iwm_umac_pwr_trigger {
|
||||
struct iwm_umac_wifi_if hdr;
|
||||
__le32 reseved;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct iwm_umac_cmd_stats_req {
|
||||
__le32 flags;
|
||||
} __attribute__ ((packed));
|
||||
|
@ -467,6 +472,7 @@ int iwm_invalidate_mlme_profile(struct iwm_priv *iwm);
|
|||
int iwm_send_packet(struct iwm_priv *iwm, struct sk_buff *skb, int pool_id);
|
||||
int iwm_set_tx_key(struct iwm_priv *iwm, u8 key_idx);
|
||||
int iwm_set_key(struct iwm_priv *iwm, bool remove, struct iwm_key *key);
|
||||
int iwm_tx_power_trigger(struct iwm_priv *iwm);
|
||||
int iwm_send_umac_stats_req(struct iwm_priv *iwm, u32 flags);
|
||||
int iwm_send_umac_channel_list(struct iwm_priv *iwm);
|
||||
int iwm_scan_ssids(struct iwm_priv *iwm, struct cfg80211_ssid *ssids,
|
||||
|
|
Loading…
Reference in New Issue