2011-11-28 16:18:10

by Daniel Golle

[permalink] [raw]
Subject: [PATCH v1 1/3] support for antenna configuration profiles

This adds support for antenna switch configuration profiles to nl80211.

Signed-off-by: Daniel Golle <[email protected]>
---
include/linux/nl80211.h | 47 +++++++++++++++++++++++++++++++
include/net/cfg80211.h | 26 +++++++++++++++++
net/wireless/nl80211.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 144 insertions(+), 0 deletions(-)

diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
index 97bfebf..0653896 100644
--- a/include/linux/nl80211.h
+++ b/include/linux/nl80211.h
@@ -1185,6 +1185,12 @@ enum nl80211_commands {
* abides to when initiating radiation on DFS channels. A country maps
* to one DFS region.
*
+ * @NL80211_ATTR_WIPHY_EXTANT: External antenna switch profiles. This nested
+ * structure contains a list of available profiles as well as the current
+ * profile selection status.
+ *
+ * @NL80211_ATTR_WIPHY_EXTANT_SELECT: Select extant profile.
+ *
* @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use
*/
@@ -1428,6 +1434,9 @@ enum nl80211_attrs {
NL80211_ATTR_DISABLE_HT,
NL80211_ATTR_HT_CAPABILITY_MASK,

+ NL80211_ATTR_WIPHY_EXTANT,
+ NL80211_ATTR_WIPHY_EXTANT_SELECT,
+
/* add attributes here, update the policy in nl80211.c */

__NL80211_ATTR_AFTER_LAST,
@@ -1720,6 +1729,44 @@ enum nl80211_mpath_info {
NL80211_MPATH_INFO_MAX = __NL80211_MPATH_INFO_AFTER_LAST - 1
};

+
+
+/**
+ * enum nl80211_extant_attr - external antenna switch
+ * @__NL80211_EXTANT_ATTR_INVALID: attribute number 0 is reserved
+ * @NL80211_EXTANT_ATTR_STATE: currently selected profile
+ * @NL80211_EXTANT_ATTR_PROFILES: highest profile attribute currently defined
+ * @NL80211_EXTANT_ATTR_MAX: highest profile attribute currently defined
+ * @__NL80211_EXTANT_ATTR_AFTER_LAST: internal use
+ */
+enum nl80211_extant_attr {
+ __NL80211_EXTANT_ATTR_INVALID,
+ NL80211_EXTANT_ATTR_STATE,
+ NL80211_EXTANT_ATTR_PROFILES,
+ /* keep last */
+ __NL80211_EXTANT_ATTR_AFTER_LAST,
+ NL80211_EXTANT_ATTR_MAX = __NL80211_EXTANT_ATTR_AFTER_LAST - 1
+};
+
+/**
+ * enum nl80211_easp_attr - external antenna switch configuration profile
+ * @__NL80211_EASP_ATTR_INVALID: attribute number 0 is reserved
+ * @NL80211_EASP_ATTR_ID: unique identifier
+ * @NL80211_EASP_ATTR_NAME: human-readable name of the configuration profile
+ * @NL80211_EASP_ATTR_DESC: human-readable description of the configuration profile
+ * @NL80211_EASP_ATTR_MAX: highest profile attribute currently defined
+ * @__NL80211_EASP_ATTR_AFTER_LAST: internal use
+ */
+enum nl80211_easp_attr {
+ __NL80211_EASP_ATTR_INVALID,
+ NL80211_EASP_ATTR_ID,
+ NL80211_EASP_ATTR_NAME,
+ NL80211_EASP_ATTR_DESC,
+ /* keep last */
+ __NL80211_EASP_ATTR_AFTER_LAST,
+ NL80211_EASP_ATTR_MAX = __NL80211_EASP_ATTR_AFTER_LAST - 1
+};
+
/**
* enum nl80211_band_attr - band attributes
* @__NL80211_BAND_ATTR_INVALID: attribute number 0 is reserved
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index d5e1891..4896e7a 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1456,6 +1456,9 @@ struct cfg80211_gtk_rekey_data {
*
* @get_antenna: Get current antenna configuration from device (tx_ant, rx_ant).
*
+ * @set_extant: Select the external antenna switch configuration profile.
+ * @get_extant: Get currently selected antenna switch profile.
+ *
* @set_ringparam: Set tx and rx ring sizes.
*
* @get_ringparam: Get tx and rx ring current and maximum sizes.
@@ -1637,6 +1640,9 @@ struct cfg80211_ops {
int (*set_antenna)(struct wiphy *wiphy, u32 tx_ant, u32 rx_ant);
int (*get_antenna)(struct wiphy *wiphy, u32 *tx_ant, u32 *rx_ant);

+ int (*set_extant)(struct wiphy *wiphy, u32 extant);
+ int (*get_extant)(struct wiphy *wiphy, u32 *extant);
+
int (*set_ringparam)(struct wiphy *wiphy, u32 tx, u32 rx);
void (*get_ringparam)(struct wiphy *wiphy,
u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max);
@@ -1748,6 +1754,7 @@ enum wiphy_flags {
WIPHY_FLAG_AP_PROBE_RESP_OFFLOAD = BIT(19),
WIPHY_FLAG_OFFCHAN_TX = BIT(20),
WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL = BIT(21),
+ WIPHY_FLAG_HAS_EXTANT_SWITCH = BIT(22),
};

/**
@@ -1875,6 +1882,21 @@ struct wiphy_wowlan_support {
};

/**
+ * struct wiphy_extant_profile - User-parsable external antenna switch info
+ *
+ * This structure is used to provide the available switch configurations.
+ * @id: unique identifier of the profile
+ * @name: profile name (a short string)
+ * @description: user-parsable description of the profile
+ */
+struct wiphy_extant_profile {
+ int id;
+ char *name;
+ char *desc;
+};
+
+
+/**
* struct wiphy - wireless hardware description
* @reg_notifier: the driver's regulatory notification callback,
* note that if your driver uses wiphy_apply_custom_regulatory()
@@ -1955,6 +1977,8 @@ struct wiphy_wowlan_support {
* configured as RX antennas. Antenna configuration commands will be
* rejected unless this or @available_antennas_tx is set.
*
+ * @extant: struct holding the available antenna switch configuration profiles.
+ *
* @max_remain_on_channel_duration: Maximum time a remain-on-channel operation
* may request, if implemented.
*
@@ -2025,6 +2049,8 @@ struct wiphy {
*/
u32 probe_resp_offload;

+ struct wiphy_extant_profile *extant;
+
/* If multiple wiphys are registered and you're handed e.g.
* a regular netdev with assigned ieee80211_ptr, you won't
* know whether it points to a wiphy your driver has registered
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index a1cabde..9c861ae 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -204,6 +204,8 @@ static const struct nla_policy nl80211_policy[NL80211_ATTR_MAX+1] = {
[NL80211_ATTR_HT_CAPABILITY_MASK] = {
.len = NL80211_HT_CAPABILITY_LEN
},
+ [NL80211_ATTR_WIPHY_EXTANT] = { .type = NLA_NESTED },
+ [NL80211_ATTR_WIPHY_EXTANT_SELECT] = { .type = NLA_U32 },
};

/* policy for the key attributes */
@@ -252,6 +254,17 @@ nl80211_match_policy[NL80211_SCHED_SCAN_MATCH_ATTR_MAX + 1] = {
.len = IEEE80211_MAX_SSID_LEN },
};

+/* policy for external antenna switch configuration profiles */
+static const struct nla_policy
+nl80211_easp_policy[NL80211_EASP_ATTR_MAX + 1] = {
+ [NL80211_EASP_ATTR_ID] = { .type = NLA_U32 },
+ [NL80211_EASP_ATTR_NAME] = { .type = NLA_STRING,
+ .len = IEEE80211_MAX_DATA_LEN },
+ [NL80211_EASP_ATTR_DESC] = { .type = NLA_STRING,
+ .len = IEEE80211_MAX_DATA_LEN },
+};
+
+
/* ifidx get helper */
static int nl80211_get_ifidx(struct netlink_callback *cb)
{
@@ -699,6 +712,8 @@ static int nl80211_send_wiphy(struct sk_buff *msg, u32 pid, u32 seq, int flags,
struct nlattr *nl_bands, *nl_band;
struct nlattr *nl_freqs, *nl_freq;
struct nlattr *nl_rates, *nl_rate;
+ struct nlattr *nl_easps, *nl_easp;
+ struct nlattr *nl_extant;
struct nlattr *nl_cmds;
enum ieee80211_band band;
struct ieee80211_channel *chan;
@@ -781,6 +796,48 @@ static int nl80211_send_wiphy(struct sk_buff *msg, u32 pid, u32 seq, int flags,
}
}

+ /*
+ * antenna switch configuration profile support
+ */
+ if (dev->wiphy.flags & WIPHY_FLAG_HAS_EXTANT_SWITCH) {
+ struct wiphy_extant_profile *weprof;
+ nl_extant = nla_nest_start(msg, NL80211_ATTR_WIPHY_EXTANT);
+ if (!nl_extant)
+ goto nla_put_failure;
+
+ /* currently selected configuration profile */
+ if (dev->ops->get_extant) {
+ u32 extant;
+ int res;
+ res = dev->ops->get_extant(&dev->wiphy, &extant);
+ if (!res)
+ NLA_PUT_U32(msg,
+ NL80211_EXTANT_ATTR_STATE,
+ extant);
+ }
+
+ /* available profiles */
+ i=0;
+ nl_easps = nla_nest_start(msg, NL80211_EXTANT_ATTR_PROFILES);
+ for (weprof = dev->wiphy.extant; weprof->id >= 0; weprof++) {
+ nl_easp = nla_nest_start(msg, i);
+ if (!nl_easp)
+ goto nla_put_failure;
+ NLA_PUT_U32(msg, NL80211_EASP_ATTR_ID,
+ weprof->id);
+ NLA_PUT(msg, NL80211_EASP_ATTR_NAME,
+ strlen(weprof->name),
+ weprof->name);
+ NLA_PUT(msg, NL80211_EASP_ATTR_DESC,
+ strlen(weprof->desc),
+ weprof->desc);
+ nla_nest_end(msg, nl_easp);
+ i++;
+ }
+ nla_nest_end(msg, nl_easps);
+ nla_nest_end(msg, nl_extant);
+ }
+
if (nl80211_put_iftypes(msg, NL80211_ATTR_SUPPORTED_IFTYPES,
dev->wiphy.interface_modes))
goto nla_put_failure;
@@ -1374,6 +1431,20 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
goto bad_res;
}

+ if (info->attrs[NL80211_ATTR_WIPHY_EXTANT_SELECT]) {
+ u32 extant;
+ if (!rdev->ops->set_extant) {
+ result = -EOPNOTSUPP;
+ goto bad_res;
+ }
+
+ extant = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_EXTANT_SELECT]);
+
+ result = rdev->ops->set_extant(&rdev->wiphy, extant);
+ if (result)
+ goto bad_res;
+ }
+
changed = 0;

