Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5c58093e authored by Pekka Enberg's avatar Pekka Enberg Committed by Greg Kroah-Hartman
Browse files

Staging: w35und: make functions local to wb35tx.c static



While there are no functional changes, the diff is quite large because we need
to shuffle code around to avoid forward declarations.

Acked-by: default avatarPavel Machek <pavel@suse.cz>
Signed-off-by: default avatarPekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent c139a814
Loading
Loading
Loading
Loading
+95 −104
Original line number Diff line number Diff line
@@ -23,21 +23,46 @@ Wb35Tx_get_tx_buffer(phw_data_t pHwData, u8 **pBuffer)
	return true;
}

void Wb35Tx_start(struct wbsoft_priv *adapter)
static void Wb35Tx(struct wbsoft_priv *adapter);

static void Wb35Tx_complete(struct urb * pUrb)
{
	struct wbsoft_priv *adapter = pUrb->context;
	phw_data_t	pHwData = &adapter->sHwData;
	PWB35TX		pWb35Tx = &pHwData->Wb35Tx;
	PMDS		pMds = &adapter->Mds;

	// Allow only one thread to run into function
	if (atomic_inc_return(&pWb35Tx->TxFireCounter) == 1) {
		pWb35Tx->EP4vm_state = VM_RUNNING;
	printk("wb35: tx complete\n");
	// Variable setting
	pWb35Tx->EP4vm_state = VM_COMPLETED;
	pWb35Tx->EP4VM_status = pUrb->status; //Store the last result of Irp
	pMds->TxOwner[ pWb35Tx->TxSendIndex ] = 0;// Set the owner. Free the owner bit always.
	pWb35Tx->TxSendIndex++;
	pWb35Tx->TxSendIndex %= MAX_USB_TX_BUFFER_NUMBER;

	if (pHwData->SurpriseRemove || pHwData->HwStop) // Let WbWlanHalt to handle surprise remove
		goto error;

	if (pWb35Tx->tx_halt)
		goto error;

	// The URB is completed, check the result
	if (pWb35Tx->EP4VM_status != 0) {
		printk("URB submission failed\n");
		pWb35Tx->EP4vm_state = VM_STOP;
		goto error;
	}

	Mds_Tx(adapter);
	Wb35Tx(adapter);
	} else
	return;

error:
	atomic_dec(&pWb35Tx->TxFireCounter);
	pWb35Tx->EP4vm_state = VM_STOP;
}


void Wb35Tx(struct wbsoft_priv *adapter)
static void Wb35Tx(struct wbsoft_priv *adapter)
{
	phw_data_t	pHwData = &adapter->sHwData;
	PWB35TX		pWb35Tx = &pHwData->Wb35Tx;
@@ -88,50 +113,17 @@ void Wb35Tx(struct wbsoft_priv *adapter)
	atomic_dec(&pWb35Tx->TxFireCounter);
}


void Wb35Tx_complete(struct urb * pUrb)
void Wb35Tx_start(struct wbsoft_priv *adapter)
{
	struct wbsoft_priv *adapter = pUrb->context;
	phw_data_t pHwData = &adapter->sHwData;
	PWB35TX pWb35Tx = &pHwData->Wb35Tx;
	PMDS		pMds = &adapter->Mds;

	printk("wb35: tx complete\n");
	// Variable setting
	pWb35Tx->EP4vm_state = VM_COMPLETED;
	pWb35Tx->EP4VM_status = pUrb->status; //Store the last result of Irp
	pMds->TxOwner[ pWb35Tx->TxSendIndex ] = 0;// Set the owner. Free the owner bit always.
	pWb35Tx->TxSendIndex++;
	pWb35Tx->TxSendIndex %= MAX_USB_TX_BUFFER_NUMBER;

	if (pHwData->SurpriseRemove || pHwData->HwStop) // Let WbWlanHalt to handle surprise remove
		goto error;

	if (pWb35Tx->tx_halt)
		goto error;

	// The URB is completed, check the result
	if (pWb35Tx->EP4VM_status != 0) {
		printk("URB submission failed\n");
		pWb35Tx->EP4vm_state = VM_STOP;
		goto error;
	}

	Mds_Tx(adapter);
	// Allow only one thread to run into function
	if (atomic_inc_return(&pWb35Tx->TxFireCounter) == 1) {
		pWb35Tx->EP4vm_state = VM_RUNNING;
		Wb35Tx(adapter);
	return;

error:
	} else
		atomic_dec(&pWb35Tx->TxFireCounter);
	pWb35Tx->EP4vm_state = VM_STOP;
}

void Wb35Tx_reset_descriptor(  phw_data_t pHwData )
{
	PWB35TX pWb35Tx = &pHwData->Wb35Tx;

	pWb35Tx->TxSendIndex = 0;
	pWb35Tx->tx_halt = 0;
}

unsigned char Wb35Tx_initial(phw_data_t pHwData)
@@ -211,22 +203,58 @@ void Wb35Tx_CurrentTime(struct wbsoft_priv *adapter, u32 TimeCount)
	}
}

void Wb35Tx_EP2VM_start(struct wbsoft_priv *adapter)
static void Wb35Tx_EP2VM(struct wbsoft_priv *adapter);

