Searched refs:msdu (Results 1 - 25 of 35) sorted by relevance

12

/linux-master/drivers/net/wireless/ath/ath10k/
H A Dhtt_tx.c586 "htt tx complete msdu id:%u ,flags1:%x\n",
1179 int ath10k_htt_mgmt_tx(struct ath10k_htt *htt, struct sk_buff *msdu) argument
1185 struct ath10k_skb_cb *skb_cb = ATH10K_SKB_CB(msdu);
1186 u8 vdev_id = ath10k_htt_tx_get_vdev_id(ar, msdu);
1191 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)msdu->data;
1196 res = ath10k_htt_tx_alloc_msdu_id(htt, msdu);
1208 skb_put(msdu, sizeof(struct ieee80211_mmie_16));
1212 skb_put(msdu, IEEE80211_GCMP_MIC_LEN);
1214 skb_put(msdu, IEEE80211_CCMP_MIC_LEN);
1224 skb_cb->paddr = dma_map_single(dev, msdu
1268 ath10k_htt_tx_hl(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, struct sk_buff *msdu) argument
1383 ath10k_htt_tx_32(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, struct sk_buff *msdu) argument
1588 ath10k_htt_tx_64(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, struct sk_buff *msdu) argument
[all...]
H A Dhtt_rx.c321 struct sk_buff *msdu; local
331 msdu = htt->rx_ring.netbufs_ring[idx];
341 ATH10K_SKB_RXCB(msdu)->paddr,
342 msdu->len + skb_tailroom(msdu),
345 msdu->data, msdu->len + skb_tailroom(msdu));
347 return msdu;
350 /* return: < 0 fatal error, 0 - non chained msdu,
357 struct sk_buff *msdu; local
468 struct sk_buff *msdu; local
498 ath10k_htt_rx_handle_amsdu_mon_32(struct ath10k_htt *htt, struct sk_buff *msdu, struct htt_rx_in_ord_msdu_desc **msdu_desc) argument
575 ath10k_htt_rx_handle_amsdu_mon_64(struct ath10k_htt *htt, struct sk_buff *msdu, struct htt_rx_in_ord_msdu_desc_ext **msdu_desc) argument
660 struct sk_buff *msdu; local
725 struct sk_buff *msdu; local
1418 ath10k_htt_rx_h_undecap_raw(struct ath10k *ar, struct sk_buff *msdu, struct ieee80211_rx_status *status, enum htt_rx_mpdu_encrypt_type enctype, bool is_decrypted, const u8 first_hdr[64]) argument
1547 ath10k_htt_rx_h_undecap_nwifi(struct ath10k *ar, struct sk_buff *msdu, struct ieee80211_rx_status *status, const u8 first_hdr[64], enum htt_rx_mpdu_encrypt_type enctype) argument
1608 ath10k_htt_rx_h_find_rfc1042(struct ath10k *ar, struct sk_buff *msdu, enum htt_rx_mpdu_encrypt_type enctype) argument
1651 ath10k_htt_rx_h_undecap_eth(struct ath10k *ar, struct sk_buff *msdu, struct ieee80211_rx_status *status, const u8 first_hdr[64], enum htt_rx_mpdu_encrypt_type enctype) argument
1715 ath10k_htt_rx_h_undecap_snap(struct ath10k *ar, struct sk_buff *msdu, struct ieee80211_rx_status *status, const u8 first_hdr[64], enum htt_rx_mpdu_encrypt_type enctype) argument
1755 ath10k_htt_rx_h_undecap(struct ath10k *ar, struct sk_buff *msdu, struct ieee80211_rx_status *status, u8 first_hdr[64], enum htt_rx_mpdu_encrypt_type enctype, bool is_decrypted) argument
1841 ath10k_htt_rx_h_csum_offload(struct ath10k_hw_params *hw, struct sk_buff *msdu) argument
1932 struct sk_buff *msdu, *temp; local
2113 struct sk_buff *msdu; local
3152 struct sk_buff *msdu; local
3214 struct sk_buff *msdu; local
[all...]
H A Dtxrx.c53 struct sk_buff *msdu; local
67 msdu = idr_find(&htt->pending_tx, tx_done->msdu_id);
68 if (!msdu) {
75 skb_cb = ATH10K_SKB_CB(msdu);
95 dma_unmap_single(dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
97 ath10k_report_offchan_tx(htt->ar, msdu);
99 info = IEEE80211_SKB_CB(msdu);
133 status.skb = msdu;
145 /* we do not own the msdu anymore */
H A Dwmi-ops.h143 int (*cleanup_mgmt_tx_send)(struct ath10k *ar, struct sk_buff *msdu);
455 ath10k_wmi_cleanup_mgmt_tx_send(struct ath10k *ar, struct sk_buff *msdu) argument
460 return ar->wmi.ops->cleanup_mgmt_tx_send(ar, msdu);
464 ath10k_wmi_mgmt_tx_send(struct ath10k *ar, struct sk_buff *msdu, argument
473 skb = ar->wmi.ops->gen_mgmt_tx_send(ar, msdu, paddr);
486 ath10k_wmi_mgmt_tx(struct ath10k *ar, struct sk_buff *msdu) argument
488 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(msdu);
495 skb = ar->wmi.ops->gen_mgmt_tx(ar, msdu);
508 ieee80211_tx_status_irqsafe(ar->hw, msdu);
H A Dhtt.h66 * for creating the HW msdu descriptor.
960 * contains the timestamp info for each TX msdu id in payload.
1877 /* FIFO for storing tx done status {ack, no-ack, discard} and msdu id */
1940 struct sk_buff *msdu);
1981 struct sk_buff *msdu)
1983 return htt->tx_ops->htt_tx(htt, txmode, msdu);
2096 /* This field is filled on the host using the msdu buffer
2458 int ath10k_htt_mgmt_tx(struct ath10k_htt *htt, struct sk_buff *msdu);
1979 ath10k_htt_tx(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode, struct sk_buff *msdu) argument
H A Dwmi-tlv.c3043 struct sk_buff *msdu)
3045 struct ath10k_skb_cb *cb = ATH10K_SKB_CB(msdu);
3078 ath10k_wmi_tlv_op_gen_mgmt_tx_send(struct ath10k *ar, struct sk_buff *msdu, argument
3081 struct ath10k_skb_cb *cb = ATH10K_SKB_CB(msdu);
3085 u32 buf_len = msdu->len;
3095 hdr = (struct ieee80211_hdr *)msdu->data;
3110 skb_put(msdu, IEEE80211_CCMP_MIC_LEN);
3123 desc_id = ath10k_wmi_mgmt_tx_alloc_msdu_id(ar, msdu, paddr);
3138 cmd->frame_len = __cpu_to_le32(msdu->len);
3149 memcpy(ptr, msdu
3042 ath10k_wmi_tlv_op_cleanup_mgmt_tx_send(struct ath10k *ar, struct sk_buff *msdu) argument
[all...]
H A Dwmi.c1948 ath10k_wmi_op_gen_mgmt_tx(struct ath10k *ar, struct sk_buff *msdu) argument
1950 struct ath10k_skb_cb *cb = ATH10K_SKB_CB(msdu);
1957 u32 buf_len = msdu->len;
1961 hdr = (struct ieee80211_hdr *)msdu->data;
1974 len = sizeof(cmd->hdr) + msdu->len;
2010 memcpy(cmd->buf, msdu->data, msdu->len);
2013 msdu, skb->len, fc & IEEE80211_FCTL_FTYPE,
2407 struct sk_buff *msdu; local
2420 msdu
9532 struct sk_buff *msdu; local
[all...]
/linux-master/drivers/net/wireless/ath/ath12k/
H A Ddp_rx.c1772 /* As the msdu is spread across multiple rx buffers,
1773 * find the offset to the start of msdu for computing
1774 * the length of the msdu in the first buffer.
1862 static void ath12k_dp_rx_h_csum_offload(struct ath12k *ar, struct sk_buff *msdu) argument
1864 struct ath12k_skb_rxcb *rxcb = ATH12K_SKB_RXCB(msdu);
1871 msdu->ip_summed = (ip_csum_fail || l4_csum_fail) ?
1956 struct sk_buff *msdu,
1961 struct ath12k_skb_rxcb *rxcb = ATH12K_SKB_RXCB(msdu);
1969 hdr = (struct ieee80211_hdr *)msdu->data;
1971 skb_pull(msdu, hdr_le
1955 ath12k_dp_rx_h_undecap_nwifi(struct ath12k *ar, struct sk_buff *msdu, enum hal_encrypt_type enctype, struct ieee80211_rx_status *status) argument
2003 ath12k_dp_rx_h_undecap_raw(struct ath12k *ar, struct sk_buff *msdu, enum hal_encrypt_type enctype, struct ieee80211_rx_status *status, bool decrypted) argument
2061 ath12k_get_dot11_hdr_from_rx_desc(struct ath12k *ar, struct sk_buff *msdu, struct ath12k_skb_rxcb *rxcb, struct ieee80211_rx_status *status, enum hal_encrypt_type enctype) argument
2105 ath12k_dp_rx_h_undecap_eth(struct ath12k *ar, struct sk_buff *msdu, enum hal_encrypt_type enctype, struct ieee80211_rx_status *status) argument
2134 ath12k_dp_rx_h_undecap(struct ath12k *ar, struct sk_buff *msdu, struct hal_rx_desc *rx_desc, enum hal_encrypt_type enctype, struct ieee80211_rx_status *status, bool decrypted) argument
2177 ath12k_dp_rx_h_find_peer(struct ath12k_base *ab, struct sk_buff *msdu) argument
2200 ath12k_dp_rx_h_mpdu(struct ath12k *ar, struct sk_buff *msdu, struct hal_rx_desc *rx_desc, struct ieee80211_rx_status *rx_status) argument
2389 ath12k_dp_rx_deliver_msdu(struct ath12k *ar, struct napi_struct *napi, struct sk_buff *msdu, struct ieee80211_rx_status *status) argument
2467 ieee80211_rx_napi(ath12k_ar_to_hw(ar), pubsta, msdu, napi); local
2470 ath12k_dp_rx_process_msdu(struct ath12k *ar, struct sk_buff *msdu, struct sk_buff_head *msdu_list, struct ieee80211_rx_status *rx_status) argument
2546 struct sk_buff *msdu; local
2597 struct sk_buff *msdu; local
2802 ath12k_dp_rx_h_verify_tkip_mic(struct ath12k *ar, struct ath12k_peer *peer, struct sk_buff *msdu) argument
2853 ieee80211_rx(ath12k_ar_to_hw(ar), msdu); local
2857 ath12k_dp_rx_h_undecap_frag(struct ath12k *ar, struct sk_buff *msdu, enum hal_encrypt_type enctype, u32 flags) argument
3179 ath12k_dp_rx_frag_h_mpdu(struct ath12k *ar, struct sk_buff *msdu, struct hal_reo_dest_ring *ring_desc) argument
3310 struct sk_buff *msdu; local
3510 ath12k_dp_rx_h_null_q_desc(struct ath12k *ar, struct sk_buff *msdu, struct ieee80211_rx_status *status, struct sk_buff_head *msdu_list) argument
3577 ath12k_dp_rx_h_reo_err(struct ath12k *ar, struct sk_buff *msdu, struct ieee80211_rx_status *status, struct sk_buff_head *msdu_list) argument
3608 ath12k_dp_rx_h_tkip_mic_err(struct ath12k *ar, struct sk_buff *msdu, struct ieee80211_rx_status *status) argument
3635 ath12k_dp_rx_h_rxdma_err(struct ath12k *ar, struct sk_buff *msdu, struct ieee80211_rx_status *status) argument
3666 ath12k_dp_rx_wbm_err(struct ath12k *ar, struct napi_struct *napi, struct sk_buff *msdu, struct sk_buff_head *msdu_list) argument
3703 struct sk_buff *msdu; local
[all...]
H A Ddp_tx.c323 ath12k_dbg_dump(ab, ATH12K_DBG_DP_TX, NULL, "dp tx msdu: ",
347 struct sk_buff *msdu, u8 mac_id,
354 skb_cb = ATH12K_SKB_CB(msdu);
356 dma_unmap_single(ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
361 dev_kfree_skb_any(msdu);
370 struct sk_buff *msdu,
378 skb_cb = ATH12K_SKB_CB(msdu);
379 info = IEEE80211_SKB_CB(msdu);
386 dma_unmap_single(ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
404 ieee80211_tx_status_skb(ath12k_ar_to_hw(ar), msdu); local
346 ath12k_dp_tx_free_txbuf(struct ath12k_base *ab, struct sk_buff *msdu, u8 mac_id, struct dp_tx_ring *tx_ring) argument
369 ath12k_dp_tx_htt_tx_complete_buf(struct ath12k_base *ab, struct sk_buff *msdu, struct dp_tx_ring *tx_ring, struct ath12k_dp_htt_wbm_tx_status *ts) argument
408 ath12k_dp_tx_process_htt_tx_complete(struct ath12k_base *ab, void *desc, u8 mac_id, struct sk_buff *msdu, struct dp_tx_ring *tx_ring) argument
446 ath12k_dp_tx_complete_msdu(struct ath12k *ar, struct sk_buff *msdu, struct hal_tx_status *ts) argument
501 ieee80211_tx_status_skb(ath12k_ar_to_hw(ar), msdu); local
538 struct sk_buff *msdu; local
[all...]
H A Ddp_mon.c797 /* TODO: add msdu start parsing logic */
805 struct sk_buff *msdu; local
810 msdu = idr_remove(&buf_ring->bufs_idr, buf_id);
813 if (unlikely(!msdu)) {
819 rxcb = ATH12K_SKB_RXCB(msdu);
821 msdu->len + skb_tailroom(msdu),
825 mon_mpdu->tail->next = msdu;
827 mon_mpdu->tail = msdu;
863 static void ath12k_dp_mon_rx_msdus_set_payload(struct ath12k *ar, struct sk_buff *msdu) argument
879 struct sk_buff *msdu, *mpdu_buf, *prev_buf; local
1061 ath12k_dp_mon_rx_deliver_msdu(struct ath12k *ar, struct napi_struct *napi, struct sk_buff *msdu, struct ieee80211_rx_status *status) argument
1134 ieee80211_rx_napi(ath12k_ar_to_hw(ar), pubsta, msdu, napi); local
1912 struct sk_buff *msdu; local
[all...]
H A Ddp_rx.h130 ath12k_dp_rx_h_find_peer(struct ath12k_base *ab, struct sk_buff *msdu);
138 ath12k_dp_rx_h_find_peer(struct ath12k_base *ab, struct sk_buff *msdu);
H A Dhal_rx.c292 struct hal_rx_msdu_details *msdu; local
298 msdu = &link->msdu_link[0];
299 *rbm = le32_get_bits(msdu->buf_addr_info.info1,
303 msdu = &link->msdu_link[i];
305 val = le32_get_bits(msdu->buf_addr_info.info0,
311 *msdu_cookies = le32_get_bits(msdu->buf_addr_info.info1,
/linux-master/drivers/net/wireless/ath/ath11k/
H A Ddp_rx.c1776 /* As the msdu is spread across multiple rx buffers,
1777 * find the offset to the start of msdu for computing
1778 * the length of the msdu in the first buffer.
1866 static void ath11k_dp_rx_h_csum_offload(struct ath11k *ar, struct sk_buff *msdu) argument
1868 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu);
1876 msdu->ip_summed = (ip_csum_fail || l4_csum_fail) ?
1961 struct sk_buff *msdu,
1966 struct ath11k_skb_rxcb *rxcb = ATH11K_SKB_RXCB(msdu);
1976 hdr = (struct ieee80211_hdr *)msdu->data;
1980 skb_pull(msdu, ieee80211_hdrle
1960 ath11k_dp_rx_h_undecap_nwifi(struct ath11k *ar, struct sk_buff *msdu, u8 *first_hdr, enum hal_encrypt_type enctype, struct ieee80211_rx_status *status) argument
2039 ath11k_dp_rx_h_undecap_raw(struct ath11k *ar, struct sk_buff *msdu, enum hal_encrypt_type enctype, struct ieee80211_rx_status *status, bool decrypted) argument
2098 ath11k_dp_rx_h_find_rfc1042(struct ath11k *ar, struct sk_buff *msdu, enum hal_encrypt_type enctype) argument
2125 ath11k_dp_rx_h_undecap_eth(struct ath11k *ar, struct sk_buff *msdu, u8 *first_hdr, enum hal_encrypt_type enctype, struct ieee80211_rx_status *status) argument
2173 ath11k_dp_rx_h_undecap(struct ath11k *ar, struct sk_buff *msdu, struct hal_rx_desc *rx_desc, enum hal_encrypt_type enctype, struct ieee80211_rx_status *status, bool decrypted) argument
2220 ath11k_dp_rx_h_find_peer(struct ath11k_base *ab, struct sk_buff *msdu) argument
2242 ath11k_dp_rx_h_mpdu(struct ath11k *ar, struct sk_buff *msdu, struct hal_rx_desc *rx_desc, struct ieee80211_rx_status *rx_status) argument
2437 ath11k_dp_rx_deliver_msdu(struct ath11k *ar, struct napi_struct *napi, struct sk_buff *msdu, struct ieee80211_rx_status *status) argument
2516 ath11k_dp_rx_process_msdu(struct ath11k *ar, struct sk_buff *msdu, struct sk_buff_head *msdu_list, struct ieee80211_rx_status *rx_status) argument
2602 struct sk_buff *msdu; local
2644 struct sk_buff *msdu; local
3210 ath11k_dp_rx_h_verify_tkip_mic(struct ath11k *ar, struct ath11k_peer *peer, struct sk_buff *msdu) argument
3265 ath11k_dp_rx_h_undecap_frag(struct ath11k *ar, struct sk_buff *msdu, enum hal_encrypt_type enctype, u32 flags) argument
3560 ath11k_dp_rx_frag_h_mpdu(struct ath11k *ar, struct sk_buff *msdu, u32 *ring_desc) argument
3696 struct sk_buff *msdu; local
3898 ath11k_dp_rx_h_null_q_desc(struct ath11k *ar, struct sk_buff *msdu, struct ieee80211_rx_status *status, struct sk_buff_head *msdu_list) argument
3962 ath11k_dp_rx_h_reo_err(struct ath11k *ar, struct sk_buff *msdu, struct ieee80211_rx_status *status, struct sk_buff_head *msdu_list) argument
3993 ath11k_dp_rx_h_tkip_mic_err(struct ath11k *ar, struct sk_buff *msdu, struct ieee80211_rx_status *status) argument
4019 ath11k_dp_rx_h_rxdma_err(struct ath11k *ar, struct sk_buff *msdu, struct ieee80211_rx_status *status) argument
4042 ath11k_dp_rx_wbm_err(struct ath11k *ar, struct napi_struct *napi, struct sk_buff *msdu, struct sk_buff_head *msdu_list) argument
4079 struct sk_buff *msdu; local
4639 struct sk_buff *msdu = NULL, *last = NULL; local
4824 ath11k_dp_rx_msdus_set_payload(struct ath11k *ar, struct sk_buff *msdu) argument
4841 struct sk_buff *msdu, *prev_buf; local
5279 struct sk_buff *msdu = NULL, *last = NULL; local
[all...]
H A Ddp_tx.c264 ath11k_dbg_dump(ab, ATH11K_DBG_DP_TX, NULL, "dp tx msdu: ",
291 struct sk_buff *msdu; local
295 msdu = idr_remove(&tx_ring->txbuf_idr, msdu_id);
298 if (unlikely(!msdu)) {
304 skb_cb = ATH11K_SKB_CB(msdu);
306 dma_unmap_single(ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
307 dev_kfree_skb_any(msdu);
320 struct sk_buff *msdu; local
327 msdu = idr_remove(&tx_ring->txbuf_idr, ts->msdu_id);
330 if (unlikely(!msdu)) {
430 ath11k_dp_tx_cache_peer_stats(struct ath11k *ar, struct sk_buff *msdu, struct hal_tx_status *ts) argument
546 ath11k_dp_tx_complete_msdu(struct ath11k *ar, struct sk_buff *msdu, struct hal_tx_status *ts) argument
684 struct sk_buff *msdu; local
[all...]
H A Ddp.c1027 struct sk_buff *msdu = skb; local
1029 dma_unmap_single(ab->dev, ATH11K_SKB_CB(msdu)->paddr, msdu->len,
1032 dev_kfree_skb_any(msdu);
H A Dhal_rx.c297 struct hal_rx_msdu_details *msdu; local
302 msdu = &link->msdu_link[0];
304 msdu->buf_addr_info.info1);
307 msdu = &link->msdu_link[i];
310 msdu->buf_addr_info.info0)) {
315 msdu->buf_addr_info.info1);
/linux-master/net/mac80211/
H A Dsta_info.h438 u64 msdu[IEEE80211_NUM_TIDS + 1]; member in struct:ieee80211_sta_rx_stats
494 * @tx_stats.msdu: # of transmitted MSDUs per TID
560 u64 msdu[IEEE80211_NUM_TIDS + 1]; member in struct:link_sta_info::__anon2999
/linux-master/drivers/net/wireless/mediatek/mt76/mt7921/
H A Dmac.c509 u32 msdu, info = le32_to_cpu(tx_info[i]); local
535 msdu = FIELD_GET(MT_TX_FREE_MSDU_ID, info);
544 txwi = mt76_token_release(mdev, msdu, &wake);
/linux-master/drivers/net/wireless/mediatek/mt76/mt7915/
H A Dmac.c901 u32 msdu, info; local
954 msdu = (info >> (15 * i)) & MT_TX_FREE_MSDU_ID_V3;
955 if (msdu == MT_TX_FREE_MSDU_ID_V3)
958 msdu = FIELD_GET(MT_TX_FREE_MSDU_ID, info);
961 txwi = mt76_token_release(mdev, msdu, &wake);
991 u16 msdu = le16_to_cpu(info[i]); local
993 txwi = mt76_token_release(mdev, msdu, &wake);
/linux-master/drivers/net/wireless/mediatek/mt76/mt7925/
H A Dmac.c1076 u32 msdu, info; local
1115 msdu = (info >> (15 * i)) & MT_TXFREE_INFO_MSDU_ID;
1116 if (msdu == MT_TXFREE_INFO_MSDU_ID)
1120 txwi = mt76_token_release(mdev, msdu, &wake);
/linux-master/drivers/net/ethernet/freescale/enetc/
H A Denetc_qos.c646 sfi_config->msdu =
825 to->msdu[0] = from->maxoctets & 0xFF;
826 to->msdu[1] = (from->maxoctets >> 8) & 0xFF;
827 to->msdu[2] = (from->maxoctets >> 16) & 0xFF;
H A Denetc_hw.h822 __le16 msdu; member in struct:sfi_conf
901 u8 msdu[3]; member in struct:sgce
/linux-master/drivers/net/ieee802154/
H A Dca8210.c296 * @nextmsduhandle: msdu handle to pass to the 15.4 MAC layer for the
413 u8 msdu[MAX_DATA_SIZE]; member in struct:mcps_data_request_pset
1421 * @msdu: Pointer to Data
1435 u8 *msdu,
1469 memcpy(command.pdata.data_req.msdu, msdu, msdu_length);
1470 psec = (struct secspec *)(command.pdata.data_req.msdu + msdu_length);
1778 "received erroneously large msdu length!\n"
1834 /* Copy msdu to skb */
1429 mcps_data_request( u8 src_addr_mode, u8 dst_address_mode, u16 dst_pan_id, union macaddr *dst_addr, u8 msdu_length, u8 *msdu, u8 msdu_handle, u8 tx_options, struct secspec *security, void *device_ref ) argument
/linux-master/drivers/net/wireless/mediatek/mt76/mt7996/
H A Dmac.c1112 u32 msdu, info; local
1155 msdu = (info >> (15 * i)) & MT_TXFREE_INFO_MSDU_ID;
1156 if (msdu == MT_TXFREE_INFO_MSDU_ID)
1160 txwi = mt76_token_release(mdev, msdu, &wake);
/linux-master/include/net/bluetooth/
H A Dl2cap.h364 __le16 msdu; member in struct:l2cap_conf_efs

Completed in 355 milliseconds

12