X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Focteontx2%2Fotx2_ethdev_devargs.c;h=f29f01564f051b0b771124a1864a21309486f629;hb=5cbe184802aae6f3033617c7a281e9e33eaf41a1;hp=7dc6e92bee37be3f40d9c11c728aebf06dbe0803;hpb=4d6816814acf2f8c64e8d4c26c07a1650b205f31;p=dpdk.git diff --git a/drivers/net/octeontx2/otx2_ethdev_devargs.c b/drivers/net/octeontx2/otx2_ethdev_devargs.c index 7dc6e92bee..f29f01564f 100644 --- a/drivers/net/octeontx2/otx2_ethdev_devargs.c +++ b/drivers/net/octeontx2/otx2_ethdev_devargs.c @@ -64,14 +64,12 @@ parse_reta_size(const char *key, const char *value, void *extra_args) } static int -parse_ptype_flag(const char *key, const char *value, void *extra_args) +parse_ipsec_in_max_spi(const char *key, const char *value, void *extra_args) { RTE_SET_USED(key); uint32_t val; val = atoi(value); - if (val) - val = 0; /* Disable NIX_RX_OFFLOAD_PTYPE_F */ *(uint16_t *)extra_args = val; @@ -104,22 +102,40 @@ parse_sqb_count(const char *key, const char *value, void *extra_args) return 0; } +static int +parse_switch_header_type(const char *key, const char *value, void *extra_args) +{ + RTE_SET_USED(key); + + if (strcmp(value, "higig2") == 0) + *(uint16_t *)extra_args = OTX2_PRIV_FLAGS_HIGIG; + + if (strcmp(value, "dsa") == 0) + *(uint16_t *)extra_args = OTX2_PRIV_FLAGS_EDSA; + + return 0; +} + #define OTX2_RSS_RETA_SIZE "reta_size" -#define OTX2_PTYPE_DISABLE "ptype_disable" +#define OTX2_IPSEC_IN_MAX_SPI "ipsec_in_max_spi" #define OTX2_SCL_ENABLE "scalar_enable" #define OTX2_MAX_SQB_COUNT "max_sqb_count" #define OTX2_FLOW_PREALLOC_SIZE "flow_prealloc_size" #define OTX2_FLOW_MAX_PRIORITY "flow_max_priority" +#define OTX2_SWITCH_HEADER_TYPE "switch_header" +#define OTX2_RSS_TAG_AS_XOR "tag_as_xor" int otx2_ethdev_parse_devargs(struct rte_devargs *devargs, struct otx2_eth_dev *dev) { - uint16_t offload_flag = NIX_RX_OFFLOAD_PTYPE_F; uint16_t rss_size = NIX_RSS_RETA_SIZE; uint16_t sqb_count = NIX_MAX_SQB; uint16_t flow_prealloc_size = 8; + uint16_t switch_header_type = 0; uint16_t flow_max_priority = 3; + uint16_t ipsec_in_max_spi = 1; uint16_t scalar_enable = 0; + uint16_t rss_tag_as_xor = 0; struct rte_kvargs *kvlist; if (devargs == NULL) @@ -129,10 +145,10 @@ otx2_ethdev_parse_devargs(struct rte_devargs *devargs, struct otx2_eth_dev *dev) if (kvlist == NULL) goto exit; - rte_kvargs_process(kvlist, OTX2_PTYPE_DISABLE, - &parse_ptype_flag, &offload_flag); rte_kvargs_process(kvlist, OTX2_RSS_RETA_SIZE, &parse_reta_size, &rss_size); + rte_kvargs_process(kvlist, OTX2_IPSEC_IN_MAX_SPI, + &parse_ipsec_in_max_spi, &ipsec_in_max_spi); rte_kvargs_process(kvlist, OTX2_SCL_ENABLE, &parse_flag, &scalar_enable); rte_kvargs_process(kvlist, OTX2_MAX_SQB_COUNT, @@ -141,15 +157,21 @@ otx2_ethdev_parse_devargs(struct rte_devargs *devargs, struct otx2_eth_dev *dev) &parse_flow_prealloc_size, &flow_prealloc_size); rte_kvargs_process(kvlist, OTX2_FLOW_MAX_PRIORITY, &parse_flow_max_priority, &flow_max_priority); + rte_kvargs_process(kvlist, OTX2_SWITCH_HEADER_TYPE, + &parse_switch_header_type, &switch_header_type); + rte_kvargs_process(kvlist, OTX2_RSS_TAG_AS_XOR, + &parse_flag, &rss_tag_as_xor); rte_kvargs_free(kvlist); null_devargs: - dev->rx_offload_flags = offload_flag; + dev->ipsec_in_max_spi = ipsec_in_max_spi; dev->scalar_ena = scalar_enable; + dev->rss_tag_as_xor = rss_tag_as_xor; dev->max_sqb_count = sqb_count; dev->rss_info.rss_size = rss_size; dev->npc_flow.flow_prealloc_size = flow_prealloc_size; dev->npc_flow.flow_max_priority = flow_max_priority; + dev->npc_flow.switch_header_type = switch_header_type; return 0; exit: @@ -158,8 +180,10 @@ exit: RTE_PMD_REGISTER_PARAM_STRING(net_octeontx2, OTX2_RSS_RETA_SIZE "=<64|128|256>" - OTX2_PTYPE_DISABLE "=1" + OTX2_IPSEC_IN_MAX_SPI "=<1-65535>" OTX2_SCL_ENABLE "=1" OTX2_MAX_SQB_COUNT "=<8-512>" OTX2_FLOW_PREALLOC_SIZE "=<1-32>" - OTX2_FLOW_MAX_PRIORITY "=<1-32>"); + OTX2_FLOW_MAX_PRIORITY "=<1-32>" + OTX2_SWITCH_HEADER_TYPE "=" + OTX2_RSS_TAG_AS_XOR "=1");