Blob Blame History Raw
From 4825abfcadd579b3603994f2e98487ee3b14ef26 Mon Sep 17 00:00:00 2001
From: John Fastabend <john.r.fastabend@intel.com>
Date: Wed, 27 Jul 2011 15:03:39 -0700
Subject: [PATCH 07/29] lldpad: remove app data on CEE unregister

When CEE is unregistered the CEE app data should be removed.

Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Signed-off-by: Petr Sabata <contyk@redhat.com>
---
 dcb_protocol.c |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/dcb_protocol.c b/dcb_protocol.c
index 0bb13b9..310b071 100644
--- a/dcb_protocol.c
+++ b/dcb_protocol.c
@@ -1243,6 +1243,35 @@ dcb_result save_dcbx_state(const char *device_name)
 		return dcb_failed;
 }
 
+static int dcbx_free_app_config(char *device_name)
+{
+	app_it Oper, Local;
+	appgroup_attribs app_data;
+
+	/* Free FCoE APP data */
+	Oper = apptlv_find(&oper_apptlv, device_name, APP_FCOE_STYPE);
+	Local = apptlv_find(&apptlv, device_name, APP_FCOE_STYPE);
+	if (Oper || Local) {
+		app_data.dcb_app_idtype = DCB_APP_IDTYPE_ETHTYPE;
+		app_data.dcb_app_id = APP_FCOE_ETHTYPE;
+		app_data.dcb_app_priority = 0;
+		set_hw_app(device_name, &app_data);
+	}
+
+	/* Free iSCSI APP data */
+	Oper = apptlv_find(&oper_apptlv, device_name, APP_ISCSI_STYPE);
+	Local = apptlv_find(&apptlv, device_name, APP_ISCSI_STYPE);
+	if (Oper || Local) {
+		app_data.dcb_app_idtype = DCB_APP_IDTYPE_PORTNUM;
+		app_data.dcb_app_id = APP_ISCSI_PORT;
+		app_data.dcb_app_priority = 0;
+
+		set_hw_app(device_name, &app_data);
+	}
+
+	return 0;
+}
+
 int dcbx_remove_all(void)
 {
 	pg_it it;
@@ -1258,6 +1287,9 @@ int dcbx_remove_all(void)
 
 		save_dcbx_state(it->ifname);
 
+		/* Remove kernel APP entries */
+		dcbx_free_app_config(it->ifname);
+
 		/* prepare sTmp in case of error */
 		snprintf(sTmp, MAX_DEVICE_NAME_LEN*2, /* Localization OK */
 			"Remove_all_adapters error: Bad device name: %.*s\n",
-- 
1.7.6