mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 02:50:43 +00:00
net/mlx4_core: Put Firmware flow steering structures in common header files
To allow for usage of the flow steering Firmware structures in more locations over the driver, such as the resource tracker, move them from mcg.c to common header files. Signed-off-by: Hadar Hen Zion <hadarh@mellanox.com> Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d90c92fee8
commit
a8edc3bf05
3 changed files with 85 additions and 83 deletions
|
@ -650,13 +650,6 @@ static int find_entry(struct mlx4_dev *dev, u8 port,
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct mlx4_net_trans_rule_hw_ctrl {
|
|
||||||
__be32 ctrl;
|
|
||||||
__be32 vf_vep_port;
|
|
||||||
__be32 qpn;
|
|
||||||
__be32 reserved;
|
|
||||||
};
|
|
||||||
|
|
||||||
static void trans_rule_ctrl_to_hw(struct mlx4_net_trans_rule *ctrl,
|
static void trans_rule_ctrl_to_hw(struct mlx4_net_trans_rule *ctrl,
|
||||||
struct mlx4_net_trans_rule_hw_ctrl *hw)
|
struct mlx4_net_trans_rule_hw_ctrl *hw)
|
||||||
{
|
{
|
||||||
|
@ -680,87 +673,18 @@ static void trans_rule_ctrl_to_hw(struct mlx4_net_trans_rule *ctrl,
|
||||||
hw->qpn = cpu_to_be32(ctrl->qpn);
|
hw->qpn = cpu_to_be32(ctrl->qpn);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct mlx4_net_trans_rule_hw_ib {
|
const u16 __sw_id_hw[] = {
|
||||||
u8 size;
|
[MLX4_NET_TRANS_RULE_ID_ETH] = 0xE001,
|
||||||
u8 rsvd1;
|
[MLX4_NET_TRANS_RULE_ID_IB] = 0xE005,
|
||||||
__be16 id;
|
[MLX4_NET_TRANS_RULE_ID_IPV6] = 0xE003,
|
||||||
u32 rsvd2;
|
[MLX4_NET_TRANS_RULE_ID_IPV4] = 0xE002,
|
||||||
__be32 qpn;
|
[MLX4_NET_TRANS_RULE_ID_TCP] = 0xE004,
|
||||||
__be32 qpn_mask;
|
[MLX4_NET_TRANS_RULE_ID_UDP] = 0xE006
|
||||||
u8 dst_gid[16];
|
|
||||||
u8 dst_gid_msk[16];
|
|
||||||
} __packed;
|
|
||||||
|
|
||||||
struct mlx4_net_trans_rule_hw_eth {
|
|
||||||
u8 size;
|
|
||||||
u8 rsvd;
|
|
||||||
__be16 id;
|
|
||||||
u8 rsvd1[6];
|
|
||||||
u8 dst_mac[6];
|
|
||||||
u16 rsvd2;
|
|
||||||
u8 dst_mac_msk[6];
|
|
||||||
u16 rsvd3;
|
|
||||||
u8 src_mac[6];
|
|
||||||
u16 rsvd4;
|
|
||||||
u8 src_mac_msk[6];
|
|
||||||
u8 rsvd5;
|
|
||||||
u8 ether_type_enable;
|
|
||||||
__be16 ether_type;
|
|
||||||
__be16 vlan_id_msk;
|
|
||||||
__be16 vlan_id;
|
|
||||||
} __packed;
|
|
||||||
|
|
||||||
struct mlx4_net_trans_rule_hw_tcp_udp {
|
|
||||||
u8 size;
|
|
||||||
u8 rsvd;
|
|
||||||
__be16 id;
|
|
||||||
__be16 rsvd1[3];
|
|
||||||
__be16 dst_port;
|
|
||||||
__be16 rsvd2;
|
|
||||||
__be16 dst_port_msk;
|
|
||||||
__be16 rsvd3;
|
|
||||||
__be16 src_port;
|
|
||||||
__be16 rsvd4;
|
|
||||||
__be16 src_port_msk;
|
|
||||||
} __packed;
|
|
||||||
|
|
||||||
struct mlx4_net_trans_rule_hw_ipv4 {
|
|
||||||
u8 size;
|
|
||||||
u8 rsvd;
|
|
||||||
__be16 id;
|
|
||||||
__be32 rsvd1;
|
|
||||||
__be32 dst_ip;
|
|
||||||
__be32 dst_ip_msk;
|
|
||||||
__be32 src_ip;
|
|
||||||
__be32 src_ip_msk;
|
|
||||||
} __packed;
|
|
||||||
|
|
||||||
struct _rule_hw {
|
|
||||||
union {
|
|
||||||
struct {
|
|
||||||
u8 size;
|
|
||||||
u8 rsvd;
|
|
||||||
__be16 id;
|
|
||||||
};
|
|
||||||
struct mlx4_net_trans_rule_hw_eth eth;
|
|
||||||
struct mlx4_net_trans_rule_hw_ib ib;
|
|
||||||
struct mlx4_net_trans_rule_hw_ipv4 ipv4;
|
|
||||||
struct mlx4_net_trans_rule_hw_tcp_udp tcp_udp;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int parse_trans_rule(struct mlx4_dev *dev, struct mlx4_spec_list *spec,
|
static int parse_trans_rule(struct mlx4_dev *dev, struct mlx4_spec_list *spec,
|
||||||
struct _rule_hw *rule_hw)
|
struct _rule_hw *rule_hw)
|
||||||
{
|
{
|
||||||
static const u16 __sw_id_hw[] = {
|
|
||||||
[MLX4_NET_TRANS_RULE_ID_ETH] = 0xE001,
|
|
||||||
[MLX4_NET_TRANS_RULE_ID_IB] = 0xE005,
|
|
||||||
[MLX4_NET_TRANS_RULE_ID_IPV6] = 0xE003,
|
|
||||||
[MLX4_NET_TRANS_RULE_ID_IPV4] = 0xE002,
|
|
||||||
[MLX4_NET_TRANS_RULE_ID_TCP] = 0xE004,
|
|
||||||
[MLX4_NET_TRANS_RULE_ID_UDP] = 0xE006
|
|
||||||
};
|
|
||||||
|
|
||||||
static const size_t __rule_hw_sz[] = {
|
static const size_t __rule_hw_sz[] = {
|
||||||
[MLX4_NET_TRANS_RULE_ID_ETH] =
|
[MLX4_NET_TRANS_RULE_ID_ETH] =
|
||||||
sizeof(struct mlx4_net_trans_rule_hw_eth),
|
sizeof(struct mlx4_net_trans_rule_hw_eth),
|
||||||
|
|
|
@ -690,6 +690,82 @@ struct mlx4_steer {
|
||||||
struct list_head steer_entries[MLX4_NUM_STEERS];
|
struct list_head steer_entries[MLX4_NUM_STEERS];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct mlx4_net_trans_rule_hw_ctrl {
|
||||||
|
__be32 ctrl;
|
||||||
|
__be32 vf_vep_port;
|
||||||
|
__be32 qpn;
|
||||||
|
__be32 reserved;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct mlx4_net_trans_rule_hw_ib {
|
||||||
|
u8 size;
|
||||||
|
u8 rsvd1;
|
||||||
|
__be16 id;
|
||||||
|
u32 rsvd2;
|
||||||
|
__be32 qpn;
|
||||||
|
__be32 qpn_mask;
|
||||||
|
u8 dst_gid[16];
|
||||||
|
u8 dst_gid_msk[16];
|
||||||
|
} __packed;
|
||||||
|
|
||||||
|
struct mlx4_net_trans_rule_hw_eth {
|
||||||
|
u8 size;
|
||||||
|
u8 rsvd;
|
||||||
|
__be16 id;
|
||||||
|
u8 rsvd1[6];
|
||||||
|
u8 dst_mac[6];
|
||||||
|
u16 rsvd2;
|
||||||
|
u8 dst_mac_msk[6];
|
||||||
|
u16 rsvd3;
|
||||||
|
u8 src_mac[6];
|
||||||
|
u16 rsvd4;
|
||||||
|
u8 src_mac_msk[6];
|
||||||
|
u8 rsvd5;
|
||||||
|
u8 ether_type_enable;
|
||||||
|
__be16 ether_type;
|
||||||
|
__be16 vlan_id_msk;
|
||||||
|
__be16 vlan_id;
|
||||||
|
} __packed;
|
||||||
|
|
||||||
|
struct mlx4_net_trans_rule_hw_tcp_udp {
|
||||||
|
u8 size;
|
||||||
|
u8 rsvd;
|
||||||
|
__be16 id;
|
||||||
|
__be16 rsvd1[3];
|
||||||
|
__be16 dst_port;
|
||||||
|
__be16 rsvd2;
|
||||||
|
__be16 dst_port_msk;
|
||||||
|
__be16 rsvd3;
|
||||||
|
__be16 src_port;
|
||||||
|
__be16 rsvd4;
|
||||||
|
__be16 src_port_msk;
|
||||||
|
} __packed;
|
||||||
|
|
||||||
|
struct mlx4_net_trans_rule_hw_ipv4 {
|
||||||
|
u8 size;
|
||||||
|
u8 rsvd;
|
||||||
|
__be16 id;
|
||||||
|
__be32 rsvd1;
|
||||||
|
__be32 dst_ip;
|
||||||
|
__be32 dst_ip_msk;
|
||||||
|
__be32 src_ip;
|
||||||
|
__be32 src_ip_msk;
|
||||||
|
} __packed;
|
||||||
|
|
||||||
|
struct _rule_hw {
|
||||||
|
union {
|
||||||
|
struct {
|
||||||
|
u8 size;
|
||||||
|
u8 rsvd;
|
||||||
|
__be16 id;
|
||||||
|
};
|
||||||
|
struct mlx4_net_trans_rule_hw_eth eth;
|
||||||
|
struct mlx4_net_trans_rule_hw_ib ib;
|
||||||
|
struct mlx4_net_trans_rule_hw_ipv4 ipv4;
|
||||||
|
struct mlx4_net_trans_rule_hw_tcp_udp tcp_udp;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
struct mlx4_priv {
|
struct mlx4_priv {
|
||||||
struct mlx4_dev dev;
|
struct mlx4_dev dev;
|
||||||
|
|
||||||
|
|
|
@ -796,6 +796,8 @@ enum mlx4_net_trans_rule_id {
|
||||||
MLX4_NET_TRANS_RULE_NUM, /* should be last */
|
MLX4_NET_TRANS_RULE_NUM, /* should be last */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern const u16 __sw_id_hw[];
|
||||||
|
|
||||||
enum mlx4_net_trans_promisc_mode {
|
enum mlx4_net_trans_promisc_mode {
|
||||||
MLX4_FS_PROMISC_NONE = 0,
|
MLX4_FS_PROMISC_NONE = 0,
|
||||||
MLX4_FS_PROMISC_UPLINK,
|
MLX4_FS_PROMISC_UPLINK,
|
||||||
|
|
Loading…
Reference in a new issue