linux/drivers/net/ethernet/sfc/tc_encap_actions.c

// SPDX-License-Identifier: GPL-2.0-only
/****************************************************************************
 * Driver for Solarflare network controllers and boards
 * Copyright 2023, Advanced Micro Devices, Inc.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 as published
 * by the Free Software Foundation, incorporated herein by reference.
 */

#include "tc_encap_actions.h"
#include "tc.h"
#include "mae.h"
#include <net/vxlan.h>
#include <net/geneve.h>
#include <net/netevent.h>
#include <net/arp.h>

static const struct rhashtable_params efx_neigh_ht_params =;

static const struct rhashtable_params efx_tc_encap_ht_params =;

static void efx_tc_encap_free(void *ptr, void *__unused)
{}

static void efx_neigh_free(void *ptr, void *__unused)
{}

int efx_tc_init_encap_actions(struct efx_nic *efx)
{}

/* Only call this in init failure teardown.
 * Normal exit should fini instead as there may be entries in the table.
 */
void efx_tc_destroy_encap_actions(struct efx_nic *efx)
{}

void efx_tc_fini_encap_actions(struct efx_nic *efx)
{}

static void efx_neigh_update(struct work_struct *work);

static int efx_bind_neigh(struct efx_nic *efx,
			  struct efx_tc_encap_action *encap, struct net *net,
			  struct netlink_ext_ack *extack)
{}

static void efx_free_neigh(struct efx_neigh_binder *neigh)
{}

static void efx_release_neigh(struct efx_nic *efx,
			      struct efx_tc_encap_action *encap)
{}

static void efx_gen_tun_header_eth(struct efx_tc_encap_action *encap, u16 proto)
{}

static void efx_gen_tun_header_ipv4(struct efx_tc_encap_action *encap, u8 ipproto, u8 len)
{}

#ifdef CONFIG_IPV6
static void efx_gen_tun_header_ipv6(struct efx_tc_encap_action *encap, u8 ipproto, u8 len)
{}
#endif

static void efx_gen_tun_header_udp(struct efx_tc_encap_action *encap, u8 len)
{}

static void efx_gen_tun_header_vxlan(struct efx_tc_encap_action *encap)
{}

static void efx_gen_tun_header_geneve(struct efx_tc_encap_action *encap)
{}

#define vxlan_header_l4_len
#define vxlan4_header_len
static void efx_gen_vxlan_header_ipv4(struct efx_tc_encap_action *encap)
{}

#define geneve_header_l4_len
#define geneve4_header_len
static void efx_gen_geneve_header_ipv4(struct efx_tc_encap_action *encap)
{}

#ifdef CONFIG_IPV6
#define vxlan6_header_len
static void efx_gen_vxlan_header_ipv6(struct efx_tc_encap_action *encap)
{}

#define geneve6_header_len
static void efx_gen_geneve_header_ipv6(struct efx_tc_encap_action *encap)
{}
#endif

static void efx_gen_encap_header(struct efx_nic *efx,
				 struct efx_tc_encap_action *encap)
{}

static void efx_tc_update_encap(struct efx_nic *efx,
				struct efx_tc_encap_action *encap)
{}

static void efx_neigh_update(struct work_struct *work)
{}

static int efx_neigh_event(struct efx_nic *efx, struct neighbour *n)
{}

bool efx_tc_check_ready(struct efx_nic *efx, struct efx_tc_flow_rule *rule)
{}

struct efx_tc_encap_action *efx_tc_flower_create_encap_md(
			struct efx_nic *efx, const struct ip_tunnel_info *info,
			struct net_device *egdev, struct netlink_ext_ack *extack)
{}

void efx_tc_flower_release_encap_md(struct efx_nic *efx,
				    struct efx_tc_encap_action *encap)
{}

static void efx_tc_remove_neigh_users(struct efx_nic *efx, struct efx_neigh_binder *neigh)
{}

void efx_tc_unregister_egdev(struct efx_nic *efx, struct net_device *net_dev)
{}

int efx_tc_netevent_event(struct efx_nic *efx, unsigned long event,
			  void *ptr)
{}