Commit Graph

3003 Commits

Author SHA1 Message Date
Amit Mehta
881fb8bb91 qcacld-3.0: Add change to update peer map unmap version
Add change to update peer map unmap version.
Change to get peer map event v3 and peer unmap
event v2 for 11BE target.

Change-Id: I77fa354807ef66effaeb37a845ccebccd5f66ff4
CRs-Fixed: 3442448
2023-03-30 20:19:02 -07:00
David Oladunjoye
8570648f49 qcacld-3.0: Remove ucfg_mlme_reset_twt_reset_cmd() stub
Stub exist for functions that does not exist. Was introduced as
typo that was fixed. Remove the stub.

Change-Id: I59797783ddec41f2afc08bae49191c13500b02fa
CRs-Fixed: 3441916
2023-03-30 20:18:55 -07:00
Jyoti Kumari
1869c9e5f9 qcacld-3.0: Rename session_id with vdev_id to avoid confusion
Rename session_id with vdev_id in
policy_mgr_check_for_session_conc() to avoid confusion.

Change-Id: I9449395043f3f8d4e632f38770405febb1e227ab
CRs-Fixed: 3439906
2023-03-30 18:29:58 -07:00
Rahul Gusain
64f4ef5843 qcacld-3.0: Use MLD address for auth frames in SAE ML roaming
SAE authentication happens with MLD address rather than link
addresses as it's common authentication for all links in an ML
connection. But OTA exchange of authentication frames happens
with a chosen link address from available links.
As userspace takes care of the SAE authentication, host driver
has to replace the rx SAE auth frame SA with peer MLD and DA with
self MLD address. Similarly for tx SAE auth frames, replace self
SA with link address and DA with peer link address.

Current change is to support the same for roaming case. Fetch the
MLD from scan cache corresponds to link address provided in roam
auth event and replace as mentioned above.

Change-Id: Ide15caa122f78301391b5ea891e2e6eaf4af8974
CRs-Fixed: 3441483
2023-03-30 09:00:55 -07:00
David Oladunjoye
73687ef87e qcacld-3.0: Replace obsolete TWT function
Obsolete TWT functions are still called in driver. As part of
removal, Remove these functions and use component function.

Change-Id: I9f8b4186753ec9d446399be9e1cfc03a63a17391
CRs-Fixed: 3294868
2023-03-29 19:55:06 -07:00
David Oladunjoye
10141185b3 qcacld-3.0: Add static inline headers for twt
Implement static inline function when TWT is not enabled.

Change-Id: I671495be9e5b0828b154826757382806eb500310
CRs-Fixed: 3285179
2023-03-29 19:55:01 -07:00
Aditya Kodukula
3336cc1673 qcacld-3.0: Cache and tx power as part of cp station stats
In the driver, if CLUB_LL_STATS_AND_GET_STATION feature is
enabled, host requests Link Layer stats and station stats
from firmware periodically using a single WMI command.

Host then sends LL_STATS to userspace and caches station stats
in the adapter. Whenever userspace queries station stats, based
on the sta_stats_cached_timestamp, host returns cached stats
from adapter instead of sending a new WMI request.

The current issue, as part of station stats firmware also sends
connection_tx_power stats, which aren't cached into the adapter.
So, whenever userspace queries get_tx_power via nl commands,
host sends a WMI request to firmware for tx_power leading to
platform wakeups and power impacts.

To resolve this issue, cache the tx_power sent by firmware into
the adapter during station stats and return the cached value to
the user space.

Change-Id: Iaefc5629872431cbc6c24090b1edb6cebdad995a
CRs-Fixed: 3439323
2023-03-29 18:32:42 -07:00
Jianmin Zhu
79c8fc615d qcacld-3.0: Fix wrong self mac in pe session after roam to legacy
When roam from mlo to legacy, self mac need change from link addr to
interface addr.
When roam from legacy to mlo, self mac need change from interface addr
to link addr.
Self mac in vdev is updated by mlo_roam_update_vdev_macaddr already,
self mac in pe session need update too.

Remove useless self_mac in roam_offload_synch_ind.

Change-Id: I7bdfe35d5a219cb2c0eba30a4995babc8ac6199a
CRs-Fixed: 3442785
2023-03-29 11:29:18 -07:00
chunquan luo
39dd13c819 qcacld-3.0: Add flag to filter special vendor roam log
Since special vendor roam log is not need for common roam,
add flag to filter the log.

