linux/drivers/net/phy/mscc/mscc_macsec.c

// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
 * Driver for Microsemi VSC85xx PHYs - MACsec support
 *
 * Author: Antoine Tenart
 * License: Dual MIT/GPL
 * Copyright (c) 2020 Microsemi Corporation
 */

#include <linux/phy.h>
#include <dt-bindings/net/mscc-phy-vsc8531.h>

#include <crypto/aes.h>

#include <net/macsec.h>

#include "mscc.h"
#include "mscc_mac.h"
#include "mscc_macsec.h"
#include "mscc_fc_buffer.h"

static u32 vsc8584_macsec_phy_read(struct phy_device *phydev,
				   enum macsec_bank bank, u32 reg)
{}

static void vsc8584_macsec_phy_write(struct phy_device *phydev,
				     enum macsec_bank bank, u32 reg, u32 val)
{}

static void vsc8584_macsec_classification(struct phy_device *phydev,
					  enum macsec_bank bank)
{}

static void vsc8584_macsec_flow_default_action(struct phy_device *phydev,
					       enum macsec_bank bank,
					       bool block)
{}

static void vsc8584_macsec_integrity_checks(struct phy_device *phydev,
					    enum macsec_bank bank)
{}

static void vsc8584_macsec_block_init(struct phy_device *phydev,
				      enum macsec_bank bank)
{}

static void vsc8584_macsec_mac_init(struct phy_device *phydev,
				    enum macsec_bank bank)
{}

/* Must be called with mdio_lock taken */
static int __vsc8584_macsec_init(struct phy_device *phydev)
{}

static void vsc8584_macsec_flow(struct phy_device *phydev,
				struct macsec_flow *flow)
{}

static struct macsec_flow *vsc8584_macsec_find_flow(struct macsec_context *ctx,
						    enum macsec_bank bank)
{}

static void vsc8584_macsec_flow_enable(struct phy_device *phydev,
				       struct macsec_flow *flow)
{}

static void vsc8584_macsec_flow_disable(struct phy_device *phydev,
					struct macsec_flow *flow)
{}

static u32 vsc8584_macsec_flow_context_id(struct macsec_flow *flow)
{}

/* Derive the AES key to get a key for the hash autentication */
static int vsc8584_macsec_derive_key(const u8 *key, u16 key_len, u8 hkey[16])
{}

static int vsc8584_macsec_transformation(struct phy_device *phydev,
					 struct macsec_flow *flow,
					 const u8 *key)
{}

static struct macsec_flow *vsc8584_macsec_alloc_flow(struct vsc8531_private *priv,
						     enum macsec_bank bank)
{}

static void vsc8584_macsec_free_flow(struct vsc8531_private *priv,
				     struct macsec_flow *flow)
{}

static void vsc8584_macsec_add_flow(struct phy_device *phydev,
				    struct macsec_flow *flow)
{}

static int vsc8584_macsec_default_flows(struct phy_device *phydev)
{}

static void vsc8584_macsec_del_flow(struct phy_device *phydev,
				    struct macsec_flow *flow)
{}

static int __vsc8584_macsec_add_rxsa(struct macsec_context *ctx,
				     struct macsec_flow *flow, bool update)
{}

static int __vsc8584_macsec_add_txsa(struct macsec_context *ctx,
				     struct macsec_flow *flow, bool update)
{}

static int vsc8584_macsec_dev_open(struct macsec_context *ctx)
{}

static int vsc8584_macsec_dev_stop(struct macsec_context *ctx)
{}

static int vsc8584_macsec_add_secy(struct macsec_context *ctx)
{}

static int vsc8584_macsec_del_secy(struct macsec_context *ctx)
{}

static int vsc8584_macsec_upd_secy(struct macsec_context *ctx)
{}

static int vsc8584_macsec_add_rxsc(struct macsec_context *ctx)
{}

static int vsc8584_macsec_upd_rxsc(struct macsec_context *ctx)
{}

static int vsc8584_macsec_del_rxsc(struct macsec_context *ctx)
{}

static int vsc8584_macsec_add_rxsa(struct macsec_context *ctx)
{}

static int vsc8584_macsec_upd_rxsa(struct macsec_context *ctx)
{}

static int vsc8584_macsec_del_rxsa(struct macsec_context *ctx)
{}

static int vsc8584_macsec_add_txsa(struct macsec_context *ctx)
{}

static int vsc8584_macsec_upd_txsa(struct macsec_context *ctx)
{}

static int vsc8584_macsec_del_txsa(struct macsec_context *ctx)
{}

static const struct macsec_ops vsc8584_macsec_ops =;

int vsc8584_macsec_init(struct phy_device *phydev)
{}

void vsc8584_handle_macsec_interrupt(struct phy_device *phydev)
{}

void vsc8584_config_macsec_intr(struct phy_device *phydev)
{}