rt2x00: Fix TSF_SYNC selection
PATCH 21/28 rt2x00: Fix TSF_SYNC selection
Rename TSF_SYNC_MODE to TSF_SYNC. Also set the value correctly to allow master mode functionality.
Signed-off-by Ivo van Doorn <[email protected]>
---
drivers/net/wireless/mac80211/rt2x00/rt2400pci.c +6 -11
@@ -411,20 +411,15 @@ static void rt2400pci_config_type(struct rt2x00_dev *rt2x00dev, int type)rt2x00_set_field32 (®,CSR14_TBCN ,1 ); } -if (type ==IEEE80211_IF_TYPE_IBSS ) { +rt2x00_set_field32 (®,CSR14_BEACON_GEN ,0 ); +if (type ==IEEE80211_IF_TYPE_IBSS || type ==IEEE80211_IF_TYPE_AP )rt2x00_set_field32 (®,CSR14_TSF_SYNC ,2 ); -rt2x00_set_field32 (®,CSR14_BEACON_GEN ,1 ); - }else if (type ==IEEE80211_IF_TYPE_STA ) { +else if (type ==IEEE80211_IF_TYPE_STA )rt2x00_set_field32 (®,CSR14_TSF_SYNC ,1 ); -rt2x00_set_field32 (®,CSR14_BEACON_GEN ,0 ); - }else if (type ==IEEE80211_IF_TYPE_AP ) { +else if (GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED_MONITOR ) && + !GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED ))rt2x00_set_field32 (®,CSR14_TSF_SYNC ,0 ); -rt2x00_set_field32 (®,CSR14_BEACON_GEN ,1 ); - }else if (GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED_MONITOR ) && - !GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED )) { -rt2x00_set_field32 (®,CSR14_TSF_SYNC ,0 ); -rt2x00_set_field32 (®,CSR14_BEACON_GEN ,0 ); - } +rt2x00_register_write (rt2x00dev,CSR14 , reg);/*
drivers/net/wireless/mac80211/rt2x00/rt2400pci.h +1 -1
@@ -191,7 +191,7 @@/* * CSR14: Synchronization control register. * TSF_COUNT: Enable tsf auto counting. -* TSF_SYNC: Tsf sync, 0: disable, 1: infra, 2: ad-hoc mode. +* TSF_SYNC: Tsf sync, 0: disable, 1: infra, 2: ad-hoc/master mode. * TBCN: Enable tbcn with reload value. * TCFP: Enable tcfp & cfp / cp switching. * TATIMW: Enable tatimw & atim window switching.
drivers/net/wireless/mac80211/rt2x00/rt2500pci.c +6 -11
@@ -416,20 +416,15 @@ static void rt2500pci_config_type(struct rt2x00_dev *rt2x00dev, int type)rt2x00_set_field32 (®,CSR14_TBCN ,1 ); } -if (type ==IEEE80211_IF_TYPE_IBSS ) { +rt2x00_set_field32 (®,CSR14_BEACON_GEN ,0 ); +if (type ==IEEE80211_IF_TYPE_IBSS || type ==IEEE80211_IF_TYPE_AP )rt2x00_set_field32 (®,CSR14_TSF_SYNC ,2 ); -rt2x00_set_field32 (®,CSR14_BEACON_GEN ,1 ); - }else if (type ==IEEE80211_IF_TYPE_STA ) { +else if (type ==IEEE80211_IF_TYPE_STA )rt2x00_set_field32 (®,CSR14_TSF_SYNC ,1 ); -rt2x00_set_field32 (®,CSR14_BEACON_GEN ,0 ); - }else if (type ==IEEE80211_IF_TYPE_AP ) { +else if (GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED_MONITOR ) && + !GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED ))rt2x00_set_field32 (®,CSR14_TSF_SYNC ,0 ); -rt2x00_set_field32 (®,CSR14_BEACON_GEN ,1 ); - }else if (GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED_MONITOR ) && - !GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED )) { -rt2x00_set_field32 (®,CSR14_TSF_SYNC ,0 ); -rt2x00_set_field32 (®,CSR14_BEACON_GEN ,0 ); - } +rt2x00_register_write (rt2x00dev,CSR14 , reg);/*
drivers/net/wireless/mac80211/rt2x00/rt2500pci.h +1 -1
@@ -268,7 +268,7 @@/* * CSR14: Synchronization control register. * TSF_COUNT: Enable tsf auto counting. -* TSF_SYNC: Tsf sync, 0: disable, 1: infra, 2: ad-hoc mode. +* TSF_SYNC: Tsf sync, 0: disable, 1: infra, 2: ad-hoc/master mode. * TBCN: Enable tbcn with reload value. * TCFP: Enable tcfp & cfp / cp switching. * TATIMW: Enable tatimw & atim window switching.
drivers/net/wireless/mac80211/rt2x00/rt2500usb.c +5 -20
@@ -443,30 +443,15 @@ static void rt2500usb_config_type(struct rt2x00_dev *rt2x00dev, int type)rt2x00_set_field16 (®,TXRX_CSR19_TBCN ,1 ); } -if (type ==IEEE80211_IF_TYPE_IBSS ) { +rt2x00_set_field16 (®,TXRX_CSR19_BEACON_GEN ,0 ); +if (type ==IEEE80211_IF_TYPE_IBSS || type ==IEEE80211_IF_TYPE_AP )rt2x00_set_field16 (®,TXRX_CSR19_TSF_SYNC ,2 ); -rt2x00_set_field16 (®,TXRX_CSR19_BEACON_GEN ,1 ); - }else if (type ==IEEE80211_IF_TYPE_STA ) { +else if (type ==IEEE80211_IF_TYPE_STA )rt2x00_set_field16 (®,TXRX_CSR19_TSF_SYNC ,1 ); -rt2x00_set_field16 (®,TXRX_CSR19_BEACON_GEN ,0 ); - }else if (type ==IEEE80211_IF_TYPE_AP ) { -rt2x00_set_field16 (®,TXRX_CSR19_TSF_SYNC ,0 ); -rt2x00_set_field16 (®,TXRX_CSR19_BEACON_GEN ,1 ); - }else if (GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED_MONITOR ) && - !GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED )) { +else if (GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED_MONITOR ) && + !GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED ))rt2x00_set_field16 (®,TXRX_CSR19_TSF_SYNC ,0 ); -rt2x00_set_field16 (®,TXRX_CSR19_BEACON_GEN ,0 ); - } -/* -* Beacon generation will fail initially. -* To prevent this we need to register the TXRX_CSR19 -* register several times. -*/ -rt2x00_register_write (rt2x00dev,TXRX_CSR19 , reg); -rt2x00_register_write (rt2x00dev,TXRX_CSR19 ,0 ); -rt2x00_register_write (rt2x00dev,TXRX_CSR19 , reg); -rt2x00_register_write (rt2x00dev,TXRX_CSR19 ,0 );rt2x00_register_write (rt2x00dev,TXRX_CSR19 , reg);/*
drivers/net/wireless/mac80211/rt2x00/rt2500usb.h +1 -1
@@ -297,7 +297,7 @@/* * TXRX_CSR19: Synchronization control register. * TSF_COUNT: Enable TSF auto counting. -* TSF_SYNC: TSF sync, 0: disable, 1: infra mode, 2: ad-hoc mode. +* TSF_SYNC: Tsf sync, 0: disable, 1: infra, 2: ad-hoc/master mode. * TBCN: Enable Tbcn with reload value. * BEACON_GEN: Enable beacon generator. */
drivers/net/wireless/mac80211/rt2x00/rt61pci.c +10 -14
@@ -440,20 +440,16 @@ static void rt61pci_config_type(struct rt2x00_dev *rt2x00dev, int type)rt2x00_set_field32 (®,TXRX_CSR9_TSF_TICKING ,1 );rt2x00_set_field32 (®,TXRX_CSR9_TBTT_ENABLE ,1 ); } -if (type ==IEEE80211_IF_TYPE_IBSS ) { -rt2x00_set_field32 (®,TXRX_CSR9_TSF_SYNC_MODE ,2 ); -rt2x00_set_field32 (®,TXRX_CSR9_BEACON_GEN ,1 ); - }else if (type ==IEEE80211_IF_TYPE_STA ) { -rt2x00_set_field32 (®,TXRX_CSR9_TSF_SYNC_MODE ,1 ); -rt2x00_set_field32 (®,TXRX_CSR9_BEACON_GEN ,0 ); - }else if (type ==IEEE80211_IF_TYPE_AP ) { -rt2x00_set_field32 (®,TXRX_CSR9_TSF_SYNC_MODE ,0 ); -rt2x00_set_field32 (®,TXRX_CSR9_BEACON_GEN ,1 ); - }else if (GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED_MONITOR ) && - !GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED )) { -rt2x00_set_field32 (®,TXRX_CSR9_TSF_SYNC_MODE ,0 ); -rt2x00_set_field32 (®,TXRX_CSR9_BEACON_GEN ,0 ); - } + +rt2x00_set_field32 (®,TXRX_CSR9_BEACON_GEN ,0 ); +if (type ==IEEE80211_IF_TYPE_IBSS || type ==IEEE80211_IF_TYPE_AP ) +rt2x00_set_field32 (®,TXRX_CSR9_TSF_SYNC ,2 ); +else if (type ==IEEE80211_IF_TYPE_STA ) +rt2x00_set_field32 (®,TXRX_CSR9_TSF_SYNC ,1 ); +else if (GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED_MONITOR ) && + !GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED )) +rt2x00_set_field32 (®,TXRX_CSR9_TSF_SYNC ,0 ); +rt2x00_register_write (rt2x00dev,TXRX_CSR9 , reg);/*
drivers/net/wireless/mac80211/rt2x00/rt61pci.h +2 -2
@@ -437,13 +437,13 @@ struct hw_pairwise_ta_entry {* TXRX_CSR9: Synchronization control register. * BEACON_INTERVAL: In unit of 1/16 TU. * TSF_TICKING: Enable TSF auto counting. -* TSF_SYNC_MODE: Enable TSF sync, 0: disable, 1: infra mode, 2: ad-hoc mode. +* TSF_SYNC: Tsf sync, 0: disable, 1: infra, 2: ad-hoc/master mode. * BEACON_GEN: Enable beacon generator. */ #define TXRX_CSR9 0x3064#define TXRX_CSR9_BEACON_INTERVAL FIELD32(0x0000ffff)#define TXRX_CSR9_TSF_TICKING FIELD32(0x00010000) -#define TXRX_CSR9_TSF_SYNC_MODE FIELD32(0x00060000) +#define TXRX_CSR9_TSF_SYNC FIELD32(0x00060000)#define TXRX_CSR9_TBTT_ENABLE FIELD32(0x00080000)#define TXRX_CSR9_BEACON_GEN FIELD32(0x00100000)#define TXRX_CSR9_TIMESTAMP_COMPENSATE FIELD32(0xff000000)
drivers/net/wireless/mac80211/rt2x00/rt73usb.c +9 -14
@@ -433,20 +433,15 @@ static void rt73usb_config_type(struct rt2x00_dev *rt2x00dev, int type)rt2x00_set_field32 (®,TXRX_CSR9_TBTT_ENABLE ,1 ); } -if (type ==IEEE80211_IF_TYPE_IBSS ) { -rt2x00_set_field32 (®,TXRX_CSR9_TSF_SYNC_MODE ,2 ); -rt2x00_set_field32 (®,TXRX_CSR9_BEACON_GEN ,1 ); - }else if (type ==IEEE80211_IF_TYPE_STA ) { -rt2x00_set_field32 (®,TXRX_CSR9_TSF_SYNC_MODE ,1 ); -rt2x00_set_field32 (®,TXRX_CSR9_BEACON_GEN ,0 ); - }else if (type ==IEEE80211_IF_TYPE_AP ) { -rt2x00_set_field32 (®,TXRX_CSR9_TSF_SYNC_MODE ,0 ); -rt2x00_set_field32 (®,TXRX_CSR9_BEACON_GEN ,1 ); - }else if (GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED_MONITOR ) && - !GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED )) { -rt2x00_set_field32 (®,TXRX_CSR9_TSF_SYNC_MODE ,0 ); -rt2x00_set_field32 (®,TXRX_CSR9_BEACON_GEN ,0 ); - } +rt2x00_set_field32 (®,TXRX_CSR9_BEACON_GEN ,0 ); +if (type ==IEEE80211_IF_TYPE_IBSS || type ==IEEE80211_IF_TYPE_AP ) +rt2x00_set_field32 (®,TXRX_CSR9_TSF_SYNC ,2 ); +else if (type ==IEEE80211_IF_TYPE_STA ) +rt2x00_set_field32 (®,TXRX_CSR9_TSF_SYNC ,1 ); +else if (GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED_MONITOR ) && + !GET_FLAG (rt2x00dev,INTERFACE_INITIALIZED )) +rt2x00_set_field32 (®,TXRX_CSR9_TSF_SYNC ,0 ); +rt2x00_register_write (rt2x00dev,TXRX_CSR9 , reg);/*
drivers/net/wireless/mac80211/rt2x00/rt73usb.h +2 -2
@@ -340,13 +340,13 @@ struct hw_pairwise_ta_entry {* TXRX_CSR9: Synchronization control register. * BEACON_INTERVAL: In unit of 1/16 TU. * TSF_TICKING: Enable TSF auto counting. -* TSF_SYNC_MODE: Enable TSF sync, 0: disable, 1: infra mode, 2: ad-hoc mode. +* TSF_SYNC: Tsf sync, 0: disable, 1: infra, 2: ad-hoc/master mode. * BEACON_GEN: Enable beacon generator. */ #define TXRX_CSR9 0x3064#define TXRX_CSR9_BEACON_INTERVAL FIELD32(0x0000ffff)#define TXRX_CSR9_TSF_TICKING FIELD32(0x00010000) -#define TXRX_CSR9_TSF_SYNC_MODE FIELD32(0x00060000) +#define TXRX_CSR9_TSF_SYNC FIELD32(0x00060000)#define TXRX_CSR9_TBTT_ENABLE FIELD32(0x00080000)#define TXRX_CSR9_BEACON_GEN FIELD32(0x00100000)#define TXRX_CSR9_TIMESTAMP_COMPENSATE FIELD32(0xff000000)