Search Linux Wireless

Re: [PATCH v2] zd1211rw: Set hardware BSSID and set hardware IBSS mode

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Gábor Stefanik a écrit :
On Mon, Feb 15, 2010 at 8:33 AM, Benoit Papillault
<benoit.papillault@xxxxxxx> wrote:
Both changes allow for proper TSF synchronisation in STA and IBSS mode.

v2: Fix error handling logic

Signed-off-by: Benoit Papillault <benoit.papillault@xxxxxxx>
---
 drivers/net/wireless/zd1211rw/zd_chip.c |   21 ++++++++++++++++++++-
 drivers/net/wireless/zd1211rw/zd_chip.h |    1 +
 drivers/net/wireless/zd1211rw/zd_mac.c  |    8 +++++---
 3 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wireless/zd1211rw/zd_chip.c b/drivers/net/wireless/zd1211rw/zd_chip.c
index 7ca95c4..f525459 100644
--- a/drivers/net/wireless/zd1211rw/zd_chip.c
+++ b/drivers/net/wireless/zd1211rw/zd_chip.c
@@ -397,6 +397,25 @@ int zd_write_mac_addr(struct zd_chip *chip, const u8 *mac_addr)
       return r;
 }

+int zd_write_bssid(struct zd_chip *chip, const u8 *bssid)
+{
+       struct zd_ioreq32 ioreqs[] = {
+               { CR_BSSID_P1, 0 },
+               { CR_BSSID_P2, 0 }
+       };
+
+       if (bssid) {
+               ioreqs[0].value = (bssid[3] << 24)
+                               | (bssid[2] << 16)
+                               | (bssid[1] <<  8)
+                               |  bssid[0];
+               ioreqs[1].value = (bssid[5] <<  8)
+                               |  bssid[4];
+       }
+
+       return zd_iowrite32a(chip, ioreqs, ARRAY_SIZE(ioreqs));
+}
+
 int zd_read_regdomain(struct zd_chip *chip, u8 *regdomain)
 {
       int r;
@@ -806,7 +825,7 @@ static int hw_init_hmac(struct zd_chip *chip)
               { CR_AFTER_PNP,                 0x1 },
               { CR_WEP_PROTECT,               0x114 },
               { CR_IFS_VALUE,                 IFS_VALUE_DEFAULT },
-               { CR_CAM_MODE,                  MODE_AP_WDS},
+               { CR_CAM_MODE,                  MODE_IBSS},
       };

       ZD_ASSERT(mutex_is_locked(&chip->mutex));
diff --git a/drivers/net/wireless/zd1211rw/zd_chip.h b/drivers/net/wireless/zd1211rw/zd_chip.h
index f8bbf7d..7b0c58c 100644
--- a/drivers/net/wireless/zd1211rw/zd_chip.h
+++ b/drivers/net/wireless/zd1211rw/zd_chip.h
@@ -881,6 +881,7 @@ static inline u8 _zd_chip_get_channel(struct zd_chip *chip)
 u8  zd_chip_get_channel(struct zd_chip *chip);
 int zd_read_regdomain(struct zd_chip *chip, u8 *regdomain);
 int zd_write_mac_addr(struct zd_chip *chip, const u8 *mac_addr);
+int zd_write_bssid(struct zd_chip *chip, const u8 *bssid);
 int zd_chip_switch_radio_on(struct zd_chip *chip);
 int zd_chip_switch_radio_off(struct zd_chip *chip);
 int zd_chip_enable_int(struct zd_chip *chip);
diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c
index 9cb6cbc..0de176b 100644
--- a/drivers/net/wireless/zd1211rw/zd_mac.c
+++ b/drivers/net/wireless/zd1211rw/zd_mac.c
@@ -913,13 +913,13 @@ static int zd_op_config(struct ieee80211_hw *hw, u32 changed)
                */
               u32 cr_sniffer = !!(conf->flags & IEEE80211_CONF_MONITOR);
               ret = zd_iowrite32(&mac->chip, CR_SNIFFER_ON, cr_sniffer);
-               if (!ret)
+               if (ret)
                       return ret;
       }


Crosstalk from your other patch?

Oops .. I did something wrong with git rebase I guess. Will resent.

Regards,
Benoit

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux