VOL-1322 - EAPOL messages dropped before reaching OLT

Partially reverted VOL-1311. ExtendedVLANTaggingOperationConfigurationData
cannot have the VLAN Table set during create as it is a R/W attribute. However, it must
be set per VOL-1311 during create to work around a parsing error in a get
of missing W attributes not present in the create. Current approach
is to set the table as a bogus set in the create() and then set again
immediately afterwards in a set().

Change-Id: I251fc177fd1bb49d1bc69cba9c8c7688ad88e674
diff --git a/.gitignore b/.gitignore
index 383aa18..ad47567 100644
--- a/.gitignore
+++ b/.gitignore
@@ -89,4 +89,4 @@
 nosetests.xml
 
 # OpenOLT repo
-voltha/adapters/openolt/openolt
+voltha/adapters/openolt/core
diff --git a/voltha/adapters/brcm_openomci_onu/omci/brcm_mib_download_task.py b/voltha/adapters/brcm_openomci_onu/omci/brcm_mib_download_task.py
index 23daa02..cbdb914 100644
--- a/voltha/adapters/brcm_openomci_onu/omci/brcm_mib_download_task.py
+++ b/voltha/adapters/brcm_openomci_onu/omci/brcm_mib_download_task.py
@@ -502,8 +502,45 @@
 
             attributes = dict(
                 association_type=association_type,                  # Assoc Type, PPTP/VEIP Ethernet UNI
-                associated_me_pointer=self._uni_port.entity_id,     # Assoc ME, PPTP/VEIP Entity Id
+                associated_me_pointer=self._uni_port.entity_id,      # Assoc ME, PPTP/VEIP Entity Id
 
+                # See VOL-1311 - Need to set table during create to avoid exception
+                # trying to read back table during post-create-read-missing-attributes
+                # But, because this is a R/W attribute. Some ONU may not accept the
+                # value during create. It is repeated again in a set below.
+                received_frame_vlan_tagging_operation_table=
+                VlanTaggingOperation(
+                    filter_outer_priority=15,  # This entry is not a double-tag rule
+                    filter_outer_vid=4096,     # Do not filter on the outer VID value
+                    filter_outer_tpid_de=0,    # Do not filter on the outer TPID field
+
+                    filter_inner_priority=15,
+                    filter_inner_vid=4096,
+                    filter_inner_tpid_de=0  ,
+                    filter_ether_type=0,
+
+                    treatment_tags_to_remove=0,
+                    treatment_outer_priority=15,
+                    treatment_outer_vid=0,
+                    treatment_outer_tpid_de=0,
+
+                    treatment_inner_priority=0,
+                    treatment_inner_vid=self._cvid,
+                    treatment_inner_tpid_de=4,
+                )
+            )
+
+            msg = ExtendedVlanTaggingOperationConfigurationDataFrame(
+                self._mac_bridge_service_profile_entity_id,  # Bridge Entity ID
+                attributes=attributes
+            )
+
+            frame = msg.create()
+            self.log.debug('openomci-msg', msg=msg)
+            results = yield omci_cc.send(frame)
+            self.check_status_and_state(results, 'create-extended-vlan-tagging-operation-configuration-data')
+
+            attributes = dict(
                 # Specifies the TPIDs in use and that operations in the downstream direction are
                 # inverse to the operations in the upstream direction
                 input_tpid=self._input_tpid,    # input TPID
@@ -518,9 +555,6 @@
                 # probably for eapol
                 # TODO: lots of magic
                 # TODO: magic 0x1000 / 4096?
-
-                # See VOL-1311 - Need to set table during create to avoid exception
-                # trying to read back table during post-create-read-missing-attributes
                 received_frame_vlan_tagging_operation_table=
                 VlanTaggingOperation(
                     filter_outer_priority=15,  # This entry is not a double-tag rule
@@ -547,10 +581,11 @@
                 self._mac_bridge_service_profile_entity_id,  # Bridge Entity ID
                 attributes=attributes
             )
-            frame = msg.create()
+
+            frame = msg.set()
             self.log.debug('openomci-msg', msg=msg)
             results = yield omci_cc.send(frame)
-            self.check_status_and_state(results, 'create-extended-vlan-tagging-operation-configuration-data')
+            self.check_status_and_state(results, 'set-extended-vlan-tagging-operation-configuration-data')
 
         except TimeoutError as e:
             self.log.warn('rx-timeout-2', e=e)