Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/net/ethernet/intel/ice/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  ice_eswitch_br.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (C) 2023, Intel Corporation. */

#ifndef _ICE_ESWITCH_BR_H_
#define _ICE_ESWITCH_BR_H_

#include <linux/rhashtable.h>
#include <linux/workqueue.h>

struct ice_esw_br_fdb_data {
 unsigned char addr[ETH_ALEN];
 u16 vid;
};

struct ice_esw_br_flow {
 struct ice_rule_query_data *fwd_rule;
 struct ice_rule_query_data *guard_rule;
};

enum {
 ICE_ESWITCH_BR_FDB_ADDED_BY_USER = BIT(0),
};

struct ice_esw_br_fdb_entry {
 struct ice_esw_br_fdb_data data;
 struct rhash_head ht_node;
 struct list_head list;

 int flags;

 struct net_device *dev;
 struct ice_esw_br_port *br_port;
 struct ice_esw_br_flow *flow;

 unsigned long last_use;
};

enum ice_esw_br_port_type {
 ICE_ESWITCH_BR_UPLINK_PORT = 0,
 ICE_ESWITCH_BR_VF_REPR_PORT = 1,
};

struct ice_esw_br_port {
 struct ice_esw_br *bridge;
 struct ice_vsi *vsi;
 enum ice_esw_br_port_type type;
 u16 vsi_idx;
 u16 pvid;
 u32 repr_id;
 struct xarray vlans;
};

enum {
 ICE_ESWITCH_BR_VLAN_FILTERING = BIT(0),
};

struct ice_esw_br {
 struct ice_esw_br_offloads *br_offloads;
 struct xarray ports;

 struct rhashtable fdb_ht;
 struct list_head fdb_list;

 int ifindex;
 u32 flags;
 unsigned long ageing_time;
};

struct ice_esw_br_offloads {
 struct ice_pf *pf;
 struct ice_esw_br *bridge;
 struct notifier_block netdev_nb;
 struct notifier_block switchdev_blk;
 struct notifier_block switchdev_nb;

 struct workqueue_struct *wq;
 struct delayed_work update_work;
};

struct ice_esw_br_fdb_work {
 struct work_struct work;
 struct switchdev_notifier_fdb_info fdb_info;
 struct net_device *dev;
 unsigned long event;
};

struct ice_esw_br_vlan {
 u16 vid;
 u16 flags;
};

#define ice_nb_to_br_offloads(nb, nb_name) \
 container_of(nb, \
       struct ice_esw_br_offloads, \
       nb_name)

#define ice_work_to_br_offloads(w) \
 container_of(w, \
       struct ice_esw_br_offloads, \
       update_work.work)

#define ice_work_to_fdb_work(w) \
 container_of(w, \
       struct ice_esw_br_fdb_work, \
       work)

static inline bool ice_eswitch_br_is_vid_valid(u16 vid)
{
 /* In trunk VLAN mode, for untagged traffic the bridge sends requests
 * to offload VLAN 1 with pvid and untagged flags set. Since these
 * flags are not supported, add a MAC filter instead.
 */

 return vid > 1;
}

void
ice_eswitch_br_offloads_deinit(struct ice_pf *pf);
int
ice_eswitch_br_offloads_init(struct ice_pf *pf);
void ice_eswitch_br_fdb_flush(struct ice_esw_br *bridge);

#endif /* _ICE_ESWITCH_BR_H_ */

Messung V0.5
C=93 H=94 G=93

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.