Lines Matching full:rx
73 * Rx Tables and rules: +=========+
84 * +--------------->---------------------------------------------------->| RX NS |
528 struct mlx5e_ipsec_rx *rx; in rx_add_rule() local
532 rx = (attrs->family == AF_INET) ? ipsec->rx_ipv4 : ipsec->rx_ipv6; in rx_add_rule()
569 dest[0].ft = rx->ft.status; in rx_add_rule()
589 rule = mlx5_add_flow_rules(rx->ft.sa, spec, &flow_act, dest, 2); in rx_add_rule()
592 mlx5_core_err(mdev, "fail to add RX ipsec rule err=%d\n", err); in rx_add_rule()
601 rule = mlx5_add_flow_rules(rx->ft.sa, spec, &flow_act, dest, 2); in rx_add_rule()
605 "fail to add RX ipsec zero vid rule err=%d\n", in rx_add_rule()
1361 struct mlx5e_ipsec_rx *rx; in rx_add_policy() local
1364 rx = (attrs->family == AF_INET) ? ipsec->rx_ipv4 : ipsec->rx_ipv6; in rx_add_policy()
1365 ft = rx->chains ? ipsec_chains_get_table(rx->chains, attrs->prio) : rx->ft.pol; in rx_add_policy()
1382 dest[dstn].counter_id = mlx5_fc_id(rx->fc->drop); in rx_add_policy()
1392 dest[dstn].ft = rx->ft.sa; in rx_add_policy()
1411 "Failed to add RX IPsec policy rule err=%d\n", err); in rx_add_policy()
1424 "Failed to add RX IPsec policy rule err=%d\n", in rx_add_policy()
1439 if (rx->chains != NULL) in rx_add_policy()
1440 ipsec_chains_put_table(rx->chains, attrs->prio); in rx_add_policy()
1527 struct mlx5e_ipsec_rx *rx, in ipsec_status_rule() argument
1565 rule = mlx5_add_flow_rules(rx->ft.status, spec, &flow_act, dest, 2); in ipsec_status_rule()
1568 mlx5_core_err(mdev, "fail to add ipsec rx err copy rule err=%d\n", err); in ipsec_status_rule()
1573 rx->status.rule = rule; in ipsec_status_rule()
1574 rx->status.modify_hdr = modify_hdr; in ipsec_status_rule()
1595 …atic void ipsec_fs_rx_catchall_rules_destroy(struct mlx5_core_dev *mdev, struct mlx5e_ipsec_rx *rx) in ipsec_fs_rx_catchall_rules_destroy() argument
1597 mutex_lock(&rx->ft.mutex); in ipsec_fs_rx_catchall_rules_destroy()
1598 mlx5_del_flow_rules(&rx->sa.rule); in ipsec_fs_rx_catchall_rules_destroy()
1599 mlx5_destroy_flow_group(rx->sa.group); in ipsec_fs_rx_catchall_rules_destroy()
1600 if (rx->chains == NULL) { in ipsec_fs_rx_catchall_rules_destroy()
1601 mlx5_del_flow_rules(&rx->pol.rule); in ipsec_fs_rx_catchall_rules_destroy()
1602 mlx5_destroy_flow_group(rx->pol.group); in ipsec_fs_rx_catchall_rules_destroy()
1604 mlx5_del_flow_rules(&rx->status.rule); in ipsec_fs_rx_catchall_rules_destroy()
1605 mlx5_modify_header_dealloc(mdev, rx->status.modify_hdr); in ipsec_fs_rx_catchall_rules_destroy()
1606 ipsec_fs_rx_roce_rules_destroy(&rx->roce); in ipsec_fs_rx_catchall_rules_destroy()
1607 mutex_unlock(&rx->ft.mutex); in ipsec_fs_rx_catchall_rules_destroy()
1629 static void ipsec_fs_rx_table_destroy(struct mlx5_core_dev *mdev, struct mlx5e_ipsec_rx *rx) in ipsec_fs_rx_table_destroy() argument
1631 if (rx->chains) { in ipsec_fs_rx_table_destroy()
1632 ipsec_chains_destroy(rx->chains); in ipsec_fs_rx_table_destroy()
1634 mlx5_del_flow_rules(&rx->pol.rule); in ipsec_fs_rx_table_destroy()
1635 mlx5_destroy_flow_table(rx->ft.pol); in ipsec_fs_rx_table_destroy()
1637 mlx5_destroy_flow_table(rx->ft.sa); in ipsec_fs_rx_table_destroy()
1638 mlx5_destroy_flow_table(rx->ft.status); in ipsec_fs_rx_table_destroy()
1639 ipsec_fs_rx_roce_table_destroy(&rx->roce); in ipsec_fs_rx_table_destroy()
1674 mlx5_core_err(mdev, "Fail to add RX roce ipsec rule err=%d\n", in ipsec_roce_rx_rule_setup()
1684 mlx5_core_err(mdev, "Fail to add RX roce ipsec miss rule err=%d\n", in ipsec_roce_rx_rule_setup()
1701 static int ipsec_roce_rx_rules(struct mlx5e_ipsec_rx *rx, struct mlx5_flow_destination *defdst, in ipsec_roce_rx_rules() argument
1712 if (!rx->roce.ns_rdma) in ipsec_roce_rx_rules()
1728 g = mlx5_create_flow_group(rx->roce.ft, in); in ipsec_roce_rx_rules()
1731 mlx5_core_err(mdev, "Fail to create ipsec rx roce group at nic err=%d\n", err); in ipsec_roce_rx_rules()
1734 rx->roce.g = g; in ipsec_roce_rx_rules()
1740 g = mlx5_create_flow_group(rx->roce.ft, in); in ipsec_roce_rx_rules()
1743 mlx5_core_err(mdev, "Fail to create ipsec rx roce miss group at nic err=%d\n", in ipsec_roce_rx_rules()
1747 rx->roce.roce_miss.group = g; in ipsec_roce_rx_rules()
1749 err = ipsec_roce_rx_rule_setup(defdst, &rx->roce, mdev); in ipsec_roce_rx_rules()
1757 mlx5_destroy_flow_group(rx->roce.roce_miss.group); in ipsec_roce_rx_rules()
1759 mlx5_destroy_flow_group(rx->roce.g); in ipsec_roce_rx_rules()
1766 struct mlx5e_ipsec_rx *rx, in ipsec_fs_rx_catchall_rules() argument
1773 mutex_lock(&rx->ft.mutex); in ipsec_fs_rx_catchall_rules()
1774 /* IPsec RoCE RX rules */ in ipsec_fs_rx_catchall_rules()
1775 err = ipsec_roce_rx_rules(rx, defdst, mdev); in ipsec_fs_rx_catchall_rules()
1779 /* IPsec Rx IP Status table rule */ in ipsec_fs_rx_catchall_rules()
1781 if (rx->roce.ft) in ipsec_fs_rx_catchall_rules()
1782 dest[0].ft = rx->roce.ft; in ipsec_fs_rx_catchall_rules()
1787 dest[1].counter_id = mlx5_fc_id(rx->fc->cnt); in ipsec_fs_rx_catchall_rules()
1788 err = ipsec_status_rule(mdev, rx, dest); in ipsec_fs_rx_catchall_rules()
1792 if (!rx->chains) { in ipsec_fs_rx_catchall_rules()
1793 /* IPsec Rx IP policy default miss rule */ in ipsec_fs_rx_catchall_rules()
1794 err = ipsec_miss_create(mdev, rx->ft.pol, &rx->pol, defdst); in ipsec_fs_rx_catchall_rules()
1803 err = ipsec_miss_create(mdev, rx->ft.sa, &rx->sa, defdst); in ipsec_fs_rx_catchall_rules()
1807 mutex_unlock(&rx->ft.mutex); in ipsec_fs_rx_catchall_rules()
1811 if (!rx->chains) { in ipsec_fs_rx_catchall_rules()
1812 mlx5_del_flow_rules(&rx->pol.rule); in ipsec_fs_rx_catchall_rules()
1813 mlx5_destroy_flow_group(rx->pol.group); in ipsec_fs_rx_catchall_rules()
1816 mlx5_del_flow_rules(&rx->status.rule); in ipsec_fs_rx_catchall_rules()
1817 mlx5_modify_header_dealloc(mdev, rx->status.modify_hdr); in ipsec_fs_rx_catchall_rules()
1819 ipsec_fs_rx_roce_rules_destroy(&rx->roce); in ipsec_fs_rx_catchall_rules()
1821 mutex_unlock(&rx->ft.mutex); in ipsec_fs_rx_catchall_rules()
1825 static int ipsec_fs_rx_roce_tables_create(struct mlx5e_ipsec_rx *rx, in ipsec_fs_rx_roce_tables_create() argument
1832 if (!rx->roce.ns_rdma) in ipsec_fs_rx_roce_tables_create()
1837 ft = mlx5_create_flow_table(rx->ns, &ft_attr); in ipsec_fs_rx_roce_tables_create()
1842 rx->roce.ft = ft; in ipsec_fs_rx_roce_tables_create()
1846 ft = mlx5_create_flow_table(rx->roce.ns_rdma, &ft_attr); in ipsec_fs_rx_roce_tables_create()
1851 rx->roce.ft_rdma = ft; in ipsec_fs_rx_roce_tables_create()
1855 mlx5_destroy_flow_table(rx->roce.ft); in ipsec_fs_rx_roce_tables_create()
1856 rx->roce.ft = NULL; in ipsec_fs_rx_roce_tables_create()
1930 /* Create rx ip type table */ in ipsec_fs_rx_ip_type_table_create()
1944 static int ipsec_fs_rx_table_create(struct mlx5_core_dev *mdev, struct mlx5e_ipsec_rx *rx, in ipsec_fs_rx_table_create() argument
1947 struct mlx5_flow_namespace *ns = rx->ns; in ipsec_fs_rx_table_create()
1951 mutex_lock(&rx->ft.mutex); in ipsec_fs_rx_table_create()
1953 /* IPsec Rx IP SA table create */ in ipsec_fs_rx_table_create()
1959 rx->ft.sa = ft; in ipsec_fs_rx_table_create()
1961 /* IPsec Rx IP Status table create */ in ipsec_fs_rx_table_create()
1967 rx->ft.status = ft; in ipsec_fs_rx_table_create()
1970 rx->chains = ipsec_chains_create(mdev, rx->ft.sa, in ipsec_fs_rx_table_create()
1972 rx_init_level, &rx->ft.pol); in ipsec_fs_rx_table_create()
1973 if (IS_ERR(rx->chains)) { in ipsec_fs_rx_table_create()
1974 err = PTR_ERR(rx->chains); in ipsec_fs_rx_table_create()
1983 rx->ft.pol = ft; in ipsec_fs_rx_table_create()
1986 /* IPsec RoCE RX tables create*/ in ipsec_fs_rx_table_create()
1987 err = ipsec_fs_rx_roce_tables_create(rx, rx_init_level + 3, in ipsec_fs_rx_table_create()
1995 mlx5_destroy_flow_table(rx->ft.pol); in ipsec_fs_rx_table_create()
1997 mlx5_destroy_flow_table(rx->ft.status); in ipsec_fs_rx_table_create()
1999 mlx5_destroy_flow_table(rx->ft.sa); in ipsec_fs_rx_table_create()
2001 mutex_unlock(&rx->ft.mutex); in ipsec_fs_rx_table_create()
2020 mlx5_core_err(mdev, "Failed to init roce rx ns\n"); in mlx5e_accel_ipsec_fs_init_roce()
2086 struct mlx5e_ipsec_rx *rx; in mlx5e_accel_ipsec_fs_del_pol() local
2088 rx = (pol_entry->attrs.family == AF_INET) in mlx5e_accel_ipsec_fs_del_pol()
2091 if (rx->chains) in mlx5e_accel_ipsec_fs_del_pol()
2092 ipsec_chains_put_table(rx->chains, in mlx5e_accel_ipsec_fs_del_pol()