|
@@ -460,42 +460,30 @@ static VOID CopyToAdapter(register struct bcm_mini_adapter *Adapter, /* <Pointer
|
|
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, CONN_MSG, DBG_LVL_ALL, "CopyToAdapter : u8CSSpecification : %X\n", psfLocalSet->u8CSSpecification);
|
|
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, CONN_MSG, DBG_LVL_ALL, "CopyToAdapter : u8CSSpecification : %X\n", psfLocalSet->u8CSSpecification);
|
|
switch (psfLocalSet->u8CSSpecification) {
|
|
switch (psfLocalSet->u8CSSpecification) {
|
|
case eCSPacketIPV4:
|
|
case eCSPacketIPV4:
|
|
- {
|
|
|
|
Adapter->PackInfo[uiSearchRuleIndex].bIPCSSupport = IPV4_CS;
|
|
Adapter->PackInfo[uiSearchRuleIndex].bIPCSSupport = IPV4_CS;
|
|
break;
|
|
break;
|
|
- }
|
|
|
|
case eCSPacketIPV6:
|
|
case eCSPacketIPV6:
|
|
- {
|
|
|
|
Adapter->PackInfo[uiSearchRuleIndex].bIPCSSupport = IPV6_CS;
|
|
Adapter->PackInfo[uiSearchRuleIndex].bIPCSSupport = IPV6_CS;
|
|
break;
|
|
break;
|
|
- }
|
|
|
|
case eCS802_3PacketEthernet:
|
|
case eCS802_3PacketEthernet:
|
|
case eCS802_1QPacketVLAN:
|
|
case eCS802_1QPacketVLAN:
|
|
- {
|
|
|
|
Adapter->PackInfo[uiSearchRuleIndex].bEthCSSupport = ETH_CS_802_3;
|
|
Adapter->PackInfo[uiSearchRuleIndex].bEthCSSupport = ETH_CS_802_3;
|
|
break;
|
|
break;
|
|
- }
|
|
|
|
case eCSPacketIPV4Over802_1QVLAN:
|
|
case eCSPacketIPV4Over802_1QVLAN:
|
|
case eCSPacketIPV4Over802_3Ethernet:
|
|
case eCSPacketIPV4Over802_3Ethernet:
|
|
- {
|
|
|
|
Adapter->PackInfo[uiSearchRuleIndex].bIPCSSupport = IPV4_CS;
|
|
Adapter->PackInfo[uiSearchRuleIndex].bIPCSSupport = IPV4_CS;
|
|
Adapter->PackInfo[uiSearchRuleIndex].bEthCSSupport = ETH_CS_802_3;
|
|
Adapter->PackInfo[uiSearchRuleIndex].bEthCSSupport = ETH_CS_802_3;
|
|
break;
|
|
break;
|
|
- }
|
|
|
|
case eCSPacketIPV6Over802_1QVLAN:
|
|
case eCSPacketIPV6Over802_1QVLAN:
|
|
case eCSPacketIPV6Over802_3Ethernet:
|
|
case eCSPacketIPV6Over802_3Ethernet:
|
|
- {
|
|
|
|
Adapter->PackInfo[uiSearchRuleIndex].bIPCSSupport = IPV6_CS;
|
|
Adapter->PackInfo[uiSearchRuleIndex].bIPCSSupport = IPV6_CS;
|
|
Adapter->PackInfo[uiSearchRuleIndex].bEthCSSupport = ETH_CS_802_3;
|
|
Adapter->PackInfo[uiSearchRuleIndex].bEthCSSupport = ETH_CS_802_3;
|
|
break;
|
|
break;
|
|
- }
|
|
|
|
default:
|
|
default:
|
|
- {
|
|
|
|
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, CONN_MSG, DBG_LVL_ALL, "Error in value of CS Classification.. setting default to IP CS\n");
|
|
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, CONN_MSG, DBG_LVL_ALL, "Error in value of CS Classification.. setting default to IP CS\n");
|
|
Adapter->PackInfo[uiSearchRuleIndex].bIPCSSupport = IPV4_CS;
|
|
Adapter->PackInfo[uiSearchRuleIndex].bIPCSSupport = IPV4_CS;
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, CONN_MSG, DBG_LVL_ALL, "CopyToAdapter : Queue No : %X ETH CS Support : %X , IP CS Support : %X\n",
|
|
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, CONN_MSG, DBG_LVL_ALL, "CopyToAdapter : Queue No : %X ETH CS Support : %X , IP CS Support : %X\n",
|
|
uiSearchRuleIndex,
|
|
uiSearchRuleIndex,
|
|
@@ -542,32 +530,23 @@ static VOID CopyToAdapter(register struct bcm_mini_adapter *Adapter, /* <Pointer
|
|
} else if (ucDsxType == DSC_ACK) {
|
|
} else if (ucDsxType == DSC_ACK) {
|
|
switch (psfCSType->u8ClassfierDSCAction) {
|
|
switch (psfCSType->u8ClassfierDSCAction) {
|
|
case 0: /* DSC Add Classifier */
|
|
case 0: /* DSC Add Classifier */
|
|
- {
|
|
|
|
eClassifierAction = eAddClassifier;
|
|
eClassifierAction = eAddClassifier;
|
|
- }
|
|
|
|
- break;
|
|
|
|
|
|
+ break;
|
|
case 1: /* DSC Replace Classifier */
|
|
case 1: /* DSC Replace Classifier */
|
|
- {
|
|
|
|
eClassifierAction = eReplaceClassifier;
|
|
eClassifierAction = eReplaceClassifier;
|
|
- }
|
|
|
|
- break;
|
|
|
|
|
|
+ break;
|
|
case 2: /* DSC Delete Classifier */
|
|
case 2: /* DSC Delete Classifier */
|
|
- {
|
|
|
|
eClassifierAction = eDeleteClassifier;
|
|
eClassifierAction = eDeleteClassifier;
|
|
- }
|
|
|
|
- break;
|
|
|
|
|
|
+ break;
|
|
default:
|
|
default:
|
|
- {
|
|
|
|
eClassifierAction = eInvalidClassifierAction;
|
|
eClassifierAction = eInvalidClassifierAction;
|
|
}
|
|
}
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
u16PacketClassificationRuleIndex = ntohs(psfCSType->cCPacketClassificationRule.u16PacketClassificationRuleIndex);
|
|
u16PacketClassificationRuleIndex = ntohs(psfCSType->cCPacketClassificationRule.u16PacketClassificationRuleIndex);
|
|
|
|
|
|
switch (eClassifierAction) {
|
|
switch (eClassifierAction) {
|
|
case eAddClassifier:
|
|
case eAddClassifier:
|
|
- {
|
|
|
|
/* Get a Free Classifier Index From Classifier table for this SF to add the Classifier */
|
|
/* Get a Free Classifier Index From Classifier table for this SF to add the Classifier */
|
|
/* Contained in this message */
|
|
/* Contained in this message */
|
|
nClassifierIndex = SearchClsid(Adapter, ulSFID, u16PacketClassificationRuleIndex);
|
|
nClassifierIndex = SearchClsid(Adapter, ulSFID, u16PacketClassificationRuleIndex);
|
|
@@ -587,10 +566,8 @@ static VOID CopyToAdapter(register struct bcm_mini_adapter *Adapter, /* <Pointer
|
|
"CopyToAdapter: Error The Specified Classifier Already Exists and attempted To Add Classifier with Same PCRI : 0x%x\n",
|
|
"CopyToAdapter: Error The Specified Classifier Already Exists and attempted To Add Classifier with Same PCRI : 0x%x\n",
|
|
u16PacketClassificationRuleIndex);
|
|
u16PacketClassificationRuleIndex);
|
|
}
|
|
}
|
|
- }
|
|
|
|
- break;
|
|
|
|
|
|
+ break;
|
|
case eReplaceClassifier:
|
|
case eReplaceClassifier:
|
|
- {
|
|
|
|
/* Get the Classifier Index From Classifier table for this SF and replace existing Classifier */
|
|
/* Get the Classifier Index From Classifier table for this SF and replace existing Classifier */
|
|
/* with the new classifier Contained in this message */
|
|
/* with the new classifier Contained in this message */
|
|
nClassifierIndex = SearchClsid(Adapter, ulSFID, u16PacketClassificationRuleIndex);
|
|
nClassifierIndex = SearchClsid(Adapter, ulSFID, u16PacketClassificationRuleIndex);
|
|
@@ -601,10 +578,8 @@ static VOID CopyToAdapter(register struct bcm_mini_adapter *Adapter, /* <Pointer
|
|
}
|
|
}
|
|
/* Copy the Classifier Rule for this service flow into our Classifier table maintained per SF. */
|
|
/* Copy the Classifier Rule for this service flow into our Classifier table maintained per SF. */
|
|
CopyClassifierRuleToSF(Adapter, psfCSType, uiSearchRuleIndex, nClassifierIndex);
|
|
CopyClassifierRuleToSF(Adapter, psfCSType, uiSearchRuleIndex, nClassifierIndex);
|
|
- }
|
|
|
|
- break;
|
|
|
|
|
|
+ break;
|
|
case eDeleteClassifier:
|
|
case eDeleteClassifier:
|
|
- {
|
|
|
|
/* Get the Classifier Index From Classifier table for this SF and replace existing Classifier */
|
|
/* Get the Classifier Index From Classifier table for this SF and replace existing Classifier */
|
|
/* with the new classifier Contained in this message */
|
|
/* with the new classifier Contained in this message */
|
|
nClassifierIndex = SearchClsid(Adapter, ulSFID, u16PacketClassificationRuleIndex);
|
|
nClassifierIndex = SearchClsid(Adapter, ulSFID, u16PacketClassificationRuleIndex);
|
|
@@ -616,14 +591,11 @@ static VOID CopyToAdapter(register struct bcm_mini_adapter *Adapter, /* <Pointer
|
|
|
|
|
|
/* Delete This classifier */
|
|
/* Delete This classifier */
|
|
DeleteClassifierRuleFromSF(Adapter, uiSearchRuleIndex, nClassifierIndex);
|
|
DeleteClassifierRuleFromSF(Adapter, uiSearchRuleIndex, nClassifierIndex);
|
|
- }
|
|
|
|
- break;
|
|
|
|
|
|
+ break;
|
|
default:
|
|
default:
|
|
- {
|
|
|
|
/* Invalid Action for classifier */
|
|
/* Invalid Action for classifier */
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/* Repeat parsing Classification Entries to process PHS Rules */
|
|
/* Repeat parsing Classification Entries to process PHS Rules */
|
|
@@ -633,35 +605,28 @@ static VOID CopyToAdapter(register struct bcm_mini_adapter *Adapter, /* <Pointer
|
|
|
|
|
|
switch (psfCSType->u8PhsDSCAction) {
|
|
switch (psfCSType->u8PhsDSCAction) {
|
|
case eDeleteAllPHSRules:
|
|
case eDeleteAllPHSRules:
|
|
- {
|
|
|
|
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, CONN_MSG, DBG_LVL_ALL, "Deleting All PHS Rules For VCID: 0x%X\n", uVCID);
|
|
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, CONN_MSG, DBG_LVL_ALL, "Deleting All PHS Rules For VCID: 0x%X\n", uVCID);
|
|
|
|
|
|
/* Delete All the PHS rules for this Service flow */
|
|
/* Delete All the PHS rules for this Service flow */
|
|
PhsDeleteSFRules(&Adapter->stBCMPhsContext, uVCID);
|
|
PhsDeleteSFRules(&Adapter->stBCMPhsContext, uVCID);
|
|
break;
|
|
break;
|
|
- }
|
|
|
|
case eDeletePHSRule:
|
|
case eDeletePHSRule:
|
|
- {
|
|
|
|
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, CONN_MSG, DBG_LVL_ALL, "PHS DSC Action = Delete PHS Rule\n");
|
|
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, CONN_MSG, DBG_LVL_ALL, "PHS DSC Action = Delete PHS Rule\n");
|
|
|
|
|
|
if (psfCSType->cPhsRule.u8PHSI)
|
|
if (psfCSType->cPhsRule.u8PHSI)
|
|
PhsDeletePHSRule(&Adapter->stBCMPhsContext, uVCID, psfCSType->cCPacketClassificationRule.u8AssociatedPHSI);
|
|
PhsDeletePHSRule(&Adapter->stBCMPhsContext, uVCID, psfCSType->cCPacketClassificationRule.u8AssociatedPHSI);
|
|
|
|
|
|
break;
|
|
break;
|
|
- }
|
|
|
|
default:
|
|
default:
|
|
- {
|
|
|
|
if (ucDsxType == DSC_ACK) {
|
|
if (ucDsxType == DSC_ACK) {
|
|
/* BCM_DEBUG_PRINT(CONN_MSG,("Invalid PHS DSC Action For DSC\n",psfCSType->cPhsRule.u8PHSI)); */
|
|
/* BCM_DEBUG_PRINT(CONN_MSG,("Invalid PHS DSC Action For DSC\n",psfCSType->cPhsRule.u8PHSI)); */
|
|
break; /* FOr DSC ACK Case PHS DSC Action must be in valid set */
|
|
break; /* FOr DSC ACK Case PHS DSC Action must be in valid set */
|
|
}
|
|
}
|
|
- }
|
|
|
|
/* Proceed To Add PHS rule for DSA_ACK case even if PHS DSC action is unspecified */
|
|
/* Proceed To Add PHS rule for DSA_ACK case even if PHS DSC action is unspecified */
|
|
/* No Break Here . Intentionally! */
|
|
/* No Break Here . Intentionally! */
|
|
|
|
|
|
case eAddPHSRule:
|
|
case eAddPHSRule:
|
|
case eSetPHSRule:
|
|
case eSetPHSRule:
|
|
- {
|
|
|
|
if (psfCSType->cPhsRule.u8PHSI) {
|
|
if (psfCSType->cPhsRule.u8PHSI) {
|
|
/* Apply This PHS Rule to all classifiers whose Associated PHSI Match */
|
|
/* Apply This PHS Rule to all classifiers whose Associated PHSI Match */
|
|
unsigned int uiClassifierIndex = 0;
|
|
unsigned int uiClassifierIndex = 0;
|
|
@@ -738,8 +703,7 @@ static VOID CopyToAdapter(register struct bcm_mini_adapter *Adapter, /* <Pointer
|
|
sPhsRule.u8PHSI);
|
|
sPhsRule.u8PHSI);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- }
|
|
|
|
- break;
|
|
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|