From: Ankur Dwivedi <adwiv...@marvell.com>

Under a common mbox, multiple events can be received. These events are
processed by net driver based on event IDs.

Signed-off-by: Ankur Dwivedi <adwiv...@marvell.com>
---
 drivers/net/cnxk/cnxk_rep.c | 35 ++++++++++++++++++++++++++++-------
 1 file changed, 28 insertions(+), 7 deletions(-)

diff --git a/drivers/net/cnxk/cnxk_rep.c b/drivers/net/cnxk/cnxk_rep.c
index 652d419ad8..ddc688fdc2 100644
--- a/drivers/net/cnxk/cnxk_rep.c
+++ b/drivers/net/cnxk/cnxk_rep.c
@@ -253,12 +253,30 @@ cnxk_representee_state_msg_process(struct 
cnxk_eswitch_dev *eswitch_dev, uint16_
 
 static int
 cnxk_representee_mtu_msg_process(struct cnxk_eswitch_dev *eswitch_dev, 
uint16_t hw_func,
-                                uint16_t rep_id, uint16_t mtu)
+                                uint16_t mtu)
 {
+       struct cnxk_eswitch_devargs *esw_da;
        struct cnxk_rep_dev *rep_dev = NULL;
        struct rte_eth_dev *rep_eth_dev;
+       uint16_t rep_id = UINT16_MAX;
        int rc = 0;
-       int i;
+       int i, j;
+
+       /* Traversing the initialized represented list */
+       for (i = 0; i < eswitch_dev->nb_esw_da; i++) {
+               esw_da = &eswitch_dev->esw_da[i];
+               for (j = 0; j < esw_da->nb_repr_ports; j++) {
+                       if (esw_da->repr_hw_info[j].hw_func == hw_func) {
+                               rep_id = esw_da->repr_hw_info[j].rep_id;
+                               break;
+                       }
+               }
+               if (rep_id != UINT16_MAX)
+                       break;
+       }
+       /* No action on PF func for which representor has not been created */
+       if (rep_id == UINT16_MAX)
+               goto done;
 
        for (i = 0; i < eswitch_dev->repr_cnt.nb_repr_probed; i++) {
                rep_eth_dev = eswitch_dev->rep_info[i].rep_eth_dev;
@@ -289,17 +307,20 @@ cnxk_representee_msg_process(struct cnxk_eswitch_dev 
*eswitch_dev,
 
        switch (notify_msg->type) {
        case ROC_ESWITCH_REPTE_STATE:
-               plt_rep_dbg("      type %d: hw_func %x action %s", 
notify_msg->type,
-                           notify_msg->state.hw_func,
+               plt_rep_dbg("     REPTE STATE: hw_func %x action %s", 
notify_msg->state.hw_func,
                            notify_msg->state.enable ? "enable" : "disable");
                rc = cnxk_representee_state_msg_process(eswitch_dev, 
notify_msg->state.hw_func,
                                                        
notify_msg->state.enable);
                break;
+       case ROC_ESWITCH_LINK_STATE:
+               plt_rep_dbg("     LINK STATE: hw_func %x action %s", 
notify_msg->link.hw_func,
+                           notify_msg->link.enable ? "enable" : "disable");
+               break;
        case ROC_ESWITCH_REPTE_MTU:
-               plt_rep_dbg("      type %d: hw_func %x rep_id %d mtu %d", 
notify_msg->type,
-                           notify_msg->mtu.hw_func, notify_msg->mtu.rep_id, 
notify_msg->mtu.mtu);
+               plt_rep_dbg("      REPTE MTU: hw_func %x rep_id %d mtu %d", 
notify_msg->mtu.hw_func,
+                           notify_msg->mtu.rep_id, notify_msg->mtu.mtu);
                rc = cnxk_representee_mtu_msg_process(eswitch_dev, 
notify_msg->mtu.hw_func,
-                                                     notify_msg->mtu.rep_id, 
notify_msg->mtu.mtu);
+                                                     notify_msg->mtu.mtu);
                break;
        default:
                plt_err("Invalid notification msg received %d", 
notify_msg->type);
-- 
2.46.0.469.g4590f2e941

Reply via email to