zd1211rw: Implement get_tsf()
This patch implements get_tsf() of ieee80211_ops in the zd1211rw driver. Signed-off-by: Alina Friedrichsen <x-alina@gmx.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
b3bd89ce95
commit
5fe73197d3
|
@ -1616,3 +1616,24 @@ int zd_chip_set_multicast_hash(struct zd_chip *chip,
|
|||
|
||||
return zd_iowrite32a(chip, ioreqs, ARRAY_SIZE(ioreqs));
|
||||
}
|
||||
|
||||
u64 zd_chip_get_tsf(struct zd_chip *chip)
|
||||
{
|
||||
int r;
|
||||
static const zd_addr_t aw_pt_bi_addr[] =
|
||||
{ CR_TSF_LOW_PART, CR_TSF_HIGH_PART };
|
||||
u32 values[2];
|
||||
u64 tsf;
|
||||
|
||||
mutex_lock(&chip->mutex);
|
||||
r = zd_ioread32v_locked(chip, values, (const zd_addr_t *)aw_pt_bi_addr,
|
||||
ARRAY_SIZE(aw_pt_bi_addr));
|
||||
mutex_unlock(&chip->mutex);
|
||||
if (r)
|
||||
return 0;
|
||||
|
||||
tsf = values[1];
|
||||
tsf = (tsf << 32) | values[0];
|
||||
|
||||
return tsf;
|
||||
}
|
||||
|
|
|
@ -950,4 +950,6 @@ static inline void zd_mc_add_addr(struct zd_mc_hash *hash, u8 *addr)
|
|||
int zd_chip_set_multicast_hash(struct zd_chip *chip,
|
||||
struct zd_mc_hash *hash);
|
||||
|
||||
u64 zd_chip_get_tsf(struct zd_chip *chip);
|
||||
|
||||
#endif /* _ZD_CHIP_H */
|
||||
|
|
|
@ -935,6 +935,12 @@ static void zd_op_bss_info_changed(struct ieee80211_hw *hw,
|
|||
}
|
||||
}
|
||||
|
||||
static u64 zd_op_get_tsf(struct ieee80211_hw *hw)
|
||||
{
|
||||
struct zd_mac *mac = zd_hw_mac(hw);
|
||||
return zd_chip_get_tsf(&mac->chip);
|
||||
}
|
||||
|
||||
static const struct ieee80211_ops zd_ops = {
|
||||
.tx = zd_op_tx,
|
||||
.start = zd_op_start,
|
||||
|
@ -945,6 +951,7 @@ static const struct ieee80211_ops zd_ops = {
|
|||
.config_interface = zd_op_config_interface,
|
||||
.configure_filter = zd_op_configure_filter,
|
||||
.bss_info_changed = zd_op_bss_info_changed,
|
||||
.get_tsf = zd_op_get_tsf,
|
||||
};
|
||||
|
||||
struct ieee80211_hw *zd_mac_alloc_hw(struct usb_interface *intf)
|
||||
|
|
Loading…
Reference in a new issue