|
@@ -45,6 +45,14 @@
|
|
|
#define MLX4_VLAN_VALID (1u << 31)
|
|
|
#define MLX4_VLAN_MASK 0xfff
|
|
|
|
|
|
+#define MLX4_STATS_TRAFFIC_COUNTERS_MASK 0xfULL
|
|
|
+#define MLX4_STATS_TRAFFIC_DROPS_MASK 0xc0ULL
|
|
|
+#define MLX4_STATS_ERROR_COUNTERS_MASK 0x1ffc30ULL
|
|
|
+#define MLX4_STATS_PORT_COUNTERS_MASK 0x1fe00000ULL
|
|
|
+
|
|
|
+#define MLX4_FLAG_V_IGNORE_FCS_MASK 0x2
|
|
|
+#define MLX4_IGNORE_FCS_MASK 0x1
|
|
|
+
|
|
|
void mlx4_init_mac_table(struct mlx4_dev *dev, struct mlx4_mac_table *table)
|
|
|
{
|
|
|
int i;
|
|
@@ -1027,6 +1035,32 @@ int mlx4_SET_PORT_qpn_calc(struct mlx4_dev *dev, u8 port, u32 base_qpn,
|
|
|
}
|
|
|
EXPORT_SYMBOL(mlx4_SET_PORT_qpn_calc);
|
|
|
|
|
|
+int mlx4_SET_PORT_fcs_check(struct mlx4_dev *dev, u8 port, u8 ignore_fcs_value)
|
|
|
+{
|
|
|
+ struct mlx4_cmd_mailbox *mailbox;
|
|
|
+ struct mlx4_set_port_general_context *context;
|
|
|
+ u32 in_mod;
|
|
|
+ int err;
|
|
|
+
|
|
|
+ mailbox = mlx4_alloc_cmd_mailbox(dev);
|
|
|
+ if (IS_ERR(mailbox))
|
|
|
+ return PTR_ERR(mailbox);
|
|
|
+ context = mailbox->buf;
|
|
|
+ context->v_ignore_fcs |= MLX4_FLAG_V_IGNORE_FCS_MASK;
|
|
|
+ if (ignore_fcs_value)
|
|
|
+ context->ignore_fcs |= MLX4_IGNORE_FCS_MASK;
|
|
|
+ else
|
|
|
+ context->ignore_fcs &= ~MLX4_IGNORE_FCS_MASK;
|
|
|
+
|
|
|
+ in_mod = MLX4_SET_PORT_GENERAL << 8 | port;
|
|
|
+ err = mlx4_cmd(dev, mailbox->dma, in_mod, 1, MLX4_CMD_SET_PORT,
|
|
|
+ MLX4_CMD_TIME_CLASS_B, MLX4_CMD_NATIVE);
|
|
|
+
|
|
|
+ mlx4_free_cmd_mailbox(dev, mailbox);
|
|
|
+ return err;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(mlx4_SET_PORT_fcs_check);
|
|
|
+
|
|
|
enum {
|
|
|
VXLAN_ENABLE_MODIFY = 1 << 7,
|
|
|
VXLAN_STEERING_MODIFY = 1 << 6,
|