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 */ 53 int 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 */ 62 int 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 */ 71 int 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 */ 80 int 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 */ 89 int 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 */ 98 int 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 */ 107 int 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 */ 116 int 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 */ 125 int 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 */ 134 int 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 */ 143 int 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 */ 152 int 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 */ 161 int 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 */ 170 int 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 */ 179 int 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 */ 188 int 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 */ 197 int 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 */ 206 int 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 */ 215 int 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 */ 224 int 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 */ 234 int 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 */ 243 int 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 */ 252 int 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 */ 261 int 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 */ 270 int 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 */ 279 int 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 */ 287 int 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.*/ 291 int 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 */ 298 int 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 */ 306 int 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. */ 310 int aq_mss_clear_ingress_counters(struct aq_hw_s *hw); 311 312 /*! Get Egress SA expired. */ 313 int aq_mss_get_egress_sa_expired(struct aq_hw_s *hw, u32 *expired); 314 /*! Get Egress SA threshold expired. */ 315 int aq_mss_get_egress_sa_threshold_expired(struct aq_hw_s *hw, 316 u32 *expired); 317 /*! Set Egress SA expired. */ 318 int aq_mss_set_egress_sa_expired(struct aq_hw_s *hw, u32 expired); 319 /*! Set Egress SA threshold expired. */ 320 int aq_mss_set_egress_sa_threshold_expired(struct aq_hw_s *hw, 321 u32 expired); 322 323 #endif /* __MACSEC_API_H__ */ 324