Signed-off-by: Bruno Randolf <[email protected]>
---
v2: rebased
---
include/linux/nl80211.h | 5 +++++
net/wireless/nl80211.c | 2 ++
2 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
index b8fa25d..63b603c 100644
--- a/include/linux/nl80211.h
+++ b/include/linux/nl80211.h
@@ -841,6 +841,9 @@ enum nl80211_commands {
* the hardware should not be configured to receive on this antenna.
* For a more detailed descripton see @NL80211_ATTR_WIPHY_ANTENNA_TX.
*
+ * @NL80211_ATTR_WIPHY_ANTENNA_AVAIL: Bitmap of antennas which are available for
+ * configuration via the above parameters.
+ *
* @NL80211_ATTR_MCAST_RATE: Multicast tx rate (in 100 kbps) for IBSS
*
* @NL80211_ATTR_OFFCHANNEL_TX_OK: For management frame TX, the frame may be
@@ -1035,6 +1038,8 @@ enum nl80211_attrs {
NL80211_ATTR_KEY_DEFAULT_TYPES,
+ NL80211_ATTR_WIPHY_ANTENNA_AVAIL,
+
/* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST,
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 53f0443..87eae15 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -613,6 +613,8 @@ static int nl80211_send_wiphy(struct sk_buff *msg, u32 pid, u32 seq, int flags,
NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_ANTENNA_TX, tx_ant);
NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_ANTENNA_RX, rx_ant);
}
+ NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_ANTENNA_AVAIL,
+ dev->wiphy.available_antennas);
}
nl_modes = nla_nest_start(msg, NL80211_ATTR_SUPPORTED_IFTYPES);
On Tue December 14 2010 12:11:52 Daniel Halperin wrote:
> Several of the Intel ones, I believe. For instance 4965 can RX with 3
> antennas but can maybe only TX with A and B? Intel also has a 1x2
> (5100 maybe?) chipset.
A lot of maybees ;) Can anyone else comment? Do we need available antennas
separately for RX and TX?
bruno
> On Mon, Dec 13, 2010 at 6:31 PM, Bruno Randolf <[email protected]> wrote:
> > On Tue December 14 2010 11:23:09 Daniel Halperin wrote:
> >> > diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
> >> > index b8fa25d..63b603c 100644
> >> > --- a/include/linux/nl80211.h
> >> > +++ b/include/linux/nl80211.h
> >> > @@ -841,6 +841,9 @@ enum nl80211_commands {
> >> > * the hardware should not be configured to receive on this
> >> > antenna. * For a more detailed descripton see
> >> > @NL80211_ATTR_WIPHY_ANTENNA_TX. *
> >> > + * @NL80211_ATTR_WIPHY_ANTENNA_AVAIL: Bitmap of antennas which are
> >> > available for + * configuration via the above parameters.
> >> > + *
> >>
> >> Not clear exactly what the point of this is -- there's no commit
> >> message -- but should not this API distinguish between TX and RX?
> >> E.g., several chipsets can only TX from a subset of RX antennas.
> >
> > This is just the nl80211 part of a patch that got merged earlier, the
> > description of which has more info:
> >
> > https://patchwork.kernel.org/patch/389682/
> >
> > If it's necessary to distinguish between RX and TX it has to be done
> > there too. Can you give us examples of these chipsets which you
> > mentioned?
> >
> > bruno
On Tue December 14 2010 11:23:09 Daniel Halperin wrote:
> > diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
> > index b8fa25d..63b603c 100644
> > --- a/include/linux/nl80211.h
> > +++ b/include/linux/nl80211.h
> > @@ -841,6 +841,9 @@ enum nl80211_commands {
> > * the hardware should not be configured to receive on this antenna.
> > * For a more detailed descripton see @NL80211_ATTR_WIPHY_ANTENNA_TX.
> > *
> > + * @NL80211_ATTR_WIPHY_ANTENNA_AVAIL: Bitmap of antennas which are
> > available for + * configuration via the above parameters.
> > + *
>
> Not clear exactly what the point of this is -- there's no commit
> message -- but should not this API distinguish between TX and RX?
> E.g., several chipsets can only TX from a subset of RX antennas.
This is just the nl80211 part of a patch that got merged earlier, the
description of which has more info:
https://patchwork.kernel.org/patch/389682/
If it's necessary to distinguish between RX and TX it has to be done there
too. Can you give us examples of these chipsets which you mentioned?
bruno
On Mon, Dec 13, 2010 at 6:20 PM, Bruno Randolf <[email protected]> wrote:
> Signed-off-by: Bruno Randolf <[email protected]>
>
> ---
>
> v2: ? ? rebased
> ---
> ?include/linux/nl80211.h | ? ?5 +++++
> ?net/wireless/nl80211.c ?| ? ?2 ++
> ?2 files changed, 7 insertions(+), 0 deletions(-)
>
> diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
> index b8fa25d..63b603c 100644
> --- a/include/linux/nl80211.h
> +++ b/include/linux/nl80211.h
> @@ -841,6 +841,9 @@ enum nl80211_commands {
> ?* ? ? the hardware should not be configured to receive on this antenna.
> ?* ? ? For a more detailed descripton see @NL80211_ATTR_WIPHY_ANTENNA_TX.
> ?*
> + * @NL80211_ATTR_WIPHY_ANTENNA_AVAIL: Bitmap of antennas which are available for
> + * ? ? configuration via the above parameters.
> + *
Not clear exactly what the point of this is -- there's no commit
message -- but should not this API distinguish between TX and RX?
E.g., several chipsets can only TX from a subset of RX antennas.
Dan
Several of the Intel ones, I believe. For instance 4965 can RX with 3
antennas but can maybe only TX with A and B? Intel also has a 1x2
(5100 maybe?) chipset.
Dan
On Mon, Dec 13, 2010 at 6:31 PM, Bruno Randolf <[email protected]> wrote:
> On Tue December 14 2010 11:23:09 Daniel Halperin wrote:
>> > diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
>> > index b8fa25d..63b603c 100644
>> > --- a/include/linux/nl80211.h
>> > +++ b/include/linux/nl80211.h
>> > @@ -841,6 +841,9 @@ enum nl80211_commands {
>> > ?* ? ? the hardware should not be configured to receive on this antenna.
>> > ?* ? ? For a more detailed descripton see @NL80211_ATTR_WIPHY_ANTENNA_TX.
>> > ?*
>> > + * @NL80211_ATTR_WIPHY_ANTENNA_AVAIL: Bitmap of antennas which are
>> > available for + * ? ? configuration via the above parameters.
>> > + *
>>
>> Not clear exactly what the point of this is -- there's no commit
>> message -- but should not this API distinguish between TX and RX?
>> E.g., several chipsets can only TX from a subset of RX antennas.
>
> This is just the nl80211 part of a patch that got merged earlier, the
> description of which has more info:
>
> https://patchwork.kernel.org/patch/389682/
>
> If it's necessary to distinguish between RX and TX it has to be done there
> too. Can you give us examples of these chipsets which you mentioned?
>
> bruno
>
On Wed, Dec 15, 2010 at 1:53 AM, Bruno Randolf <[email protected]> wrote:
> On Tue December 14 2010 12:11:52 Daniel Halperin wrote:
>> Several of the Intel ones, I believe. ?For instance 4965 can RX with 3
>> antennas but can maybe only TX with A and B? ?Intel also has a 1x2
>> (5100 maybe?) chipset.
>
> A lot of maybees ;) Can anyone else comment? Do we need available antennas
> separately for RX and TX?
>
Sorry, I thought I had given you enough info to figure it out for
yourself. Since you're incapable, here's the exact pointer:
http://git.kernel.org/?p=linux/kernel/git/iwlwifi/iwlwifi-2.6.git;a=blob;f=drivers/net/wireless/iwlwifi/iwl-5000.c;h=79ab0a6b138636781482a24bcc35e7da7e21f133;hb=HEAD#l540
That's one instance, there are many others. Atheros also makes
chipsets like this, and I suspect others do too.
Dan
Signed-off-by: Bruno Randolf <[email protected]>
---
v2: rebased
---
drivers/net/wireless/ath/ath5k/base.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index 4e3b97c..e2a5b45 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -2351,6 +2351,8 @@ ath5k_init_softc(struct ath5k_softc *sc, const struct ath_bus_ops *bus_ops)
BIT(NL80211_IFTYPE_ADHOC) |
BIT(NL80211_IFTYPE_MESH_POINT);
+ hw->wiphy->available_antennas = 0x3; /* both can be configured */
+
hw->extra_tx_headroom = 2;
hw->channel_change_time = 5000;