Change-Id: I5eb47f68048a48f817037e5e98d3e7fe51ee6565
CRs-Fixed: 3437627
2023-03-29 09:45:08 -07:00
Pragaspathi Thilagaraj
c2976a7b2d qcacld-3.0: Handle SAP + TDLS concurrencies
Disable TDLS offchannel on SAP start if concurrent STA with
TDLS exist.
Enable TDLS off channel after SAP start if SAP and
STA are not in MCC.

If TDLS is enabled, and off channel is required, update
TDLS off channel to be the SAP channel.

Change-Id: Ica508889acbae5e2dc4269d4d7518cf01d62714f
CRs-Fixed: 3444747
2023-03-28 04:34:46 -07:00
Vijay Raj
72dfd6a38f qcacld-3.0: Add events to modify Beacon miss disconnection logging
Disconnection is logged even if keepalive indication is
sent to host after firmware sending final beacon miss
event.

Add two new roam failure reason code to indicate roam
failure and send final beacon miss.

ROAM_FAIL_REASON_NO_AP_FOUND_AND_FINAL_BMISS_SENT: Indicate
roam failure when no ap is found and final beacon miss
is sent.

ROAM_FAIL_REASON_NO_CAND_AP_FOUND_AND_FINAL_BMISS_SENT:
Indicate roam failure when no candidate ap is found and
final beacon miss is sent.

Change-Id: I6d7a6034f8be5388dd35dd3c05fecfd40a8d888d
CRs-Fixed: 3437060
2023-03-27 23:37:08 -07:00
Vinod Kumar Pirla
812d01784f qcacld-3.0: Remove INIT_TX_RX_SUCCESS adapter flag
Remove the INIT_TX_RX_SUCCESS adapter flag as its
functionality is insignificant after DP componentization.

Change-Id: Ief86ab81c42b767113bde46252246fa8677588ce
CRs-Fixed: 3399329
2023-03-27 21:07:49 -07:00
Vinod Kumar Pirla
528031916a qcacld-3.0: Refactor VDEV opmode config during create
Refactor the hdd_vdev_create() API to move device mode
based VDEV config to a new API.
The new API calls required configuration functions
based on the device mode.

Change-Id: I54c5412577b70d92652cb16fcfb10e4d69e6f6fd
CRs-Fixed: 3445149
2023-03-27 21:07:40 -07:00
Surya Prakash Sivaraj
83299d06fc qcacld-3.0: Add support for AKM25
Add support for FT-SAE-EXT-KEY AKM.

Change-Id: Ia013a81f67d204fed486ab130b3480654703f59c
CRs-Fixed: 3406625
2023-03-27 11:20:51 -07:00
Pragaspathi Thilagaraj
37a1c90ea3 qcacld-3.0: Add initial checks for TDLS concurrencies
Check if TDLS is allowed for the current existing concurrency
combination. In below combinations, TDLS is not allowed:
1. MCC on STA vdev
2. STA + STA
3. Total connection count > 3
4. No STA vdev exists

If existing TDLS connection exists when 4th port is coming up,
then teardown the TDLS connection and disable off channel.

Change-Id: Iabe174bedecfa6147bd9de3cb2a3716b63145456
CRs-Fixed: 3435864
2023-03-27 01:47:16 -07:00
Surya Prakash Sivaraj
d24935c6f4 qcacld-3.0: Set proper SSID in the external auth req
In SAE roam offload case, the SSID of the candidate is
retrieved from the roam candidate frame, and this SSID
is sent to the userspace for initiating SAE authentication.

However, if roam candidate frame is an MBSS beacon and the
candidate BSSID is present in non-tx profile, still the
SSID from tx profile is sent to the userspace, which leads
to authentication failure.

