macsec_api.h (12518B)
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__ */