#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)
{ … }
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)
{ … }
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)
{ … }