* [PATCH 2/3] d80211: Split antenna selection into TX and RX antenna @ 2007-02-21 16:02 Ivo van Doorn 2007-02-21 16:37 ` Michael Buesch 0 siblings, 1 reply; 9+ messages in thread From: Ivo van Doorn @ 2007-02-21 16:02 UTC (permalink / raw) To: Jiri Benc, John W. Linville, Michael Buesch; +Cc: linux-wireless Let broadcom use the antenna_tx field for hardware configuration. I did not check if the device is also capable of RX antenna selection, but current implementation only suggested support for the TX antenna. Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> --- diff --git a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c index cdce227..580ea33 100644 --- a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c +++ b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c @@ -2609,7 +2609,7 @@ static int bcm43xx_dev_config(struct ieee80211_hw *hw, int antenna = -1; int err = 0; - switch (conf->antenna_sel) { + switch (conf->antenna_sel_tx) { case 0: /* default/diversity */ antenna = BCM43xx_ANTENNA_DEFAULT; break; diff --git a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c index 71cba92..cfc84cd 100644 --- a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c +++ b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c @@ -281,7 +281,7 @@ static void generate_txhdr_fw4(struct bcm43xx_wldev *dev, phy_ctl |= BCM43xx_TX4_PHY_OFDM; if (dev->short_preamble) phy_ctl |= BCM43xx_TX4_PHY_SHORTPRMBL; - switch (txctl->antenna_sel) { + switch (txctl->antenna_sel_tx) { case 0: phy_ctl |= BCM43xx_TX4_PHY_ANTLAST; break; ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] d80211: Split antenna selection into TX and RX antenna 2007-02-21 16:02 [PATCH 2/3] d80211: Split antenna selection into TX and RX antenna Ivo van Doorn @ 2007-02-21 16:37 ` Michael Buesch 2007-02-21 16:44 ` Ivo van Doorn 0 siblings, 1 reply; 9+ messages in thread From: Michael Buesch @ 2007-02-21 16:37 UTC (permalink / raw) To: Ivo van Doorn; +Cc: Jiri Benc, John W. Linville, linux-wireless On Wednesday 21 February 2007 17:02, Ivo van Doorn wrote: > Let broadcom use the antenna_tx field for hardware configuration. > I did not check if the device is also capable of RX antenna selection, > but current implementation only suggested support for the TX antenna. > > Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> > > --- > > diff --git a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c > index cdce227..580ea33 100644 > --- a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c > +++ b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c > @@ -2609,7 +2609,7 @@ static int bcm43xx_dev_config(struct ieee80211_hw *hw, > int antenna = -1; > int err = 0; > > - switch (conf->antenna_sel) { > + switch (conf->antenna_sel_tx) { Nope, this is conf->antenna_sel_rx ;) -- Greetings Michael. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] d80211: Split antenna selection into TX and RX antenna 2007-02-21 16:37 ` Michael Buesch @ 2007-02-21 16:44 ` Ivo van Doorn 2007-02-21 16:51 ` Michael Buesch 0 siblings, 1 reply; 9+ messages in thread From: Ivo van Doorn @ 2007-02-21 16:44 UTC (permalink / raw) To: Michael Buesch; +Cc: Jiri Benc, John W. Linville, linux-wireless On Wednesday 21 February 2007 17:37, Michael Buesch wrote: > On Wednesday 21 February 2007 17:02, Ivo van Doorn wrote: > > Let broadcom use the antenna_tx field for hardware configuration. > > I did not check if the device is also capable of RX antenna selection, > > but current implementation only suggested support for the TX antenna. > > > > Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> > > > > --- > > > > diff --git a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c > > index cdce227..580ea33 100644 > > --- a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c > > +++ b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c > > @@ -2609,7 +2609,7 @@ static int bcm43xx_dev_config(struct ieee80211_hw *hw, > > int antenna = -1; > > int err = 0; > > > > - switch (conf->antenna_sel) { > > + switch (conf->antenna_sel_tx) { > > Nope, this is conf->antenna_sel_rx > ;) On further inspection not even that. :P The outcome of that switch is stored in the antenna variable, which is used with bcm43xx_mgmtframe_txantenna(dev, antenna); bcm43xx_set_rx_antenna(dev, antenna); So I guess that needs to be fixed to create a switch statement for the RX antenna and one for the TX antenna? Ivo ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] d80211: Split antenna selection into TX and RX antenna 2007-02-21 16:44 ` Ivo van Doorn @ 2007-02-21 16:51 ` Michael Buesch 2007-02-21 16:52 ` Ivo van Doorn 2007-02-21 17:06 ` Ivo van Doorn 0 siblings, 2 replies; 9+ messages in thread From: Michael Buesch @ 2007-02-21 16:51 UTC (permalink / raw) To: Ivo van Doorn; +Cc: Jiri Benc, John W. Linville, linux-wireless On Wednesday 21 February 2007 17:44, Ivo van Doorn wrote: > On Wednesday 21 February 2007 17:37, Michael Buesch wrote: > > On Wednesday 21 February 2007 17:02, Ivo van Doorn wrote: > > > Let broadcom use the antenna_tx field for hardware configuration. > > > I did not check if the device is also capable of RX antenna selection, > > > but current implementation only suggested support for the TX antenna. > > > > > > Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> > > > > > > --- > > > > > > diff --git a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c > > > index cdce227..580ea33 100644 > > > --- a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c > > > +++ b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c > > > @@ -2609,7 +2609,7 @@ static int bcm43xx_dev_config(struct ieee80211_hw *hw, > > > int antenna = -1; > > > int err = 0; > > > > > > - switch (conf->antenna_sel) { > > > + switch (conf->antenna_sel_tx) { > > > > Nope, this is conf->antenna_sel_rx > > ;) > > On further inspection not even that. :P > The outcome of that switch is stored in the antenna variable, which is used with > > bcm43xx_mgmtframe_txantenna(dev, antenna); > bcm43xx_set_rx_antenna(dev, antenna); > > So I guess that needs to be fixed to create a switch statement for > the RX antenna and one for the TX antenna? Ah, yeah. I didn't have the complete code for this in my head. :) I'd rather like to have a helper function int bcm43xx_antenna_from_ieee80211(u8 antenna) which includes the switch statement and use it twice in the config callback. Wanna do that? -- Greetings Michael. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] d80211: Split antenna selection into TX and RX antenna 2007-02-21 16:51 ` Michael Buesch @ 2007-02-21 16:52 ` Ivo van Doorn 2007-02-21 17:06 ` Ivo van Doorn 1 sibling, 0 replies; 9+ messages in thread From: Ivo van Doorn @ 2007-02-21 16:52 UTC (permalink / raw) To: Michael Buesch; +Cc: Jiri Benc, John W. Linville, linux-wireless > > On further inspection not even that. :P > > The outcome of that switch is stored in the antenna variable, which is used with > > > > bcm43xx_mgmtframe_txantenna(dev, antenna); > > bcm43xx_set_rx_antenna(dev, antenna); > > > > So I guess that needs to be fixed to create a switch statement for > > the RX antenna and one for the TX antenna? > > Ah, yeah. I didn't have the complete code for this in my head. :) > > I'd rather like to have a helper function > int bcm43xx_antenna_from_ieee80211(u8 antenna) > which includes the switch statement and use it twice in the > config callback. Wanna do that? No problem, I will resend this patch with that helper function added. Ivo ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] d80211: Split antenna selection into TX and RX antenna 2007-02-21 16:51 ` Michael Buesch 2007-02-21 16:52 ` Ivo van Doorn @ 2007-02-21 17:06 ` Ivo van Doorn 2007-02-21 17:19 ` Michael Buesch 1 sibling, 1 reply; 9+ messages in thread From: Ivo van Doorn @ 2007-02-21 17:06 UTC (permalink / raw) To: Michael Buesch; +Cc: Jiri Benc, John W. Linville, linux-wireless > > > Nope, this is conf->antenna_sel_rx > > > ;) > > > > On further inspection not even that. :P > > The outcome of that switch is stored in the antenna variable, which is used with > > > > bcm43xx_mgmtframe_txantenna(dev, antenna); > > bcm43xx_set_rx_antenna(dev, antenna); > > > > So I guess that needs to be fixed to create a switch statement for > > the RX antenna and one for the TX antenna? > > Ah, yeah. I didn't have the complete code for this in my head. :) > > I'd rather like to have a helper function > int bcm43xx_antenna_from_ieee80211(u8 antenna) > which includes the switch statement and use it twice in the > config callback. Wanna do that? Fixed. This will make the bcm43xx driver make use of both RX and TX antenna selection capabilities. Signed-off-by: Ivo van Doorn<IvDoorn@gmail.com> --- diff --git a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c index cdce227..1256549 100644 --- a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c +++ b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c @@ -2606,22 +2606,12 @@ static int bcm43xx_dev_config(struct ieee80211_hw *hw, struct bcm43xx_phy *phy; unsigned long flags; unsigned int new_phymode = 0xFFFF; - int antenna = -1; + int antenna_tx; + int antenna_rx; int err = 0; - switch (conf->antenna_sel) { - case 0: /* default/diversity */ - antenna = BCM43xx_ANTENNA_DEFAULT; - break; - case 1: /* Antenna 0 */ - antenna = BCM43xx_ANTENNA0; - break; - case 2: /* Antenna 1 */ - antenna = BCM43xx_ANTENNA1; - break; - default: - assert(0); - } + antenna_tx = bcm43xx_antenna_from_ieee80211(conf->antenna_sel_tx); + antenna_rx = bcm43xx_antenna_from_ieee80211(conf->antenna_sel_rx); mutex_lock(&wl->mutex); @@ -2682,8 +2672,8 @@ static int bcm43xx_dev_config(struct ieee80211_hw *hw, } /* Antennas for RX and management frame TX. */ - bcm43xx_mgmtframe_txantenna(dev, antenna); - bcm43xx_set_rx_antenna(dev, antenna); + bcm43xx_mgmtframe_txantenna(dev, antenna_tx); + bcm43xx_set_rx_antenna(dev, antenna_rx); /* Update templates for AP mode. */ if (bcm43xx_is_mode(wl, IEEE80211_IF_TYPE_AP)) diff --git a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.h b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.h index e56efc1..bba6606 100644 --- a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.h +++ b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.h @@ -110,6 +110,22 @@ int bcm43xx_is_ofdm_rate(int rate) } static inline +int bcm43xx_antenna_from_ieee80211(u8 antenna) +{ + switch (antenna) { + case 0: /* default/diversity */ + return BCM43xx_ANTENNA_DEFAULT; + case 1: /* Antenna 0 */ + return BCM43xx_ANTENNA0; + case 2: /* Antenna 1 */ + return BCM43xx_ANTENNA1; + default: + assert(0); + return -EINVAL; + } +} + +static inline int bcm43xx_is_hw_radio_enabled(struct bcm43xx_wldev *dev) { /* function to return state of hardware enable of radio diff --git a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c index 71cba92..cfc84cd 100644 --- a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c +++ b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c @@ -281,7 +281,7 @@ static void generate_txhdr_fw4(struct bcm43xx_wldev *dev, phy_ctl |= BCM43xx_TX4_PHY_OFDM; if (dev->short_preamble) phy_ctl |= BCM43xx_TX4_PHY_SHORTPRMBL; - switch (txctl->antenna_sel) { + switch (txctl->antenna_sel_tx) { case 0: phy_ctl |= BCM43xx_TX4_PHY_ANTLAST; break; ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] d80211: Split antenna selection into TX and RX antenna 2007-02-21 17:06 ` Ivo van Doorn @ 2007-02-21 17:19 ` Michael Buesch 2007-02-21 17:24 ` Ivo van Doorn 0 siblings, 1 reply; 9+ messages in thread From: Michael Buesch @ 2007-02-21 17:19 UTC (permalink / raw) To: Ivo van Doorn; +Cc: Jiri Benc, John W. Linville, linux-wireless On Wednesday 21 February 2007 18:06, Ivo van Doorn wrote: > diff --git a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c > index cdce227..1256549 100644 > --- a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c > +++ b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c > @@ -2606,22 +2606,12 @@ static int bcm43xx_dev_config(struct ieee80211_hw *hw, > struct bcm43xx_phy *phy; > unsigned long flags; > unsigned int new_phymode = 0xFFFF; > - int antenna = -1; > + int antenna_tx; > + int antenna_rx; > int err = 0; > > - switch (conf->antenna_sel) { > - case 0: /* default/diversity */ > - antenna = BCM43xx_ANTENNA_DEFAULT; > - break; > - case 1: /* Antenna 0 */ > - antenna = BCM43xx_ANTENNA0; > - break; > - case 2: /* Antenna 1 */ > - antenna = BCM43xx_ANTENNA1; > - break; > - default: > - assert(0); > - } > + antenna_tx = bcm43xx_antenna_from_ieee80211(conf->antenna_sel_tx); > + antenna_rx = bcm43xx_antenna_from_ieee80211(conf->antenna_sel_rx); > > mutex_lock(&wl->mutex); > > @@ -2682,8 +2672,8 @@ static int bcm43xx_dev_config(struct ieee80211_hw *hw, > } > > /* Antennas for RX and management frame TX. */ > - bcm43xx_mgmtframe_txantenna(dev, antenna); > - bcm43xx_set_rx_antenna(dev, antenna); > + bcm43xx_mgmtframe_txantenna(dev, antenna_tx); > + bcm43xx_set_rx_antenna(dev, antenna_rx); > > /* Update templates for AP mode. */ > if (bcm43xx_is_mode(wl, IEEE80211_IF_TYPE_AP)) > diff --git a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.h b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.h > index e56efc1..bba6606 100644 > --- a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.h > +++ b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.h > @@ -110,6 +110,22 @@ int bcm43xx_is_ofdm_rate(int rate) > } > > static inline > +int bcm43xx_antenna_from_ieee80211(u8 antenna) > +{ > + switch (antenna) { > + case 0: /* default/diversity */ > + return BCM43xx_ANTENNA_DEFAULT; > + case 1: /* Antenna 0 */ > + return BCM43xx_ANTENNA0; > + case 2: /* Antenna 1 */ > + return BCM43xx_ANTENNA1; > + default: > + assert(0); > + return -EINVAL; > + } > +} No, there is no need to inline. Simple static in main.c above the config callback, please. :) And simply return BCM43xx_ANTENNA_DEFAULT for the default: case, so it doesn't break immediately, if someone decides to add something to d80211. ...But we've almost got it :D After that you'll get my sign-off. -- Greetings Michael. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] d80211: Split antenna selection into TX and RX antenna 2007-02-21 17:19 ` Michael Buesch @ 2007-02-21 17:24 ` Ivo van Doorn 2007-02-21 17:32 ` Michael Buesch 0 siblings, 1 reply; 9+ messages in thread From: Ivo van Doorn @ 2007-02-21 17:24 UTC (permalink / raw) To: Michael Buesch; +Cc: Jiri Benc, John W. Linville, linux-wireless > No, there is no need to inline. Simple static in main.c above > the config callback, please. :) > And simply return BCM43xx_ANTENNA_DEFAULT for the default: > case, so it doesn't break immediately, if someone decides > to add something to d80211. > > ...But we've almost got it :D > After that you'll get my sign-off. bcm43xx_antenna_from_ieee80211 is no longer inlined, and it returns BCM43xx_ANTENNA_DEFAULT by default. Hopefully I got it this time. :) Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> --- diff --git a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c index cdce227..798427f 100644 --- a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c +++ b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c @@ -2598,6 +2598,20 @@ static int bcm43xx_switch_phymode(struct bcm43xx_wl *wl, return 0; } +static int bcm43xx_antenna_from_ieee80211(u8 antenna) +{ + switch (antenna) { + case 0: /* default/diversity */ + return BCM43xx_ANTENNA_DEFAULT; + case 1: /* Antenna 0 */ + return BCM43xx_ANTENNA0; + case 2: /* Antenna 1 */ + return BCM43xx_ANTENNA1; + default: + return BCM43xx_ANTENNA_DEFAULT; + } +} + static int bcm43xx_dev_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf) { @@ -2606,22 +2620,12 @@ static int bcm43xx_dev_config(struct ieee80211_hw *hw, struct bcm43xx_phy *phy; unsigned long flags; unsigned int new_phymode = 0xFFFF; - int antenna = -1; + int antenna_tx; + int antenna_rx; int err = 0; - switch (conf->antenna_sel) { - case 0: /* default/diversity */ - antenna = BCM43xx_ANTENNA_DEFAULT; - break; - case 1: /* Antenna 0 */ - antenna = BCM43xx_ANTENNA0; - break; - case 2: /* Antenna 1 */ - antenna = BCM43xx_ANTENNA1; - break; - default: - assert(0); - } + antenna_tx = bcm43xx_antenna_from_ieee80211(conf->antenna_sel_tx); + antenna_rx = bcm43xx_antenna_from_ieee80211(conf->antenna_sel_rx); mutex_lock(&wl->mutex); @@ -2682,8 +2686,8 @@ static int bcm43xx_dev_config(struct ieee80211_hw *hw, } /* Antennas for RX and management frame TX. */ - bcm43xx_mgmtframe_txantenna(dev, antenna); - bcm43xx_set_rx_antenna(dev, antenna); + bcm43xx_mgmtframe_txantenna(dev, antenna_tx); + bcm43xx_set_rx_antenna(dev, antenna_rx); /* Update templates for AP mode. */ if (bcm43xx_is_mode(wl, IEEE80211_IF_TYPE_AP)) diff --git a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c index 71cba92..cfc84cd 100644 --- a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c +++ b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c @@ -281,7 +281,7 @@ static void generate_txhdr_fw4(struct bcm43xx_wldev *dev, phy_ctl |= BCM43xx_TX4_PHY_OFDM; if (dev->short_preamble) phy_ctl |= BCM43xx_TX4_PHY_SHORTPRMBL; - switch (txctl->antenna_sel) { + switch (txctl->antenna_sel_tx) { case 0: phy_ctl |= BCM43xx_TX4_PHY_ANTLAST; break; ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] d80211: Split antenna selection into TX and RX antenna 2007-02-21 17:24 ` Ivo van Doorn @ 2007-02-21 17:32 ` Michael Buesch 0 siblings, 0 replies; 9+ messages in thread From: Michael Buesch @ 2007-02-21 17:32 UTC (permalink / raw) To: Ivo van Doorn; +Cc: Jiri Benc, John W. Linville, linux-wireless On Wednesday 21 February 2007 18:24, Ivo van Doorn wrote: > > No, there is no need to inline. Simple static in main.c above > > the config callback, please. :) > > And simply return BCM43xx_ANTENNA_DEFAULT for the default: > > case, so it doesn't break immediately, if someone decides > > to add something to d80211. > > > > ...But we've almost got it :D > > After that you'll get my sign-off. > > bcm43xx_antenna_from_ieee80211 is no longer inlined, > and it returns BCM43xx_ANTENNA_DEFAULT by default. > > Hopefully I got it this time. :) Yeah, *clap clap clap* :D > Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: Michael Buesch <mb@bu3sch.de> > --- > > diff --git a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c > index cdce227..798427f 100644 > --- a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c > +++ b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c > @@ -2598,6 +2598,20 @@ static int bcm43xx_switch_phymode(struct bcm43xx_wl *wl, > return 0; > } > > +static int bcm43xx_antenna_from_ieee80211(u8 antenna) > +{ > + switch (antenna) { > + case 0: /* default/diversity */ > + return BCM43xx_ANTENNA_DEFAULT; > + case 1: /* Antenna 0 */ > + return BCM43xx_ANTENNA0; > + case 2: /* Antenna 1 */ > + return BCM43xx_ANTENNA1; > + default: > + return BCM43xx_ANTENNA_DEFAULT; > + } > +} > + > static int bcm43xx_dev_config(struct ieee80211_hw *hw, > struct ieee80211_conf *conf) > { > @@ -2606,22 +2620,12 @@ static int bcm43xx_dev_config(struct ieee80211_hw *hw, > struct bcm43xx_phy *phy; > unsigned long flags; > unsigned int new_phymode = 0xFFFF; > - int antenna = -1; > + int antenna_tx; > + int antenna_rx; > int err = 0; > > - switch (conf->antenna_sel) { > - case 0: /* default/diversity */ > - antenna = BCM43xx_ANTENNA_DEFAULT; > - break; > - case 1: /* Antenna 0 */ > - antenna = BCM43xx_ANTENNA0; > - break; > - case 2: /* Antenna 1 */ > - antenna = BCM43xx_ANTENNA1; > - break; > - default: > - assert(0); > - } > + antenna_tx = bcm43xx_antenna_from_ieee80211(conf->antenna_sel_tx); > + antenna_rx = bcm43xx_antenna_from_ieee80211(conf->antenna_sel_rx); > > mutex_lock(&wl->mutex); > > @@ -2682,8 +2686,8 @@ static int bcm43xx_dev_config(struct ieee80211_hw *hw, > } > > /* Antennas for RX and management frame TX. */ > - bcm43xx_mgmtframe_txantenna(dev, antenna); > - bcm43xx_set_rx_antenna(dev, antenna); > + bcm43xx_mgmtframe_txantenna(dev, antenna_tx); > + bcm43xx_set_rx_antenna(dev, antenna_rx); > > /* Update templates for AP mode. */ > if (bcm43xx_is_mode(wl, IEEE80211_IF_TYPE_AP)) > diff --git a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c > index 71cba92..cfc84cd 100644 > --- a/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c > +++ b/drivers/net/wireless/d80211/bcm43xx/bcm43xx_xmit.c > @@ -281,7 +281,7 @@ static void generate_txhdr_fw4(struct bcm43xx_wldev *dev, > phy_ctl |= BCM43xx_TX4_PHY_OFDM; > if (dev->short_preamble) > phy_ctl |= BCM43xx_TX4_PHY_SHORTPRMBL; > - switch (txctl->antenna_sel) { > + switch (txctl->antenna_sel_tx) { > case 0: > phy_ctl |= BCM43xx_TX4_PHY_ANTLAST; > break; > > -- Greetings Michael. ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2007-02-21 17:32 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-02-21 16:02 [PATCH 2/3] d80211: Split antenna selection into TX and RX antenna Ivo van Doorn 2007-02-21 16:37 ` Michael Buesch 2007-02-21 16:44 ` Ivo van Doorn 2007-02-21 16:51 ` Michael Buesch 2007-02-21 16:52 ` Ivo van Doorn 2007-02-21 17:06 ` Ivo van Doorn 2007-02-21 17:19 ` Michael Buesch 2007-02-21 17:24 ` Ivo van Doorn 2007-02-21 17:32 ` Michael Buesch
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.