On 7/3/2020 10:01 PM, Ajit Khaparde wrote:
> From: Peter Spreadborough <peter.spreadborough@broadcom.com>
>
> Modify Exact Match insert and delete to use the HWRM messages directly.
> Remove tunneled EM insert and delete message types.
>
> Signed-off-by: Peter Spreadborough <peter.spreadborough@broadcom.com>
> Signed-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
> Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
> Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
> ---
> drivers/net/bnxt/tf_core/hwrm_tf.h | 70 ++----------------------------
> drivers/net/bnxt/tf_core/tf_msg.c | 66 ++++++++++++++++------------
> 2 files changed, 43 insertions(+), 93 deletions(-)
>
> diff --git a/drivers/net/bnxt/tf_core/hwrm_tf.h b/drivers/net/bnxt/tf_core/hwrm_tf.h
> index 439950e02..d342c695c 100644
> --- a/drivers/net/bnxt/tf_core/hwrm_tf.h
> +++ b/drivers/net/bnxt/tf_core/hwrm_tf.h
> @@ -1,5 +1,5 @@
> /* SPDX-License-Identifier: BSD-3-Clause
> - * Copyright(c) 2019-2020 Broadcom
> + * Copyright(c) 2019 Broadcom
> * All rights reserved.
> */
Why '2020' removed from the copyright year, -although many seems feeling similar
about the '2020' :/
On 7/3/2020 10:01 PM, Ajit Khaparde wrote:
> From: Peter Spreadborough <peter.spreadborough@broadcom.com>
>
> Modify Exact Match insert and delete to use the HWRM messages directly.
> Remove tunneled EM insert and delete message types.
>
> Signed-off-by: Peter Spreadborough <peter.spreadborough@broadcom.com>
> Signed-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
> Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
> Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
<...>
> @@ -351,7 +345,7 @@ typedef struct tf_session_hw_resc_alloc_output {
> uint16_t range_prof_start;
> /* Number range profiles allocated */
> uint16_t range_prof_stride;
> - /* Starting index of range entries allocated to the session */
> + /* Starting index of range enntries allocated to the session */
> uint16_t range_entries_start;
> /* Number of range entries allocated */
> uint16_t range_entries_stride;
> @@ -453,7 +447,7 @@ typedef struct tf_session_hw_resc_free_input {
> uint16_t range_prof_start;
> /* Number range profiles allocated */
> uint16_t range_prof_stride;
> - /* Starting index of range entries allocated to the session */
> + /* Starting index of range enntries allocated to the session */
> uint16_t range_entries_start;
> /* Number of range entries allocated */
> uint16_t range_entries_stride;
> @@ -555,7 +549,7 @@ typedef struct tf_session_hw_resc_flush_input {
> uint16_t range_prof_start;
> /* Number range profiles allocated */
> uint16_t range_prof_stride;
> - /* Starting index of range entries allocated to the session */
> + /* Starting index of range enntries allocated to the session */
> uint16_t range_entries_start;
> /* Number of range entries allocated */
> uint16_t range_entries_stride;
And adding spelling errors back?
Is this patch revert of any previous patch? Would you mind keeping the spelling
fixes?
This set is big and confusing to me ...
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2019-2020 Broadcom
+ * Copyright(c) 2019 Broadcom
* All rights reserved.
*/
#ifndef _HWRM_TF_H_
@@ -23,8 +23,6 @@ typedef enum tf_subtype {
HWRM_TFT_SESSION_SRAM_RESC_FREE = 727,
HWRM_TFT_SESSION_SRAM_RESC_FLUSH = 728,
HWRM_TFT_TBL_SCOPE_CFG = 731,
- HWRM_TFT_EM_RULE_INSERT = 739,
- HWRM_TFT_EM_RULE_DELETE = 740,
HWRM_TFT_REG_GET = 821,
HWRM_TFT_REG_SET = 822,
HWRM_TFT_TBL_TYPE_SET = 823,
@@ -83,10 +81,6 @@ struct tf_session_sram_resc_flush_input;
struct tf_tbl_type_set_input;
struct tf_tbl_type_get_input;
struct tf_tbl_type_get_output;
-struct tf_em_internal_insert_input;
-struct tf_em_internal_insert_output;
-struct tf_em_internal_delete_input;
-struct tf_em_internal_delete_output;
/* Input params for session attach */
typedef struct tf_session_attach_input {
/* Firmware session id returned when HWRM_TF_SESSION_OPEN is sent */
@@ -351,7 +345,7 @@ typedef struct tf_session_hw_resc_alloc_output {
uint16_t range_prof_start;
/* Number range profiles allocated */
uint16_t range_prof_stride;
- /* Starting index of range entries allocated to the session */
+ /* Starting index of range enntries allocated to the session */
uint16_t range_entries_start;
/* Number of range entries allocated */
uint16_t range_entries_stride;
@@ -453,7 +447,7 @@ typedef struct tf_session_hw_resc_free_input {
uint16_t range_prof_start;
/* Number range profiles allocated */
uint16_t range_prof_stride;
- /* Starting index of range entries allocated to the session */
+ /* Starting index of range enntries allocated to the session */
uint16_t range_entries_start;
/* Number of range entries allocated */
uint16_t range_entries_stride;
@@ -555,7 +549,7 @@ typedef struct tf_session_hw_resc_flush_input {
uint16_t range_prof_start;
/* Number range profiles allocated */
uint16_t range_prof_stride;
- /* Starting index of range entries allocated to the session */
+ /* Starting index of range enntries allocated to the session */
uint16_t range_entries_start;
/* Number of range entries allocated */
uint16_t range_entries_stride;
@@ -922,60 +916,4 @@ typedef struct tf_tbl_type_get_output {
uint8_t data[TF_BULK_RECV];
} tf_tbl_type_get_output_t, *ptf_tbl_type_get_output_t;
-/* Input params for EM internal rule insert */
-typedef struct tf_em_internal_insert_input {
- /* Firmware Session Id */
- uint32_t fw_session_id;
- /* flags */
- uint16_t flags;
- /* When set to 0, indicates the get apply to RX */
-#define TF_EM_INTERNAL_INSERT_INPUT_FLAGS_DIR_RX (0x0)
- /* When set to 1, indicates the get apply to TX */
-#define TF_EM_INTERNAL_INSERT_INPUT_FLAGS_DIR_TX (0x1)
- /* strength */
- uint16_t strength;
- /* index to action */
- uint32_t action_ptr;
- /* index of em record */
- uint32_t em_record_idx;
- /* EM Key value */
- uint64_t em_key[8];
- /* number of bits in em_key */
- uint16_t em_key_bitlen;
-} tf_em_internal_insert_input_t, *ptf_em_internal_insert_input_t;
-
-/* Output params for EM internal rule insert */
-typedef struct tf_em_internal_insert_output {
- /* EM record pointer index */
- uint16_t rptr_index;
- /* EM record offset 0~3 */
- uint8_t rptr_entry;
- /* Number of word entries consumed by the key */
- uint8_t num_of_entries;
-} tf_em_internal_insert_output_t, *ptf_em_internal_insert_output_t;
-
-/* Input params for EM INTERNAL rule delete */
-typedef struct tf_em_internal_delete_input {
- /* Session Id */
- uint32_t tf_session_id;
- /* flags */
- uint16_t flags;
- /* When set to 0, indicates the get apply to RX */
-#define TF_EM_INTERNAL_DELETE_INPUT_FLAGS_DIR_RX (0x0)
- /* When set to 1, indicates the get apply to TX */
-#define TF_EM_INTERNAL_DELETE_INPUT_FLAGS_DIR_TX (0x1)
- /* EM internal flow hanndle */
- uint64_t flow_handle;
- /* EM Key value */
- uint64_t em_key[8];
- /* number of bits in em_key */
- uint16_t em_key_bitlen;
-} tf_em_internal_delete_input_t, *ptf_em_internal_delete_input_t;
-
-/* Input params for EM INTERNAL rule delete */
-typedef struct tf_em_internal_delete_output {
- /* Original stack allocation index */
- uint16_t em_index;
-} tf_em_internal_delete_output_t, *ptf_em_internal_delete_output_t;
-
#endif /* _HWRM_TF_H_ */
@@ -1023,32 +1023,38 @@ int tf_msg_insert_em_internal_entry(struct tf *tfp,
uint8_t *rptr_entry,
uint8_t *num_of_entries)
{
- int rc;
- struct tfp_send_msg_parms parms = { 0 };
- struct tf_em_internal_insert_input req = { 0 };
- struct tf_em_internal_insert_output resp = { 0 };
+ int rc;
+ struct tfp_send_msg_parms parms = { 0 };
+ struct hwrm_tf_em_insert_input req = { 0 };
+ struct hwrm_tf_em_insert_output resp = { 0 };
struct tf_session *tfs = (struct tf_session *)(tfp->session->core_data);
struct tf_em_64b_entry *em_result =
(struct tf_em_64b_entry *)em_parms->em_record;
+ uint32_t flags;
req.fw_session_id =
tfp_cpu_to_le_32(tfs->session_id.internal.fw_session_id);
memcpy(req.em_key, em_parms->key, ((em_parms->key_sz_in_bits + 7) / 8));
- req.flags = tfp_cpu_to_le_16(em_parms->dir);
+
+ flags = (em_parms->dir == TF_DIR_TX ?
+ HWRM_TF_EM_INSERT_INPUT_FLAGS_DIR_TX :
+ HWRM_TF_EM_INSERT_INPUT_FLAGS_DIR_RX);
+ req.flags = tfp_cpu_to_le_16(flags);
req.strength = (em_result->hdr.word1 & TF_LKUP_RECORD_STRENGTH_MASK) >>
TF_LKUP_RECORD_STRENGTH_SHIFT;
req.em_key_bitlen = em_parms->key_sz_in_bits;
req.action_ptr = em_result->hdr.pointer;
req.em_record_idx = *rptr_index;
- MSG_PREP(parms,
- TF_KONG_MB,
- HWRM_TF,
- HWRM_TFT_EM_RULE_INSERT,
- req,
- resp);
+ parms.tf_type = HWRM_TF_EM_INSERT;
+ parms.req_data = (uint32_t *)&req;
+ parms.req_size = sizeof(req);
+ parms.resp_data = (uint32_t *)&resp;
+ parms.resp_size = sizeof(resp);
+ parms.mailbox = TF_KONG_MB;
- rc = tfp_send_msg_tunneled(tfp, &parms);
+ rc = tfp_send_msg_direct(tfp,
+ &parms);
if (rc)
return rc;
@@ -1056,7 +1062,7 @@ int tf_msg_insert_em_internal_entry(struct tf *tfp,
*rptr_index = resp.rptr_index;
*num_of_entries = resp.num_of_entries;
- return tfp_le_to_cpu_32(parms.tf_resp_code);
+ return 0;
}
/**
@@ -1065,32 +1071,38 @@ int tf_msg_insert_em_internal_entry(struct tf *tfp,
int tf_msg_delete_em_entry(struct tf *tfp,
struct tf_delete_em_entry_parms *em_parms)
{
- int rc;
- struct tfp_send_msg_parms parms = { 0 };
- struct tf_em_internal_delete_input req = { 0 };
- struct tf_em_internal_delete_output resp = { 0 };
+ int rc;
+ struct tfp_send_msg_parms parms = { 0 };
+ struct hwrm_tf_em_delete_input req = { 0 };
+ struct hwrm_tf_em_delete_output resp = { 0 };
+ uint32_t flags;
struct tf_session *tfs =
(struct tf_session *)(tfp->session->core_data);
- req.tf_session_id =
+ req.fw_session_id =
tfp_cpu_to_le_32(tfs->session_id.internal.fw_session_id);
- req.flags = tfp_cpu_to_le_16(em_parms->dir);
+
+ flags = (em_parms->dir == TF_DIR_TX ?
+ HWRM_TF_EM_DELETE_INPUT_FLAGS_DIR_TX :
+ HWRM_TF_EM_DELETE_INPUT_FLAGS_DIR_RX);
+ req.flags = tfp_cpu_to_le_16(flags);
req.flow_handle = tfp_cpu_to_le_64(em_parms->flow_handle);
- MSG_PREP(parms,
- TF_KONG_MB,
- HWRM_TF,
- HWRM_TFT_EM_RULE_DELETE,
- req,
- resp);
+ parms.tf_type = HWRM_TF_EM_DELETE;
+ parms.req_data = (uint32_t *)&req;
+ parms.req_size = sizeof(req);
+ parms.resp_data = (uint32_t *)&resp;
+ parms.resp_size = sizeof(resp);
+ parms.mailbox = TF_KONG_MB;
- rc = tfp_send_msg_tunneled(tfp, &parms);
+ rc = tfp_send_msg_direct(tfp,
+ &parms);
if (rc)
return rc;
em_parms->index = tfp_le_to_cpu_16(resp.em_index);
- return tfp_le_to_cpu_32(parms.tf_resp_code);
+ return 0;
}
/**