• Scott Feldman's avatar
    rocker: implement rocker ofdpa flow table manipulation · 9f6bbf7c
    Scott Feldman authored
    The rocker driver maintains 4 hash tables: flows, groups, FDB, and VLANs.
    
    Flow and group tables track the entries installed to OF-DPA tables,
    per the OF-DPA spec.  See OF-DPA spec for full description of fields
    in each flow and group table.  New table entries are pushed to the
    device with ADD cmd.  Updated entries are pushed to the device with
    MOD cmd.  For flow table entries, a crc32 key is made from fields of
    the particular field.  For group table entries, the group_id is used
    as the key.
    
    The FDB table tracks fdb entries learned by the device or manually
    pushed to the bridge by the user.  A crc32 key is made from the
    port/mac/vlan tuple for the fdb entry.
    
    The VLAN table tracks the ifindex-to-internal-vlan mapping for
    untagged pkts.  On ingress, an untagged pkt is inserted with an
    internal VLAN ID based on the input port's current internal VLAN ID.
    The input port's internal VLAN will either be referenced by the port's
    ifindex, if not bridged, or the containing bridge's ifindex, if
    bridged.  Since the ifindex space isn't within a fixed range, uses a
    hash table (with ifindex as key) to track internal VLAN ID for a given
    ifindex.  The internal VLAN ID range is fixed and currently uses the
    upper 255 VLAN IDs, starting at 0xf00.
    Signed-off-by: default avatarScott Feldman <sfeldma@gmail.com>
    Signed-off-by: default avatarJiri Pirko <jiri@resnulli.us>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    9f6bbf7c
rocker.c 93.6 KB