On 02/01/2017 09:57 AM, Ashok Raj Nagarajan wrote:
On 2017-02-01 23:06, Ben Greear wrote:
On 02/01/2017 09:27 AM, Ashok Raj Nagarajan wrote:
+static int nl80211_parse_sta_txpower_setting(struct genl_info *info,
+ struct station_parameters *params)
+{
+ struct cfg80211_registered_device *rdev = info->user_ptr[0];
+ enum nl80211_tx_power_setting type;
+ int idx;
+
+ if (!rdev->ops->set_tx_power ||
+ !wiphy_ext_feature_isset(&rdev->wiphy,
+ NL80211_EXT_FEATURE_STA_TX_PWR))
+ return -EOPNOTSUPP;
Maybe always let a user set to default value even if the driver does not
support setting specific values?
IMHO, having some default value in place of non-valid values may not be the right way.
If a user or user-space script wants to always be able to initialize
things to default
values, it would be nice if it did not have to pay specific attention
to whether the
NIC supports STA_TX_PWR feature or not. Since a NIC that does not
support this feature will always
have sta TX power set to default by definition, that is why I think
you should let
the call succeed in that case.
I think it would be better/easier to handle the error cases in the user-space scripts than at the driver here, no? NIC that doesn't support this feature will
set the tx power to the station depending on the rate algorithm in place. So the same NIC and same station will have different txpower depending on the
environment? On the other hand, how do we decide what constant (?) default value to be sent to userspace?
You use value '0' to mean set to default values, as far as I can tell.
So, always let a user set the value to 0, regardless of whether STA_RX_PWR feature exists or not.
If you are querying for a value to show user-space, return '0' in this case.
If user tries to set the value to non-zero, then it should fail with EOPNOTSUPP in case STA_TX_PWR
feature does not exist.
Thanks,
Ben
--
Ben Greear <greearb@xxxxxxxxxxxxxxx>
Candela Technologies Inc http://www.candelatech.com