/drivers/staging/rtl8712/ |
D | rtl871x_xmit.c | 202 struct pkt_attrib *pattrib) in r8712_update_attrib() argument 220 pattrib->ether_type = ntohs(etherhdr.h_proto); in r8712_update_attrib() 226 if (pattrib->ether_type == 0x0806) { in r8712_update_attrib() 236 memcpy(pattrib->dst, ðerhdr.h_dest, ETH_ALEN); in r8712_update_attrib() 237 memcpy(pattrib->src, ðerhdr.h_source, ETH_ALEN); in r8712_update_attrib() 238 pattrib->pctrl = 0; in r8712_update_attrib() 241 memcpy(pattrib->ra, pattrib->dst, ETH_ALEN); in r8712_update_attrib() 242 memcpy(pattrib->ta, pattrib->src, ETH_ALEN); in r8712_update_attrib() 244 memcpy(pattrib->ra, get_bssid(pmlmepriv), ETH_ALEN); in r8712_update_attrib() 245 memcpy(pattrib->ta, pattrib->src, ETH_ALEN); in r8712_update_attrib() [all …]
|
D | rtl871x_recv.c | 296 struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib; in sta2sta_data_frame() local 302 bool bmcast = is_multicast_ether_addr(pattrib->dst); in sta2sta_data_frame() 307 if (!memcmp(myhwaddr, pattrib->src, ETH_ALEN)) in sta2sta_data_frame() 309 if ((memcmp(myhwaddr, pattrib->dst, ETH_ALEN)) && (!bmcast)) in sta2sta_data_frame() 311 if (is_zero_ether_addr(pattrib->bssid) || in sta2sta_data_frame() 313 (memcmp(pattrib->bssid, mybssid, ETH_ALEN))) in sta2sta_data_frame() 315 sta_addr = pattrib->src; in sta2sta_data_frame() 320 if (memcmp(pattrib->bssid, pattrib->src, ETH_ALEN)) in sta2sta_data_frame() 322 sta_addr = pattrib->bssid; in sta2sta_data_frame() 328 if (!is_multicast_ether_addr(pattrib->bssid)) in sta2sta_data_frame() [all …]
|
D | rtl8712_xmit.c | 53 struct pkt_attrib *pattrib) in r8712_txframes_sta_ac_pending() argument 57 int priority = pattrib->priority; in r8712_txframes_sta_ac_pending() 59 psta = pattrib->psta; in r8712_txframes_sta_ac_pending() 85 struct pkt_attrib *pattrib = &pxmitframe->attrib; in get_ff_hwaddr() local 94 switch (pattrib->priority) { in get_ff_hwaddr() 122 switch (pattrib->qsel) { in get_ff_hwaddr() 225 struct pkt_attrib *pattrib) in r8712_do_queue_select() argument 231 qsel = (unsigned int) pattrib->priority; in r8712_do_queue_select() 233 qsel = (unsigned int) pattrib->priority; in r8712_do_queue_select() 245 pattrib->qsel = qsel; in r8712_do_queue_select() [all …]
|
D | rtl8712_recv.c | 135 static void update_recvframe_attrib_from_recvstat(struct rx_pkt_attrib *pattrib, in update_recvframe_attrib_from_recvstat() argument 145 pattrib->bdecrypted = (le32_to_cpu(prxstat->rxdw0) & BIT(27)) == 0; in update_recvframe_attrib_from_recvstat() 146 pattrib->crc_err = (le32_to_cpu(prxstat->rxdw0) & BIT(14)) != 0; in update_recvframe_attrib_from_recvstat() 151 pattrib->tcpchk_valid = 1; /* valid */ in update_recvframe_attrib_from_recvstat() 153 pattrib->tcp_chkrpt = 1; /* correct */ in update_recvframe_attrib_from_recvstat() 155 pattrib->tcp_chkrpt = 0; /* incorrect */ in update_recvframe_attrib_from_recvstat() 157 pattrib->ip_chkrpt = 1; /* correct */ in update_recvframe_attrib_from_recvstat() 159 pattrib->ip_chkrpt = 0; /* incorrect */ in update_recvframe_attrib_from_recvstat() 161 pattrib->tcpchk_valid = 0; /* invalid */ in update_recvframe_attrib_from_recvstat() 163 pattrib->mcs_rate = (u8)((le32_to_cpu(prxstat->rxdw3)) & 0x3f); in update_recvframe_attrib_from_recvstat() [all …]
|
D | rtl871x_security.c | 158 struct pkt_attrib *pattrib = &((struct xmit_frame *) in r8712_wep_encrypt() local 167 if ((pattrib->encrypt == _WEP40_) || (pattrib->encrypt == _WEP104_)) { in r8712_wep_encrypt() 170 for (curfragnum = 0; curfragnum < pattrib->nr_frags; in r8712_wep_encrypt() 172 iv = pframe + pattrib->hdrlen; in r8712_wep_encrypt() 177 payload = pframe + pattrib->iv_len + pattrib->hdrlen; in r8712_wep_encrypt() 178 if ((curfragnum + 1) == pattrib->nr_frags) { in r8712_wep_encrypt() 179 length = pattrib->last_txcmdsz - in r8712_wep_encrypt() 180 pattrib->hdrlen - in r8712_wep_encrypt() 181 pattrib->iv_len - in r8712_wep_encrypt() 182 pattrib->icv_len; in r8712_wep_encrypt() [all …]
|
D | xmit_linux.c | 66 void r8712_set_qos(struct pkt_file *ppktfile, struct pkt_attrib *pattrib) in r8712_set_qos() argument 76 if (pattrib->ether_type == 0x0800) { in r8712_set_qos() 86 if (pattrib->ether_type == 0x888e) in r8712_set_qos() 89 pattrib->priority = UserPriority; in r8712_set_qos() 90 pattrib->hdrlen = WLAN_HDR_A3_QOS_LEN; in r8712_set_qos() 91 pattrib->subtype = WIFI_QOS_DATA_TYPE; in r8712_set_qos()
|
D | usb_ops_linux.c | 336 struct pkt_attrib *pattrib = &pxmitframe->attrib; in usb_write_port_complete() local 338 switch (pattrib->priority) { in usb_write_port_complete() 392 struct pkt_attrib *pattrib = &pxmitframe->attrib; in r8712_usb_write_port() local 402 switch (pattrib->priority) { in r8712_usb_write_port()
|
/drivers/staging/rtl8188eu/core/ |
D | rtw_xmit.c | 245 struct pkt_attrib *pattrib = &pxmitframe->attrib; in update_attrib_vcs_info() local 246 struct sta_info *psta = pattrib->psta; in update_attrib_vcs_info() 250 if (pattrib->nr_frags != 1) in update_attrib_vcs_info() 253 sz = pattrib->last_txcmdsz; in update_attrib_vcs_info() 263 pattrib->vcs_mode = RTS_CTS; in update_attrib_vcs_info() 266 pattrib->vcs_mode = RTS_CTS; in update_attrib_vcs_info() 268 pattrib->vcs_mode = CTS_TO_SELF; in update_attrib_vcs_info() 270 pattrib->vcs_mode = NONE_VCS; in update_attrib_vcs_info() 275 if ((pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_ATHEROS) && pattrib->ampdu_en && in update_attrib_vcs_info() 277 pattrib->vcs_mode = CTS_TO_SELF; in update_attrib_vcs_info() [all …]
|
D | rtw_recv.c | 422 struct rx_pkt_attrib *pattrib; in portctrl() local 431 pattrib = &pfhdr->attrib; in portctrl() 432 psta_addr = pattrib->ta; in portctrl() 465 if (pattrib->bdecrypted == 0) in portctrl() 466 …RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, ("%s:prxstat->decrypted=%x\n", __func__, pattrib->bd… in portctrl() 519 struct rx_pkt_attrib *pattrib = &precv_frame->attrib; in process_pwrbit_data() local 523 psta = rtw_get_stainfo(pstapriv, pattrib->src); in process_pwrbit_data() 544 struct rx_pkt_attrib *pattrib = &precv_frame->attrib; in process_wmmps_data() local 548 psta = rtw_get_stainfo(pstapriv, pattrib->src); in process_wmmps_data() 562 switch (pattrib->priority) { in process_wmmps_data() [all …]
|
D | rtw_security.c | 137 struct pkt_attrib *pattrib = &pxmitframe->attrib; in rtw_wep_encrypt() local 148 if ((pattrib->encrypt != _WEP40_) && (pattrib->encrypt != _WEP104_)) in rtw_wep_encrypt() 169 for (curfragnum = 0; curfragnum < pattrib->nr_frags; curfragnum++) { in rtw_wep_encrypt() 170 if (curfragnum + 1 == pattrib->nr_frags) in rtw_wep_encrypt() 171 length = pattrib->last_txcmdsz; in rtw_wep_encrypt() 180 memmove(skb->data + 4, skb->data, pattrib->hdrlen); in rtw_wep_encrypt() 184 if (crypto_ops->encrypt_mpdu(skb, pattrib->hdrlen, crypto_private)) { in rtw_wep_encrypt() 587 struct pkt_attrib *pattrib = &pxmitframe->attrib; in rtw_tkip_encrypt() local 599 if (pattrib->encrypt == _TKIP_) { in rtw_tkip_encrypt() 600 if (pattrib->psta) in rtw_tkip_encrypt() [all …]
|
D | rtw_mlme_ext.c | 183 void update_mgntframe_attrib(struct adapter *padapter, struct pkt_attrib *pattrib) in update_mgntframe_attrib() argument 187 memset((u8 *)(pattrib), 0, sizeof(struct pkt_attrib)); in update_mgntframe_attrib() 189 pattrib->hdrlen = 24; in update_mgntframe_attrib() 190 pattrib->nr_frags = 1; in update_mgntframe_attrib() 191 pattrib->priority = 7; in update_mgntframe_attrib() 192 pattrib->mac_id = 0; in update_mgntframe_attrib() 193 pattrib->qsel = 0x12; in update_mgntframe_attrib() 195 pattrib->pktlen = 0; in update_mgntframe_attrib() 198 pattrib->raid = 6;/* b mode */ in update_mgntframe_attrib() 200 pattrib->raid = 5;/* a/g mode */ in update_mgntframe_attrib() [all …]
|
/drivers/staging/rtl8723bs/core/ |
D | rtw_xmit.c | 358 struct pkt_attrib *pattrib = &pxmitframe->attrib; in update_attrib_vcs_info() local 363 if (pattrib->nr_frags != 1) in update_attrib_vcs_info() 366 sz = pattrib->last_txcmdsz; in update_attrib_vcs_info() 374 pattrib->vcs_mode = RTS_CTS; in update_attrib_vcs_info() 376 if (pattrib->rtsen) in update_attrib_vcs_info() 377 pattrib->vcs_mode = RTS_CTS; in update_attrib_vcs_info() 378 else if (pattrib->cts2self) in update_attrib_vcs_info() 379 pattrib->vcs_mode = CTS_TO_SELF; in update_attrib_vcs_info() 381 pattrib->vcs_mode = NONE_VCS; in update_attrib_vcs_info() 386 if ((pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_ATHEROS) && (pattrib->ampdu_en == true) && in update_attrib_vcs_info() [all …]
|
D | rtw_recv.c | 553 struct rx_pkt_attrib *pattrib; in portctrl() local 561 pattrib = &pfhdr->attrib; in portctrl() 562 psta_addr = pattrib->ta; in portctrl() 598 if (pattrib->bdecrypted == 0) in portctrl() 599 …RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, ("portctrl:prxstat->decrypted =%x\n", pattrib->bdecr… in portctrl() 652 struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib; in process_pwrbit_data() local 656 psta = rtw_get_stainfo(pstapriv, pattrib->src); in process_pwrbit_data() 687 struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib; in process_wmmps_data() local 691 psta = rtw_get_stainfo(pstapriv, pattrib->src); in process_wmmps_data() 705 switch (pattrib->priority) { in process_wmmps_data() [all …]
|
D | rtw_mlme_ext.c | 2163 struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib; in OnAction_sa_query() local 2187 printk("pattrib->pktlen = %d =>", pattrib->pkt_len); in OnAction_sa_query() 2188 for (pp = 0; pp < pattrib->pkt_len; pp++) in OnAction_sa_query() 2279 void update_mgntframe_attrib(struct adapter *padapter, struct pkt_attrib *pattrib) in update_mgntframe_attrib() argument 2286 pattrib->hdrlen = 24; in update_mgntframe_attrib() 2287 pattrib->nr_frags = 1; in update_mgntframe_attrib() 2288 pattrib->priority = 7; in update_mgntframe_attrib() 2289 pattrib->mac_id = 0; in update_mgntframe_attrib() 2290 pattrib->qsel = 0x12; in update_mgntframe_attrib() 2292 pattrib->pktlen = 0; in update_mgntframe_attrib() [all …]
|
D | rtw_security.c | 225 struct pkt_attrib *pattrib = &((struct xmit_frame *)pxmitframe)->attrib; in rtw_wep_encrypt() local 236 if ((pattrib->encrypt == _WEP40_) || (pattrib->encrypt == _WEP104_)) { in rtw_wep_encrypt() 239 for (curfragnum = 0; curfragnum < pattrib->nr_frags; curfragnum++) { in rtw_wep_encrypt() 240 iv = pframe+pattrib->hdrlen; in rtw_wep_encrypt() 243 payload = pframe+pattrib->iv_len+pattrib->hdrlen; in rtw_wep_encrypt() 245 if ((curfragnum+1) == pattrib->nr_frags) { /* the last fragment */ in rtw_wep_encrypt() 247 length = pattrib->last_txcmdsz-pattrib->hdrlen-pattrib->iv_len-pattrib->icv_len; in rtw_wep_encrypt() 256 length = pxmitpriv->frag_len-pattrib->hdrlen-pattrib->iv_len-pattrib->icv_len; in rtw_wep_encrypt() 267 WEP_SW_ENC_CNT_INC(psecuritypriv, pattrib->ra); in rtw_wep_encrypt() 667 struct pkt_attrib *pattrib = &((struct xmit_frame *)pxmitframe)->attrib; in rtw_tkip_encrypt() local [all …]
|
/drivers/staging/rtl8188eu/hal/ |
D | rtl8188e_rxdesc.c | 15 struct rx_pkt_attrib *pattrib = &prframe->attrib; in process_rssi() local 25 signal_stat->total_val += pattrib->phy_info.SignalStrength; in process_rssi() 32 struct rx_pkt_attrib *pattrib; in process_link_qual() local 38 pattrib = &prframe->attrib; in process_link_qual() 48 signal_stat->total_val += pattrib->phy_info.SignalQuality; in process_link_qual() 64 struct rx_pkt_attrib *pattrib; in update_recvframe_attrib_88e() local 74 pattrib = &precvframe->attrib; in update_recvframe_attrib_88e() 75 memset(pattrib, 0, sizeof(struct rx_pkt_attrib)); in update_recvframe_attrib_88e() 77 pattrib->crc_err = (u8)((le32_to_cpu(report.rxdw0) >> 14) & 0x1);/* u8)prxreport->crc32; */ in update_recvframe_attrib_88e() 80 pattrib->pkt_rpt_type = (u8)((le32_to_cpu(report.rxdw3) >> 14) & 0x3);/* prxreport->rpt_sel; */ in update_recvframe_attrib_88e() [all …]
|
D | rtl8188eu_xmit.c | 86 static void fill_txdesc_sectype(struct pkt_attrib *pattrib, struct tx_desc *ptxdesc) in fill_txdesc_sectype() argument 88 if ((pattrib->encrypt > 0) && !pattrib->bswenc) { in fill_txdesc_sectype() 89 switch (pattrib->encrypt) { in fill_txdesc_sectype() 112 static void fill_txdesc_vcs(struct pkt_attrib *pattrib, __le32 *pdw) in fill_txdesc_vcs() argument 114 switch (pattrib->vcs_mode) { in fill_txdesc_vcs() 125 if (pattrib->vcs_mode) { in fill_txdesc_vcs() 128 if (pattrib->ht_en) { in fill_txdesc_vcs() 129 *pdw |= (pattrib->bwmode & HT_CHANNEL_WIDTH_40) ? cpu_to_le32(BIT(27)) : 0; in fill_txdesc_vcs() 131 if (pattrib->ch_offset == HAL_PRIME_CHNL_OFFSET_LOWER) in fill_txdesc_vcs() 133 else if (pattrib->ch_offset == HAL_PRIME_CHNL_OFFSET_UPPER) in fill_txdesc_vcs() [all …]
|
D | rtl8188e_cmd.c | 430 struct pkt_attrib *pattrib; in SetFwRsvdPagePkt() local 518 pattrib = &pmgntframe->attrib; in SetFwRsvdPagePkt() 519 update_mgntframe_attrib(adapt, pattrib); in SetFwRsvdPagePkt() 520 pattrib->qsel = 0x10; in SetFwRsvdPagePkt() 521 pattrib->last_txcmdsz = TotalPacketLen - TXDESC_OFFSET; in SetFwRsvdPagePkt() 522 pattrib->pktlen = pattrib->last_txcmdsz; in SetFwRsvdPagePkt()
|
/drivers/staging/rtl8723bs/hal/ |
D | rtl8723bs_recv.c | 25 struct rx_pkt_attrib *pattrib; in update_recvframe_attrib() local 36 pattrib = &precvframe->u.hdr.attrib; in update_recvframe_attrib() 37 memset(pattrib, 0, sizeof(struct rx_pkt_attrib)); in update_recvframe_attrib() 40 pattrib->pkt_rpt_type = prxreport->c2h_ind ? C2H_PACKET : NORMAL_RX; in update_recvframe_attrib() 43 if (pattrib->pkt_rpt_type == NORMAL_RX) { in update_recvframe_attrib() 46 pattrib->pkt_len = (u16)prxreport->pktlen; in update_recvframe_attrib() 47 pattrib->drvinfo_sz = (u8)(prxreport->drvinfosize << 3); in update_recvframe_attrib() 48 pattrib->physt = (u8)prxreport->physt; in update_recvframe_attrib() 50 pattrib->crc_err = (u8)prxreport->crc32; in update_recvframe_attrib() 51 pattrib->icv_err = (u8)prxreport->icverr; in update_recvframe_attrib() [all …]
|
D | rtl8723b_rxdesc.c | 13 struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib; in process_rssi() local 26 signal_stat->total_val += pattrib->phy_info.SignalStrength; in process_rssi() 34 struct rx_pkt_attrib *pattrib; in process_link_qual() local 40 pattrib = &prframe->u.hdr.attrib; in process_link_qual() 52 signal_stat->total_val += pattrib->phy_info.SignalQuality; in process_link_qual()
|
D | rtl8723b_hal_init.c | 2876 u8 BWMapping_8723B(struct adapter *Adapter, struct pkt_attrib *pattrib) in BWMapping_8723B() argument 2884 if (pattrib->bwmode == CHANNEL_WIDTH_80) in BWMapping_8723B() 2886 else if (pattrib->bwmode == CHANNEL_WIDTH_40) in BWMapping_8723B() 2891 if ((pattrib->bwmode == CHANNEL_WIDTH_40) || (pattrib->bwmode == CHANNEL_WIDTH_80)) in BWMapping_8723B() 2904 u8 SCMapping_8723B(struct adapter *Adapter, struct pkt_attrib *pattrib) in SCMapping_8723B() argument 2912 if (pattrib->bwmode == CHANNEL_WIDTH_80) { in SCMapping_8723B() 2914 } else if (pattrib->bwmode == CHANNEL_WIDTH_40) { in SCMapping_8723B() 2936 if (pattrib->bwmode == CHANNEL_WIDTH_40) { in SCMapping_8723B() 2938 } else if (pattrib->bwmode == CHANNEL_WIDTH_20) { in SCMapping_8723B() 2977 static u8 fill_txdesc_sectype(struct pkt_attrib *pattrib) in fill_txdesc_sectype() argument [all …]
|
D | rtl8723b_cmd.c | 1434 struct pkt_attrib *pattrib; in rtl8723b_set_FwRsvdPagePkt() local 1771 pattrib = &pcmdframe->attrib; in rtl8723b_set_FwRsvdPagePkt() 1772 update_mgntframe_attrib(padapter, pattrib); in rtl8723b_set_FwRsvdPagePkt() 1773 pattrib->qsel = 0x10; in rtl8723b_set_FwRsvdPagePkt() 1774 pattrib->pktlen = pattrib->last_txcmdsz = TotalPacketLen - TxDescOffset; in rtl8723b_set_FwRsvdPagePkt() 1820 struct pkt_attrib *pattrib; in rtl8723b_set_AP_FwRsvdPagePkt() local 1905 pattrib = &pcmdframe->attrib; in rtl8723b_set_AP_FwRsvdPagePkt() 1906 update_mgntframe_attrib(padapter, pattrib); in rtl8723b_set_AP_FwRsvdPagePkt() 1907 pattrib->qsel = 0x10; in rtl8723b_set_AP_FwRsvdPagePkt() 1908 pattrib->pktlen = TotalPacketLen - TxDescOffset; in rtl8723b_set_AP_FwRsvdPagePkt() [all …]
|
/drivers/staging/rtl8723bs/os_dep/ |
D | recv_linux.c | 60 struct rx_pkt_attrib *pattrib; in rtw_os_alloc_msdu_pkt() local 62 pattrib = &prframe->u.hdr.attrib; in rtw_os_alloc_msdu_pkt() 84 memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src, ETH_ALEN); in rtw_os_alloc_msdu_pkt() 85 memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst, ETH_ALEN); in rtw_os_alloc_msdu_pkt() 91 memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src, ETH_ALEN); in rtw_os_alloc_msdu_pkt() 92 memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->dst, ETH_ALEN); in rtw_os_alloc_msdu_pkt() 98 void rtw_os_recv_indicate_pkt(struct adapter *padapter, _pkt *pkt, struct rx_pkt_attrib *pattrib) in rtw_os_recv_indicate_pkt() argument 109 int bmcast = IS_MCAST(pattrib->dst); in rtw_os_recv_indicate_pkt() 111 if (memcmp(pattrib->dst, myid(&padapter->eeprompriv), ETH_ALEN)) { in rtw_os_recv_indicate_pkt() 116 psta = rtw_get_stainfo(pstapriv, pattrib->dst); in rtw_os_recv_indicate_pkt() [all …]
|
/drivers/staging/rtl8188eu/os_dep/ |
D | usb_ops_linux.c | 43 struct rx_pkt_attrib *pattrib = NULL; in recvbuf2recvframe() local 74 pattrib = &precvframe->attrib; in recvbuf2recvframe() 76 if ((pattrib->crc_err) || (pattrib->icv_err)) { in recvbuf2recvframe() 77 …DBG_88E("%s: RX Warning! crc_err=%d icv_err=%d, skip!\n", __func__, pattrib->crc_err, pattrib->icv… in recvbuf2recvframe() 83 if ((pattrib->physt) && (pattrib->pkt_rpt_type == NORMAL_RX)) in recvbuf2recvframe() 86 pkt_offset = RXDESC_SIZE + pattrib->drvinfo_sz + pattrib->shift_sz + pattrib->pkt_len; in recvbuf2recvframe() 88 if ((pattrib->pkt_len <= 0) || (pkt_offset > transfer_len)) { in recvbuf2recvframe() 98 if (pattrib->qos) /* Qos data, wireless lan header length is 26 */ in recvbuf2recvframe() 103 skb_len = pattrib->pkt_len; in recvbuf2recvframe() 107 if ((pattrib->mfrag == 1) && (pattrib->frag_num == 0)) { in recvbuf2recvframe() [all …]
|
D | recv_linux.c | 86 struct rx_pkt_attrib *pattrib = &precv_frame->attrib; in rtw_recv_indicatepkt() local 87 bool mcast = is_multicast_ether_addr(pattrib->dst); in rtw_recv_indicatepkt() 89 if (memcmp(pattrib->dst, myid(&padapter->eeprompriv), in rtw_recv_indicatepkt() 95 psta = rtw_get_stainfo(pstapriv, pattrib->dst); in rtw_recv_indicatepkt()
|