To fix this:
a) Save the BSSID in addition to the SSID during the roam
candidate frame extraction.
b) During roam auth offload event, get the SSID from the
scan cache only if the existing BSSID cache(filled in #a)
doesn't match with the BSSID received in roam offload event.

This would prevent the time expensive scan table lookup
operation for non-MBSSID cases.

Change-Id: Ib8cc0408cba7ccfc8c2b3e2d657f7b40f8a4d421
CRs-Fixed: 3437698
2023-03-25 19:09:05 -07:00
Amruta Kulkarni
2514a9e8bd qcacld-3.0: Add roaming source and bssid check before issuing disconnect
When fast reassoc command is received with bssid
and channel frequency set to zero, if no candidate
found, STA DUT should disconnect.
Currently STA is disconnecting from current AP but
the also when FW aborts roam.

To fix this add additional check for roaming source and bssid.

Change-Id: I6ee3f5cea6ef3976b9cc5549ab113e4af30484d7
CRs-Fixed: 3441770
2023-03-25 16:07:12 -07:00
Aditya Kodukula
84325c35fd qcacld-3.0: Refactor mc_cp_station_stats function
Refactor tgt_mc_cp_stats_send_raw_station_stats into
vdev_mc_cp_stats and peer_mc_cp_stats functions to
improve code readability.

Change-Id: I5b313a84f4dd758d0b166940f055153bfae345a6
CRs-Fixed: 3442881
2023-03-25 13:35:48 -07:00
Vinod Kumar Myadam
01153f2605 qcacld-3.0: Fix in parsing INI macro
In CFG_SAP_PS_WITH_TWT and CFG_DISABLE_SAP_BCN_PROT,
passing value as string instead of numeric.
Causes wrong value while macro expansion.

Passing enum value of false in CFG_SAP_PS_WITH_TWT and
CFG_DISABLE_SAP_BCN_PROT.

Change-Id: Ib8b297ef69cebb71c1e6645f49a75e79393b8c94
CRs-Fixed: 3440741
2023-03-25 11:16:20 -07:00
Rachit Kankane
4eec1b8e78 qcacld-3.0: Restart SAP / GO before STA
In STA + SAP / GO DFS SCC concurrency, switch SAP / GO's operating
channel before STA's switch upon received very first CSA on STA
interface from peer AP.

Once STA moves to new channel, enforce SCC with existing SAP / GO
if its in MCC. This is done to allow traffic on SAP / GO side
during CSA period.

Change-Id: Icb4a15ad21ae96faff1fe338985aa734a4398cd2
CRs-Fixed: 3431386
2023-03-24 19:21:47 -07:00
Liangwei Dong
c72ac1a9e4 qcacld-3.0: Avoid SBS channels missing in scan filter
In dual STA case, driver will avoid selecting candidates causing
MCC, but the current hw mode may have some delay updated from firmware.
So the API policy_mgr_are_2_freq_on_same_mac may not get correct
DBS or SBS channel state of two channel frequency.
Fix it by do not depending on current hw mode by using API
policy_mgr_2_freq_always_on_same_mac to check potential MCC or
not of two channel frequency.

Change-Id: I7d5382e786c421d5f99578e08b62b07864f48974
CRs-Fixed: 3441024
2023-03-22 22:16:42 -07:00
Pragaspathi Thilagaraj
36f994680f qcacld-3.0: Fix wrong subnet_change_status derivation after roam
Subnet change status field is obtained from bits 4 & 5 of the
roam_reason field in roam synch indication. But in
cm_fill_roam_info() the subnet_change_status is received from
the masked roam reason field and is always 0. So after
roaming to AP with different subnet wrong subnet change
indication is sent to userspace and ultimately NUD failure is
triggered.

Get the subnet_change_status directly from the roam synch
indication

Change-Id: I708276750c0aa3f1586cf9501f55f742d42ebf3f
CRs-Fixed: 3438725
2023-03-22 13:55:22 -07:00
Jyoti Kumari
4ea4347be1 qcacld-3.0: Pass vdev_id as an argument in policy_mgr_get_pcl()
Pass vdev_id as an argument in policy_mgr_get_pcl()

Change-Id: If016b2ad1e47d1d8364037e44bd984e5b95c8d6f
CRs-Fixed: 3412927
2023-03-22 00:40:19 -07:00
Gururaj Pandurangi
328c3811f4 qcacld-3.0: Add missing dot at the end of copyright header
Add the missing period at the end of the copyright header.

Change-Id: I9d11ab5e35ae8682340288b1f45a324b5d0dde21
CRs-Fixed: 3439213
2023-03-21 13:51:58 -07:00
Pragaspathi Thilagaraj
06be2cbc56 qcacld-3.0: Add support to disable TDLS offchannel completely
Add support for new TDLS off-channel mode type:
DISABLE_ACTIVE_CHANSWITCH. With this
off channel mode, the TDLS off-channel will be disabled
completely without passive disable mode.
DISABLE_CHANSWITCH -> Passive channel switch can be done i.e if
peer requests channel switch then firmware can do channel switch
DISABLE_ACTIVE_CHANSWITCH -> Disable all off-channel switches.

Add support to send peer channel lists based on concurrency
combination. Override the ini configured frequency to the
supported frequency based on the current concurrency.

Change-Id: Ie3210178eb8b57d6ab126a730ed91895b70edaa1
CRs-Fixed: 3416213
2023-03-21 11:50:51 -07:00
David Oladunjoye
1cfdd7c3dc qcacld-3.0: Add a missing dot at the end of copyright header
Add a missing dot at the end of the copyright header.

Change-Id: I1e09eab9d6207c482fb1c4204793442c9cad1ff5
CRs-Fixed: 3439436
2023-03-21 07:50:28 -07:00
Amruta Kulkarni
095e152d33 qcacld-3.0: Handle fast reassoc with mac address set to zero
When fast reassoc command is received with bssid
and channel frequency set to zero, if no candidate
found, STA DUT should disconnect.
Currently STA DUT stays on the same AP.

Fix is to add bssid zero check and disconnect from
current AP.

Change-Id: Id6a26703929f7783e852bb42eebd57f5d5ba8b13
CRs-Fixed: 3433308
2023-03-19 07:55:36 -07:00
Sheenam Monga
d05fc12d8b qcacld-3.0: Add support to handle HT LL and LT LL policy separately
Currently, policy_mgr_is_ll_sap_present api is used to check if
ll sap is present or not but different operations may be required
for HT and LT LL AP policy example for LT policy i.e gaming/loss
less audio MCC is acceptable but for HT MCC is strictly prohibited.
So, wrapper functions are added to check HT, LT and any AP policy.

Change-Id: I93dbcd65b1a102d0f879366db26f3d2cf01e030e
CRs-Fixed: 3435203
2023-03-17 12:42:01 -07:00
Aditya Kodukula
b150d1328c qcacld-3.0: Add support for gStaKeepAliveMethod ini
Currently the ini gStaKeepAliveMethod doesn't support
Unsolicited ARP response packets. So, add it.

Change-Id: I614e87e7f173ea5c25c34eaf56de0805d37b26a4
CRs-Fixed: 3433020
2023-03-17 09:12:49 -07:00
Gururaj Pandurangi
def62fa76d qcacld-3.0: Add a missing dot at the end of copyright header
Add a missing dot at the end of the copyright header.

Change-Id: I5d55af6160bb93b309bcb22a767ef45e7496a124
CRs-Fixed: 3432924
2023-03-17 01:40:42 -07:00
Jeff Johnson
b7d54a9d11 qcacld-3.0: Fix misspelling "sceurity"
Fix misspelling: "sceurity" => "security".

Change-Id: Idaf2f1a19b5376ec0cb44cb2c995c56f689e4a4d
CRs-Fixed: 3429926
2023-03-16 11:19:02 -07:00
Jeff Johnson
c031a55590 qcacld-3.0: Remove wlan_cm_is_sta_connected() prototype
Function wlan_cm_is_sta_connected() was removed by the following patch:
  qcacld-3.0: Code cleanup for connection manager CSR
  Change-Id I156b7ee286f666ee5d660312bf5ba2fe364165c4

However, the prototype was not removed, so remove it now.

Change-Id: Id23f14f1390c72e5f39cef3fbab2eacd6752dc1d
CRs-Fixed: 3430410
2023-03-16 11:18:57 -07:00
Asutosh Mohapatra
406999bf6d qcacld-3.0: Disable sta_sap_scc_on_indoor_chan ini
Disable sta_sap_scc_on_indoor_chan ini.

Change-Id: I6d9e91c27ce62c3cefc09739cb3e05e7b034b958
CRs-Fixed: 3432677
2023-03-16 09:29:50 -07:00
Jeff Johnson
38e0ca8278 qcacld-3.0: Remove tgt_send_cp_big_data_stats_req() prototype
The tgt_send_cp_big_data_stats_req() prototype was added by:
  qcacld-3.0: Add support for big data stats
  Change-Id I3642035d9f25237c80b529da78c51bb1ccf0035a

However a function with that name is not actually present. Instead,
the struct wlan_lmac_if_cp_stats_tx_ops::send_req_big_data_stats()
function pointer is used to send the request.

Since the prototype is unused, remove it.

Change-Id: I1a05c40d2ae639e4b6333362661e9012786a467c
CRs-Fixed: 3430267
2023-03-16 03:10:51 -07:00
Jeff Johnson
f7d4a2fd9a qcacld-3.0: Remove mlme_vdev_create_send() prototype
Function mlme_vdev_create_send() was removed by the following patch:
  qcacld-3.0: Send vdev create to fw from object create notification
  Change-Id Ibba02f6b5885d7b3a62529ef51768f520395513e

However the prototype was not removed, so remove it now.

Change-Id: I45e20bc4cb8fb00486208711765625792312ce8b
CRs-Fixed: 3430397
2023-03-15 20:59:03 -07:00
Surabhi Vishnoi
19348c7d14 qcacld-3.0: Do input validation for beacon interval in packet capture mode
Beacon interval set from the vendor command in packet capture mode
should be greater than connected AP's beacon interval otherwise it
nth beacon value will be calculated as 0. So add a condition to
validate the value of user configured beacon interval before sending
it to firmware. Reject the connected beacon interval configuration in
packet capture mode if its value is not 0 and less than AP's beacon
interval.

Change-Id: I4b90ed239d54c5d59142a7a7b70c65b7df80a469
CRs-Fixed: 3423534
2023-03-15 17:40:57 -07:00
Rachit Kankane
e0b7095e74 qcacld-3.0: Update to change CSA count
Add variables and APIs in SAP and SME to change CSA count
for SAP / GO.
Currently the default CSA count is 10, this API allows
to reduce the CSA count if required as per the requirements

Change-Id: I17c101cd0c809f49d57d2aaf87fc37d90b92ea1f
CRs-Fixed: 3431384
2023-03-15 09:31:04 -07:00
Sheenam Monga
241487b08d qcacld-3.0: Add handling of MCC in 2 port policy dump
Currently if 2 frequencies are in SCC then, SCC is added in
policy manager current concurrency dump but in case frequencies
are MCC then hardware mode is considered instead of MCC.

Fix is to add MCC instead of hw mode if frequencies are on same
Mac but not same.

Change-Id: If0fc20f5ed6efae881fbb96b9d5b42dfd95027a3
CRs-Fixed: 3421278
2023-03-15 07:45:29 -07:00
Amruta Kulkarni
271f3367e8 qcacld-3.0: Handle supplicant enable rso for mlo connection
In case supplicant enable's roaming before link vdevs are up
drop the request as once all links are up host will enable RSO.

Change-Id: Iba10b6da7c0d24f6e7b1601eefab1dbee0e3af46
CRs-Fixed: 3429178
2023-03-15 04:33:30 -07:00
Jeff Johnson
1986933553 qcacld-3.0: Remove mlme_sap_set_twt_command_in_progress() prototype
The mlme_sap_set_twt_command_in_progress() prototype was added as part
of the following patch:
  qcacld-3.0: Add support for SAP TWT teardown
  Change-Id I108ea425e69e07ee8a3657ca5afcb436420b2626

However, there isn't an actual implementation of this function, so
remove the unused prototype.

Change-Id: If30d4e53b69c7747d60974c06a91795caffd19c0
CRs-Fixed: 3430387
2023-03-15 02:40:32 -07:00
Amruta Kulkarni
91d49f075a qcacld-3.0: Add changes to handle self roaming
For mlo roaming, roam sync will be handled on
link vdev/s first and then assoc link vdev.
In case of mlo self roaming, an issue is observed
during peer creation as one already exists on other link.

To solve this all link peers will be deleted
while handling roam synch on first link.

Change-Id: I4d3ff71dd7c8b54f3f06b0147ce23ac8bfe5f49b
CRs-Fixed: 3421698
2023-03-14 12:18:42 -07:00
Sai Pavan Akhil Remella
c7d5fd2c1b qcacld-3.0: Send the trigger reason as part of roam scan stats
Notif_param of Roam event ID carries the trigger reason as part
of roam scan start notif. Currently host doesn't read this param.
This commit reads the trigger reason and sends it to user-space
via vendor attribute whenever the roam event vendor command is
enabled.

Change-Id: If9fdbc31df149f4f1c9ca196ee74e2fcb3709a1c
CRs-Fixed: 3161803
2023-03-14 10:37:09 -07:00
Sai Pavan Akhil Remella
c8a5f9ac8d qcacld-3.0: Send the vendor attributes with Roam stats
As part of commit I6d04f0946e6735613a4cf3d4361bf31052314fa0
a vendor command was added to enable roam stats event.
This change registers callback to send the added vendor
command event to userspace.

Change-Id: I3c504797b1b9619d3e4ecc1c37256dea75127e14
CRs-Fixed: 3403536
2023-03-14 10:37:03 -07:00
Jeff Johnson
d2d67b1054 qcacld-3.0: Remove wlan_dp_psoc_context::rx_skip_qdisc_chk_conc
The following patch removed all usage of the rx_skip_qdisc_chk_conc
member of struct wlan_dp_psoc_context:
  qcacld-3.0: Move TC based dynamic GRO logic to DP component
  Change-Id I3c6658e8f19a71e548c77ff6fd637148925008d7

Since this is obsolete, remove it.

Change-Id: I13fbc9dd60466800070c968ec6d89ffa16734b5f
CRs-Fixed: 3427563
2023-03-12 22:36:34 -07:00
Jeff Johnson
4af8794bc3 qcacld-3.0: Rename enum pmo_wow_action_wakeup_opertion
Rename enum pmo_wow_action_wakeup_opertion to correct the misspelling
of "operation" in the name. Note that no code actually references the
enum by name, so no other code is affected by this change.

Change-Id: I77a113bed3e74b151945ad228471e1a5d09b9d76
CRs-Fixed: 3427584
2023-03-10 22:48:20 -08:00
Srinivas Dasari
d914ed8a81 qcacld-3.0: Don't disable MCC links in eMLSR case
eMLSR allows links in MCC mode(e.g. 5 GHz high + 5 GHz high) as
it's listen only till some data is ready from AP. Actual data
transmission may happen only on one link. So, don't disable any
link though those are operating in MCC when eMLSR is enabled.

Change-Id: I12635027dff658a18bc365299769dc5158ad0a33
CRs-Fixed: 3421444
2023-03-09 23:26:16 -08:00
Pragaspathi Thilagaraj
fbf0ea73d5 qcacld-3.0: Don't allow TDLS on MLO vdev
TDLS is not supported on ML STA but it gets enabled
currently when connected with ML AP and TDLS discovery request
is sent to peer devices.

So don't allow TDLS on MLO vdev.

Change-Id: I5bb9e03a0be3f3249aa7af664666a53a67ee812d
CRs-Fixed: 3416206
2023-03-09 23:26:11 -08:00
Gangadhar Kavalastramath
1bbd5a953a qcacld-3.0: Remove dfs cac dependency on pre cac feature flag
Remove dfs cac dependency on pre cac feature flag.

Change-Id: If91e3fb4cc94b669e79aa8877e7102b0cb6ef8b6
CRs-Fixed: 3424238
2023-03-09 12:58:12 -08:00
Rakesh Pillai
2a4c6686af qcacld-3.0: WAR to handle invalid flow_idx from HW
Currently if the pkt tlvs indicate flow_invalid=0,
there is no sanity done on the SW flow table entry
retrieved using the flow_idx from pkt tlvs.

In case of HW incorrectly sending a invalid flow_idx,
within the range of allowed flow_idx, and flow_invalid=0,
there will be an attempt to aggregate an invalid flow.
This can also trigger a RX ring id mismatch.

In order to mitigate the above issue, verify if the
SW flow table has been populated, before attempting
FISA aggregation.

Change-Id: Idb445c0c5b249d747dbce61f31513ba4a75c26b7
CRs-Fixed: 3412721
2023-03-08 16:04:40 -08:00
Venkateswara Naralasetty
2bcf36b06f qcacld-3.0: Skip FISA aggregation if RDI is zero
Skip the FISA aggregation and drop the frame if the reo destination
indication is zero in the packet TLVs.

Change-Id: I9bd02652bf321202f6b59e6da98fc6959ab93413
CRs-Fixed: 3426355
2023-03-08 14:20:51 -08:00