Lines Matching full:scheme

51 /* Select Scheme Value Register */
83 /* Scheme Registers bit field masks */
160 /* Scheme Configuration RAM Registers */
173 /* 0x140: KeyGen Scheme Entry Statistic Packet Counter */
174 u32 kgse_dv0; /* 0x144: KeyGen Scheme Entry Default Value 0 */
175 u32 kgse_dv1; /* 0x148: KeyGen Scheme Entry Default Value 1 */
177 /* 0x14C: KeyGen Scheme Entry Coarse Classification Bit*/
178 u32 kgse_mv; /* 0x150: KeyGen Scheme Entry Match vector */
179 u32 kgse_om; /* 0x154: KeyGen Scheme Entry Operation Mode bits */
181 /* 0x158: KeyGen Scheme Entry Virtual Storage Profile */
186 u32 fmkg_pe_sp; /* 0x100: KeyGen Port entry Scheme Partition */
203 u32 fmkg_seer; /* 0x01C: KeyGen Scheme Error Event Register */
204 u32 fmkg_seeer; /* 0x020: KeyGen Scheme Error Event Enable Register */
217 struct fman_kg_scheme_regs fmkg_sch; /* Scheme Registers */
223 /* KeyGen Scheme data */
225 bool used; /* Specifies if this scheme is used */
230 * so we have only one port id bound to a scheme
288 * Build Action Register value for scheme settings
290 * scheme_id: Scheme ID
291 * update_counter: update scheme counter
292 * write: true for action to write the scheme or false for read action
330 * Write Scheme Partition Register with specified value
333 * sp: Scheme Partition register value
334 * add: true to add a scheme partition or false to clear
391 * scheme_id: Scheme ID
392 * scheme_regs: Scheme registers values desired to be written
393 * update_counter: update scheme counter
404 /* Write indirect scheme registers */ in keygen_write_scheme()
438 * Find the first free scheme available to be used
441 * scheme_id: pointer to scheme id
460 * Provides the scheme for specified ID
463 * scheme_id: Scheme ID
465 * Return: handle to required scheme
480 * scheme_id: id of the scheme to bind to
490 struct keygen_scheme *scheme; in keygen_bind_port_to_schemes() local
495 scheme = get_scheme(keygen, scheme_id); in keygen_bind_port_to_schemes()
496 if (!scheme) { in keygen_bind_port_to_schemes()
497 pr_err("Requested Scheme does not exist\n"); in keygen_bind_port_to_schemes()
500 if (!scheme->used) { in keygen_bind_port_to_schemes()
501 pr_err("Cannot bind port to an invalid scheme\n"); in keygen_bind_port_to_schemes()
507 ar_reg = build_ar_bind_scheme(scheme->hw_port_id, false); in keygen_bind_port_to_schemes()
516 ar_reg = build_ar_bind_scheme(scheme->hw_port_id, true); in keygen_bind_port_to_schemes()
528 * Setup the scheme according to required configuration
531 * scheme_id: scheme ID
532 * enable: true to enable scheme or false to disable it
541 struct keygen_scheme *scheme; in keygen_scheme_setup() local
545 scheme = get_scheme(keygen, scheme_id); in keygen_scheme_setup()
546 if (!scheme) { in keygen_scheme_setup()
547 pr_err("Requested Scheme does not exist\n"); in keygen_scheme_setup()
550 if (enable && scheme->used) { in keygen_scheme_setup()
551 pr_err("The requested Scheme is already used\n"); in keygen_scheme_setup()
555 /* Clear scheme registers */ in keygen_scheme_setup()
558 /* Setup all scheme registers: */ in keygen_scheme_setup()
562 /* Enable Scheme */ in keygen_scheme_setup()
570 scheme_regs.kgse_mv = scheme->match_vector; in keygen_scheme_setup()
572 /* Scheme don't override StorageProfile: in keygen_scheme_setup()
579 if (scheme->use_hashing) { in keygen_scheme_setup()
598 tmp_reg |= ((scheme->hash_fqid_count - 1) << in keygen_scheme_setup()
600 tmp_reg |= scheme->hashShift << KG_SCH_HASH_CONFIG_SHIFT_SHIFT; in keygen_scheme_setup()
602 if (scheme->symmetric_hash) { in keygen_scheme_setup()
619 /* configure kgse_fqb: Scheme FQID base */ in keygen_scheme_setup()
621 tmp_reg |= scheme->base_fqid; in keygen_scheme_setup()
629 /* Write scheme registers */ in keygen_scheme_setup()
632 pr_err("Writing scheme registers failed\n"); in keygen_scheme_setup()
636 /* Update used field for Scheme */ in keygen_scheme_setup()
637 scheme->used = enable; in keygen_scheme_setup()
678 * so that all ports are not bound to any scheme/classification plan in keygen_init()
692 /* Enable all scheme interrupts */ in keygen_init()
718 struct keygen_scheme *scheme; in keygen_port_hashing_init() local
722 /* Validate Scheme configuration parameters */ in keygen_port_hashing_init()
732 /* Find a free scheme */ in keygen_port_hashing_init()
739 /* Create and configure Hard-Coded Scheme: */ in keygen_port_hashing_init()
741 scheme = get_scheme(keygen, scheme_id); in keygen_port_hashing_init()
742 if (!scheme) { in keygen_port_hashing_init()
743 pr_err("Requested Scheme does not exist\n"); in keygen_port_hashing_init()
746 if (scheme->used) { in keygen_port_hashing_init()
747 pr_err("The requested Scheme is already used\n"); in keygen_port_hashing_init()
751 /* Clear all scheme fields because the scheme may have been in keygen_port_hashing_init()
754 memset(scheme, 0, sizeof(struct keygen_scheme)); in keygen_port_hashing_init()
756 /* Setup scheme: */ in keygen_port_hashing_init()
757 scheme->hw_port_id = hw_port_id; in keygen_port_hashing_init()
758 scheme->use_hashing = true; in keygen_port_hashing_init()
759 scheme->base_fqid = hash_base_fqid; in keygen_port_hashing_init()
760 scheme->hash_fqid_count = hash_size; in keygen_port_hashing_init()
761 scheme->symmetric_hash = DEFAULT_SYMMETRIC_HASH; in keygen_port_hashing_init()
762 scheme->hashShift = DEFAULT_HASH_SHIFT; in keygen_port_hashing_init()
767 scheme->match_vector = 0; in keygen_port_hashing_init()
771 pr_err("Scheme setup failed\n"); in keygen_port_hashing_init()
775 /* Bind Rx port to Scheme */ in keygen_port_hashing_init()