linux/drivers/net/ethernet/aquantia/atlantic/macsec/macsec_api.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/* Atlantic Network Driver
   3 * Copyright (C) 2020 Marvell International Ltd.
   4 */
   5
   6#ifndef __MACSEC_API_H__
   7#define __MACSEC_API_H__
   8
   9#include "aq_hw.h"
  10#include "macsec_struct.h"
  11
  12#define NUMROWS_INGRESSPRECTLFRECORD 24
  13#define ROWOFFSET_INGRESSPRECTLFRECORD 0
  14
  15#define NUMROWS_INGRESSPRECLASSRECORD 48
  16#define ROWOFFSET_INGRESSPRECLASSRECORD 0
  17
  18#define NUMROWS_INGRESSPOSTCLASSRECORD 48
  19#define ROWOFFSET_INGRESSPOSTCLASSRECORD 0
  20
  21#define NUMROWS_INGRESSSCRECORD 32
  22#define ROWOFFSET_INGRESSSCRECORD 0
  23
  24#define NUMROWS_INGRESSSARECORD 32
  25#define ROWOFFSET_INGRESSSARECORD 32
  26
  27#define NUMROWS_INGRESSSAKEYRECORD 32
  28#define ROWOFFSET_INGRESSSAKEYRECORD 0
  29
  30#define NUMROWS_INGRESSPOSTCTLFRECORD 24
  31#define ROWOFFSET_INGRESSPOSTCTLFRECORD 0
  32
  33#define NUMROWS_EGRESSCTLFRECORD 24
  34#define ROWOFFSET_EGRESSCTLFRECORD 0
  35
  36#define NUMROWS_EGRESSCLASSRECORD 48
  37#define ROWOFFSET_EGRESSCLASSRECORD 0
  38
  39#define NUMROWS_EGRESSSCRECORD 32
  40#define ROWOFFSET_EGRESSSCRECORD 0
  41
  42#define NUMROWS_EGRESSSARECORD 32
  43#define ROWOFFSET_EGRESSSARECORD 32
  44
  45#define NUMROWS_EGRESSSAKEYRECORD 32
  46#define ROWOFFSET_EGRESSSAKEYRECORD 96
  47
  48/*!  Read the raw table data from the specified row of the Egress CTL
  49 *   Filter table, and unpack it into the fields of rec.
  50 *  rec - [OUT] The raw table row data will be unpacked into the fields of rec.
  51 *  table_index - The table row to read (max 23).
  52 */
  53int aq_mss_get_egress_ctlf_record(struct aq_hw_s *hw,
  54                                  struct aq_mss_egress_ctlf_record *rec,
  55                                  u16 table_index);
  56
  57/*!  Pack the fields of rec, and write the packed data into the
  58 *   specified row of the Egress CTL Filter table.
  59 *  rec - [IN] The bitfield values to write to the table row.
  60 *  table_index - The table row to write(max 23).
  61 */
  62int aq_mss_set_egress_ctlf_record(struct aq_hw_s *hw,
  63                                  const struct aq_mss_egress_ctlf_record *rec,
  64                                  u16 table_index);
  65
  66/*!  Read the raw table data from the specified row of the Egress
  67 *   Packet Classifier table, and unpack it into the fields of rec.
  68 *  rec - [OUT] The raw table row data will be unpacked into the fields of rec.
  69 *  table_index - The table row to read (max 47).
  70 */
  71int aq_mss_get_egress_class_record(struct aq_hw_s *hw,
  72                                   struct aq_mss_egress_class_record *rec,
  73                                   u16 table_index);
  74
  75/*!  Pack the fields of rec, and write the packed data into the
  76 *   specified row of the Egress Packet Classifier table.
  77 *  rec - [IN] The bitfield values to write to the table row.
  78 *  table_index - The table row to write (max 47).
  79 */
  80int aq_mss_set_egress_class_record(struct aq_hw_s *hw,
  81                                   const struct aq_mss_egress_class_record *rec,
  82                                   u16 table_index);
  83
  84/*!  Read the raw table data from the specified row of the Egress SC
  85 *   Lookup table, and unpack it into the fields of rec.
  86 *  rec - [OUT] The raw table row data will be unpacked into the fields of rec.
  87 *  table_index - The table row to read (max 31).
  88 */
  89int aq_mss_get_egress_sc_record(struct aq_hw_s *hw,
  90                                struct aq_mss_egress_sc_record *rec,
  91                                u16 table_index);
  92
  93/*!  Pack the fields of rec, and write the packed data into the
  94 *   specified row of the Egress SC Lookup table.
  95 *  rec - [IN] The bitfield values to write to the table row.
  96 *  table_index - The table row to write (max 31).
  97 */
  98int aq_mss_set_egress_sc_record(struct aq_hw_s *hw,
  99                                const struct aq_mss_egress_sc_record *rec,
 100                                u16 table_index);
 101
 102/*!  Read the raw table data from the specified row of the Egress SA
 103 *   Lookup table, and unpack it into the fields of rec.
 104 *  rec - [OUT] The raw table row data will be unpacked into the fields of rec.
 105 *  table_index - The table row to read (max 31).
 106 */
 107int aq_mss_get_egress_sa_record(struct aq_hw_s *hw,
 108                                struct aq_mss_egress_sa_record *rec,
 109                                u16 table_index);
 110
 111/*!  Pack the fields of rec, and write the packed data into the
 112 *   specified row of the Egress SA Lookup table.
 113 *  rec  - [IN] The bitfield values to write to the table row.
 114 *  table_index - The table row to write (max 31).
 115 */
 116int aq_mss_set_egress_sa_record(struct aq_hw_s *hw,
 117                                const struct aq_mss_egress_sa_record *rec,
 118                                u16 table_index);
 119
 120/*!  Read the raw table data from the specified row of the Egress SA
 121 *   Key Lookup table, and unpack it into the fields of rec.
 122 *  rec - [OUT] The raw table row data will be unpacked into the fields of rec.
 123 *  table_index - The table row to read (max 31).
 124 */
 125int aq_mss_get_egress_sakey_record(struct aq_hw_s *hw,
 126                                   struct aq_mss_egress_sakey_record *rec,
 127                                   u16 table_index);
 128
 129/*!  Pack the fields of rec, and write the packed data into the
 130 *   specified row of the Egress SA Key Lookup table.
 131 *  rec - [IN] The bitfield values to write to the table row.
 132 *  table_index - The table row to write (max 31).
 133 */
 134int aq_mss_set_egress_sakey_record(struct aq_hw_s *hw,
 135                                   const struct aq_mss_egress_sakey_record *rec,
 136                                   u16 table_index);
 137
 138/*!  Read the raw table data from the specified row of the Ingress
 139 *   Pre-MACSec CTL Filter table, and unpack it into the fields of rec.
 140 *  rec - [OUT] The raw table row data will be unpacked into the fields of rec.
 141 *  table_index - The table row to read (max 23).
 142 */
 143int aq_mss_get_ingress_prectlf_record(struct aq_hw_s *hw,
 144                                      struct aq_mss_ingress_prectlf_record *rec,
 145                                      u16 table_index);
 146
 147/*!  Pack the fields of rec, and write the packed data into the
 148 *   specified row of the Ingress Pre-MACSec CTL Filter table.
 149 *  rec - [IN] The bitfield values to write to the table row.
 150 *  table_index - The table row to write(max 23).
 151 */
 152int aq_mss_set_ingress_prectlf_record(struct aq_hw_s *hw,
 153        const struct aq_mss_ingress_prectlf_record *rec,
 154        u16 table_index);
 155
 156/*!  Read the raw table data from the specified row of the Ingress
 157 *   Pre-MACSec Packet Classifier table, and unpack it into the fields of rec.
 158 *  rec - [OUT] The raw table row data will be unpacked into the fields of rec.
 159 *  table_index - The table row to read (max 47).
 160 */
 161int aq_mss_get_ingress_preclass_record(struct aq_hw_s *hw,
 162        struct aq_mss_ingress_preclass_record *rec,
 163        u16 table_index);
 164
 165/*!  Pack the fields of rec, and write the packed data into the
 166 *   specified row of the Ingress Pre-MACSec Packet Classifier table.
 167 *  rec - [IN] The bitfield values to write to the table row.
 168 *  table_index - The table row to write(max 47).
 169 */
 170int aq_mss_set_ingress_preclass_record(struct aq_hw_s *hw,
 171        const struct aq_mss_ingress_preclass_record *rec,
 172        u16 table_index);
 173
 174/*!  Read the raw table data from the specified row of the Ingress SC
 175 *   Lookup table, and unpack it into the fields of rec.
 176 *  rec - [OUT] The raw table row data will be unpacked into the fields of rec.
 177 *  table_index - The table row to read (max 31).
 178 */
 179int aq_mss_get_ingress_sc_record(struct aq_hw_s *hw,
 180                                 struct aq_mss_ingress_sc_record *rec,
 181                                 u16 table_index);
 182
 183/*!  Pack the fields of rec, and write the packed data into the
 184 *   specified row of the Ingress SC Lookup table.
 185 *  rec - [IN] The bitfield values to write to the table row.
 186 *  table_index - The table row to write(max 31).
 187 */
 188int aq_mss_set_ingress_sc_record(struct aq_hw_s *hw,
 189                                 const struct aq_mss_ingress_sc_record *rec,
 190                                 u16 table_index);
 191
 192/*!  Read the raw table data from the specified row of the Ingress SA
 193 *   Lookup table, and unpack it into the fields of rec.
 194 *  rec - [OUT] The raw table row data will be unpacked into the fields of rec.
 195 *  table_index - The table row to read (max 31).
 196 */
 197int aq_mss_get_ingress_sa_record(struct aq_hw_s *hw,
 198                                 struct aq_mss_ingress_sa_record *rec,
 199                                 u16 table_index);
 200
 201/*!  Pack the fields of rec, and write the packed data into the
 202 *   specified row of the Ingress SA Lookup table.
 203 *  rec - [IN] The bitfield values to write to the table row.
 204 *  table_index - The table row to write(max 31).
 205 */
 206int aq_mss_set_ingress_sa_record(struct aq_hw_s *hw,
 207                                 const struct aq_mss_ingress_sa_record *rec,
 208                                 u16 table_index);
 209
 210/*!  Read the raw table data from the specified row of the Ingress SA
 211 *   Key Lookup table, and unpack it into the fields of rec.
 212 *  rec - [OUT] The raw table row data will be unpacked into the fields of rec.
 213 *  table_index - The table row to read (max 31).
 214 */
 215int aq_mss_get_ingress_sakey_record(struct aq_hw_s *hw,
 216                                    struct aq_mss_ingress_sakey_record *rec,
 217                                    u16 table_index);
 218
 219/*!  Pack the fields of rec, and write the packed data into the
 220 *   specified row of the Ingress SA Key Lookup table.
 221 *  rec - [IN] The bitfield values to write to the table row.
 222 *  table_index - The table row to write(max 31).
 223 */
 224int aq_mss_set_ingress_sakey_record(struct aq_hw_s *hw,
 225        const struct aq_mss_ingress_sakey_record *rec,
 226        u16 table_index);
 227
 228/*!  Read the raw table data from the specified row of the Ingress
 229 *   Post-MACSec Packet Classifier table, and unpack it into the
 230 *   fields of rec.
 231 *  rec - [OUT] The raw table row data will be unpacked into the fields of rec.
 232 *  table_index - The table row to read (max 48).
 233 */
 234int aq_mss_get_ingress_postclass_record(struct aq_hw_s *hw,
 235        struct aq_mss_ingress_postclass_record *rec,
 236        u16 table_index);
 237
 238/*!  Pack the fields of rec, and write the packed data into the
 239 *   specified row of the Ingress Post-MACSec Packet Classifier table.
 240 *  rec - [IN] The bitfield values to write to the table row.
 241 *  table_index - The table row to write(max 48).
 242 */
 243int aq_mss_set_ingress_postclass_record(struct aq_hw_s *hw,
 244        const struct aq_mss_ingress_postclass_record *rec,
 245        u16 table_index);
 246
 247/*!  Read the raw table data from the specified row of the Ingress
 248 *   Post-MACSec CTL Filter table, and unpack it into the fields of rec.
 249 *  rec - [OUT] The raw table row data will be unpacked into the fields of rec.
 250 *  table_index - The table row to read (max 23).
 251 */
 252int aq_mss_get_ingress_postctlf_record(struct aq_hw_s *hw,
 253        struct aq_mss_ingress_postctlf_record *rec,
 254        u16 table_index);
 255
 256/*!  Pack the fields of rec, and write the packed data into the
 257 *   specified row of the Ingress Post-MACSec CTL Filter table.
 258 *  rec - [IN] The bitfield values to write to the table row.
 259 *  table_index - The table row to write(max 23).
 260 */
 261int aq_mss_set_ingress_postctlf_record(struct aq_hw_s *hw,
 262        const struct aq_mss_ingress_postctlf_record *rec,
 263        u16 table_index);
 264
 265/*!  Read the counters for the specified SC, and unpack them into the
 266 *   fields of counters.
 267 *  counters - [OUT] The raw table row data will be unpacked here.
 268 *  sc_index - The table row to read (max 31).
 269 */
 270int aq_mss_get_egress_sc_counters(struct aq_hw_s *hw,
 271                                  struct aq_mss_egress_sc_counters *counters,
 272                                  u16 sc_index);
 273
 274/*!  Read the counters for the specified SA, and unpack them into the
 275 *   fields of counters.
 276 *  counters - [OUT] The raw table row data will be unpacked here.
 277 *  sa_index - The table row to read (max 31).
 278 */
 279int aq_mss_get_egress_sa_counters(struct aq_hw_s *hw,
 280                                  struct aq_mss_egress_sa_counters *counters,
 281                                  u16 sa_index);
 282
 283/*!  Read the counters for the common egress counters, and unpack them
 284 *   into the fields of counters.
 285 *  counters - [OUT] The raw table row data will be unpacked here.
 286 */
 287int aq_mss_get_egress_common_counters(struct aq_hw_s *hw,
 288        struct aq_mss_egress_common_counters *counters);
 289
 290/*!  Clear all Egress counters to 0.*/
 291int aq_mss_clear_egress_counters(struct aq_hw_s *hw);
 292
 293/*!  Read the counters for the specified SA, and unpack them into the
 294 *   fields of counters.
 295 *  counters - [OUT] The raw table row data will be unpacked here.
 296 *  sa_index - The table row to read (max 31).
 297 */
 298int aq_mss_get_ingress_sa_counters(struct aq_hw_s *hw,
 299                                   struct aq_mss_ingress_sa_counters *counters,
 300                                   u16 sa_index);
 301
 302/*!  Read the counters for the common ingress counters, and unpack them
 303 *   into the fields of counters.
 304 *  counters - [OUT] The raw table row data will be unpacked here.
 305 */
 306int aq_mss_get_ingress_common_counters(struct aq_hw_s *hw,
 307        struct aq_mss_ingress_common_counters *counters);
 308
 309/*!  Clear all Ingress counters to 0. */
 310int aq_mss_clear_ingress_counters(struct aq_hw_s *hw);
 311
 312/*!  Get Egress SA expired. */
 313int aq_mss_get_egress_sa_expired(struct aq_hw_s *hw, u32 *expired);
 314/*!  Get Egress SA threshold expired. */
 315int aq_mss_get_egress_sa_threshold_expired(struct aq_hw_s *hw,
 316                                           u32 *expired);
 317/*!  Set Egress SA expired. */
 318int aq_mss_set_egress_sa_expired(struct aq_hw_s *hw, u32 expired);
 319/*!  Set Egress SA threshold expired. */
 320int aq_mss_set_egress_sa_threshold_expired(struct aq_hw_s *hw,
 321                                           u32 expired);
 322
 323#endif /* __MACSEC_API_H__ */
 324