#include "headers.h"
static int BcmFileDownload(PMINI_ADAPTER Adapter, const char *path, unsigned int loc);
static VOID doPowerAutoCorrection(PMINI_ADAPTER psAdapter);
static void HandleShutDownModeRequest(PMINI_ADAPTER Adapter, PUCHAR pucBuffer);
static int bcm_parse_target_params(PMINI_ADAPTER Adapter);
static void beceem_protocol_reset(PMINI_ADAPTER Adapter);
static VOID default_wimax_protocol_initialize(PMINI_ADAPTER Adapter)
{
UINT uiLoopIndex;
for (uiLoopIndex = 0; uiLoopIndex < NO_OF_QUEUES-1; uiLoopIndex++) {
Adapter->PackInfo[uiLoopIndex].uiThreshold = TX_PACKET_THRESHOLD;
Adapter->PackInfo[uiLoopIndex].uiMaxAllowedRate = MAX_ALLOWED_RATE;
Adapter->PackInfo[uiLoopIndex].uiMaxBucketSize = 20*1024*1024;
}
Adapter->BEBucketSize = BE_BUCKET_SIZE;
Adapter->rtPSBucketSize = rtPS_BUCKET_SIZE;
Adapter->LinkStatus = SYNC_UP_REQUEST;
Adapter->TransferMode = IP_PACKET_ONLY_MODE;
Adapter->usBestEffortQueueIndex = -1;
return;
}
INT InitAdapter(PMINI_ADAPTER psAdapter)
{
int i = 0;
INT Status = STATUS_SUCCESS;
BCM_DEBUG_PRINT(psAdapter, DBG_TYPE_INITEXIT, MP_INIT, DBG_LVL_ALL, "Initialising Adapter = %p", psAdapter);
if (psAdapter == NULL) {
BCM_DEBUG_PRINT(psAdapter, DBG_TYPE_INITEXIT, MP_INIT, DBG_LVL_ALL, "Adapter is NULL");
return -EINVAL;
}
sema_init(&psAdapter->NVMRdmWrmLock, 1);
sema_init(&psAdapter->rdmwrmsync, 1);
spin_lock_init(&psAdapter->control_queue_lock);
spin_lock_init(&psAdapter->txtransmitlock);
sema_init(&psAdapter->RxAppControlQueuelock, 1);
sema_init(&psAdapter->fw_download_sema, 1);
sema_init(&psAdapter->LowPowerModeSync, 1);
for (i = 0; i < NO_OF_QUEUES; i++)
spin_lock_init(&psAdapter->PackInfo[i].SFQueueLock);
i = 0;
init_waitqueue_head(&psAdapter->process_rx_cntrlpkt);
init_waitqueue_head(&psAdapter->tx_packet_wait_queue);
init_waitqueue_head(&psAdapter->process_read_wait_queue);
init_waitqueue_head(&psAdapter->ioctl_fw_dnld_wait_queue);
init_waitqueue_head(&psAdapter->lowpower_mode_wait_queue);
psAdapter->waiting_to_fw_download_done = TRUE;
psAdapter->fw_download_done = FALSE;
default_wimax_protocol_initialize(psAdapter);
for (i = 0; i < MAX_CNTRL_PKTS; i++) {
psAdapter->txctlpacket[i] = kmalloc(MAX_CNTL_PKT_SIZE, GFP_KERNEL);
if (!psAdapter->txctlpacket[i]) {
BCM_DEBUG_PRINT(psAdapter, DBG_TYPE_INITEXIT, MP_INIT, DBG_LVL_ALL, "No More Cntl pkts got, max got is %d", i);
return -ENOMEM;
}
}
if (AllocAdapterDsxBuffer(psAdapter)) {
BCM_DEBUG_P
|