Zephyr Project API 3.7.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
46
56 struct net_if_api iface_api;
57
59 int (*enable)(const struct net_if *iface, bool state);
60
62 enum offloaded_net_if_types (*get_type)(void);
63};
64
65/* Ensure offloaded_if_api is compatible with net_if_api */
66BUILD_ASSERT(offsetof(struct offloaded_if_api, iface_api) == 0);
67
75static inline bool net_off_is_wifi_offloaded(struct net_if *iface)
76{
77 const struct offloaded_if_api *api = (const struct offloaded_if_api *)
78 net_if_get_device(iface)->api;
79
80 return api->get_type && api->get_type() == L2_OFFLOADED_NET_IF_TYPE_WIFI;
81}
82
87#ifdef __cplusplus
88}
89#endif
90
91#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:941
offloaded_net_if_types
Types of offloaded netdev L2.
Definition offloaded_netdev.h:33
static bool net_off_is_wifi_offloaded(struct net_if *iface)
Check if the offloaded network interface supports Wi-Fi.
Definition offloaded_netdev.h:75
@ L2_OFFLOADED_NET_IF_TYPE_UNKNOWN
Unknown, device hasn't register a type.
Definition offloaded_netdev.h:35
@ L2_OFFLOADED_NET_IF_TYPE_ETHERNET
Ethernet devices.
Definition offloaded_netdev.h:38
@ L2_OFFLOADED_NET_IF_TYPE_MODEM
Modem.
Definition offloaded_netdev.h:41
@ L2_OFFLOADED_NET_IF_TYPE_WIFI
IEEE 802.11 Wi-Fi.
Definition offloaded_netdev.h:44
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:409
Network Interface structure.
Definition net_if.h:678
Extended net_if_api for offloaded ifaces/network devices, allowing handling of admin up/down state ch...
Definition offloaded_netdev.h:51
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:56
enum offloaded_net_if_types(* get_type)(void)
Types of offloaded net device.
Definition offloaded_netdev.h:62
int(* enable)(const struct net_if *iface, bool state)
Enable or disable the device (in response to admin state change)
Definition offloaded_netdev.h:59