[v1,2/2] net/cnxk: update sa to port map

Message ID 20230823055000.2692083-3-adwivedi@marvell.com (mailing list archive)
State Superseded, archived
Delegated to: Jerin Jacob
Headers
Series support of MACsec PN threshold events on multiple ports |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/github-robot: build success github build: passed
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-compile-amd64-testing success Testing PASS
ci/iol-unit-arm64-testing success Testing PASS
ci/iol-unit-amd64-testing success Testing PASS
ci/iol-compile-arm64-testing success Testing PASS
ci/iol-sample-apps-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS

Commit Message

Ankur Dwivedi Aug. 23, 2023, 5:50 a.m. UTC
  The sa to port map is updated when the sa is created. In this patch the
portid field is also added to macsec event callback function.

Signed-off-by: Ankur Dwivedi <adwivedi@marvell.com>
---
 drivers/net/cnxk/cnxk_ethdev_mcs.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)
  

Patch

diff --git a/drivers/net/cnxk/cnxk_ethdev_mcs.c b/drivers/net/cnxk/cnxk_ethdev_mcs.c
index 5264774394..06ef7c98f3 100644
--- a/drivers/net/cnxk/cnxk_ethdev_mcs.c
+++ b/drivers/net/cnxk/cnxk_ethdev_mcs.c
@@ -113,6 +113,8 @@  cnxk_eth_macsec_sa_create(void *device, struct rte_security_macsec_sa *conf)
 		return -EINVAL;
 	}
 
+	roc_mcs_sa_port_map_update(mcs_dev->mdev, sa_id, mcs_dev->port_id);
+
 	return sa_id;
 }
 
@@ -586,9 +588,11 @@  cnxk_eth_macsec_session_stats_get(struct cnxk_eth_dev *dev, struct cnxk_macsec_s
 }
 
 static int
-cnxk_mcs_event_cb(void *userdata, struct roc_mcs_event_desc *desc, void *cb_arg)
+cnxk_mcs_event_cb(void *userdata, struct roc_mcs_event_desc *desc, void *cb_arg,
+		  uint8_t port_id)
 {
 	struct rte_eth_event_macsec_desc d = {0};
+	struct cnxk_mcs_dev *mcs_dev = userdata;
 
 	d.metadata = (uint64_t)userdata;
 
@@ -617,15 +621,23 @@  cnxk_mcs_event_cb(void *userdata, struct roc_mcs_event_desc *desc, void *cb_arg)
 		break;
 	case ROC_MCS_EVENT_RX_SA_PN_HARD_EXP:
 		d.type = RTE_ETH_EVENT_MACSEC_RX_SA_PN_HARD_EXP;
+		if (mcs_dev->port_id != port_id)
+			return 0;
 		break;
 	case ROC_MCS_EVENT_RX_SA_PN_SOFT_EXP:
 		d.type = RTE_ETH_EVENT_MACSEC_RX_SA_PN_SOFT_EXP;
+		if (mcs_dev->port_id != port_id)
+			return 0;
 		break;
 	case ROC_MCS_EVENT_TX_SA_PN_HARD_EXP:
 		d.type = RTE_ETH_EVENT_MACSEC_TX_SA_PN_HARD_EXP;
+		if (mcs_dev->port_id != port_id)
+			return 0;
 		break;
 	case ROC_MCS_EVENT_TX_SA_PN_SOFT_EXP:
 		d.type = RTE_ETH_EVENT_MACSEC_TX_SA_PN_SOFT_EXP;
+		if (mcs_dev->port_id != port_id)
+			return 0;
 		break;
 	default:
 		plt_err("Unknown MACsec event type: %d", desc->type);