| Commit message (Collapse) | Author | Age |
| ... | |
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
integrate NAN sandbox common changes for dbglog_id.h
Change-Id: Id38a147a4e91ea5aa117a6efa1ed183376ece590
CRs-Fixed: 663837
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Dbglog changes for IBSS power save support.
Change-Id: Ic2ef499114441bbc8d8c13e733287c736f3344d9
CRs-Fixed: 673408
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Locally administered mac addresses are filtered out at network
equipments. Providing fix to set the locally administered bit
only for P2P and SAP modes.
Change-Id: Idc60c481385d34c44a199b57d7f0d2b0725b2712
CRs-Fixed: 669849
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Race condiiton fix which can cause P2P RoC
timer and context is not getting freed
Change-Id: I295363ccbbcac529c25e7c43a552495f19371074
CRs-Fixed: 672839
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Do not process SSR/recovery methods while unloading the driver.
Change-Id: I980d8704abbc06629e8e96e245cb785e337193c0
CRs-Fixed: 671790
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- Change passive dwell time to 110 ms by default.
- If scan home away time is less than that, use passive dwell time
as burst duration.
- Add support for SETDFSSCANMODE and GETDFSSCANMODE commands
- Enable DFS roaming by default.
CRs-Fixed: 670768
Change-Id: I24c026e3964bcb69d07feed67ba128343002f30f
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
When building the bss params, it only assigns the pRSNReqIE to
the bss beacon configuration, but in IBSS case it uses pWPAReqIE
if it is WPA case, so add sanity check and assign accordingly
Change-Id: I7432c28fa109f29e04b6c5f649f941c93dcffb43
CRs-fixed: 657992
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The WMMIE from cfg80211_beacon_data->tail is not added into the
beacon template buffer.
Append the cfg80211_beacon WMMIE to WNI_CFG_PROBE_RSP_BCN_ADDNIE_DATA
and update the WMMIE to peSession so that schBeaconGen will take care
when generate the beacon template.
Change-Id: I479f9bcb3dd900979bcf417c84714977072f57da
CRs-fixed: 657992
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Retrieve linkspeed from firmware based on adaptive bitrate encoding
and pass a non zero linkspeed to the miracast stack.
Change-Id: I5ed7bc9ac9fa8257fd33ba7a14ed171f3d654f2c
CRs-Fixed: 649874
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Restore RX after rx data error
Change-Id: I9ce4ac41cd1ad3e6894f456f879bffd1b89dff5b
CRs-Fixed: 661747
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Change to drop current chain of MSDUs that have been popped when there
is an error in the attention field in the RX descriptor.
Change-Id: I0bc62a8deef0af65e1efa3f712fd9d507a9a64dd
CRs-Fixed: 661747
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
As the max tx power is limitted by MAX_TX_PWR_CAP (19), in some
cases the tx power configured in fw is much lower than the
allowed EIRP. Make sure to configure the max power (22dBm) to fw.
Change-Id: I80f33d86c8db914727670d0d7cc5138c9504bf01
CRs-Fixed: 672391
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
gtk_err_enable flag is a global flag it should be per VDEV
because if GTK offload is enabled for VDEV 0 and if next
enable request comes for VDEV 2 then because of this flag
we will end up in disabling GTK offload for VDEV 2 which
was never enabled and then enable it and this sequence will
cause target ASSERT. Fixing the issue by making gtk_err_enable
flag per VDEV.
Change-Id: I2fbb25ea1fa83181a0a9b2a36c075a8b517a7349
CRs-Fixed: 673679
|
| | |\ \ \ \ \ |
|
| | | |\| | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Merge remote-tracking branch 'origin/caf/caf-wlan/master'
* origin/caf/caf-wlan/master:
Cafstaging Release 1.0.0.117
qcacld: Fix NULL pointer de-reference in dev start response
qcacld: CL 966818 - update FW interface debug log file
qcacld-new: using target-info to decide firmware files for ROME
wlan: Do not allow beacon report request in disconnected state
qcacld: Defer WMI commands from Host during suspend.
wlan: Fix scan fail if vdev is invalid in scan request
qcacld: Remove reference to WNI_CFG_BSSID_LEN
qca_cld: Modify HL cld host driver to support TDLS feature
qcacld: Decrement bRefAssocStartCnt in roaming
qcacld: Fix compilation error for x86 when issuing vdev restart
qcacld: Unload time is too long for ROME USB
qcacld: system hang observed after Hibernate .
Change-Id: I612d3a26be8612bb0fdf7906409416d296b574e8
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Cafstaging Release 1.0.0.117
Change-Id: I3c853724cfec18d7bcd085946939ebe7cb3f56a9
CRs-Fixed: 672907
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Due to race condition between VDEV START and UMAC channel switch
response, in wma_vdev_start_resp_handler NULL pointer de-reference
occurs. Serializing the wma_vdev_start_resp_handler to MC thread
context to avoid the race condition.
Change-Id: Ic5bd4061f1b0fbde6a55c695a3b2a3f1c3f4e09a
CRs-Fixed: 671400
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Update and improve coex dbglog parsing
Change-Id: I93a4afc57893b35f1849d95267e0ecb0ae279f6c
CRs-Fixed: 672133
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Currently we are reading ROME revision id from pci config space and
deciding firmware files based on that. This is not portable across
different buses. Instead, we need to use the revision id read by BMI during
BmiGetTargetInfo to decide the firmware files for ROME. This change
passes the targetInfo to CNSS driver which returns firmware file names.
Change-Id: Iae80ae40c5d9a5fe96ed92f2421fcb1f9280e53f
CRs-Fixed: 669587
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Due to race condition, before supplicant receives DISCONNECT
event, it issues beacon request to the driver and session id
is invalid because of which SME queue got stuck and no further
requests are honored.
The fix is to not to allow beacon request to proceed if
device is not associated.
Change-Id: I012d08f6277d3259a5a6aedf64751eed938cf25b
CRs-Fixed: 671614
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Defer WMI Commands from HOST until the response from FW is Processed
by host for wow_enable command.
Problem reported as host queued WMI command on recieving FW event
in the window where wow_enable is sent to FW and ACK/NACK is received
from FW. Results in Target Assert.
Fix by Defering WMI commands until Host process HTC ACK/NACK from
FW for WOW_ENABLE.
Change-Id: Ie2dc28b54fb4aae0a1e047b0a276dba28f215345
CRs-Fixed: 672205
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Currently when rrm request is sent by AP, it goes for the
internal scan.If STA is disconnected from AP before processing
this internal scan then scan request will have invalid session ID.
Done the code changes to check the session ID before issuing the
scan.
Also added the prints to check on which layer the session ID
becomes invalid.
CRs-Fixed: 671614
Change-Id: Ifd356b5dc1625a358eda97b7dc5726e0aeb2e29b
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Fix the compilation error if ESE is enabled.
Remove reference to WNI_CFG_BSSID_LEN
Change-Id: I39e9aba0c755682ea19fcbf3538dbb1217295d0d
CRs-Fixed: 672345
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Modify ROME high latency host driver to support TDLS feature
(Explicit mode).
Change-Id: I56102475e4002f2f401a7784af0a57d50f13db3d
CRs-Fixed: 664716
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
In connected state when user issuing reassociate command
from the application (iwpriv), then the driver issuing
roam comman SME module. As part of connect procedure
it is incrementing bRefAssocStartCnt and first issuing disconnect
with the connect AP. After disconnection the SME module again
issuing same roam command. As part of this command again the
bRefAssocStartCnt is getting incremented. This is not correct.
bRefAssocStartCnt indicates the number connect requests in
progress.
Decrementing bRefAssocStartCnt before reissuing the roam
command.
Change-Id: I0ec5bcf97b9e23e45b4d003221c2f63d696bf962
CRs-Fixed: 670085
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
There is typecast of pointer to integer when issuing vdev
restart on receiving vdev stop indication. This is not 64 bit
complaint. Fixing this by typecasting the pointer to u_int8_t*
Change-Id: Ib8a85ab6691cacc1548a16eba7880cd3ff4ae602
CRs-Fixed: 672399
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
It takes a long time to remove cld driver.
Add two methods to speed up.
1.usb_disable_lpm
2.Move __hdd_wlan_exit before usb_deregister
Change-Id: I8b6767e831d12ade1d362f40835593105bcd5cb3
CRs-fixed: 671037
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
System can not resume after hibernate.
Fix it with doing cold reset in reset_resume callback.
Change-Id: I8e795f7359262568938283653162d645f43a8728
CRs-fixed: 667932
|
| | |\| | | | | |
|
| | | |\| | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Merge remote-tracking branch 'origin/caf/caf-wlan/master'
* origin/caf/caf-wlan/master:
Cafstaging Release 1.0.0.116
qcacld-new: enhance tdls work thread to handle driver unloading
qca_cld: Re-register HDD TX resume callback in SSR re-init routine
qcacld: Optimization for AV glitches seen in WiFi window
qcacld-new: Print firmware crash dump
qcacld: Fix for DFS master mode radar detection
Change-Id: Idab09a9604c35ddee36a1256cd9678545186eac3
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Cafstaging Release 1.0.0.116
Change-Id: I6ba3beb3607ddf3044aefad4a555a00518ca2562
CRs-Fixed: 672090
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
TDLS uses kernel work thread to process implicit triggering. Current
TDLS work thread implementation does not handle wlan driver unload
that could happen during the execution of the thread.
Enhance the implementation such that the driver unload is handled
properly.
Change-Id: Iede5f59f27b626b0e35be1a9cb287268739aef54
CRs-Fixed: 670907
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Re-register HDD TX resume callback for TX flow control in SSR re-init
routine, otherwise it will casue low TX throughput after SSR since without
the callback, HDD will always think driver is in TX low resource condition
and only send a few packets when timeouts. Also disable asynchronous
suspend in SSR re-init routine to sync with normal driver load process.
CRs-fixed: 671215
Change-Id: I75ea9ecdfae787de117f7d57794f618021673168
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Currently the number of busrt channels is 5. This fix
optimizes it to the least value that is requried (3).
Now, the interfaces will come back more often to the
home channel along with the rest time change that was
recently added. The burst duration is also changed so
that it is updated based on the number of channels and
the dwell time instead of using a fixed value.
Change-Id: Ieed6631a470a2829c2393215674f82d8f1a136d5
CRs-Fixed: 665324
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Check assert_pattern on USB driver and print the firmware crash dump.
Change-Id: I5d7a817bfb28e9a32eee713f3543b6b68f169a93
CRs-fixed: 657380
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Regulatory domain check in dfs_init_radar_filters will fail during
dfs attach since regulatory domain is initialized to zero. A failure
return from dfs_init_radar_filters will fail dfs_attach also.
Change-Id: Ic033fc0b2550a9a7bafdb809574b290cd33ea4b2
CRs-Fixed: 671493
|
| | |\| | | | | |
|
| | |/| | | | |
| | |/ / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Merge remote-tracking branch 'origin/caf/caf-wlan/master'
* origin/caf/caf-wlan/master: (21 commits)
Cafstaging Release 1.0.0.115
HDD: MCC to SCC switch not setting proper bonding
qcacld: Fix race condition in recovery
wlan: scan log level change
qca_cld: Enable TCP checksum offload for ROME USB.
qcacld: UI still show interface when unplug Card in U3 mode
qca_cld: Add VOSS API to get monotonic boot time
wlan: add compat support to iw_setnone_getnone()
qcacld: Fix for possible MIC error while roaming
qcacld: Fix for hidden SSID not working through IOCTL
qcacld-new: Send WoW wmi command to target once USB resumed.
qca_cld: Add one more FW indicator register bit
wlan:check for duplicate rate in supported and extended supported rates.
qcacld: Read the Rome Power State
qca_cld:sap Expand channel list for ACS scan
qca_cld:sap Support HT40 in 2.4G ACS
qcacld: Fix GuestAP start up failure when PrimaryAP specifies [HT40]
qcacld: Increase VDEV_STOP timeout to 2000 ms
qcacld: IPA: Add IPA clock scaling support
qcacld: Pause/Unpause pdev during suspend/resume.
...
Change-Id: If973423a5e6e0a8fd8d990816aa7005a0c2e2f98
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Cafstaging Release 1.0.0.115
Change-Id: Icd0b3beabe67a4f60a467ec156b5e6348deb575a
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
When MCC to SCC switch happens channel bonding mode is not
set properly resulting in invalid HT/VHT operation. This
update fixes this issue.
Change-Id: Ica03e2b63938a99e67a5db04dd9803bbc0f4f03f
CRs-fixed: 662343
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
When there is an active entry in to suspend/resume APIs from Kernel,
then defer SSR shutdown until the active entry exits.
CRs-Fixed: 670585
Change-Id: I8c91c59193cbc99d3cf39bf2e8fbcff82317d6e3
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Change the scan log level to display when scan request
was issued and how many BSS found
Change-Id: Idc1527419c08e5c8d376f180df51d599b46032bd
CRs-Fixed: 667187
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Enable TCP Checksum offload (Transport layer) to decrease CPU utilization.
Change-Id: I3c2b69900c47c4da31768152dacc8b623f54176c
CRs-Fixed: 668652
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The flow in vos_close is not correct and will cause htt tx description
to be freed after ol_txrx_pdev_detach which called by WLANTL_Close.
Moving HTCStop before WLANTL_Close to avoid such situation.
Change-Id: Iaac737850a0fbedd339a8ad76f8a82b4de6abc34
CRs-fixed: 669295
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Add VOSS API to get monotonic boot time for recording WMI command/event
timestamp.
Change-Id: I4d979b3821c11f62b51ccf00a2c14879f46dfb5f
CRs-fixed: 669914
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
The WLAN_PRIV_SET_NONE_GET_NONE ioctl is a special case where a
sub-ioctl is used and both the number of get and set args is 0. In
this specific case the logic in iwpriv places the sub_cmd in the
data.flags portion of the iwreq. Unfortunately the location of this
field will be different between 32-bit and 64-bit userspace, and the
standard compat support in the kernel does not handle this case. So
we need to explicitly handle it iw_setnone_getnone().
Change-Id: Id08284917ac70a9e93bd90c50b9aa8384eb12845
CRs-fixed: 670292
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
In recent roaming tests it was seen that roaming failed
sometimes because of MIC mismatch on AP side, reason being
AP sometimes sent a PreAuth again with a modified Anonce
(may be because of ACK miss). But the driver drops the
subsequent preauth frames and calculates the MIC on first
received Anonce whereas AP calculates MIC on last sent Anonce,
and hence a mismatch.
Changes have now been made to update the saved FTIEs in the
driver if there are any subsequent preauth frames, however this is
valid as long as the message is not posted to SME. This would help
avoid MIC errors atleast in most cases where the APs are on different
channels.
Change-Id: I9503906bb3df8bc6e3c8c4aa40c358572207d2a1
CRs-Fixed: 660796
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Currently probe response is offloaded to firmware.
When SAP is set for hidden SSID using the IOCTL
command, the FW is not informed about the new change
in the vdev parameters. This fix ensures that the fw
is provided the expected sequence of vdev stop, vdev
restart and vdev up with the parameters requried for
hidden SSID so that the fw can send null SSID in the
beacons and reply with correct SSID in probe response
in case the SAP's SSID is made hidden.
Change-Id: If67005a3df8bac2f3a0f486dcd9a2b1f3138c6f8
CRs-Fixed: 663609
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
In WoW enabled state, firmware needs to do some code logic after
USB resumed. Host driver need to sends WMI command to trigger
this behavior. This change is integrated from LL design.
Change-Id: I38d7c905fa43f709dd6c47cb98d55115cd29e5b7
CRs-fixed: 659740
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Add one more bit to FW indicator register so that host can check the
corresponding status of FW.
Change-Id: I6ccfa563cf6f91676d1683175da1b41fabe378dd
CRs-fixed: 670275
|