|
@@ -650,13 +650,6 @@ static int find_entry(struct mlx4_dev *dev, u8 port,
|
|
|
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,
|
|
|
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);
|
|
|
}
|
|
|
|
|
|
-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;
|
|
|
- };
|
|
|
+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 int parse_trans_rule(struct mlx4_dev *dev, struct mlx4_spec_list *spec,
|
|
|
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[] = {
|
|
|
[MLX4_NET_TRANS_RULE_ID_ETH] =
|
|
|
sizeof(struct mlx4_net_trans_rule_hw_eth),
|