mlxsw: cmd: Introduce FID-offset flooding tables
authorIdo Schimmel <idosch@mellanox.com>
Fri, 16 Oct 2015 12:01:25 +0000 (14:01 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 16 Oct 2015 14:15:10 +0000 (07:15 -0700)
Packets destined to offloaded netdevs will be classified to FIDs in the
device and flooded in case of BUM.

The flooding table used is of type FID-offset, which allows one to
create different flooding domains for different FIDs and specify the
offset in the flooding table for each FID (not necessarily equal to FID
or VID).

Add support for this flooding table type, by exposing the configuration
of the number of tables from this type and their size.

Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/cmd.h
drivers/net/ethernet/mellanox/mlxsw/core.h
drivers/net/ethernet/mellanox/mlxsw/pci.c

index 010eb5d40fe0ad63c226942268cf32beefc551a6..cd63b82636888a2c7e9a90f41a00a8d96b28ae6f 100644 (file)
@@ -674,6 +674,18 @@ MLXSW_ITEM32(cmd_mbox, config_profile, max_vid_flood_tables, 0x30, 8, 4);
  */
 MLXSW_ITEM32(cmd_mbox, config_profile, flood_mode, 0x30, 0, 2);
 
+/* cmd_mbox_config_profile_max_fid_offset_flood_tables
+ * Maximum number of FID-offset flooding tables.
+ */
+MLXSW_ITEM32(cmd_mbox, config_profile,
+            max_fid_offset_flood_tables, 0x34, 24, 4);
+
+/* cmd_mbox_config_profile_fid_offset_flood_table_size
+ * The size (number of entries) of each FID-offset flood table.
+ */
+MLXSW_ITEM32(cmd_mbox, config_profile,
+            fid_offset_flood_table_size, 0x34, 0, 16);
+
 /* cmd_mbox_config_profile_max_fid_flood_tables
  * Maximum number of per-FID flooding tables.
  *
index 8bb85ea349057d31cadcf3de16c1ccf186286749..e92ab272d9fb600a86c2945957573e3bfd47bc6c 100644 (file)
@@ -153,6 +153,8 @@ struct mlxsw_config_profile {
        u8      max_flood_tables;
        u8      max_vid_flood_tables;
        u8      flood_mode;
+       u8      max_fid_offset_flood_tables;
+       u16     fid_offset_flood_table_size;
        u8      max_fid_flood_tables;
        u16     fid_flood_table_size;
        u16     max_ib_mc;
index faa4f3f720b7f3ba6fa4f2d261b901828f53e951..0fa44c8e7102735d576237a2aa876676ea7f65d1 100644 (file)
@@ -1214,6 +1214,10 @@ static int mlxsw_pci_config_profile(struct mlxsw_pci *mlxsw_pci, char *mbox,
                        mbox, profile->max_flood_tables);
                mlxsw_cmd_mbox_config_profile_max_vid_flood_tables_set(
                        mbox, profile->max_vid_flood_tables);
+               mlxsw_cmd_mbox_config_profile_max_fid_offset_flood_tables_set(
+                       mbox, profile->max_fid_offset_flood_tables);
+               mlxsw_cmd_mbox_config_profile_fid_offset_flood_table_size_set(
+                       mbox, profile->fid_offset_flood_table_size);
                mlxsw_cmd_mbox_config_profile_max_fid_flood_tables_set(
                        mbox, profile->max_fid_flood_tables);
                mlxsw_cmd_mbox_config_profile_fid_flood_table_size_set(