Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 032ed34a authored by Malcolm Priestley's avatar Malcolm Priestley Committed by Greg Kroah-Hartman
Browse files

staging: vt6655: CARDbUpdateTSF bss timestamp correct tsf counter value.



The TSF counter is not set correctly.

Use sync_tsf for last beacon value and get tsf local value.

Remove qwLocalTSF variable and call CARDbGetCurrentTSF.

Signed-off-by: default avatarMalcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent d65d2b25
Loading
Loading
Loading
Loading
+7 −3
Original line number Original line Diff line number Diff line
@@ -362,12 +362,16 @@ bool CARDbSetPhyParameter(struct vnt_private *pDevice, u8 bb_type)
 * Return Value: none
 * Return Value: none
 */
 */
bool CARDbUpdateTSF(struct vnt_private *pDevice, unsigned char byRxRate,
bool CARDbUpdateTSF(struct vnt_private *pDevice, unsigned char byRxRate,
		    u64 qwBSSTimestamp, u64 qwLocalTSF)
		    u64 qwBSSTimestamp)
{
{
	u64 local_tsf;
	u64 qwTSFOffset = 0;
	u64 qwTSFOffset = 0;


	if (qwBSSTimestamp != qwLocalTSF) {
	CARDbGetCurrentTSF(pDevice, &local_tsf);
		qwTSFOffset = CARDqGetTSFOffset(byRxRate, qwBSSTimestamp, qwLocalTSF);

	if (qwBSSTimestamp != local_tsf) {
		qwTSFOffset = CARDqGetTSFOffset(byRxRate, qwBSSTimestamp,
						local_tsf);
		/* adjust TSF, HW's TSF add TSF Offset reg */
		/* adjust TSF, HW's TSF add TSF Offset reg */
		VNSvOutPortD(pDevice->PortOffset + MAC_REG_TSFOFST, (u32)qwTSFOffset);
		VNSvOutPortD(pDevice->PortOffset + MAC_REG_TSFOFST, (u32)qwTSFOffset);
		VNSvOutPortD(pDevice->PortOffset + MAC_REG_TSFOFST + 4, (u32)(qwTSFOffset >> 32));
		VNSvOutPortD(pDevice->PortOffset + MAC_REG_TSFOFST + 4, (u32)(qwTSFOffset >> 32));
+1 −1
Original line number Original line Diff line number Diff line
@@ -83,7 +83,7 @@ bool CARDbRadioPowerOff(struct vnt_private *);
bool CARDbRadioPowerOn(struct vnt_private *);
bool CARDbRadioPowerOn(struct vnt_private *);
bool CARDbSetPhyParameter(struct vnt_private *, u8);
bool CARDbSetPhyParameter(struct vnt_private *, u8);
bool CARDbUpdateTSF(struct vnt_private *, unsigned char byRxRate,
bool CARDbUpdateTSF(struct vnt_private *, unsigned char byRxRate,
		    u64 qwBSSTimestamp, u64 qwLocalTSF);
		    u64 qwBSSTimestamp);
bool CARDbSetBeaconPeriod(struct vnt_private *, unsigned short wBeaconInterval);
bool CARDbSetBeaconPeriod(struct vnt_private *, unsigned short wBeaconInterval);


#endif /* __CARD_H__ */
#endif /* __CARD_H__ */
+1 −1
Original line number Original line Diff line number Diff line
@@ -1478,7 +1478,7 @@ static void vnt_bss_info_changed(struct ieee80211_hw *hw,
	if (changed & BSS_CHANGED_ASSOC && priv->op_mode != NL80211_IFTYPE_AP) {
	if (changed & BSS_CHANGED_ASSOC && priv->op_mode != NL80211_IFTYPE_AP) {
		if (conf->assoc) {
		if (conf->assoc) {
			CARDbUpdateTSF(priv, conf->beacon_rate->hw_value,
			CARDbUpdateTSF(priv, conf->beacon_rate->hw_value,
				       conf->sync_device_ts, conf->sync_tsf);
				       conf->sync_tsf);


			CARDbSetBeaconPeriod(priv, conf->beacon_int);
			CARDbSetBeaconPeriod(priv, conf->beacon_int);