if (info->attrs[NL80211_ATTR_WIPHY_RETRY_SHORT]) {
--
1.7.4.1


Attachments:
(No filename) (8.59 kB)
signature.asc (836.00 B)
Digital signature
Download all attachments

2011-12-04 11:06:04

by Berg, Johannes

[permalink] [raw]
Subject: Re: [PATCH v1 1/3] support for antenna configuration profiles

T24gTW9uLCAyMDExLTExLTI4IGF0IDE3OjEyICswMTAwLCBEYW5pZWwgR29sbGUgd3JvdGU6Cj4g
VGhpcyBhZGRzIHN1cHBvcnQgZm9yIGFudGVubmEgc3dpdGNoIGNvbmZpZ3VyYXRpb24gcHJvZmls
ZXMgdG8gbmw4MDIxMS4KCk1laCwgSSBjb3VsZG4ndCBmaW5kIHRoaXMgcGF0Y2ggYmVjYXVzZSB0
aGUgc3ViamVjdHMgYXJlIGFsbCB3cm9uZy4KVGhyZWUgcGF0Y2hlcyB3aXRoIGV4YWN0bHkgdGhl
IHNhbWUgc3ViamVjdD8hIENvbWUgb24uIEFsc28gcGxlYXNlIHVzZQp0aHJlYWRlZCBtb2RlIHRv
IHN1Ym1pdCAtLSBvdGhlcndpc2UgdGhlIDAvTiBkaXNjdXNzaW9uICYgdGhlIHBhdGNoZXMKZ2V0
IHRvcm4gYXBhcnQgKHdoaWNoIGlzIHRoZSByZWFzb24gSSdtIHJlcGx5aW5nIGhlcmUpLgoKQW55
d2F5LCBlbm91Z2ggY29tcGxhaW5pbmcuCgoKPiAgLyoqCj4gKyAqIHN0cnVjdCB3aXBoeV9leHRh
bnRfcHJvZmlsZSAtIFVzZXItcGFyc2FibGUgZXh0ZXJuYWwgYW50ZW5uYSBzd2l0Y2ggaW5mbwo+
ICsgKgo+ICsgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHByb3ZpZGUgdGhlIGF2YWlsYWJs
ZSBzd2l0Y2ggY29uZmlndXJhdGlvbnMuCj4gKyAqIEBpZDogdW5pcXVlIGlkZW50aWZpZXIgb2Yg
dGhlIHByb2ZpbGUKPiArICogQG5hbWU6IHByb2ZpbGUgbmFtZSAoYSBzaG9ydCBzdHJpbmcpCj4g
KyAqIEBkZXNjcmlwdGlvbjogdXNlci1wYXJzYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvZmls
ZQo+ICsgKi8KPiArc3RydWN0IHdpcGh5X2V4dGFudF9wcm9maWxlIHsKPiArCWludCBpZDsKPiAr
CWNoYXIgKm5hbWU7Cj4gKwljaGFyICpkZXNjOwoKY29uc3QKCj4gKwlzdHJ1Y3Qgd2lwaHlfZXh0
YW50X3Byb2ZpbGUgKmV4dGFudDsKCmNvbnN0CgpBbHNvLCBzaG91bGRuJ3QgdGhpcyBhbGxvdyBt
dWx0aXBsZSBwcm9maWxlcz8KCkl0J3MgYSBiaXQgc3RyYW5nZSB0byBoYXZlIGEgcHJvZmlsZSBJ
RCBidXQgdGhlbiBvbmx5IGEgc2luZ2xlCnByb2ZpbGUgLi4uCgo+ICsvKiBwb2xpY3kgZm9yIGV4
dGVybmFsIGFudGVubmEgc3dpdGNoIGNvbmZpZ3VyYXRpb24gcHJvZmlsZXMgKi8KPiArc3RhdGlj
IGNvbnN0IHN0cnVjdCBubGFfcG9saWN5Cj4gK25sODAyMTFfZWFzcF9wb2xpY3lbTkw4MDIxMV9F
QVNQX0FUVFJfTUFYICsgMV0gPSB7Cj4gKwlbTkw4MDIxMV9FQVNQX0FUVFJfSURdID0geyAudHlw
ZSA9IE5MQV9VMzIgfSwKPiArCVtOTDgwMjExX0VBU1BfQVRUUl9OQU1FXSA9IHsgLnR5cGUgPSBO
TEFfU1RSSU5HLAo+ICsJCQkJCS5sZW4gPSBJRUVFODAyMTFfTUFYX0RBVEFfTEVOIH0sCj4gKwlb
Tkw4MDIxMV9FQVNQX0FUVFJfREVTQ10gPSB7IC50eXBlID0gTkxBX1NUUklORywKPiArCQkJCQku
bGVuID0gSUVFRTgwMjExX01BWF9EQVRBX0xFTiB9LAo+ICt9OwoKVGhvc2UgbGVuZ3RoIHJlc3Ry
aWN0aW9ucyBhcmUgY29tcGxldGVseSBib2d1cywgYnV0IHRoZXkncmUgYWxzbwp1bm5lY2Vzc2Fy
eSBzaW5jZSB0aGlzIGRhdGEgaXMgb3V0cHV0IGRhdGEgb25seSBzbyB5b3UgYXJlbid0IHVzaW5n
IHRoZQpwb2xpY3kgYW55d2hlcmUgYW55d2F5LgoKPiBAQCAtNzgxLDYgKzc5Niw0OCBAQCBzdGF0
aWMgaW50IG5sODAyMTFfc2VuZF93aXBoeShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLCB1MzIgcGlkLCB1
MzIgc2VxLCBpbnQgZmxhZ3MsCj4gIAkJfQo+ICAJfQo+ICAKPiArCS8qCj4gKwkgKiBhbnRlbm5h
IHN3aXRjaCBjb25maWd1cmF0aW9uIHByb2ZpbGUgc3VwcG9ydAo+ICsJICovCj4gKwlpZiAoZGV2
LT53aXBoeS5mbGFncyAmIFdJUEhZX0ZMQUdfSEFTX0VYVEFOVF9TV0lUQ0gpIHsKPiArCQlzdHJ1
Y3Qgd2lwaHlfZXh0YW50X3Byb2ZpbGUgKndlcHJvZjsKPiArCQlubF9leHRhbnQgPSBubGFfbmVz
dF9zdGFydChtc2csIE5MODAyMTFfQVRUUl9XSVBIWV9FWFRBTlQpOwo+ICsJCWlmICghbmxfZXh0
YW50KQo+ICsJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKPiArCj4gKwkJLyogY3VycmVudGx5IHNl
bGVjdGVkIGNvbmZpZ3VyYXRpb24gcHJvZmlsZSAqLwo+ICsJCWlmIChkZXYtPm9wcy0+Z2V0X2V4
dGFudCkgewo+ICsJCQl1MzIgZXh0YW50Owo+ICsJCQlpbnQgcmVzOwo+ICsJCQlyZXMgPSBkZXYt
Pm9wcy0+Z2V0X2V4dGFudCgmZGV2LT53aXBoeSwgJmV4dGFudCk7Cj4gKwkJCWlmICghcmVzKQo+
ICsJCQkJTkxBX1BVVF9VMzIobXNnLAo+ICsJCQkJCU5MODAyMTFfRVhUQU5UX0FUVFJfU1RBVEUs
Cj4gKwkJCQkJZXh0YW50KTsKPiArCQl9Cj4gKwo+ICsJCS8qIGF2YWlsYWJsZSBwcm9maWxlcyAq
Lwo+ICsJCWk9MDsKPiArCQlubF9lYXNwcyA9IG5sYV9uZXN0X3N0YXJ0KG1zZywgTkw4MDIxMV9F
WFRBTlRfQVRUUl9QUk9GSUxFUyk7Cj4gKwkJZm9yICh3ZXByb2YgPSBkZXYtPndpcGh5LmV4dGFu
dDsgd2Vwcm9mLT5pZCA+PSAwOyB3ZXByb2YrKykgewoKT2ggc28gdGhhdCdzIHN1cHBvc2VkIHRv
IGJlIGFuIGFycmF5IC0tIHRoZXJlJ3Mgbm8gd2F5IHRvIHRlbGwgdGhpcyBmcm9tCnRoZSBoZWFk
ZXIgZmlsZXMuIEl0J3MgYWNjZXB0YWJsZSwgYnV0IHBsZWFzZSBnaXZlIGl0IGFuIGV4cGxpY2l0
Cmxlbmd0aC4KCgpBbnl3YXksIGFwYXJ0IGZyb20gdGhlc2UgdGVjaG5pY2FsIGlzc3VlcyB0aGF0
IHlvdSBtdXN0IGZpeCwgSSBhbHNvIHdhbnQKc29tZWJvZHkgd2hvIGtub3dzIHdoYXQgdGhpcyBp
cyB1c2VkIGZvciBhbmQgaG93IGl0IGlzIHVzZWQgdG8gcmV2aWV3Cml0LCB3aGljaCBtaWdodCBt
ZWFuIHdhaXRpbmcgZm9yIEFkcmlhbiB3aG8gc2F5cyBpdCdsbCBiZSBhIGNvdXBsZSBvZgp3ZWVr
cyBhdCBsZWFzdC4KCmpvaGFubmVzCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbnRl
bCBHbWJICkRvcm5hY2hlciBTdHJhc3NlIDEKODU2MjIgRmVsZGtpcmNoZW4vTXVlbmNoZW4sIERl
dXRzY2hsYW5kIApTaXR6IGRlciBHZXNlbGxzY2hhZnQ6IEZlbGRraXJjaGVuIGJlaSBNdWVuY2hl
bgpHZXNjaGFlZnRzZnVlaHJlcjogRG91Z2xhcyBMdXNrLCBQZXRlciBHbGVpc3NuZXIsIEhhbm5l
cyBTY2h3YWRlcmVyClJlZ2lzdGVyZ2VyaWNodDogTXVlbmNoZW4gSFJCIDQ3NDU2IApVc3QuLUlk
TnIuL1ZBVCBSZWdpc3RyYXRpb24gTm8uOiBERTEyOTM4NTg5NQpDaXRpYmFuayBGcmFua2Z1cnQg
YS5NLiAoQkxaIDUwMiAxMDkgMDApIDYwMDExOTA1Mgo=


2011-12-06 09:14:00

by Berg, Johannes

[permalink] [raw]
Subject: Re: [PATCH v1 1/3] support for antenna configuration profiles

Cj4gPiBUaG9zZSBsZW5ndGggcmVzdHJpY3Rpb25zIGFyZSBjb21wbGV0ZWx5IGJvZ3VzLCBidXQg
dGhleSdyZSBhbHNvCj4gPiB1bm5lY2Vzc2FyeSBzaW5jZSB0aGlzIGRhdGEgaXMgb3V0cHV0IGRh
dGEgb25seSBzbyB5b3UgYXJlbid0IHVzaW5nIHRoZQo+ID4gcG9saWN5IGFueXdoZXJlIGFueXdh
eS4KCj4gU2hvdWxkIEkgY29tcGxldGVseSBza2lwIGFkZGluZyBpdCB0byB0aGUgcG9saWN5IHRo
ZW4gb3IganVzdCBvbW1pdCB0aGUgbGVuZ3RoCj4gcmVzdHJpY3Rpb24/CgpKdXN0IGRvbid0IGFk
ZCB0aGUgcG9saWN5LCBJIGRvbid0IHNlZSBpdCBhZGRpbmcgYW55IHZhbHVlLiBUaGUgZm9ybWF0
CnNob3VsZCBiZSBkb2N1bWVudGVkIHdlbGwgZW5vdWdoIGluIHRoZSBoZWFkZXIgZmlsZSBzbyB1
c2Vyc3BhY2UgY2FuCnVuZGVyc3RhbmQgaXQgd2l0aG91dCB0aGUgcG9saWN5LgooQWxzbyBub3Rl
IHRoYXQgSSB3YXMgcmVmZXJyaW5nIHRvIHVzaW5nIGEgYm9ndXMgbGVuZ3RoIGNvbnN0YW50IC0t
IHlvdQp3ZXJlIHNheWluZyBlYWNoIHN0cmluZyBoZXJlIGNhbiBiZSBhcyBsb25nIGFzIGEgODAy
LjExIGZyYW1lKQoKPiA+IE9oIHNvIHRoYXQncyBzdXBwb3NlZCB0byBiZSBhbiBhcnJheSAtLSB0
aGVyZSdzIG5vIHdheSB0byB0ZWxsIHRoaXMgZnJvbQo+ID4gdGhlIGhlYWRlciBmaWxlcy4gSXQn
cyBhY2NlcHRhYmxlLCBidXQgcGxlYXNlIGdpdmUgaXQgYW4gZXhwbGljaXQKPiA+IGxlbmd0aC4K
PiBPaywgSSBoYXZlbid0IHNlZW4gYW55IGRldmljZXMgd2l0aCBtb3JlIHRoYW4gMiBwb3NzaWJs
ZSBhbnRlbm5hIGNvbmZpZ3VhdGlvbgo+IHByb2ZpbGVzIChob3Jpem9udGFsL3ZlcnRpY2FsLCBi
dWlsdC1pbi9leHRlcm5hbCkgc28gZmFyLCBzbyBnaXZpbmcgdGhlIGFycmF5IGEKPiBmaXhlZCBs
ZW5ndGggb2YgNCBzaG91bGQgYmUgZmluZSBmb3Igbm93LgoKSSBkb24ndCB0aGluayBkb2luZyBh
IGZpeGVkIGxlbmd0aCBpcyB1c2VmdWwgLS0ganVzdCBhZGQgYSB2YXJpYWJsZQpkZXNjcmliaW5n
IHRoZSBsZW5ndGguCgpqb2hhbm5lcwoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW50
ZWwgR21iSApEb3JuYWNoZXIgU3RyYXNzZSAxCjg1NjIyIEZlbGRraXJjaGVuL011ZW5jaGVuLCBE
ZXV0c2NobGFuZCAKU2l0eiBkZXIgR2VzZWxsc2NoYWZ0OiBGZWxka2lyY2hlbiBiZWkgTXVlbmNo
ZW4KR2VzY2hhZWZ0c2Z1ZWhyZXI6IERvdWdsYXMgTHVzaywgUGV0ZXIgR2xlaXNzbmVyLCBIYW5u
ZXMgU2Nod2FkZXJlcgpSZWdpc3RlcmdlcmljaHQ6IE11ZW5jaGVuIEhSQiA0NzQ1NiAKVXN0Li1J
ZE5yLi9WQVQgUmVnaXN0cmF0aW9uIE5vLjogREUxMjkzODU4OTUKQ2l0aWJhbmsgRnJhbmtmdXJ0
IGEuTS4gKEJMWiA1MDIgMTA5IDAwKSA2MDAxMTkwNTIK


2011-12-05 17:56:48

by Daniel Golle

[permalink] [raw]
Subject: Re: [PATCH v1 1/3] support for antenna configuration profiles

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi!

On 12/04/2011 12:06 PM, Johannes Berg wrote:
> On Mon, 2011-11-28 at 17:12 +0100, Daniel Golle wrote:
>> This adds support for antenna switch configuration profiles to nl80211.
>
> Meh, I couldn't find this patch because the subjects are all wrong.
> Three patches with exactly the same subject?! Come on. Also please use
> threaded mode to submit -- otherwise the 0/N discussion & the patches
> get torn apart (which is the reason I'm replying here).
I see, I try to use git-email in future to automatize the submission process and
hope that would improve the form.
The draft/v0 patch was posted on ath9k-devel, I re-posted this one to
linux-wireless after Mohammed suggested to post it here to have a broader
audience for discussion. Unfortunately I didn't repost the board-setup and
userspace patches as well, I'll try to prepare that in the next days.

> Anyway, enough complaining.
Please excuse me being a noob when it comes to collaboration methods, trying to
emulate what I observe. I highly appreciate people showing me where and how I
can improve.

> Those length restrictions are completely bogus, but they're also
> unnecessary since this data is output data only so you aren't using the
> policy anywhere anyway.
Should I completely skip adding it to the policy then or just ommit the length
restriction?

> Oh so that's supposed to be an array -- there's no way to tell this from
> the header files. It's acceptable, but please give it an explicit
> length.
Ok, I haven't seen any devices with more than 2 possible antenna configuation
profiles (horizontal/vertical, built-in/external) so far, so giving the array a
fixed length of 4 should be fine for now.

> Anyway, apart from these technical issues that you must fix, I also want
> somebody who knows what this is used for and how it is used to review
> it, which might mean waiting for Adrian who says it'll be a couple of
> weeks at least.
No worries about that, I'll also be traveling in the next few weeks and we can
further discuss when Adrian has returned as well.



Daniel

- --
ALLNET GmbH ; Maistr. 2 ; D-82110 Germering ; Germany
Tel. +49-89-89422222 - Fax +49-89-89422233
http://www.allnet.de
email: Daniel Golle <[email protected]>
Schulungs-/Veranstaltungsprogramm: http://www.802lab.de<http://www.802lab.de/>
Geschäftsführer: Wolfgang Marcus Bauer
Handelsregister München B 95922 ; UST-ID-Nr. DE 128214294 ;
St.-Nr.117/115/00164
WEEE-Reg.-NR. DE 13101093
Bankverbindung:
Sparkasse Fürstenfeldbruck KTO: 2774594 ; BLZ: 70053070
Swift-Code: BYLADEM1FFB ; IBAN: DE61700530700002774594
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iQIcBAEBAgAGBQJO3PfpAAoJEDy9cKN/1Et0gSwP/33wyuFu6Hz0o8BnSO7QCP5p
QPH/KO9tzIsLh7VgDqGYFpkhInh4JCc+zumSM7OL8JY0NkJv+PVoCs9o3WqtDqdY
k10CV4l1kT0ckfcvsE0E/LTsQAzq53tlc/A8g0NJCRVWUT2ikXE93ixcOh77n/lC
VvcblSU1wvgvmKn9848Ydm31T32wdrI910kLnGH97NVc3K6cpQUtNLRA5adLTBlz
nlxj7eFP2rwkiXpBMHO6HWqvW2LpgFgzHCnpCxVyq0To5l4l2KZuscRs94nRm717
uScjxN7fPHj8WNv/QXlJ5+xQQLL5xfXzJd0UMNSx3yIY3ObgBbjA9j6eme3QLvKG
Yz6jDzRbCCO0n4YfFxYnrcAsZawjHx4WqjmqV9vpYrEXDEmkaj3LSMt9dYfjWiZX
PBfUs+Al+2NjO7lqq7nWMevmOlX+GBkQPJeH9Ov3NT8xAlqDmEEE8EzD5NXdAdDw
BSATVJkTh5OVsU5S13Wlf98N6mcV904lmRDi9jEPUITL1ygiVFiqBMakIF62Ozgc
flF83MR9f+NxLC0oeqVEYgMddwUK2O3wj5YrT9EsWt6mwJ2kzFfSugo4cf+IGCml
6MZDX5OoeIB1jWe7MS7jONKXmz2dWU4g1tB8DHc6XSRZKXkrKm7hzrOSF9sIK6hJ
i76D1gt+BH5/zFAHY4Fd
=ytEh
-----END PGP SIGNATURE-----