static void Wb35Tx_EP2VM_complete(struct urb * pUrb)
{
	struct wbsoft_priv *adapter = pUrb->context;
	phw_data_t	pHwData = &adapter->sHwData;
	T02_DESCRIPTOR	T02, TSTATUS;
	PWB35TX		pWb35Tx = &pHwData->Wb35Tx;
	u32 *		pltmp = (u32 *)pWb35Tx->EP2_buf;
	u32		i;
	u16		InterruptInLength;

	// Allow only one thread to run into function
	if (atomic_inc_return(&pWb35Tx->TxResultCount) == 1) {
		pWb35Tx->EP2vm_state = VM_RUNNING;
		Wb35Tx_EP2VM(adapter);

	// Variable setting
	pWb35Tx->EP2vm_state = VM_COMPLETED;
	pWb35Tx->EP2VM_status = pUrb->status;

	// For Linux 2.4. Interrupt will always trigger
	if (pHwData->SurpriseRemove || pHwData->HwStop) // Let WbWlanHalt to handle surprise remove
		goto error;

	if (pWb35Tx->tx_halt)
		goto error;

	//The Urb is completed, check the result
	if (pWb35Tx->EP2VM_status != 0) {
		WBDEBUG(("EP2 IoCompleteRoutine return error\n"));
		pWb35Tx->EP2vm_state= VM_STOP;
		goto error;
	}
	else
		atomic_dec(&pWb35Tx->TxResultCount);

	// Update the Tx result
	InterruptInLength = pUrb->actual_length;
	// Modify for minimum memory access and DWORD alignment.
	T02.value = cpu_to_le32(pltmp[0]) >> 8; // [31:8] -> [24:0]
	InterruptInLength -= 1;// 20051221.1.c Modify the follow for more stable
	InterruptInLength >>= 2; // InterruptInLength/4
	for (i = 1; i <= InterruptInLength; i++) {
		T02.value |= ((cpu_to_le32(pltmp[i]) & 0xff) << 24);

		TSTATUS.value = T02.value;  //20061009 anson's endian
		Mds_SendComplete( adapter, &TSTATUS );
		T02.value = cpu_to_le32(pltmp[i]) >> 8;
	}

	return;
error:
	atomic_dec(&pWb35Tx->TxResultCount);
	pWb35Tx->EP2vm_state = VM_STOP;
}

void Wb35Tx_EP2VM(struct wbsoft_priv *adapter)
static void Wb35Tx_EP2VM(struct wbsoft_priv *adapter)
{
	phw_data_t	pHwData = &adapter->sHwData;
	PWB35TX pWb35Tx = &pHwData->Wb35Tx;
@@ -262,53 +290,16 @@ void Wb35Tx_EP2VM(struct wbsoft_priv *adapter)
	atomic_dec(&pWb35Tx->TxResultCount);
}


void Wb35Tx_EP2VM_complete(struct urb * pUrb)
void Wb35Tx_EP2VM_start(struct wbsoft_priv *adapter)
{
	struct wbsoft_priv *adapter = pUrb->context;
	phw_data_t pHwData = &adapter->sHwData;
	T02_DESCRIPTOR	T02, TSTATUS;
	PWB35TX pWb35Tx = &pHwData->Wb35Tx;
	u32 *		pltmp = (u32 *)pWb35Tx->EP2_buf;
	u32		i;
	u16		InterruptInLength;


	// Variable setting
	pWb35Tx->EP2vm_state = VM_COMPLETED;
	pWb35Tx->EP2VM_status = pUrb->status;

	// For Linux 2.4. Interrupt will always trigger
	if (pHwData->SurpriseRemove || pHwData->HwStop) // Let WbWlanHalt to handle surprise remove
		goto error;

	if (pWb35Tx->tx_halt)
		goto error;

	//The Urb is completed, check the result
	if (pWb35Tx->EP2VM_status != 0) {
		WBDEBUG(("EP2 IoCompleteRoutine return error\n"));
		pWb35Tx->EP2vm_state= VM_STOP;
		goto error;
	}

	// Update the Tx result
	InterruptInLength = pUrb->actual_length;
	// Modify for minimum memory access and DWORD alignment.
	T02.value = cpu_to_le32(pltmp[0]) >> 8; // [31:8] -> [24:0]
	InterruptInLength -= 1;// 20051221.1.c Modify the follow for more stable
	InterruptInLength >>= 2; // InterruptInLength/4
	for (i = 1; i <= InterruptInLength; i++) {
		T02.value |= ((cpu_to_le32(pltmp[i]) & 0xff) << 24);

		TSTATUS.value = T02.value;  //20061009 anson's endian
		Mds_SendComplete( adapter, &TSTATUS );
		T02.value = cpu_to_le32(pltmp[i]) >> 8;
	// Allow only one thread to run into function
	if (atomic_inc_return(&pWb35Tx->TxResultCount) == 1) {
		pWb35Tx->EP2vm_state = VM_RUNNING;
		Wb35Tx_EP2VM(adapter);
	}

	return;
error:
	else
		atomic_dec(&pWb35Tx->TxResultCount);
	pWb35Tx->EP2vm_state = VM_STOP;
}
+0 −5
Original line number Diff line number Diff line
@@ -11,15 +11,10 @@ unsigned char Wb35Tx_initial( phw_data_t pHwData );
void Wb35Tx_destroy(  phw_data_t pHwData );
unsigned char Wb35Tx_get_tx_buffer(  phw_data_t pHwData,  u8 **pBuffer );

void Wb35Tx_EP2VM(struct wbsoft_priv *adapter);
void Wb35Tx_EP2VM_start(struct wbsoft_priv *adapter);
void Wb35Tx_EP2VM_complete(struct urb *urb);

void Wb35Tx_start(struct wbsoft_priv *adapter);
void Wb35Tx_stop(  phw_data_t pHwData );
void Wb35Tx(struct wbsoft_priv *adapter);
void Wb35Tx_complete(struct urb *urb);
void Wb35Tx_reset_descriptor(  phw_data_t pHwData );

void Wb35Tx_CurrentTime(struct wbsoft_priv *adapter,  u32 TimeCount);