Staging: bcm: Qos.c: Line length / Whitespace cleanup in ClassifyPacket()
Signed-off-by: Matthias Beyer <mail@beyermatthias.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
34cad16c84
commit
894bd303e3
+148
-45
@@ -607,26 +607,51 @@ USHORT ClassifyPacket(struct bcm_mini_adapter *Adapter, struct sk_buff *skb)
|
||||
EThCSGetPktInfo(Adapter, pvEThPayload, &stEthCsPktInfo);
|
||||
|
||||
switch (stEthCsPktInfo.eNwpktEthFrameType) {
|
||||
case eEth802LLCFrame:
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, "ClassifyPacket : 802LLCFrame\n");
|
||||
pIpHeader = pvEThPayload + sizeof(struct bcm_eth_llc_frame);
|
||||
break;
|
||||
case eEth802LLCSNAPFrame:
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, "ClassifyPacket : 802LLC SNAP Frame\n");
|
||||
pIpHeader = pvEThPayload + sizeof(struct bcm_eth_llc_snap_frame);
|
||||
break;
|
||||
case eEth802QVLANFrame:
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, "ClassifyPacket : 802.1Q VLANFrame\n");
|
||||
pIpHeader = pvEThPayload + sizeof(struct bcm_eth_q_frame);
|
||||
break;
|
||||
case eEthOtherFrame:
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, "ClassifyPacket : ETH Other Frame\n");
|
||||
pIpHeader = pvEThPayload + sizeof(struct bcm_ethernet2_frame);
|
||||
break;
|
||||
default:
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, "ClassifyPacket : Unrecognized ETH Frame\n");
|
||||
pIpHeader = pvEThPayload + sizeof(struct bcm_ethernet2_frame);
|
||||
break;
|
||||
case eEth802LLCFrame:
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
"ClassifyPacket : 802LLCFrame\n");
|
||||
pIpHeader = pvEThPayload +
|
||||
sizeof(struct bcm_eth_llc_frame);
|
||||
break;
|
||||
case eEth802LLCSNAPFrame:
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
"ClassifyPacket : 802LLC SNAP Frame\n");
|
||||
pIpHeader = pvEThPayload +
|
||||
sizeof(struct bcm_eth_llc_snap_frame);
|
||||
break;
|
||||
case eEth802QVLANFrame:
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
"ClassifyPacket : 802.1Q VLANFrame\n");
|
||||
pIpHeader = pvEThPayload +
|
||||
sizeof(struct bcm_eth_q_frame);
|
||||
break;
|
||||
case eEthOtherFrame:
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
"ClassifyPacket : ETH Other Frame\n");
|
||||
pIpHeader = pvEThPayload +
|
||||
sizeof(struct bcm_ethernet2_frame);
|
||||
break;
|
||||
default:
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
"ClassifyPacket : Unrecognized ETH Frame\n");
|
||||
pIpHeader = pvEThPayload +
|
||||
sizeof(struct bcm_ethernet2_frame);
|
||||
break;
|
||||
}
|
||||
|
||||
if (stEthCsPktInfo.eNwpktIPFrameType == eIPv4Packet) {
|
||||
@@ -636,15 +661,27 @@ USHORT ClassifyPacket(struct bcm_mini_adapter *Adapter, struct sk_buff *skb)
|
||||
|
||||
if (bFragmentedPkt) {
|
||||
/* Fragmented Packet. Get Frag Classifier Entry. */
|
||||
pstClassifierRule = GetFragIPClsEntry(Adapter, pIpHeader->id, pIpHeader->saddr);
|
||||
pstClassifierRule = GetFragIPClsEntry(Adapter,
|
||||
pIpHeader->id,
|
||||
pIpHeader->saddr);
|
||||
if (pstClassifierRule) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, "It is next Fragmented pkt");
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
"It is next Fragmented pkt");
|
||||
bClassificationSucceed = TRUE;
|
||||
}
|
||||
if (!(ntohs(pIpHeader->frag_off) & IP_MF)) {
|
||||
/* Fragmented Last packet . Remove Frag Classifier Entry */
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, "This is the last fragmented Pkt");
|
||||
DelFragIPClsEntry(Adapter, pIpHeader->id, pIpHeader->saddr);
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
"This is the last fragmented Pkt");
|
||||
DelFragIPClsEntry(Adapter,
|
||||
pIpHeader->id,
|
||||
pIpHeader->saddr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -660,7 +697,12 @@ USHORT ClassifyPacket(struct bcm_mini_adapter *Adapter, struct sk_buff *skb)
|
||||
bClassificationSucceed = false;
|
||||
continue;
|
||||
}
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, "Adapter->PackInfo[%d].bvalid=True\n", uiLoopIndex);
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
"Adapter->PackInfo[%d].bvalid=True\n",
|
||||
uiLoopIndex);
|
||||
|
||||
if (0 == Adapter->astClassifierTable[uiLoopIndex].ucDirection) {
|
||||
bClassificationSucceed = false; /* cannot be processed for classification. */
|
||||
@@ -671,71 +713,131 @@ USHORT ClassifyPacket(struct bcm_mini_adapter *Adapter, struct sk_buff *skb)
|
||||
|
||||
uiSfIndex = SearchSfid(Adapter, pstClassifierRule->ulSFID);
|
||||
if (uiSfIndex >= NO_OF_QUEUES) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, "Queue Not Valid. SearchSfid for this classifier Failed\n");
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
"Queue Not Valid. SearchSfid for this classifier Failed\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (Adapter->PackInfo[uiSfIndex].bEthCSSupport) {
|
||||
|
||||
if (eEthUnsupportedFrame == stEthCsPktInfo.eNwpktEthFrameType) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, " ClassifyPacket : Packet Not a Valid Supported Ethernet Frame\n");
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
" ClassifyPacket : Packet Not a Valid Supported Ethernet Frame\n");
|
||||
bClassificationSucceed = false;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, "Performing ETH CS Classification on Classifier Rule ID : %x Service Flow ID : %lx\n", pstClassifierRule->uiClassifierRuleIndex, Adapter->PackInfo[uiSfIndex].ulSFID);
|
||||
bClassificationSucceed = EThCSClassifyPkt(Adapter, skb, &stEthCsPktInfo, pstClassifierRule, Adapter->PackInfo[uiSfIndex].bEthCSSupport);
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
"Performing ETH CS Classification on Classifier Rule ID : %x Service Flow ID : %lx\n",
|
||||
pstClassifierRule->uiClassifierRuleIndex,
|
||||
Adapter->PackInfo[uiSfIndex].ulSFID);
|
||||
bClassificationSucceed = EThCSClassifyPkt(Adapter,
|
||||
skb,
|
||||
&stEthCsPktInfo,
|
||||
pstClassifierRule,
|
||||
Adapter->PackInfo[uiSfIndex].bEthCSSupport);
|
||||
|
||||
if (!bClassificationSucceed) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, "ClassifyPacket : Ethernet CS Classification Failed\n");
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
"ClassifyPacket : Ethernet CS Classification Failed\n");
|
||||
continue;
|
||||
}
|
||||
} else { /* No ETH Supported on this SF */
|
||||
if (eEthOtherFrame != stEthCsPktInfo.eNwpktEthFrameType) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, " ClassifyPacket : Packet Not a 802.3 Ethernet Frame... hence not allowed over non-ETH CS SF\n");
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
" ClassifyPacket : Packet Not a 802.3 Ethernet Frame... hence not allowed over non-ETH CS SF\n");
|
||||
bClassificationSucceed = false;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, "Proceeding to IP CS Clasification");
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
"Proceeding to IP CS Clasification");
|
||||
|
||||
if (Adapter->PackInfo[uiSfIndex].bIPCSSupport) {
|
||||
|
||||
if (stEthCsPktInfo.eNwpktIPFrameType == eNonIPPacket) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, " ClassifyPacket : Packet is Not an IP Packet\n");
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
" ClassifyPacket : Packet is Not an IP Packet\n");
|
||||
bClassificationSucceed = false;
|
||||
continue;
|
||||
}
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, "Dump IP Header :\n");
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
"Dump IP Header :\n");
|
||||
DumpFullPacket((PUCHAR)pIpHeader, 20);
|
||||
|
||||
if (stEthCsPktInfo.eNwpktIPFrameType == eIPv4Packet)
|
||||
bClassificationSucceed = IpVersion4(Adapter, pIpHeader, pstClassifierRule);
|
||||
bClassificationSucceed = IpVersion4(Adapter,
|
||||
pIpHeader,
|
||||
pstClassifierRule);
|
||||
else if (stEthCsPktInfo.eNwpktIPFrameType == eIPv6Packet)
|
||||
bClassificationSucceed = IpVersion6(Adapter, pIpHeader, pstClassifierRule);
|
||||
bClassificationSucceed = IpVersion6(Adapter,
|
||||
pIpHeader,
|
||||
pstClassifierRule);
|
||||
}
|
||||
}
|
||||
|
||||
if (bClassificationSucceed == TRUE) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, "CF id : %d, SF ID is =%lu", pstClassifierRule->uiClassifierRuleIndex, pstClassifierRule->ulSFID);
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
"CF id : %d, SF ID is =%lu",
|
||||
pstClassifierRule->uiClassifierRuleIndex,
|
||||
pstClassifierRule->ulSFID);
|
||||
|
||||
/* Store The matched Classifier in SKB */
|
||||
*((UINT32 *)(skb->cb)+SKB_CB_CLASSIFICATION_OFFSET) = pstClassifierRule->uiClassifierRuleIndex;
|
||||
if ((TCP == pIpHeader->protocol) && !bFragmentedPkt && (ETH_AND_IP_HEADER_LEN + TCP_HEADER_LEN <= skb->len)) {
|
||||
*((UINT32 *)(skb->cb)+SKB_CB_CLASSIFICATION_OFFSET) =
|
||||
pstClassifierRule->uiClassifierRuleIndex;
|
||||
if ((TCP == pIpHeader->protocol) && !bFragmentedPkt &&
|
||||
(ETH_AND_IP_HEADER_LEN + TCP_HEADER_LEN <=
|
||||
skb->len)) {
|
||||
IpHeaderLength = pIpHeader->ihl;
|
||||
pTcpHeader = (struct bcm_tcp_header *)(((PUCHAR)pIpHeader)+(IpHeaderLength*4));
|
||||
TcpHeaderLength = GET_TCP_HEADER_LEN(pTcpHeader->HeaderLength);
|
||||
pTcpHeader =
|
||||
(struct bcm_tcp_header *)(((PUCHAR)pIpHeader) +
|
||||
(IpHeaderLength*4));
|
||||
TcpHeaderLength = GET_TCP_HEADER_LEN(pTcpHeader->HeaderLength);
|
||||
|
||||
if ((pTcpHeader->ucFlags & TCP_ACK) &&
|
||||
(ntohs(pIpHeader->tot_len) == (IpHeaderLength*4)+(TcpHeaderLength*4)))
|
||||
*((UINT32 *) (skb->cb) + SKB_CB_TCPACK_OFFSET) = TCP_ACK;
|
||||
(ntohs(pIpHeader->tot_len) ==
|
||||
(IpHeaderLength*4)+(TcpHeaderLength*4)))
|
||||
*((UINT32 *) (skb->cb) + SKB_CB_TCPACK_OFFSET) =
|
||||
TCP_ACK;
|
||||
}
|
||||
|
||||
usIndex = SearchSfid(Adapter, pstClassifierRule->ulSFID);
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, IPV4_DBG, DBG_LVL_ALL, "index is =%d", usIndex);
|
||||
BCM_DEBUG_PRINT(Adapter,
|
||||
DBG_TYPE_TX,
|
||||
IPV4_DBG,
|
||||
DBG_LVL_ALL,
|
||||
"index is =%d",
|
||||
usIndex);
|
||||
|
||||
/*
|
||||
* If this is the first fragment of a Fragmented pkt,
|
||||
@@ -752,7 +854,8 @@ USHORT ClassifyPacket(struct bcm_mini_adapter *Adapter, struct sk_buff *skb)
|
||||
stFragPktInfo.bUsed = TRUE;
|
||||
stFragPktInfo.ulSrcIpAddress = pIpHeader->saddr;
|
||||
stFragPktInfo.usIpIdentification = pIpHeader->id;
|
||||
stFragPktInfo.pstMatchedClassifierEntry = pstClassifierRule;
|
||||
stFragPktInfo.pstMatchedClassifierEntry =
|
||||
pstClassifierRule;
|
||||
stFragPktInfo.bOutOfOrderFragment = false;
|
||||
AddFragIPClsEntry(Adapter, &stFragPktInfo);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user