MCPcopy Create free account
hub / github.com/F-Stack/f-stack / bnxt_flow_create

Function bnxt_flow_create

dpdk/drivers/net/bnxt/bnxt_flow.c:1892–2119  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1890
1891
1892static struct rte_flow *
1893bnxt_flow_create(struct rte_eth_dev *dev,
1894 const struct rte_flow_attr *attr,
1895 const struct rte_flow_item pattern[],
1896 const struct rte_flow_action actions[],
1897 struct rte_flow_error *error)
1898{
1899 struct bnxt *bp = dev->data->dev_private;
1900 struct bnxt_vnic_info *vnic = NULL;
1901 struct bnxt_filter_info *filter;
1902 bool update_flow = false;
1903 struct rte_flow *flow;
1904 int ret = 0;
1905 uint32_t tun_type, flow_id;
1906
1907 if (BNXT_VF(bp) && !BNXT_VF_IS_TRUSTED(bp)) {
1908 rte_flow_error_set(error, EINVAL,
1909 RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
1910 "Failed to create flow, Not a Trusted VF!");
1911 return NULL;
1912 }
1913
1914 if (!dev->data->dev_started) {
1915 rte_flow_error_set(error,
1916 EINVAL,
1917 RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
1918 NULL,
1919 "Device must be started");
1920 return NULL;
1921 }
1922
1923 flow = rte_zmalloc("bnxt_flow", sizeof(struct rte_flow), 0);
1924 if (!flow) {
1925 rte_flow_error_set(error, ENOMEM,
1926 RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
1927 "Failed to allocate memory");
1928 return flow;
1929 }
1930
1931 bnxt_acquire_flow_lock(bp);
1932 ret = bnxt_flow_args_validate(attr, pattern, actions, error);
1933 if (ret != 0) {
1934 PMD_DRV_LOG(ERR, "Not a validate flow.\n");
1935 goto free_flow;
1936 }
1937
1938 filter = bnxt_get_unused_filter(bp);
1939 if (filter == NULL) {
1940 rte_flow_error_set(error, ENOSPC,
1941 RTE_FLOW_ERROR_TYPE_HANDLE, NULL,
1942 "Not enough resources for a new flow");
1943 goto free_flow;
1944 }
1945
1946 ret = bnxt_validate_and_parse_flow(dev, pattern, actions, attr,
1947 error, filter);
1948 if (ret != 0)
1949 goto free_filter;

Callers

nothing calls this directly

Calls 15

rte_flow_error_setFunction · 0.85
rte_zmallocFunction · 0.85
bnxt_flow_args_validateFunction · 0.85
bnxt_get_unused_filterFunction · 0.85
bnxt_match_filterFunction · 0.85
bnxt_hwrm_set_em_filterFunction · 0.85

Tested by

no test coverage detected