Zephyr API Documentation 4.0.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
offloaded_netdev.h
Go to the documentation of this file.
1
7/*
8 * Copyright (c) 2022 Nordic Semiconductor ASA
9 *
10 * SPDX-License-Identifier: Apache-2.0
11 */
12
13#ifndef ZEPHYR_INCLUDE_OFFLOADED_NETDEV_H_
14#define ZEPHYR_INCLUDE_OFFLOADED_NETDEV_H_
15
16#include <zephyr/kernel.h>
17#include <zephyr/types.h>
18#include <stdbool.h>
19#include <zephyr/net/net_if.h>
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
48
58 struct net_if_api iface_api;
59
61 int (*enable)(const struct net_if *iface, bool state);
62
64 enum offloaded_net_if_types (*get_type)(void);
65};
66
67/* Ensure offloaded_if_api is compatible with net_if_api */
68BUILD_ASSERT(offsetof(struct offloaded_if_api, iface_api) == 0);
69
77static inline bool net_off_is_wifi_offloaded(struct net_if *iface)
78{
79 const struct offloaded_if_api *api = (const struct offloaded_if_api *)
80 net_if_get_device(iface)->api;
81
82 return api->get_type && api->get_type() == L2_OFFLOADED_NET_IF_TYPE_WIFI;
83}
84
89#ifdef __cplusplus
90}
91#endif
92
93#endif /* ZEPHYR_INCLUDE_OFFLOADED_NETDEV_H_ */
static const struct device * net_if_get_device(struct net_if *iface)
Get an network interface's device.
Definition net_if.h:944
offloaded_net_if_types
Types of offloaded netdev L2.
Definition offloaded_netdev.h:35
static bool net_off_is_wifi_offloaded(struct net_if *iface)
Check if the offloaded network interface supports Wi-Fi.
Definition offloaded_netdev.h:77
@ L2_OFFLOADED_NET_IF_TYPE_UNKNOWN
Unknown, device hasn't register a type.
Definition offloaded_netdev.h:37
@ L2_OFFLOADED_NET_IF_TYPE_ETHERNET
Ethernet devices.
Definition offloaded_netdev.h:40
@ L2_OFFLOADED_NET_IF_TYPE_MODEM
Modem.
Definition offloaded_netdev.h:43
@ L2_OFFLOADED_NET_IF_TYPE_WIFI
IEEE 802.11 Wi-Fi.
Definition offloaded_netdev.h:46
Public kernel APIs.
Public API for network interface.
state
Definition parser_state.h:29
const void * api
Address of the API structure exposed by the device instance.
Definition device.h:418
Network Interface structure.
Definition net_if.h:680
Extended net_if_api for offloaded ifaces/network devices, allowing handling of admin up/down state ch...
Definition offloaded_netdev.h:53
struct net_if_api iface_api
The net_if_api must be placed in first position in this struct so that we are compatible with network...
Definition offloaded_netdev.h:58
enum offloaded_net_if_types(* get_type)(void)
Types of offloaded net device.
Definition offloaded_netdev.h:64
int(* enable)(const struct net_if *iface, bool state)
Enable or disable the device (in response to admin state change)
Definition offloaded_netdev.h:61