7#ifndef __OAL_NET_HCM_H__
8#define __OAL_NET_HCM_H__
9#if defined(_PRE_OS_VERSION_LINUX) && defined(_PRE_OS_VERSION) && (_PRE_OS_VERSION_LINUX == _PRE_OS_VERSION)
10#include <linux/version.h>
11#include <net/iw_handler.h>
12#include <linux/netdevice.h>
14#if defined(_PRE_OS_VERSION_LITEOS) && defined(_PRE_OS_VERSION) && (_PRE_OS_VERSION_LITEOS == _PRE_OS_VERSION)
16#include "lwip/netif.h"
21#include "oal_skbuff.h"
35#define OAL_DECLARE_PACKED __attribute__((__packed__))
36#define OAL_NETBUF_DEFAULT_DATA_OFFSET 48
38#define OAL_ASSOC_REQ_IE_OFFSET 28
39#define OAL_ASSOC_RSP_IE_OFFSET 30
40#define OAL_AUTH_IE_OFFSET 30
41#define OAL_FT_ACTION_IE_OFFSET 40
42#define OAL_ASSOC_RSP_FIXED_OFFSET 6
43#define OAL_PMKID_LEN 16
44#define OAL_WPA_KEY_LEN 32
45#define OAL_WPA_SEQ_LEN 16
46#define OAL_WLAN_SA_QUERY_TR_ID_LEN 2
47#define OAL_BITFIELD_LITTLE_ENDIAN 0
48#define OAL_BITFIELD_BIG_ENDIAN 1
52#define OAL_LITTLE_ENDIAN 1234
53#define OAL_BIG_ENDIAN 4321
54#define OAL_BYTE_ORDER OAL_BIG_ENDIAN
55#define OAL_BYTE_HALF_WIDTH 4
58#define MAC_ICMP_PROTOCAL 1
59#define MAC_ICMP_REQUEST 0x08
60#define MAC_ICMP_RESPONSE 0x00
65#define IPV6_ADDR_MULTICAST 0x0002U
66#define IPV6_ADDR_UNICAST 0x0001U
67#define IPV6_ADDR_SCOPE_TYPE(scope) ((scope) << 16)
68#define IPV6_ADDR_SCOPE_NODELOCAL 0x01
69#define IPV6_ADDR_SCOPE_LINKLOCAL 0x02
70#define IPV6_ADDR_SCOPE_SITELOCAL 0x05
71#define IPV6_ADDR_SCOPE_ORGLOCAL 0x08
72#define IPV6_ADDR_SCOPE_GLOBAL 0x0e
73#define IPV6_ADDR_LOOPBACK 0x0010U
74#define IPV6_ADDR_LINKLOCAL 0x0020U
75#define IPV6_ADDR_SITELOCAL 0x0040U
76#define IPV6_ADDR_RESERVED 0x2000U
78#define WLAN_DSCP_PRI_SHIFT 2
79#define WLAN_IP_PRI_SHIFT 5
80#define WLAN_IPV6_PRIORITY_MASK 0x0FF00000
81#define WLAN_IPV6_PRIORITY_SHIFT 20
84#define OAL_NDISC_ROUTER_SOLICITATION 133
85#define OAL_NDISC_ROUTER_ADVERTISEMENT 134
86#define OAL_NDISC_NEIGHBOUR_SOLICITATION 135
87#define OAL_NDISC_NEIGHBOUR_ADVERTISEMENT 136
88#define OAL_NDISC_REDIRECT 137
90#define OAL_ND_OPT_TARGET_LL_ADDR 2
91#define OAL_ND_OPT_SOURCE_LL_ADDR 1
92#define OAL_IPV6_ADDR_ANY 0x0000U
93#define OAL_IPV6_ADDR_MULTICAST 0x0002U
94#define OAL_IPV6_MAC_ADDR_LEN 16
99#define OAL_IPV4_ADDR_SIZE 4
100#define OAL_IPV6_ADDR_SIZE 16
101#define OAL_IPV6_ADDR16_SIZE 8
102#define OAL_IPV6_ADDR32_SIZE 4
103#define OAL_IP_ADDR_MAX_SIZE OAL_IPV6_ADDR_SIZE
105#define OAL_IP4_ADDR IP4_ADDR
110#define OAL_IPPROTO_UDP 17
111#define OAL_IPPROTO_ICMPV6 58
117#define SNAP_LLC_FRAME_LEN 8
118#define SNAP_LLC_LSAP 0xaa
119#define SNAP_RFC1042_ORGCODE_0 0x00
120#define SNAP_RFC1042_ORGCODE_1 0x00
121#define SNAP_RFC1042_ORGCODE_2 0x00
122#define SNAP_BTEP_ORGCODE_0 0x00
123#define SNAP_BTEP_ORGCODE_1 0x00
124#define SNAP_BTEP_ORGCODE_2 0xf8
129#define IP6_ETHER_ADDR_LEN 16
131#if defined(_PRE_OS_VERSION_LINUX) && defined(_PRE_OS_VERSION) && (_PRE_OS_VERSION_LINUX == _PRE_OS_VERSION)
132#define ETHER_ADDR_LEN 6
133#define ETHER_TYPE_LEN 2
134#define ETHER_CRC_LEN 4
135#define ETHER_HDR_LEN 14
136#define ETHER_MAX_LEN 1518
138#if defined(_PRE_OS_VERSION_LITEOS) && defined(_PRE_OS_VERSION) && (_PRE_OS_VERSION_LITEOS == _PRE_OS_VERSION)
141#define ETH_FRAME_LEN 1514
143#define ETHER_HDR_LEN ETH_HLEN
146#define ETHER_MAX_LEN (ETH_FRAME_LEN + ETHER_CRC_LEN)
149#define ETHER_MTU (ETHER_MAX_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN)
151#define ETH_SENDER_IP_ADDR_LEN 4
152#define ETH_TARGET_IP_ADDR_LEN 4
155#define ETHER_TYPE_START 0x0600
156#define ETHER_TYPE_RARP 0x8035
157#define ETHER_TYPE_PAE 0x888e
158#define ETHER_TYPE_IP 0x0800
159#define ETHER_TYPE_AARP 0x80f3
160#define ETHER_TYPE_IPX 0x8137
161#define ETHER_TYPE_ARP 0x0806
162#define ETHER_TYPE_IPV6 0x86dd
163#define ETHER_TYPE_VLAN 0x8100
164#define ETHER_TYPE_TDLS 0x890d
165#define ETHER_TYPE_WAI 0x88b4
166#define ETHER_LLTD_TYPE 0x88D9
167#define ETHER_ONE_X_TYPE 0x888E
168#define ETHER_TUNNEL_TYPE 0x88bd
169#define ETHER_TYPE_PPP_DISC 0x8863
170#define ETHER_TYPE_PPP_SES 0x8864
171#define ETHER_TYPE_6LO 0xa0ed
173#define BROADCAST_MACADDR ((const osal_u8 *)"\xFF\xFF\xFF\xFF\xFF\xFF")
180#define WLAN_CCMP_ENCRYP_LEN 16
182#define WLAN_CCMP256_GCMP_ENCRYP_LEN 24
185#define OAL_MGMT_NETBUF_APP_PROBE_RSP_IE_LEN_LIMIT 450
187#define WLAN_DATA_VIP_TID WLAN_TIDNO_BCAST
190#define WLAN_MAC_ADDR_BYTE_LEN 17
192#define OAL_MAX_FT_ALL_LEN 518
194#define AP_WPS_P2P_IE_CMD_BEACON 0x1
195#define AP_WPS_P2P_IE_CMD_PROBE_RSP 0x2
196#define AP_WPS_P2P_IE_CMD_ASSOC_RSP 0x4
199#if defined(_PRE_OS_VERSION_LINUX) && defined(_PRE_OS_VERSION) && (_PRE_OS_VERSION_LINUX == _PRE_OS_VERSION)
200#define oal_smp_mb() smp_mb()
204#define OAL_CONTAINER_OF(_member_ptr, _stru_type, _stru_member_name) \
205 container_of(_member_ptr, _stru_type, _stru_member_name)
206#define ETHER_IS_MULTICAST(_a) (*(_a) & 0x01)
209#define ETHER_IS_BROADCAST(_a) \
210 ((_a)[0] == 0xff && \
218#define OAL_IPV4_PERMANET_GROUP_ADDR 0x000000E0
219#define OAL_IPV4_IS_PERMANENT_GROUP(_a) ((((_a) & 0x00FFFFFF) ^ OAL_IPV4_PERMANET_GROUP_ADDR) == 0)
238#if defined(_PRE_WLAN_FEATURE_QUE_CLASSIFY)
330 if (c >=
'0' && c <=
'9') {
333 if (c >=
'a' && c <=
'f') {
336 if (c >=
'A' && c <=
'F') {
343#define ETHER_IS_IPV6_MULTICAST(_a) (((_a)[0]) == 0x33 && ((_a)[1]) == 0x33)
346#define OAL_IPV6_IS_UNSPECIFIED_ADDR(_a) \
347 ((_a)[0] == 0x00 && (_a)[1] == 0x00 && (_a)[2] == 0x00 && \
348 (_a)[3] == 0x00 && (_a)[4] == 0x00 && (_a)[5] == 0x00 && \
349 (_a)[6] == 0x00 && (_a)[7] == 0x00 && (_a)[8] == 0x00 && \
350 (_a)[9] == 0x00 && (_a)[10] == 0x00 && (_a)[11] == 0x00 && \
351 (_a)[12] == 0x00 && (_a)[13] == 0x00 && (_a)[14] == 0x00 && \
355#define OAL_IPV6_IS_LINK_LOCAL_ADDR(_a) (((_a)[0] == 0xFE) && ((_a)[1] >> 6 == 2))
358#define MAC_IGMP_QUERY_TYPE 0x11
359#define MAC_IGMPV1_REPORT_TYPE 0x12
360#define MAC_IGMPV2_REPORT_TYPE 0x16
361#define MAC_IGMPV2_LEAVE_TYPE 0x17
362#define MAC_IGMPV3_REPORT_TYPE 0x22
365#define IGMPV3_MODE_IS_INCLUDE 1
366#define IGMPV3_MODE_IS_EXCLUDE 2
367#define IGMPV3_CHANGE_TO_INCLUDE 3
368#define IGMPV3_CHANGE_TO_EXCLUDE 4
369#define IGMPV3_ALLOW_NEW_SOURCES 5
370#define IGMPV3_BLOCK_OLD_SOURCES 6
373#define MLD_QUERY_TYPE 130
374#define MLDV1_REPORT_TYPE 131
375#define MLDV1_DONE_TYPE 132
376#define MLDV2_REPORT_TYPE 143
379#define MLDV2_MODE_IS_INCLUDE 1
380#define MLDV2_MODE_IS_EXCLUDE 2
381#define MLDV2_CHANGE_TO_INCLUDE 3
382#define MLDV2_CHANGE_TO_EXCLUDE 4
383#define MLDV2_ALLOW_NEW_SOURCES 5
384#define MLDV2_BLOCK_OLD_SOURCES 6
386#define SERVERNAME_LEN 64
387#define BOOTFILE_LEN 128
390#define DHCP_DISCOVER 1
392#define DHCP_REQUEST 3
397#define DHO_IPADDRESS 50
398#define DHO_MESSAGETYPE 53
399#define DHO_SERVERID 54
402#define DNS_MAX_DOMAIN_LEN (100)
404#define DHCP_SERVER_PORT (67)
405#define DHCP_CLIENT_PORT (68)
406#define DNS_SERVER_PORT (53)
408#define OAL_NETDEVICE_OPS(_pst_dev) ((_pst_dev)->netdev_ops)
409#define OAL_NETDEVICE_MAC_ADDR(_pst_dev) ((_pst_dev)->dev_addr)
410#define OAL_NETDEVICE_IFALIAS(_pst_dev) ((_pst_dev)->ifalias)
411#define OAL_NETDEVICE_WDEV(_pst_dev) ((_pst_dev)->ieee80211_ptr)
412#define OAL_NETDEVICE_HEADROOM(_pst_dev) ((_pst_dev)->needed_headroom)
413#define OAL_NETDEVICE_TAILROOM(_pst_dev) ((_pst_dev)->needed_tailroom)
414#define OAL_NETDEVICE_FLAGS(_pst_dev) ((_pst_dev)->flags)
415#define OAL_NETDEVICE_WATCHDOG_TIMEO(_pst_dev) ((_pst_dev)->watchdog_timeo)
416#define OAL_WIRELESS_DEV_WIPHY(_pst_wireless_dev) ((_pst_wireless_dev)->wiphy)
417#define oal_netdevice_master(_pst_dev) ((_pst_dev)->master)
419#define OAL_IFF_RUNNING 0x40
420#define OAL_IFF_UP 0x01
422#if defined(_PRE_OS_VERSION_LITEOS) && defined(_PRE_OS_VERSION) && (_PRE_OS_VERSION_LITEOS != _PRE_OS_VERSION)
423#define oal_is_broadcast_ether_addr(a) (((a)[0] & (a)[1] & (a)[2] & (a)[3] & (a)[4] & (a)[5]) == 0xff)
465#if (_PRE_LITTLE_CPU_ENDIAN == _PRE_CPU_ENDIAN)
701#if defined(_PRE_OS_VERSION_LITEOS) && defined(_PRE_OS_VERSION) && (_PRE_OS_VERSION_LITEOS != _PRE_OS_VERSION)
708 return ((*addr) & 0x01);
717 return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) &&
718 (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff));
727 return ((addr[0] == 0x01) && (addr[1] == 0x00) && (addr[2] == 0x5e));
745 return ((
osal_u8)(addr[0]) == 0xff);
756 return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && (addr[3] == 0x00) &&
757 (addr[4] == 0x00) && (addr[5] == 0x00) && (addr[6] == 0x00) && (addr[7] == 0x00) &&
758 (addr[8] == 0x00) && (addr[9] == 0x00) && (addr[10] == 0x00) && (addr[11] == 0x00) &&
759 (addr[12] == 0x00) && (addr[13] == 0x00) && (addr[14] == 0x00) && (addr[15] == 0x00));
769 return ((addr[0] == 0xFE) && ((addr[1] >> 6) == 2));
782#if defined(_PRE_OS_VERSION_LINUX) && defined(_PRE_OS_VERSION) && (_PRE_OS_VERSION_LINUX == _PRE_OS_VERSION)
783typedef iw_handler oal_iw_handler;
784#define oal_netif_running(_pst_net_dev) netif_running(_pst_net_dev)
785#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0))
786#define OAL_NETDEVICE_DESTRUCTOR(_pst_dev) ((_pst_dev)->priv_destructor)
788#define OAL_NETDEVICE_LAST_RX(_pst_dev) ((_pst_dev)->last_rx)
789#define OAL_NETDEVICE_DESTRUCTOR(_pst_dev) ((_pst_dev)->destructor)
791#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)
792#define oal_netdevice_qdisc(_pst_dev, val) ((_pst_dev)->qdisc = val)
794#define oal_netdevice_qdisc(_pst_dev, val)
797#define OAL_SIOCIWFIRSTPRIV SIOCIWFIRSTPRIV
800#define OAL_IW_PRIV_TYPE_BYTE IW_PRIV_TYPE_BYTE
801#define OAL_IW_PRIV_TYPE_CHAR IW_PRIV_TYPE_CHAR
802#define OAL_IW_PRIV_TYPE_INT IW_PRIV_TYPE_INT
803#define OAL_IW_PRIV_TYPE_ADDR IW_PRIV_TYPE_ADDR
804#define OAL_IW_PRIV_SIZE_FIXED IW_PRIV_SIZE_FIXED
805#define OAL_IW_PRIV_SIZE_MASK IW_PRIV_SIZE_MASK
808#define OAL_IW_MODE_AUTO IW_MODE_AUTO
809#define OAL_IW_MODE_INFRA IW_MODE_INFRA
812#define OAL_IW_TXPOW_DBM IW_TXPOW_DBM
815#define oal_host2net_short(_x) htons(_x)
816#define oal_net2host_short(_x) ntohs(_x)
817#define oal_host2net_long(_x) htonl(_x)
818#define oal_net2host_long(_x) ntohl(_x)
820#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 34)
821#define OAL_VLAN_PRIO_SHIFT VLAN_PRIO_SHIFT
823#define OAL_VLAN_PRIO_SHIFT 13
827#define OAL_ARPOP_REQUEST ARPOP_REQUEST
828#define OAL_ARPOP_REPLY ARPOP_REPLY
830#define OAL_IPPROTO_TCP IPPROTO_TCP
832#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 6, 0))
833#define oal_wdev_match(_netif, _req) ((_netif)->ieee80211_ptr == (_req)->wdev)
834#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 34))
835#define oal_wdev_match(_netif, _req) ((_netif) == (_req)->dev)
837#define oal_wdev_match(_netif, _req) ((_netif)->ifindex == (_req)->ifidx)
840typedef struct sock oal_sock_stru;
841typedef struct net oal_net_stru;
842typedef struct module oal_module_stru;
843typedef struct nlmsghdr oal_nlmsghdr_stru;
845typedef struct ethhdr oal_ethhdr;
846typedef struct nf_hook_ops oal_nf_hook_ops_stru;
847typedef struct net_bridge_port oal_net_bridge_port;
853typedef struct nd_opt_hdr oal_nd_opt_hdr;
854typedef struct netlink_skb_parms oal_netlink_skb_parms;
855#ifdef _PRE_WLAN_FEATURE_WPA3
856typedef struct cfg80211_external_auth_params oal_external_auth_stru;
860#define OAL_NLMSG_HDRLEN NLMSG_HDRLEN
862#define OAL_NLA_FOR_EACH_ATTR(pos, head, len, rem) nla_for_each_attr(pos, head, len, rem)
864typedef struct ieee80211_iface_limit oal_ieee80211_iface_limit;
865typedef struct ieee80211_iface_combination oal_ieee80211_iface_combination;
867#elif defined(_PRE_OS_VERSION_LITEOS) && defined(_PRE_OS_VERSION) && (_PRE_OS_VERSION_LITEOS == _PRE_OS_VERSION)
868#define OAL_NETDEVICE_DESTRUCTOR(_pst_dev) ((_pst_dev)->destructor)
869#define oal_netdevice_qdisc(_pst_dev, val) ((_pst_dev)->qdisc = val)
871#define IEEE80211_MAX_SSID_LEN 32
872#define OAL_VLAN_PRIO_SHIFT 13
873#define OAL_SIOCIWFIRSTPRIV 0x8BE0
876#define OAL_IW_PRIV_TYPE_BYTE 0x1000
877#define OAL_IW_PRIV_TYPE_CHAR 0x2000
878#define OAL_IW_PRIV_TYPE_INT 0x4000
879#define OAL_IW_PRIV_TYPE_ADDR 0x6000
880#define OAL_IW_PRIV_SIZE_FIXED 0x0800
881#define OAL_IW_PRIV_SIZE_MASK 0x07FF
884#define OAL_IW_MODE_AUTO 0
885#define OAL_IW_MODE_ADHOC 1
886#define OAL_IW_MODE_INFRA 2
887#define OAL_IW_MODE_MASTER 3
888#define OAL_IW_MODE_REPEAT 4
889#define OAL_IW_MODE_SECOND 5
890#define OAL_IW_MODE_MONITOR 6
891#define OAL_IW_MODE_MESH 7
894#define OAL_IW_TXPOW_TYPE 0x00FF
895#define OAL_IW_TXPOW_DBM 0x0000
896#define OAL_IW_TXPOW_MWATT 0x0001
897#define OAL_IW_TXPOW_RELATIVE 0x0002
898#define OAL_IW_TXPOW_RANGE 0x1000
902#define oal_host2net_short(_x) oal_swap_byteorder_16(_x)
903#define oal_net2host_short(_x) oal_swap_byteorder_16(_x)
904#define oal_host2net_long(_x) oal_swap_byteorder_32(_x)
905#define oal_net2host_long(_x) oal_swap_byteorder_32(_x)
908#define OAL_ARPOP_REQUEST 1
909#define OAL_ARPOP_REPLY 2
912#define OAL_IPPROTO_TCP 6
914#define OAL_INIT_NET init_net
915#define OAL_THIS_MODULE THIS_MODULE
916#define OAL_MSG_DONTWAIT MSG_DONTWAIT
919#define mhz_to_khz(freq) ((freq) * 1000)
920#define dbi_to_mbi(gain) ((gain) * 100)
921#define dbm_to_mbm(gain) ((gain) * 100)
923#define reg_rule(start, end, bw, gain, eirp, reg_flags) \
925 .freq_range.start_freq_khz = mhz_to_khz(start), \
926 .freq_range.end_freq_khz = mhz_to_khz(end), \
927 .freq_range.max_bandwidth_khz = mhz_to_khz(bw), \
928 .power_rule.max_antenna_gain = dbi_to_mbi(gain), \
929 .power_rule.max_eirp = dbm_to_mbm(eirp), \
930 .flags = (reg_flags), \
934#define OAL_NLMSG_ALIGNTO 4
935#define oal_nlmsg_align(_len) (((_len) + OAL_NLMSG_ALIGNTO - 1) & ~(OAL_NLMSG_ALIGNTO - 1))
943 td_u16 h_vlan_encapsulated_proto;
944} oal_vlan_ethhdr_stru;
947static inline td_s32 oal_ieee80211_channel_to_frequency(
td_s32 l_channel,
948 oal_ieee80211_band_enum_uint8 band)
950 if (l_channel <= 0) {
954 if (band == OAL_IEEE80211_BAND_2GHZ) {
956 return ((l_channel == 14) ? 2484 : (2407 + l_channel * 5));
957 }
else if (band == OAL_IEEE80211_BAND_5GHZ) {
959 return ((l_channel >= 182 && l_channel <= 196) ? (4000 + l_channel * 5) : (5000 + l_channel * 5));
966static inline td_s32 oal_ieee80211_frequency_to_channel(
td_s32 l_center_freq)
971 if (l_center_freq == 0) {
973#ifdef _PRE_WLAN_FEATURE_015CHANNEL_EXP
974 }
else if (l_center_freq == 2512) {
976 }
else if (l_center_freq == 2384) {
979 }
else if (l_center_freq == 2484) {
981 }
else if (l_center_freq < 2484) {
982 l_channel = (l_center_freq - 2407) / 5;
983 }
else if (l_center_freq >= 4910 && l_center_freq <= 4980) {
984 l_channel = (l_center_freq - 4000) / 5;
985 }
else if (l_center_freq <= 45000) {
986 l_channel = (l_center_freq - 5000) / 5;
987 }
else if (l_center_freq >= 58320 && l_center_freq <= 64800) {
988 l_channel = (l_center_freq - 56160) / 2160;
995#if defined(_PRE_OS_VERSION_LINUX) && defined(_PRE_OS_VERSION) && (_PRE_OS_VERSION_LINUX == _PRE_OS_VERSION)
996static inline oal_ieee80211_channel_stru* oal_ieee80211_get_channel(oal_wiphy_stru *wiphy,
999 return ieee80211_get_channel(wiphy, freq);
1002static inline oal_wiphy_stru* oal_wiphy_new(oal_cfg80211_ops_stru *ops,
td_s32 sizeof_priv)
1004 return wiphy_new(ops, sizeof_priv);
1007static inline td_s32 oal_wiphy_register(oal_wiphy_stru *wiphy)
1009 return wiphy_register(wiphy);
1013static inline td_void oal_wiphy_unregister(oal_wiphy_stru *wiphy)
1015 return wiphy_unregister(wiphy);
1019static inline void oal_wiphy_free(oal_wiphy_stru *wiphy)
1024static inline void *oal_wiphy_priv(oal_wiphy_stru *wiphy)
1026 return wiphy_priv(wiphy);
1030static inline void oal_wiphy_apply_custom_regulatory(oal_wiphy_stru *wiphy,
1031 const oal_ieee80211_regdomain_stru *regd)
1033 wiphy_apply_custom_regulatory(wiphy, regd);
1038 return eth_type_trans(pst_netbuf, device);
1041static inline td_void oal_ether_setup(oal_net_device_stru *p_net_device)
1043 if (
TD_NULL == p_net_device) {
1047 ether_setup(p_net_device);
1052static inline oal_net_device_stru* oal_dev_get_by_name(
const td_s8 *pc_name)
1054 return dev_get_by_name(&init_net, pc_name);
1058#define oal_dev_put(_pst_dev) dev_put(_pst_dev)
1060static inline td_void oal_net_close_dev(oal_net_device_stru *netdev)
1067static inline oal_net_device_stru* oal_net_alloc_netdev(
td_u32 sizeof_priv,
td_s8 *name,
1073#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0))
1074 return alloc_netdev(sizeof_priv, name, NET_NAME_UNKNOWN, p_set_up);
1076 return alloc_netdev(sizeof_priv, name, p_set_up);
1080static inline oal_net_device_stru* oal_net_alloc_netdev_mqs(
td_u32 sizeof_priv,
td_s8 *name,
1086#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0))
1087 return alloc_netdev_mq(sizeof_priv, name, NET_NAME_UNKNOWN, p_set_up, txqs);
1089 return alloc_netdev_mq(sizeof_priv, name, p_set_up, txqs);
1093static inline td_void oal_net_tx_wake_all_queues(oal_net_device_stru *dev)
1099 return netif_tx_wake_all_queues(dev);
1103static inline td_void oal_net_tx_stop_all_queues(oal_net_device_stru *dev)
1109 return netif_tx_stop_all_queues(dev);
1112static inline td_void oal_net_wake_subqueue(oal_net_device_stru *dev,
td_u16 queue_idx)
1118 return netif_wake_subqueue(dev, queue_idx);
1122static inline td_void oal_net_stop_subqueue(oal_net_device_stru *dev,
td_u16 queue_idx)
1128 return netif_stop_subqueue(dev, queue_idx);
1131static inline td_void oal_net_free_netdev(oal_net_device_stru *netdev)
1137 free_netdev(netdev);
1140static inline td_s32 oal_net_register_netdev(oal_net_device_stru *p_net_device)
1142 if (
TD_NULL == p_net_device) {
1147#ifdef _PRE_WLAN_FEATURE_MULTI_NETBUF_AMSDU
1155 return register_netdev(p_net_device);
1158static inline td_void oal_net_unregister_netdev(oal_net_device_stru *p_net_device)
1160 if (
TD_NULL == p_net_device) {
1164 if (p_net_device->reg_state != NETREG_REGISTERED) {
1165 wifi_printf(
"net device not registed regstate:%d!!\n", p_net_device->reg_state);
1168 unregister_netdev(p_net_device);
1171static inline td_s32 oal_net_device_open(oal_net_device_stru *dev)
1178static inline td_s32 oal_net_device_close(oal_net_device_stru *dev)
1180 dev->flags &= ~OAL_IFF_RUNNING;
1185static inline td_s32 oal_net_device_set_macaddr(oal_net_device_stru *dev,
td_void *addr)
1187 oal_sockaddr_stru *mac;
1189 mac = (oal_sockaddr_stru *)addr;
1195static inline td_s32 oal_net_device_init(oal_net_device_stru *dev)
1200static inline oal_net_device_stats_stru *oal_net_device_get_stats(oal_net_device_stru *dev)
1202 oal_net_device_stats_stru *stats;
1204 stats = &dev->stats;
1206 stats->tx_errors = 0;
1207 stats->tx_dropped = 0;
1208 stats->tx_packets = 0;
1209 stats->rx_packets = 0;
1210 stats->rx_errors = 0;
1211 stats->rx_dropped = 0;
1212 stats->rx_crc_errors = 0;
1217static inline td_s32 oal_net_device_ioctl(oal_net_device_stru *dev, oal_ifreq_stru *ifr,
td_s32 ul_cmd)
1222static inline td_s32 oal_net_device_change_mtu(oal_net_device_stru *dev,
td_s32 mtu)
1228#ifdef _PRE_SKB_TRACE
1229#define oal_netif_rx_ni(pst_netbuf) \
1231 mem_trace_delete_node((osal_ulong)(pst_netbuf)); \
1232 netif_rx_ni(pst_netbuf); \
1237 return netif_rx_ni(pst_netbuf);
1243 return nla_put_u32(skb, l_attrtype, value);
1248 return nla_put_u16(skb, l_attrtype, value);
1253 return nla_put_flag(skb, l_attrtype);
1258 return nla_put(skb, l_attrtype, l_attrlen, p_data);
1272 return nla_put_nohdr(skb, l_attrlen, p_data);
1277 return nlmsg_new(payload, flags);
1282 return nlmsg_free(skb);
1288#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0))
1289 return genlmsg_multicast(skb, pid,
group, flags);
1290#elif (LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0))
1291 return genlmsg_multicast(family, skb, pid,
group, flags);
1299 oal_genl_family_stru *family,
td_s32 flags,
td_u8 cmd)
1301 return genlmsg_put(skb, pid, seq, family, flags, cmd);
1306 return nla_nest_start(skb, l_attrtype);
1311 return genlmsg_cancel(skb, hdr);
1316 return nla_nest_end(skb, start);
1321#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0))
1322 return genlmsg_end(skb, hdr);
1324 genlmsg_end(skb, hdr);
1329static inline td_void *oal_nla_data(
const oal_nlattr_stru *nla)
1331 return nla_data(nla);
1334static inline td_u32 oal_nla_get_u8(
const oal_nlattr_stru *nla)
1336 return nla_get_u8(nla);
1339static inline td_u32 oal_nla_get_u16(
const oal_nlattr_stru *nla)
1341 return nla_get_u16(nla);
1344static inline td_u32 oal_nla_get_u32(
const oal_nlattr_stru *nla)
1346 return nla_get_u32(nla);
1350static inline td_u32 oal_nla_total_size(
const oal_nlattr_stru *nla)
1352 td_s32 payload = nla_len(nla);
1353 return nla_total_size(payload);
1356static inline td_s32 oal_nla_len(
const oal_nlattr_stru *nla)
1358 return nla_len(nla);
1362static inline td_s32 oal_nla_type(
const oal_nlattr_stru *nla)
1364 return nla_type(nla);
1367static inline oal_cfg80211_registered_device_stru *oal_wiphy_to_dev(oal_wiphy_stru *wiphy)
1369#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0))
1370 return wiphy_to_dev(wiphy);
1372 return wiphy_to_rdev(wiphy);
1379 return csum_ipv6_magic(ipv6_s, ipv6_d, len, proto, sum);
1384 return csum_partial(p_buff, l_len, sum);
1389#ifdef _PRE_WLAN_FEATURE_SUPPORT_IPV6
1390 return ipv6_addr_type(ipv6);
1398 return pskb_may_pull(nb, len);
1404 return arp_create(l_type, l_ptype, dest_ip, dev, src_ip, dest_hw, src_hw, target_hw);
1413#elif defined(_PRE_OS_VERSION_LITEOS) && defined(_PRE_OS_VERSION) && (_PRE_OS_VERSION_LITEOS == _PRE_OS_VERSION)
1415typedef struct ieee80211_channel_sw_ie {
1420} oal_ieee80211_channel_sw_ie;
1424#define chan2g(_channel, _freq, _flags) \
1426 .band = OAL_IEEE80211_BAND_2GHZ, \
1427 .center_freq = (_freq), \
1428 .hw_value = (_channel), \
1429 .flags = (_flags), \
1430 .max_antenna_gain = 0, \
1434#define ratetab_ent(_rate, _rateid, _flags) \
1436 .bitrate = (_rate), \
1437 .hw_value = (_rateid), \
1438 .flags = (_flags), \
1441static inline osal_void oal_net_tx_stop_all_queues(
const oal_net_device_stru *dev)
1450static inline osal_void oal_net_tx_wake_all_queues(
const oal_net_device_stru *dev)
1459static inline osal_void oal_net_stop_subqueue(
const oal_net_device_stru *dev,
osal_u16 queue_idx)
1472 return (
osal_s32)hwal_netif_rx(pst_netbuf->
dev, pst_netbuf);
1480 un_bitfield.
byte = 0x12;
1481 if (un_bitfield.
bits.
low == 0x2) {
1489#ifdef _PRE_SKB_TRACE
1490#define oal_netbuf_copy(pst_netbuf, priority) \
1492 oal_netbuf_stru *__no_pst_copy_netbuf; \
1493 __no_pst_copy_netbuf = skb_copy(pst_netbuf, priority); \
1494 if (__no_pst_copy_netbuf) \
1496 mem_trace_add_node((osal_ulong)__no_pst_copy_netbuf); \
1498 __no_pst_copy_netbuf; \
1501#define oal_netbuf_copy(pst_netbuf, priority) _oal_netbuf_copy(pst_netbuf, priority)
1504static inline osal_void oal_net_wake_subqueue(
const oal_net_device_stru *dev,
osal_u16 queue_idx)
1521static inline osal_void oal_net_close_dev(oal_net_device_stru *netdev)
1526static inline osal_s32 oal_net_device_open(oal_net_device_stru *dev)
1533static inline osal_s32 oal_net_device_close(oal_net_device_stru *dev)
1535 dev->flags &= ~OAL_IFF_RUNNING;
1540static inline osal_s32 oal_net_device_set_macaddr(oal_net_device_stru *dev,
osal_void *addr)
1542 oal_sockaddr_stru *mac;
1544 mac = (oal_sockaddr_stru *)addr;
1550static inline osal_s32 oal_net_device_init(oal_net_device_stru *dev)
1556static inline oal_net_device_stats_stru *oal_net_device_get_stats(oal_net_device_stru *dev)
1558 oal_net_device_stats_stru *stats;
1560 stats = &dev->stats;
1562 stats->tx_errors = 0;
1563 stats->tx_dropped = 0;
1564 stats->tx_packets = 0;
1565 stats->rx_packets = 0;
1566 stats->rx_errors = 0;
1567 stats->rx_dropped = 0;
1568 stats->rx_crc_errors = 0;
1573static inline osal_s32 oal_net_device_ioctl(oal_net_device_stru *dev, oal_ifreq_stru *ifr,
osal_s32 ul_cmd)
1581static inline osal_s32 oal_net_device_change_mtu(oal_net_device_stru *dev,
osal_s32 mtu)
1587#ifdef _PRE_SKB_TRACE
1588#define oal_netif_rx_ni(pst_netbuf) \
1590 mem_trace_delete_node((osal_ulong)(pst_netbuf)); \
1591 netif_rx_ni(pst_netbuf); \
1596#if defined(_PRE_OS_VERSION_LITEOS) && defined(_PRE_OS_VERSION) && (_PRE_OS_VERSION_LITEOS == _PRE_OS_VERSION)
1597 return (
osal_s32)hwal_netif_rx(pst_netbuf->
dev, pst_netbuf);
1598#elif defined(_PRE_OS_VERSION_LINUX) && defined(_PRE_OS_VERSION) && (_PRE_OS_VERSION_LINUX == _PRE_OS_VERSION)
1599 return netif_rx_ni(pst_netbuf);
1606oal_net_device_stru* oal_net_alloc_netdev(
const td_char *name,
td_u8 max_name_len);
1607td_void oal_net_free_netdev(oal_net_device_stru *netdev);
1608td_u32 oal_net_register_netdev(oal_net_device_stru* netdev);
1609td_void oal_net_unregister_netdev(oal_net_device_stru* netdev);
1617oal_net_device_stru* oal_get_past_net_device_by_index(
td_u32 netdev_index);
1618td_void oal_set_past_net_device_by_index(
td_u32 netdev_index, oal_net_device_stru *netdev);
1619oal_net_device_stru* oal_get_netdev_by_name(
const td_char* pc_name);
1620oal_net_device_stru* oal_get_netdev_by_type(nl80211_iftype_uint8
type);
1621td_u32 oal_net_check_and_get_devname(nl80211_iftype_uint8
type,
char* dev_name,
td_u32* len);
1622td_void oal_net_tx_wake_all_queues(
const oal_net_device_stru *dev);
@ OAL_SUCC
Definition common_error_code_rom.h:18
@ OAL_ERR_CODE_PTR_NULL
Definition common_error_code_rom.h:34
#define unref_param(P)
Definition dmac_misc_type.h:33
#define ETHER_ADDR_LEN
Definition eth_ip_common_rom.h:21
@ DATA_LO_QUEUE
Definition hcc_cfg_comm.h:71
gfp_t oal_gfp_enum_uint8
Definition oal_netbuf.h:21
td_u32 gfp_t
Definition oal_skbuff.h:67
#define ETH_TARGET_IP_ADDR_LEN
Definition oal_net.h:152
gfp_t oal_gfp_enum_uint8
Definition oal_net.h:224
osal_u8 app_ie_bitmap
Definition oal_net.h:291
APP_IE_BITMAP
Definition oal_net.h:282
@ REASSOC_REQ_IE
Definition oal_net.h:288
@ AUTH_REQ_IE
Definition oal_net.h:289
@ ASSOC_REQ_IE
Definition oal_net.h:286
@ ASSOC_RSP_IE
Definition oal_net.h:287
@ PROBE_REQ_IE
Definition oal_net.h:284
@ PROBE_RSP_IE
Definition oal_net.h:285
@ BEACON_IE
Definition oal_net.h:283
_wlan_net_queue_type_
Definition oal_net.h:226
@ WLAN_NET_QUEUE_BUTT
Definition oal_net.h:235
@ WLAN_NORMAL_QUEUE
Definition oal_net.h:228
@ WLAN_TCP_ACK_QUEUE
Definition oal_net.h:231
@ WLAN_HI_QUEUE
Definition oal_net.h:227
@ WLAN_TCP_DATA_QUEUE
Definition oal_net.h:230
@ WLAN_UDP_DATA_QUEUE
Definition oal_net.h:233
osal_u32 group
Definition oal_net.h:3
oal_ns_type
Definition oal_net.h:677
@ OAL_NS_T_A
Definition oal_net.h:679
@ OAL_NS_T_INVALID
Definition oal_net.h:678
mlme_type_enum
Definition oal_net.h:254
@ OAL_IEEE80211_MLME_AUTH
Definition oal_net.h:255
@ OAL_IEEE80211_MLME_NUM
Definition oal_net.h:258
@ OAL_IEEE80211_MLME_REASSOC
Definition oal_net.h:257
@ OAL_IEEE80211_MLME_ASSOC
Definition oal_net.h:256
#define OAL_NETDEVICE_HEADROOM(_pst_dev)
Definition oal_net.h:412
#define OAL_NETDEVICE_FLAGS(_pst_dev)
Definition oal_net.h:414
#define OAL_MAX_FT_ALL_LEN
Definition oal_net.h:192
#define OAL_NETDEVICE_TAILROOM(_pst_dev)
Definition oal_net.h:413
#define OAL_BITFIELD_LITTLE_ENDIAN
Definition oal_net.h:47
#define OAL_DECLARE_PACKED
Definition oal_net.h:35
#define OAL_BITFIELD_BIG_ENDIAN
Definition oal_net.h:48
enum _wlan_net_queue_type_ wlan_net_queue_type
osal_u8 type
Definition oal_net.h:0
oal_scan_enum
Definition oal_net.h:264
@ OAL_ACTIVE_SCAN
Definition oal_net.h:266
@ OAL_SCAN_BUTT
Definition oal_net.h:268
@ OAL_PASSIVE_SCAN
Definition oal_net.h:265
osal_u8 oal_scan_band_enum_uint8
Definition oal_net.h:280
oal_ns_rcode
Definition oal_net.h:673
@ OAL_NS_R_NOERROR
Definition oal_net.h:674
osal_u8 app_ie_type_uint8
Definition oal_net.h:308
oal_scan_band_enum
Definition oal_net.h:273
@ OAL_SCAN_ALL_BAND
Definition oal_net.h:276
@ OAL_SCAN_BAND_BUTT
Definition oal_net.h:278
@ OAL_SCAN_5G_BAND
Definition oal_net.h:275
@ OAL_SCAN_2G_BAND
Definition oal_net.h:274
#define OAL_IPV4_PERMANET_GROUP_ADDR
Definition oal_net.h:218
APP_IE_TYPE
Definition oal_net.h:293
@ OAL_APP_IE_NUM
Definition oal_net.h:306
@ OAL_APP_EXTEND_IE3
Definition oal_net.h:303
@ OAL_APP_BEACON_IE
Definition oal_net.h:294
@ OAL_APP_EXTEND_IE1
Definition oal_net.h:301
@ OAL_APP_REASSOC_REQ_IE
Definition oal_net.h:300
@ OAL_APP_VENDOR_IE
Definition oal_net.h:305
@ OAL_APP_PROBE_RSP_IE
Definition oal_net.h:296
@ OAL_APP_PROBE_REQ_IE
Definition oal_net.h:295
@ OAL_APP_FT_IE
Definition oal_net.h:299
@ OAL_APP_ASSOC_RSP_IE
Definition oal_net.h:298
@ OAL_APP_EXTEND_IE4
Definition oal_net.h:304
@ OAL_APP_ASSOC_REQ_IE
Definition oal_net.h:297
@ OAL_APP_EXTEND_IE2
Definition oal_net.h:302
oal_ns_qrcode
Definition oal_net.h:660
@ OAL_NS_Q_RESPONSE
Definition oal_net.h:662
@ OAL_NS_Q_REQUEST
Definition oal_net.h:661
#define ETH_SENDER_IP_ADDR_LEN
Definition oal_net.h:151
#define OAL_IPV6_ADDR_SIZE
Definition oal_net.h:100
#define IPV6_ADDR_RESERVED
Definition oal_net.h:76
oal_ns_opcode
Definition oal_net.h:665
@ OAL_NS_O_IQUERY
Definition oal_net.h:667
@ OAL_NS_O_QUERY
Definition oal_net.h:666
osal_u8 rsv[3]
Definition oal_net.h:2
#define OAL_IFF_RUNNING
Definition oal_net.h:419
osal_u8 oal_scan_enum_uint8
Definition oal_net.h:270
osal_u8 mlme_type_enum_uint8
Definition oal_net.h:260
#define OAL_IEEE80211_MAX_SSID_LEN
Definition oal_net_rom.h:181
#define OAL_EINVAL
Definition oal_types_device_rom.h:38
osal_u8 oal_bool_enum_uint8
Definition oal_types_device_rom.h:45
#define OAL_PTR_NULL
Definition oal_types_device_rom.h:30
#define wifi_printf(fmt, arg...)
Definition oal_util_hcm.h:44
#define INLINE__
Definition osal_list.h:25
int osal_s32
Definition osal_types.h:19
unsigned char osal_u8
Definition osal_types.h:11
char osal_char
Definition osal_types.h:16
void osal_void
Definition osal_types.h:29
unsigned int osal_u32
Definition osal_types.h:13
unsigned short osal_u16
Definition osal_types.h:12
errno_t memcpy_s(void *dest, size_t destMax, const void *src, size_t count)
osal_u8 grec_type
Definition oal_net.h:568
osal_u16 grec_nsrcs
Definition oal_net.h:570
osal_u32 grec_group_ip
Definition oal_net.h:571
osal_u8 grec_auxwords
Definition oal_net.h:569
osal_u8 resv1
Definition oal_net.h:608
osal_u16 ngrec
Definition oal_net.h:611
osal_u8 type
Definition oal_net.h:607
osal_u16 csum
Definition oal_net.h:609
osal_u16 resv2
Definition oal_net.h:610
osal_u8 group_ip[16]
Definition oal_net.h:622
osal_u16 reserved
Definition oal_net.h:621
osal_u8 type
Definition oal_net.h:617
osal_u8 code
Definition oal_net.h:618
osal_u16 check_sum
Definition oal_net.h:619
osal_u16 max_response_delay
Definition oal_net.h:620
osal_u8 grec_type
Definition oal_net.h:636
osal_u8 grec_auxwords
Definition oal_net.h:637
osal_u16 grec_srcaddr_num
Definition oal_net.h:638
osal_u8 group_ip[16]
Definition oal_net.h:639
osal_u16 group_address_num
Definition oal_net.h:631
osal_u16 reserved
Definition oal_net.h:630
osal_u16 check_sum
Definition oal_net.h:629
osal_u8 code
Definition oal_net.h:628
osal_u8 type
Definition oal_net.h:627
osal_u16 user_pri
Definition oal_net.h:645
osal_u16 vlan_id
Definition oal_net.h:647
osal_u16 cfi
Definition oal_net.h:646
osal_u16 tpid
Definition oal_net.h:644
osal_u8 qos
Definition oal_net.h:688
osal_u8 resv2
Definition oal_net.h:696
osal_u8 key_scope
Definition oal_net.h:686
osal_u8 high_throughput
Definition oal_net.h:694
osal_u8 resv3
Definition oal_net.h:697
osal_u8 delay_block_ack
Definition oal_net.h:691
osal_u8 mobility_domain
Definition oal_net.h:693
osal_u8 security
Definition oal_net.h:685
osal_u8 immediate_block_ack
Definition oal_net.h:692
osal_u8 spectrum_mgmt
Definition oal_net.h:687
osal_u8 resv1
Definition oal_net.h:695
osal_u8 radio_meas
Definition oal_net.h:690
osal_u8 apsd
Definition oal_net.h:689
osal_u8 ap_reachability
Definition oal_net.h:684
Definition eth_ip_common_rom.h:79
osal_u16 ancount
Definition oal_net.h:655
osal_u16 nscount
Definition oal_net.h:656
osal_u16 flags
Definition oal_net.h:653
osal_u16 arcount
Definition oal_net.h:657
osal_u16 id
Definition oal_net.h:652
osal_u16 qdcount
Definition oal_net.h:654
Definition eth_ip_common_rom.h:59
Definition eth_ip_common_rom.h:73
Definition eth_ip_common_rom.h:152
Definition eth_ip_common_rom.h:116
Definition eth_ip_common_rom.h:127
osal_u16 optie_len
Definition oal_net.h:528
mlme_type_enum_uint8 mlme_type
Definition oal_net.h:524
osal_u8 macaddr[6]
Definition oal_net.h:527
osal_u8 optie[518]
Definition oal_net.h:529
osal_u16 reason
Definition oal_net.h:526
osal_u8 seq
Definition oal_net.h:525
Definition eth_ip_common_rom.h:165
osal_u8 ssid_len
Definition oal_net.h:316
osal_u8 * data_ie
Definition oal_net.h:519
osal_u8 rsv[3]
Definition oal_net.h:518
app_ie_type_uint8 app_ie_type
Definition oal_net.h:517
osal_u32 ie_len
Definition oal_net.h:516
Definition oal_skbuff.h:82
td_void * dev
Definition oal_skbuff.h:89
unsigned short td_u16
Definition td_type.h:37
unsigned char td_u8
Definition td_type.h:36
void td_void
Definition td_type.h:49
signed char td_s8
Definition td_type.h:42
unsigned int td_u32
Definition td_type.h:38
#define TD_NULL
Definition td_type.h:30
int td_s32
Definition td_type.h:44
char td_char
Definition td_type.h:41
td_u8 high
Definition oal_net.h:323
td_u8 low
Definition oal_net.h:324
struct bitfield_un::@471 bits
td_u8 byte
Definition oal_net.h:321