Commit 585dfe81 authored by Machani, Yaniv's avatar Machani, Yaniv Committed by Kalle Valo

wlcore: time sync : add support for 64 bit clock

Changed the configuration to support 64bit instead of 32bit
this in order to offload the driver from handling a wraparound.
Signed-off-by: default avatarYaniv Machani <yanivma@ti.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 16d25da9
...@@ -112,12 +112,18 @@ static int wlcore_smart_config_decode_event(struct wl1271 *wl, ...@@ -112,12 +112,18 @@ static int wlcore_smart_config_decode_event(struct wl1271 *wl,
return 0; return 0;
} }
static void wlcore_event_time_sync(struct wl1271 *wl, u16 tsf_msb, u16 tsf_lsb) static void wlcore_event_time_sync(struct wl1271 *wl,
u16 tsf_high_msb, u16 tsf_high_lsb,
u16 tsf_low_msb, u16 tsf_low_lsb)
{ {
u32 clock; u32 clock_low;
/* convert the MSB+LSB to a u32 TSF value */ u32 clock_high;
clock = (tsf_msb << 16) | tsf_lsb;
wl1271_info("TIME_SYNC_EVENT_ID: clock %u", clock); clock_high = (tsf_high_msb << 16) | tsf_high_lsb;
clock_low = (tsf_low_msb << 16) | tsf_low_lsb;
wl1271_info("TIME_SYNC_EVENT_ID: clock_high %u, clock low %u",
clock_high, clock_low);
} }
int wl18xx_process_mailbox_events(struct wl1271 *wl) int wl18xx_process_mailbox_events(struct wl1271 *wl)
...@@ -138,8 +144,10 @@ int wl18xx_process_mailbox_events(struct wl1271 *wl) ...@@ -138,8 +144,10 @@ int wl18xx_process_mailbox_events(struct wl1271 *wl)
if (vector & TIME_SYNC_EVENT_ID) if (vector & TIME_SYNC_EVENT_ID)
wlcore_event_time_sync(wl, wlcore_event_time_sync(wl,
mbox->time_sync_tsf_msb, mbox->time_sync_tsf_high_msb,
mbox->time_sync_tsf_lsb); mbox->time_sync_tsf_high_lsb,
mbox->time_sync_tsf_low_msb,
mbox->time_sync_tsf_low_lsb);
if (vector & RADAR_DETECTED_EVENT_ID) { if (vector & RADAR_DETECTED_EVENT_ID) {
wl1271_info("radar event: channel %d type %s", wl1271_info("radar event: channel %d type %s",
...@@ -187,11 +195,11 @@ int wl18xx_process_mailbox_events(struct wl1271 *wl) ...@@ -187,11 +195,11 @@ int wl18xx_process_mailbox_events(struct wl1271 *wl)
*/ */
if (vector & MAX_TX_FAILURE_EVENT_ID) if (vector & MAX_TX_FAILURE_EVENT_ID)
wlcore_event_max_tx_failure(wl, wlcore_event_max_tx_failure(wl,
le32_to_cpu(mbox->tx_retry_exceeded_bitmap)); le16_to_cpu(mbox->tx_retry_exceeded_bitmap));
if (vector & INACTIVE_STA_EVENT_ID) if (vector & INACTIVE_STA_EVENT_ID)
wlcore_event_inactive_sta(wl, wlcore_event_inactive_sta(wl,
le32_to_cpu(mbox->inactive_sta_bitmap)); le16_to_cpu(mbox->inactive_sta_bitmap));
if (vector & REMAIN_ON_CHANNEL_COMPLETE_EVENT_ID) if (vector & REMAIN_ON_CHANNEL_COMPLETE_EVENT_ID)
wlcore_event_roc_complete(wl); wlcore_event_roc_complete(wl);
......
...@@ -74,10 +74,16 @@ struct wl18xx_event_mailbox { ...@@ -74,10 +74,16 @@ struct wl18xx_event_mailbox {
__le16 bss_loss_bitmap; __le16 bss_loss_bitmap;
/* bitmap of stations (by HLID) which exceeded max tx retries */ /* bitmap of stations (by HLID) which exceeded max tx retries */
__le32 tx_retry_exceeded_bitmap; __le16 tx_retry_exceeded_bitmap;
/* time sync high msb*/
__le16 time_sync_tsf_high_msb;
/* bitmap of inactive stations (by HLID) */ /* bitmap of inactive stations (by HLID) */
__le32 inactive_sta_bitmap; __le16 inactive_sta_bitmap;
/* time sync high lsb*/
__le16 time_sync_tsf_high_lsb;
/* rx BA win size indicated by RX_BA_WIN_SIZE_CHANGE_EVENT_ID */ /* rx BA win size indicated by RX_BA_WIN_SIZE_CHANGE_EVENT_ID */
u8 rx_ba_role_id; u8 rx_ba_role_id;
...@@ -98,14 +104,15 @@ struct wl18xx_event_mailbox { ...@@ -98,14 +104,15 @@ struct wl18xx_event_mailbox {
u8 sc_sync_channel; u8 sc_sync_channel;
u8 sc_sync_band; u8 sc_sync_band;
/* time sync msb*/ /* time sync low msb*/
u16 time_sync_tsf_msb; __le16 time_sync_tsf_low_msb;
/* radar detect */ /* radar detect */
u8 radar_channel; u8 radar_channel;
u8 radar_type; u8 radar_type;
/* time sync lsb*/ /* time sync low lsb*/
u16 time_sync_tsf_lsb; __le16 time_sync_tsf_low_lsb;
} __packed; } __packed;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment