nRF WiFi
Loading...
Searching...
No Matches
fmac_util.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2024 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
11#ifndef __FMAC_UTIL_H__
12#define __FMAC_UTIL_H__
13
14#include "fmac_structs_common.h"
15
16#include "fmac_structs_common.h"
17#ifdef NRF70_SYSTEM_MODE
18#include "system/fmac_structs.h"
19#endif /* NRF70_SYSTEM_MODE */
20#include "common/pack_def.h"
21
22
23#define NRF_WIFI_FMAC_ETH_ADDR_LEN 6
24#define NRF_WIFI_FMAC_ETH_HDR_LEN 14
25
26#define NRF_WIFI_FMAC_FTYPE_DATA 0x0008
27#define NRF_WIFI_FMAC_STYPE_DATA 0x0000
28#define NRF_WIFI_FMAC_STYPE_QOS_DATA 0x0080
29
30#define NRF_WIFI_FMAC_FCTL_FTYPE 0x000c
31#define NRF_WIFI_FMAC_FCTL_PROTECTED 0x4000
32#define NRF_WIFI_FMAC_FCTL_TODS 0x0100
33#define NRF_WIFI_FMAC_FCTL_FROMDS 0x0200
34
35#define NRF_WIFI_FMAC_CIPHER_SUITE_WEP40 0x000FAC01
36#define NRF_WIFI_FMAC_CIPHER_SUITE_WEP104 0x000FAC05
37#define NRF_WIFI_FMAC_CIPHER_SUITE_TKIP 0x000FAC02
38#define NRF_WIFI_FMAC_CIPHER_SUITE_CCMP 0x000FAC04
39#define NRF_WIFI_FMAC_CIPHER_SUITE_CCMP_256 0x000FAC0A
40#define NRF_WIFI_FMAC_CIPHER_SUITE_OPEN 0x0
41#define NRF_WIFI_FMAC_CIPHER_SUITE_SMS4 0x00147201
42
43#define NRF_WIFI_FMAC_CCMP_HDR_LEN 8
44#define NRF_WIFI_FMAC_CCMP_256_HDR_LEN 8
45#define NRF_WIFI_FMAC_SMS4_HDR_LEN 18
46
47#define NRF_WIFI_FMAC_WEP_IV_LEN 4
48#define NRF_WIFI_FMAC_TKIP_IV_LEN 8
49
50#define NRF_WIFI_FCTL_TODS 0x0100
51#define NRF_WIFI_FCTL_FROMDS 0x0200
52#define NRF_WIFI_FMAC_ETH_P_8021Q 0x8100 /* 802.1Q VLAN Extended Header */
53#define NRF_WIFI_FMAC_ETH_P_8021AD 0x88A8 /* 802.1ad Service VLAN */
54#define NRF_WIFI_FMAC_ETH_P_MPLS_UC 0x8847 /* MPLS Unicast traffic */
55#define NRF_WIFI_FMAC_ETH_P_MPLS_MC 0x8848 /* MPLS Multicast traffic */
56#define NRF_WIFI_FMAC_ETH_P_IP 0x0800 /* Internet Protocol packet */
57#define NRF_WIFI_FMAC_ETH_P_IPV6 0x86DD /* IPv6 over bluebook */
58#define NRF_WIFI_FMAC_ETH_P_80221 0x8917 /* IEEE 802.21 Media Independent Handover Protocol */
59#define NRF_WIFI_FMAC_ETH_P_AARP 0x80F3 /* Appletalk AARP */
60#define NRF_WIFI_FMAC_ETH_P_IPX 0x8137 /* IPX over DIX */
61#define NRF_WIFI_FMAC_ETH_P_802_3_MIN 0x0600 /* If the value in the ethernet type is less than
62 * this value then the frame is Ethernet II.
63 * Else it is 802.3
64 */
65#define NRF_WIFI_FMAC_VLAN_PRIO_SHIFT 0x0D /* 13 bit */
66#define NRF_WIFI_FMAC_VLAN_PRIO_MASK 0xE000
67#define NRF_WIFI_FMAC_MPLS_LS_TC_MASK 0x00000E00
68#define NRF_WIFI_FMAC_MPLS_LS_TC_SHIFT 0x09
69#define NRF_WIFI_FMAC_IPV6_TOS_MASK 0x0FF0
70#define NRF_WIFI_FMAC_IPV6_TOS_SHIFT 0x04 /* 4bit */
71#define NRF_WIFI_FMAC_ETH_TYPE_MASK 0xFFFF
74 unsigned short fc;
75 unsigned short dur_id;
79 unsigned short seq_ctrl;
85 unsigned char dst[NRF_WIFI_FMAC_ETH_ADDR_LEN]; /* destination eth addr */
86 unsigned char src[NRF_WIFI_FMAC_ETH_ADDR_LEN]; /* source ether addr */
87 unsigned short proto; /* packet type ID field */
92 unsigned char dst[NRF_WIFI_FMAC_ETH_ADDR_LEN]; /* destination eth addr */
93 unsigned char src[NRF_WIFI_FMAC_ETH_ADDR_LEN]; /* source ether addr */
94 unsigned short length; /* length*/
97bool nrf_wifi_util_is_multicast_addr(const unsigned char *addr);
99bool nrf_wifi_util_is_unicast_addr(const unsigned char *addr);
100
101bool nrf_wifi_util_ether_addr_equal(const unsigned char *addr_1,
102 const unsigned char *addr_2);
103
104unsigned short nrf_wifi_util_rx_get_eth_type(void *nwb);
105unsigned short nrf_wifi_util_tx_get_eth_type(void *nwb);
106
107bool nrf_wifi_util_is_arr_zero(unsigned char *arr,
108 unsigned int arr_sz);
109
110void *wifi_fmac_priv(struct nrf_wifi_fmac_priv *def);
111void *wifi_dev_priv(struct nrf_wifi_fmac_dev_ctx *def);
112
113#ifdef NRF70_SYSTEM_MODE
114unsigned char *nrf_wifi_util_get_ra(struct nrf_wifi_fmac_vif_ctx *vif, void *nwb);
115#endif /* NRF70_SYSTEM_MODE */
116
117#endif /* __FMAC_UTIL_H__ */
unsigned char addr_1[6]
Definition fmac_util.h:2
bool nrf_wifi_util_ether_addr_equal(const unsigned char *addr_1, const unsigned char *addr_2)
bool nrf_wifi_util_is_unicast_addr(const unsigned char *addr)
bool nrf_wifi_util_is_multicast_addr(const unsigned char *addr)
unsigned char addr_2[6]
Definition fmac_util.h:3
#define NRF_WIFI_FMAC_ETH_ADDR_LEN
Header containing utility declarations for the FMAC IF Layer of the Wi-Fi driver.
Definition fmac_util.h:23
void * wifi_dev_priv(struct nrf_wifi_fmac_dev_ctx *def)
unsigned short nrf_wifi_util_tx_get_eth_type(void *nwb)
bool nrf_wifi_util_is_arr_zero(unsigned char *arr, unsigned int arr_sz)
unsigned short nrf_wifi_util_rx_get_eth_type(void *nwb)
void * wifi_fmac_priv(struct nrf_wifi_fmac_priv *def)
#define __NRF_WIFI_PKD
Definition pack_def.h:27
unsigned int addr
Definition rpu_if.h:1
unsigned short length
Definition fmac_util.h:91
unsigned char src[6]
Definition fmac_util.h:90
unsigned char dst[6]
Definition fmac_util.h:89
Definition fmac_util.h:88
Structure to hold common fmac dev context parameter data.
Definition fmac_structs_common.h:153
unsigned char src[6]
Definition fmac_util.h:83
unsigned char dst[6]
Definition fmac_util.h:82
unsigned short proto
Definition fmac_util.h:84
Definition fmac_util.h:81
unsigned char addr_1[6]
Definition fmac_util.h:73
unsigned short seq_ctrl
Definition fmac_util.h:76
unsigned char addr_4[6]
Definition fmac_util.h:77
unsigned short fc
Definition fmac_util.h:71
unsigned char addr_2[6]
Definition fmac_util.h:74
unsigned short dur_id
Definition fmac_util.h:72
unsigned char addr_3[6]
Definition fmac_util.h:75
Definition fmac_util.h:70
Structure to hold common fmac priv parameter data.
Definition fmac_structs_common.h:140
Structure to hold per VIF context information for the UMAC IF layer.
Definition fmac_structs.h:510