Altera SoCAL  16.0
The Altera SoC Abstraction Layer (SoCAL) API Reference Manual
 All Data Structures Variables Typedefs Groups
Register : Register 354 (VLAN Hash Table Register) - gmacgrp_vlan_hash_table_reg

Description

The 16-bit Hash table is used for group address filtering based on VLAN tag when Bit 18 (VTHM) of Register 7 (VLAN Tag Register) is set. For hash filtering, the content of the 16-bit VLAN tag or 12-bit VLAN ID (based on Bit 16 (ETV) of VLAN Tag Register) in the incoming frame is passed through the CRC logic and the upper four bits of the calculated CRC are used to index the contents of the VLAN Hash table. For example, a hash value of 4b'1000 selects Bit 8 of the VLAN Hash table.

The hash value of the destination address is calculated in the following way:

  1. Calculate the 32-bit CRC for the VLAN tag or ID (See IEEE 802.3, Section 3.2.8 for the steps to calculate CRC32).
  1. Perform bitwise reversal for the value obtained in Step 1.
  1. Take the upper four bits from the value obtained in Step 2.

If the corresponding bit value of the register is 1'b1, the frame is accepted. Otherwise, it is rejected. Because the Hash Table register is double- synchronized to the (G)MII clock domain, the synchronization is triggered only when Bits[15:8] (in little-endian mode) or Bits[7:0] (in big-endian mode) of this register are written.

Notes:

Register Layout

Bits Access Reset Description
[15:0] RW 0x0 VLAN Hash Table
[31:16] ??? 0x0 UNDEFINED

Field : VLAN Hash Table - vlht

This field contains the 16-bit VLAN Hash Table.

Field Access Macros:

#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT_LSB   0
 
#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT_MSB   15
 
#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT_WIDTH   16
 
#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT_SET_MSK   0x0000ffff
 
#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT_CLR_MSK   0xffff0000
 
#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT_RESET   0x0
 
#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT_GET(value)   (((value) & 0x0000ffff) >> 0)
 
#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT_SET(value)   (((value) << 0) & 0x0000ffff)
 

Data Structures

struct  ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_s
 

Macros

#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_RESET   0x00000000
 
#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_OFST   0x588
 
#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_ADDR(base)   ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_OFST))
 

Typedefs

typedef struct
ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_s 
ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_t
 

Data Structure Documentation

struct ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_s

WARNING: The C register and register group struct declarations are provided for convenience and illustrative purposes. They should, however, be used with caution as the C language standard provides no guarantees about the alignment or atomicity of device memory accesses. The recommended practice for writing hardware drivers is to use the SoCAL access macros and alt_read_word() and alt_write_word() functions.

The struct declaration for register ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG.

Data Fields
uint32_t vlht: 16 VLAN Hash Table
uint32_t __pad0__: 16 UNDEFINED

Macro Definitions

#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT_LSB   0

The Least Significant Bit (LSB) position of the ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT register field.

#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT_MSB   15

The Most Significant Bit (MSB) position of the ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT register field.

#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT_WIDTH   16

The width in bits of the ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT register field.

#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT_SET_MSK   0x0000ffff

The mask used to set the ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT register field value.

#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT_CLR_MSK   0xffff0000

The mask used to clear the ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT register field value.

#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT_RESET   0x0

The reset value of the ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT register field.

#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT_GET (   value)    (((value) & 0x0000ffff) >> 0)

Extracts the ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT field value from a register.

#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT_SET (   value)    (((value) << 0) & 0x0000ffff)

Produces a ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_VLHT register field value suitable for setting the register.

#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_RESET   0x00000000

The reset value of the ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG register.

#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_OFST   0x588

The byte offset of the ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG register from the beginning of the component.

#define ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_ADDR (   base)    ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG_OFST))

The address of the ALT_EMAC_GMAC_VLAN_HASH_TABLE_REG register.

Typedef Documentation