diff options
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/cmd.c | 9 | ||||
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/fw.c | 40 | ||||
-rw-r--r-- | include/linux/mlx4/cmd.h | 1 | ||||
-rw-r--r-- | include/linux/mlx4/device.h | 2 |
4 files changed, 52 insertions, 0 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/cmd.c b/drivers/net/ethernet/mellanox/mlx4/cmd.c index 2fd61b60a5c5..78099eab7673 100644 --- a/drivers/net/ethernet/mellanox/mlx4/cmd.c +++ b/drivers/net/ethernet/mellanox/mlx4/cmd.c | |||
@@ -955,6 +955,15 @@ static struct mlx4_cmd_info cmd_info[] = { | |||
955 | .wrapper = NULL | 955 | .wrapper = NULL |
956 | }, | 956 | }, |
957 | { | 957 | { |
958 | .opcode = MLX4_CMD_CONFIG_DEV, | ||
959 | .has_inbox = false, | ||
960 | .has_outbox = false, | ||
961 | .out_is_imm = false, | ||
962 | .encode_slave_id = false, | ||
963 | .verify = NULL, | ||
964 | .wrapper = mlx4_CMD_EPERM_wrapper | ||
965 | }, | ||
966 | { | ||
958 | .opcode = MLX4_CMD_ALLOC_RES, | 967 | .opcode = MLX4_CMD_ALLOC_RES, |
959 | .has_inbox = false, | 968 | .has_inbox = false, |
960 | .has_outbox = false, | 969 | .has_outbox = false, |
diff --git a/drivers/net/ethernet/mellanox/mlx4/fw.c b/drivers/net/ethernet/mellanox/mlx4/fw.c index 6bd33e2fc17c..d16a4d118903 100644 --- a/drivers/net/ethernet/mellanox/mlx4/fw.c +++ b/drivers/net/ethernet/mellanox/mlx4/fw.c | |||
@@ -1779,6 +1779,46 @@ int mlx4_CLOSE_HCA(struct mlx4_dev *dev, int panic) | |||
1779 | MLX4_CMD_NATIVE); | 1779 | MLX4_CMD_NATIVE); |
1780 | } | 1780 | } |
1781 | 1781 | ||
1782 | struct mlx4_config_dev { | ||
1783 | __be32 update_flags; | ||
1784 | __be32 rsdv1[3]; | ||
1785 | __be16 vxlan_udp_dport; | ||
1786 | __be16 rsvd2; | ||
1787 | }; | ||
1788 | |||
1789 | #define MLX4_VXLAN_UDP_DPORT (1 << 0) | ||
1790 | |||
1791 | static int mlx4_CONFIG_DEV(struct mlx4_dev *dev, struct mlx4_config_dev *config_dev) | ||
1792 | { | ||
1793 | int err; | ||
1794 | struct mlx4_cmd_mailbox *mailbox; | ||
1795 | |||
1796 | mailbox = mlx4_alloc_cmd_mailbox(dev); | ||
1797 | if (IS_ERR(mailbox)) | ||
1798 | return PTR_ERR(mailbox); | ||
1799 | |||
1800 | memcpy(mailbox->buf, config_dev, sizeof(*config_dev)); | ||
1801 | |||
1802 | err = mlx4_cmd(dev, mailbox->dma, 0, 0, MLX4_CMD_CONFIG_DEV, | ||
1803 | MLX4_CMD_TIME_CLASS_B, MLX4_CMD_NATIVE); | ||
1804 | |||
1805 | mlx4_free_cmd_mailbox(dev, mailbox); | ||
1806 | return err; | ||
1807 | } | ||
1808 | |||
1809 | int mlx4_config_vxlan_port(struct mlx4_dev *dev, __be16 udp_port) | ||
1810 | { | ||
1811 | struct mlx4_config_dev config_dev; | ||
1812 | |||
1813 | memset(&config_dev, 0, sizeof(config_dev)); | ||
1814 | config_dev.update_flags = cpu_to_be32(MLX4_VXLAN_UDP_DPORT); | ||
1815 | config_dev.vxlan_udp_dport = udp_port; | ||
1816 | |||
1817 | return mlx4_CONFIG_DEV(dev, &config_dev); | ||
1818 | } | ||
1819 | EXPORT_SYMBOL_GPL(mlx4_config_vxlan_port); | ||
1820 | |||
1821 | |||
1782 | int mlx4_SET_ICM_SIZE(struct mlx4_dev *dev, u64 icm_size, u64 *aux_pages) | 1822 | int mlx4_SET_ICM_SIZE(struct mlx4_dev *dev, u64 icm_size, u64 *aux_pages) |
1783 | { | 1823 | { |
1784 | int ret = mlx4_cmd_imm(dev, icm_size, aux_pages, 0, 0, | 1824 | int ret = mlx4_cmd_imm(dev, icm_size, aux_pages, 0, 0, |
diff --git a/include/linux/mlx4/cmd.h b/include/linux/mlx4/cmd.h index 009985628257..c8450366c130 100644 --- a/include/linux/mlx4/cmd.h +++ b/include/linux/mlx4/cmd.h | |||
@@ -125,6 +125,7 @@ enum { | |||
125 | /* miscellaneous commands */ | 125 | /* miscellaneous commands */ |
126 | MLX4_CMD_DIAG_RPRT = 0x30, | 126 | MLX4_CMD_DIAG_RPRT = 0x30, |
127 | MLX4_CMD_NOP = 0x31, | 127 | MLX4_CMD_NOP = 0x31, |
128 | MLX4_CMD_CONFIG_DEV = 0x3a, | ||
128 | MLX4_CMD_ACCESS_MEM = 0x2e, | 129 | MLX4_CMD_ACCESS_MEM = 0x2e, |
129 | MLX4_CMD_SET_VEP = 0x52, | 130 | MLX4_CMD_SET_VEP = 0x52, |
130 | 131 | ||
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h index 6b3998396b99..d986c975616f 100644 --- a/include/linux/mlx4/device.h +++ b/include/linux/mlx4/device.h | |||
@@ -1232,4 +1232,6 @@ struct mlx4_slaves_pport mlx4_phys_to_slaves_pport_actv( | |||
1232 | int mlx4_phys_to_slave_port(struct mlx4_dev *dev, int slave, int port); | 1232 | int mlx4_phys_to_slave_port(struct mlx4_dev *dev, int slave, int port); |
1233 | 1233 | ||
1234 | int mlx4_get_base_gid_ix(struct mlx4_dev *dev, int slave, int port); | 1234 | int mlx4_get_base_gid_ix(struct mlx4_dev *dev, int slave, int port); |
1235 | |||
1236 | int mlx4_config_vxlan_port(struct mlx4_dev *dev, __be16 udp_port); | ||
1235 | #endif /* MLX4_DEVICE_H */ | 1237 | #endif /* MLX4_DEVICE_H */ |