Commit cdf449ec authored by Sameeh Jubran's avatar Sameeh Jubran Committed by David S. Miller

net: ena: add support for changing max_header_size in LLQ mode

Up until now the driver always used a single setting for the sizes
of the different parts of the llq entry - 128 for entry size, 2 for
descriptors before header and 96 for maximum header size.

The current code makes sure that the parts of the llq entry are
compatible with each other and with the initial llq entry size given
by the device.

This commit changes this code to support any llq entry size
Signed-off-by: default avatarArthur Kiyanovski <akiyano@amazon.com>
Signed-off-by: default avatarSameeh Jubran <sameehj@amazon.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a4e262cd
...@@ -2992,8 +2992,8 @@ int ena_com_config_dev_mode(struct ena_com_dev *ena_dev, ...@@ -2992,8 +2992,8 @@ int ena_com_config_dev_mode(struct ena_com_dev *ena_dev,
struct ena_admin_feature_llq_desc *llq_features, struct ena_admin_feature_llq_desc *llq_features,
struct ena_llq_configurations *llq_default_cfg) struct ena_llq_configurations *llq_default_cfg)
{ {
struct ena_com_llq_info *llq_info = &ena_dev->llq_info;
int rc; int rc;
int size;
if (!llq_features->max_llq_num) { if (!llq_features->max_llq_num) {
ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST; ena_dev->tx_mem_queue_type = ENA_ADMIN_PLACEMENT_POLICY_HOST;
...@@ -3004,12 +3004,10 @@ int ena_com_config_dev_mode(struct ena_com_dev *ena_dev, ...@@ -3004,12 +3004,10 @@ int ena_com_config_dev_mode(struct ena_com_dev *ena_dev,
if (rc) if (rc)
return rc; return rc;
/* Validate the descriptor is not too big */ ena_dev->tx_max_header_size = llq_info->desc_list_entry_size -
size = ena_dev->tx_max_header_size; (llq_info->descs_num_before_header * sizeof(struct ena_eth_io_tx_desc));
size += ena_dev->llq_info.descs_num_before_header *
sizeof(struct ena_eth_io_tx_desc);
if (unlikely(ena_dev->llq_info.desc_list_entry_size < size)) { if (unlikely(ena_dev->tx_max_header_size == 0)) {
pr_err("the size of the LLQ entry is smaller than needed\n"); pr_err("the size of the LLQ entry is smaller than needed\n");
return -EINVAL; return -EINVAL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment