#include "aq_macsec.h"
#include "aq_nic.h"
#include <linux/rtnetlink.h>
#include "macsec/macsec_api.h"
#define AQ_MACSEC_KEY_LEN_128_BIT …
#define AQ_MACSEC_KEY_LEN_192_BIT …
#define AQ_MACSEC_KEY_LEN_256_BIT …
enum aq_clear_type { … };
static int aq_clear_txsc(struct aq_nic_s *nic, const int txsc_idx,
enum aq_clear_type clear_type);
static int aq_clear_txsa(struct aq_nic_s *nic, struct aq_macsec_txsc *aq_txsc,
const int sa_num, enum aq_clear_type clear_type);
static int aq_clear_rxsc(struct aq_nic_s *nic, const int rxsc_idx,
enum aq_clear_type clear_type);
static int aq_clear_rxsa(struct aq_nic_s *nic, struct aq_macsec_rxsc *aq_rxsc,
const int sa_num, enum aq_clear_type clear_type);
static int aq_clear_secy(struct aq_nic_s *nic, const struct macsec_secy *secy,
enum aq_clear_type clear_type);
static int aq_apply_macsec_cfg(struct aq_nic_s *nic);
static int aq_apply_secy_cfg(struct aq_nic_s *nic,
const struct macsec_secy *secy);
static void aq_ether_addr_to_mac(u32 mac[2], const unsigned char *emac)
{ … }
static int aq_get_txsc_idx_from_secy(struct aq_macsec_cfg *macsec_cfg,
const struct macsec_secy *secy)
{ … }
static int aq_get_rxsc_idx_from_rxsc(struct aq_macsec_cfg *macsec_cfg,
const struct macsec_rx_sc *rxsc)
{ … }
static int aq_get_txsc_idx_from_sc_idx(const enum aq_macsec_sc_sa sc_sa,
const int sc_idx)
{ … }
static void aq_rotate_keys(u32 (*key)[8], const int key_len)
{ … }
#define STATS_2x32_TO_64(stat_field) …
static int aq_get_macsec_common_stats(struct aq_hw_s *hw,
struct aq_macsec_common_stats *stats)
{ … }
static int aq_get_rxsa_stats(struct aq_hw_s *hw, const int sa_idx,
struct aq_macsec_rx_sa_stats *stats)
{ … }
static int aq_get_txsa_stats(struct aq_hw_s *hw, const int sa_idx,
struct aq_macsec_tx_sa_stats *stats)
{ … }
static int aq_get_txsa_next_pn(struct aq_hw_s *hw, const int sa_idx, u32 *pn)
{ … }
static int aq_get_rxsa_next_pn(struct aq_hw_s *hw, const int sa_idx, u32 *pn)
{ … }
static int aq_get_txsc_stats(struct aq_hw_s *hw, const int sc_idx,
struct aq_macsec_tx_sc_stats *stats)
{ … }
static int aq_mdo_dev_open(struct macsec_context *ctx)
{ … }
static int aq_mdo_dev_stop(struct macsec_context *ctx)
{ … }
static int aq_set_txsc(struct aq_nic_s *nic, const int txsc_idx)
{ … }
static u32 aq_sc_idx_max(const enum aq_macsec_sc_sa sc_sa)
{ … }
static u32 aq_to_hw_sc_idx(const u32 sc_idx, const enum aq_macsec_sc_sa sc_sa)
{ … }
static enum aq_macsec_sc_sa sc_sa_from_num_an(const int num_an)
{ … }
static int aq_mdo_add_secy(struct macsec_context *ctx)
{ … }
static int aq_mdo_upd_secy(struct macsec_context *ctx)
{ … }
static int aq_clear_txsc(struct aq_nic_s *nic, const int txsc_idx,
enum aq_clear_type clear_type)
{ … }
static int aq_mdo_del_secy(struct macsec_context *ctx)
{ … }
static int aq_update_txsa(struct aq_nic_s *nic, const unsigned int sc_idx,
const struct macsec_secy *secy,
const struct macsec_tx_sa *tx_sa,
const unsigned char *key, const unsigned char an)
{ … }
static int aq_mdo_add_txsa(struct macsec_context *ctx)
{ … }
static int aq_mdo_upd_txsa(struct macsec_context *ctx)
{ … }
static int aq_clear_txsa(struct aq_nic_s *nic, struct aq_macsec_txsc *aq_txsc,
const int sa_num, enum aq_clear_type clear_type)
{ … }
static int aq_mdo_del_txsa(struct macsec_context *ctx)
{ … }
static int aq_rxsc_validate_frames(const enum macsec_validation_type validate)
{ … }
static int aq_set_rxsc(struct aq_nic_s *nic, const u32 rxsc_idx)
{ … }
static int aq_mdo_add_rxsc(struct macsec_context *ctx)
{ … }
static int aq_mdo_upd_rxsc(struct macsec_context *ctx)
{ … }
static int aq_clear_rxsc(struct aq_nic_s *nic, const int rxsc_idx,
enum aq_clear_type clear_type)
{ … }
static int aq_mdo_del_rxsc(struct macsec_context *ctx)
{ … }
static int aq_update_rxsa(struct aq_nic_s *nic, const unsigned int sc_idx,
const struct macsec_secy *secy,
const struct macsec_rx_sa *rx_sa,
const unsigned char *key, const unsigned char an)
{ … }
static int aq_mdo_add_rxsa(struct macsec_context *ctx)
{ … }
static int aq_mdo_upd_rxsa(struct macsec_context *ctx)
{ … }
static int aq_clear_rxsa(struct aq_nic_s *nic, struct aq_macsec_rxsc *aq_rxsc,
const int sa_num, enum aq_clear_type clear_type)
{ … }
static int aq_mdo_del_rxsa(struct macsec_context *ctx)
{ … }
static int aq_mdo_get_dev_stats(struct macsec_context *ctx)
{ … }
static int aq_mdo_get_tx_sc_stats(struct macsec_context *ctx)
{ … }
static int aq_mdo_get_tx_sa_stats(struct macsec_context *ctx)
{ … }
static int aq_mdo_get_rx_sc_stats(struct macsec_context *ctx)
{ … }
static int aq_mdo_get_rx_sa_stats(struct macsec_context *ctx)
{ … }
static int apply_txsc_cfg(struct aq_nic_s *nic, const int txsc_idx)
{ … }
static int apply_rxsc_cfg(struct aq_nic_s *nic, const int rxsc_idx)
{ … }
static int aq_clear_secy(struct aq_nic_s *nic, const struct macsec_secy *secy,
enum aq_clear_type clear_type)
{ … }
static int aq_apply_secy_cfg(struct aq_nic_s *nic,
const struct macsec_secy *secy)
{ … }
static int aq_apply_macsec_cfg(struct aq_nic_s *nic)
{ … }
static int aq_sa_from_sa_idx(const enum aq_macsec_sc_sa sc_sa, const int sa_idx)
{ … }
static int aq_sc_idx_from_sa_idx(const enum aq_macsec_sc_sa sc_sa,
const int sa_idx)
{ … }
static void aq_check_txsa_expiration(struct aq_nic_s *nic)
{ … }
#define AQ_LOCKED_MDO_DEF(mdo) …
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
AQ_LOCKED_MDO_DEF(…)
const struct macsec_ops aq_macsec_ops = …;
int aq_macsec_init(struct aq_nic_s *nic)
{ … }
void aq_macsec_free(struct aq_nic_s *nic)
{ … }
int aq_macsec_enable(struct aq_nic_s *nic)
{ … }
void aq_macsec_work(struct aq_nic_s *nic)
{ … }
int aq_macsec_rx_sa_cnt(struct aq_nic_s *nic)
{ … }
int aq_macsec_tx_sc_cnt(struct aq_nic_s *nic)
{ … }
int aq_macsec_tx_sa_cnt(struct aq_nic_s *nic)
{ … }
static int aq_macsec_update_stats(struct aq_nic_s *nic)
{ … }
u64 *aq_macsec_get_stats(struct aq_nic_s *nic, u64 *data)
{ … }