mirror of
https://github.com/torvalds/linux
synced 2024-10-20 10:19:54 +00:00
Staging: bcm: LeakyBucket.c: Shortened lines
Signed-off-by: Matthias Beyer <mail@beyermatthias.de> Acked-by: Kevin McKinney <klmckinney1@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
f1220c7d6b
commit
0acfe734fa
|
@ -34,18 +34,17 @@ static VOID UpdateTokenCount(register struct bcm_mini_adapter *Adapter)
|
|||
for (i = 0; i < NO_OF_QUEUES; i++) {
|
||||
curr_pi = &Adapter->PackInfo[i];
|
||||
|
||||
if (TRUE == curr_pi->bValid &&
|
||||
(1 == curr_pi->ucDirection)) {
|
||||
liCurrentTime = ((tv.tv_sec-
|
||||
if (TRUE == curr_pi->bValid && (1 == curr_pi->ucDirection)) {
|
||||
liCurrentTime = ((tv.tv_sec -
|
||||
curr_pi->stLastUpdateTokenAt.tv_sec)*1000 +
|
||||
(tv.tv_usec-curr_pi->stLastUpdateTokenAt.tv_usec)/
|
||||
(tv.tv_usec - curr_pi->stLastUpdateTokenAt.tv_usec) /
|
||||
1000);
|
||||
if (0 != liCurrentTime) {
|
||||
curr_pi->uiCurrentTokenCount += (ULONG)
|
||||
((curr_pi->uiMaxAllowedRate) *
|
||||
((ULONG)((liCurrentTime)))/1000);
|
||||
memcpy(&curr_pi->stLastUpdateTokenAt,
|
||||
&tv, sizeof(struct timeval));
|
||||
memcpy(&curr_pi->stLastUpdateTokenAt, &tv,
|
||||
sizeof(struct timeval));
|
||||
curr_pi->liLastUpdateTokenAt = liCurrentTime;
|
||||
if (curr_pi->uiCurrentTokenCount >=
|
||||
curr_pi->uiMaxBucketSize) {
|
||||
|
@ -55,7 +54,8 @@ static VOID UpdateTokenCount(register struct bcm_mini_adapter *Adapter)
|
|||
}
|
||||
}
|
||||
}
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TOKEN_COUNTS, DBG_LVL_ALL, "<=====\n");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TOKEN_COUNTS, DBG_LVL_ALL,
|
||||
"<=====\n");
|
||||
return;
|
||||
|
||||
}
|
||||
|
@ -77,26 +77,35 @@ static VOID UpdateTokenCount(register struct bcm_mini_adapter *Adapter)
|
|||
***********************************************************************/
|
||||
static ULONG GetSFTokenCount(struct bcm_mini_adapter *Adapter, struct bcm_packet_info *psSF)
|
||||
{
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TOKEN_COUNTS, DBG_LVL_ALL, "IsPacketAllowedForFlow ===>");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TOKEN_COUNTS, DBG_LVL_ALL,
|
||||
"IsPacketAllowedForFlow ===>");
|
||||
|
||||
/* Validate the parameters */
|
||||
if (NULL == Adapter || (psSF < Adapter->PackInfo &&
|
||||
(uintptr_t)psSF > (uintptr_t) &Adapter->PackInfo[HiPriority])) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TOKEN_COUNTS, DBG_LVL_ALL, "IPAFF: Got wrong Parameters:Adapter: %p, QIndex: %zd\n", Adapter, (psSF-Adapter->PackInfo));
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TOKEN_COUNTS, DBG_LVL_ALL,
|
||||
"IPAFF: Got wrong Parameters:Adapter: %p, QIndex: %zd\n",
|
||||
Adapter, (psSF-Adapter->PackInfo));
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (false != psSF->bValid && psSF->ucDirection) {
|
||||
if (0 != psSF->uiCurrentTokenCount) {
|
||||
return psSF->uiCurrentTokenCount;
|
||||
return psSF->uiCurrentTokenCount;
|
||||
} else {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TOKEN_COUNTS, DBG_LVL_ALL, "Not enough tokens in queue %zd Available %u\n",
|
||||
psSF-Adapter->PackInfo, psSF->uiCurrentTokenCount);
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TOKEN_COUNTS,
|
||||
DBG_LVL_ALL,
|
||||
"Not enough tokens in queue %zd Available %u\n",
|
||||
psSF-Adapter->PackInfo, psSF->uiCurrentTokenCount);
|
||||
psSF->uiPendedLast = 1;
|
||||
}
|
||||
} else {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TOKEN_COUNTS, DBG_LVL_ALL, "IPAFF: Queue %zd not valid\n", psSF-Adapter->PackInfo);
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TOKEN_COUNTS, DBG_LVL_ALL,
|
||||
"IPAFF: Queue %zd not valid\n",
|
||||
psSF-Adapter->PackInfo);
|
||||
}
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TOKEN_COUNTS, DBG_LVL_ALL, "IsPacketAllowedForFlow <===");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TOKEN_COUNTS, DBG_LVL_ALL,
|
||||
"IsPacketAllowedForFlow <===");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -106,15 +115,17 @@ This function despatches packet from the specified queue.
|
|||
@return Zero(success) or Negative value(failure)
|
||||
*/
|
||||
static INT SendPacketFromQueue(struct bcm_mini_adapter *Adapter,/**<Logical Adapter*/
|
||||
struct bcm_packet_info *psSF, /**<Queue identifier*/
|
||||
struct bcm_packet_info *psSF, /**<Queue identifier*/
|
||||
struct sk_buff *Packet) /**<Pointer to the packet to be sent*/
|
||||
{
|
||||
INT Status = STATUS_FAILURE;
|
||||
UINT uiIndex = 0, PktLen = 0;
|
||||
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, SEND_QUEUE, DBG_LVL_ALL, "=====>");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, SEND_QUEUE, DBG_LVL_ALL,
|
||||
"=====>");
|
||||
if (!Adapter || !Packet || !psSF) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, SEND_QUEUE, DBG_LVL_ALL, "Got NULL Adapter or Packet");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, SEND_QUEUE, DBG_LVL_ALL,
|
||||
"Got NULL Adapter or Packet");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -125,11 +136,13 @@ static INT SendPacketFromQueue(struct bcm_mini_adapter *Adapter,/**<Logical Adap
|
|||
Status = SetupNextSend(Adapter, Packet, psSF->usVCID_Value);
|
||||
if (Status == 0) {
|
||||
for (uiIndex = 0; uiIndex < MIBS_MAX_HIST_ENTRIES; uiIndex++) {
|
||||
if ((PktLen <= MIBS_PKTSIZEHIST_RANGE*(uiIndex+1)) && (PktLen > MIBS_PKTSIZEHIST_RANGE*(uiIndex)))
|
||||
if ((PktLen <= MIBS_PKTSIZEHIST_RANGE*(uiIndex+1)) &&
|
||||
(PktLen > MIBS_PKTSIZEHIST_RANGE*(uiIndex)))
|
||||
Adapter->aTxPktSizeHist[uiIndex]++;
|
||||
}
|
||||
}
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, SEND_QUEUE, DBG_LVL_ALL, "<=====");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, SEND_QUEUE, DBG_LVL_ALL,
|
||||
"<=====");
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
@ -145,7 +158,8 @@ static INT SendPacketFromQueue(struct bcm_mini_adapter *Adapter,/**<Logical Adap
|
|||
* Returns - None.
|
||||
*
|
||||
****************************************************************************/
|
||||
static VOID CheckAndSendPacketFromIndex(struct bcm_mini_adapter *Adapter, struct bcm_packet_info *psSF)
|
||||
static VOID CheckAndSendPacketFromIndex(struct bcm_mini_adapter *Adapter,
|
||||
struct bcm_packet_info *psSF)
|
||||
{
|
||||
struct sk_buff *QueuePacket = NULL;
|
||||
char *pControlPacket = NULL;
|
||||
|
@ -153,18 +167,26 @@ static VOID CheckAndSendPacketFromIndex(struct bcm_mini_adapter *Adapter, struct
|
|||
int iPacketLen = 0;
|
||||
|
||||
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, "%zd ====>", (psSF-Adapter->PackInfo));
|
||||
if ((psSF != &Adapter->PackInfo[HiPriority]) && Adapter->LinkUpStatus && atomic_read(&psSF->uiPerSFTxResourceCount)) { /* Get data packet */
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL,
|
||||
"%zd ====>", (psSF-Adapter->PackInfo));
|
||||
if ((psSF != &Adapter->PackInfo[HiPriority]) &&
|
||||
Adapter->LinkUpStatus &&
|
||||
atomic_read(&psSF->uiPerSFTxResourceCount)) { /* Get data packet */
|
||||
if (!psSF->ucDirection)
|
||||
return;
|
||||
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, "UpdateTokenCount ");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL,
|
||||
"UpdateTokenCount ");
|
||||
if (Adapter->IdleMode || Adapter->bPreparingForLowPowerMode)
|
||||
return; /* in idle mode */
|
||||
|
||||
/* Check for Free Descriptors */
|
||||
if (atomic_read(&Adapter->CurrNumFreeTxDesc) <= MINIMUM_PENDING_DESCRIPTORS) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, " No Free Tx Descriptor(%d) is available for Data pkt..", atomic_read(&Adapter->CurrNumFreeTxDesc));
|
||||
if (atomic_read(&Adapter->CurrNumFreeTxDesc) <=
|
||||
MINIMUM_PENDING_DESCRIPTORS) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS,
|
||||
DBG_LVL_ALL,
|
||||
" No Free Tx Descriptor(%d) is available for Data pkt..",
|
||||
atomic_read(&Adapter->CurrNumFreeTxDesc));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -172,7 +194,8 @@ static VOID CheckAndSendPacketFromIndex(struct bcm_mini_adapter *Adapter, struct
|
|||
QueuePacket = psSF->FirstTxQueue;
|
||||
|
||||
if (QueuePacket) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, "Dequeuing Data Packet");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS,
|
||||
DBG_LVL_ALL, "Dequeuing Data Packet");
|
||||
|
||||
if (psSF->bEthCSSupport)
|
||||
iPacketLen = QueuePacket->len;
|
||||
|
@ -181,24 +204,36 @@ static VOID CheckAndSendPacketFromIndex(struct bcm_mini_adapter *Adapter, struct
|
|||
|
||||
iPacketLen <<= 3;
|
||||
if (iPacketLen <= GetSFTokenCount(Adapter, psSF)) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, "Allowed bytes %d",
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX,
|
||||
TX_PACKETS, DBG_LVL_ALL,
|
||||
"Allowed bytes %d",
|
||||
(iPacketLen >> 3));
|
||||
|
||||
DEQUEUEPACKET(psSF->FirstTxQueue, psSF->LastTxQueue);
|
||||
psSF->uiCurrentBytesOnHost -= (QueuePacket->len);
|
||||
DEQUEUEPACKET(psSF->FirstTxQueue,
|
||||
psSF->LastTxQueue);
|
||||
psSF->uiCurrentBytesOnHost -=
|
||||
(QueuePacket->len);
|
||||
psSF->uiCurrentPacketsOnHost--;
|
||||
atomic_dec(&Adapter->TotalPacketCount);
|
||||
spin_unlock_bh(&psSF->SFQueueLock);
|
||||
|
||||
Status = SendPacketFromQueue(Adapter, psSF, QueuePacket);
|
||||
Status = SendPacketFromQueue(Adapter, psSF,
|
||||
QueuePacket);
|
||||
psSF->uiPendedLast = false;
|
||||
} else {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, "For Queue: %zd\n", psSF-Adapter->PackInfo);
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, "\nAvailable Tokens = %d required = %d\n",
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX,
|
||||
TX_PACKETS, DBG_LVL_ALL,
|
||||
"For Queue: %zd\n",
|
||||
psSF-Adapter->PackInfo);
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX,
|
||||
TX_PACKETS, DBG_LVL_ALL,
|
||||
"\nAvailable Tokens = %d required = %d\n",
|
||||
psSF->uiCurrentTokenCount, iPacketLen);
|
||||
/*
|
||||
this part indicates that because of non-availability of the tokens
|
||||
pkt has not been send out hence setting the pending flag indicating the host to send it out
|
||||
this part indicates that because of
|
||||
non-availability of the tokens
|
||||
pkt has not been send out hence setting the
|
||||
pending flag indicating the host to send it out
|
||||
first next iteration.
|
||||
*/
|
||||
psSF->uiPendedLast = TRUE;
|
||||
|
@ -215,8 +250,11 @@ static VOID CheckAndSendPacketFromIndex(struct bcm_mini_adapter *Adapter, struct
|
|||
pControlPacket = Adapter->txctlpacket
|
||||
[(atomic_read(&Adapter->index_rd_txcntrlpkt)%MAX_CNTRL_PKTS)];
|
||||
if (pControlPacket) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, "Sending Control packet");
|
||||
Status = SendControlPacket(Adapter, pControlPacket);
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS,
|
||||
DBG_LVL_ALL,
|
||||
"Sending Control packet");
|
||||
Status = SendControlPacket(Adapter,
|
||||
pControlPacket);
|
||||
if (STATUS_SUCCESS == Status) {
|
||||
spin_lock_bh(&psSF->SFQueueLock);
|
||||
psSF->NumOfPacketsSent++;
|
||||
|
@ -228,10 +266,14 @@ static VOID CheckAndSendPacketFromIndex(struct bcm_mini_adapter *Adapter, struct
|
|||
atomic_inc(&Adapter->index_rd_txcntrlpkt);
|
||||
spin_unlock_bh(&psSF->SFQueueLock);
|
||||
} else {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, "SendControlPacket Failed\n");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX,
|
||||
TX_PACKETS, DBG_LVL_ALL,
|
||||
"SendControlPacket Failed\n");
|
||||
}
|
||||
} else {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, " Control Pkt is not available, Indexing is wrong....");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX,
|
||||
TX_PACKETS, DBG_LVL_ALL,
|
||||
" Control Pkt is not available, Indexing is wrong....");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -255,22 +297,27 @@ VOID transmit_packets(struct bcm_mini_adapter *Adapter)
|
|||
|
||||
bool exit_flag = TRUE;
|
||||
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, "=====>");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL,
|
||||
"=====>");
|
||||
|
||||
if (NULL == Adapter) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, "Got NULL Adapter");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL,
|
||||
"Got NULL Adapter");
|
||||
return;
|
||||
}
|
||||
if (Adapter->device_removed == TRUE) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, "Device removed");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL,
|
||||
"Device removed");
|
||||
return;
|
||||
}
|
||||
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, "\nUpdateTokenCount ====>\n");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL,
|
||||
"\nUpdateTokenCount ====>\n");
|
||||
|
||||
UpdateTokenCount(Adapter);
|
||||
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, "\nPruneQueueAllSF ====>\n");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL,
|
||||
"\nPruneQueueAllSF ====>\n");
|
||||
|
||||
PruneQueueAllSF(Adapter);
|
||||
|
||||
|
@ -283,8 +330,11 @@ VOID transmit_packets(struct bcm_mini_adapter *Adapter)
|
|||
if (Adapter->PackInfo[iIndex].bValid &&
|
||||
Adapter->PackInfo[iIndex].uiPendedLast &&
|
||||
Adapter->PackInfo[iIndex].uiCurrentBytesOnHost) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, "Calling CheckAndSendPacketFromIndex..");
|
||||
CheckAndSendPacketFromIndex(Adapter, &Adapter->PackInfo[iIndex]);
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS,
|
||||
DBG_LVL_ALL,
|
||||
"Calling CheckAndSendPacketFromIndex..");
|
||||
CheckAndSendPacketFromIndex(Adapter,
|
||||
&Adapter->PackInfo[iIndex]);
|
||||
uiPrevTotalCount--;
|
||||
}
|
||||
}
|
||||
|
@ -293,13 +343,16 @@ VOID transmit_packets(struct bcm_mini_adapter *Adapter)
|
|||
exit_flag = TRUE;
|
||||
/* second iteration to parse non-pending queues */
|
||||
for (iIndex = HiPriority; iIndex >= 0; iIndex--) {
|
||||
if (!uiPrevTotalCount || (TRUE == Adapter->device_removed))
|
||||
if (!uiPrevTotalCount ||
|
||||
(TRUE == Adapter->device_removed))
|
||||
break;
|
||||
|
||||
if (Adapter->PackInfo[iIndex].bValid &&
|
||||
Adapter->PackInfo[iIndex].uiCurrentBytesOnHost &&
|
||||
!Adapter->PackInfo[iIndex].uiPendedLast) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, "Calling CheckAndSendPacketFromIndex..");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX,
|
||||
TX_PACKETS, DBG_LVL_ALL,
|
||||
"Calling CheckAndSendPacketFromIndex..");
|
||||
CheckAndSendPacketFromIndex(Adapter, &Adapter->PackInfo[iIndex]);
|
||||
uiPrevTotalCount--;
|
||||
exit_flag = false;
|
||||
|
@ -307,7 +360,8 @@ VOID transmit_packets(struct bcm_mini_adapter *Adapter)
|
|||
}
|
||||
|
||||
if (Adapter->IdleMode || Adapter->bPreparingForLowPowerMode) {
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, "In Idle Mode\n");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS,
|
||||
DBG_LVL_ALL, "In Idle Mode\n");
|
||||
break;
|
||||
}
|
||||
if (exit_flag == TRUE)
|
||||
|
@ -316,5 +370,6 @@ VOID transmit_packets(struct bcm_mini_adapter *Adapter)
|
|||
|
||||
update_per_cid_rx(Adapter);
|
||||
Adapter->txtransmit_running = 0;
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL, "<======");
|
||||
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, TX_PACKETS, DBG_LVL_ALL,
|
||||
"<======");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue