beceem: get rid of OS dependent data structure

The only part of this structure still used was the network
device stats, and in recent kernel these are available in
network device itself.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
This commit is contained in:
Stephen Hemminger 2010-10-29 08:22:10 -07:00
parent 2b5e625882
commit 92bc60580e
6 changed files with 21 additions and 54 deletions

View file

@ -43,17 +43,6 @@ typedef struct _BCM_CB BCM_CB,*PBCM_CB;
typedef BCM_CB BCM_RCB, *PBCM_RCB; typedef BCM_CB BCM_RCB, *PBCM_RCB;
typedef BCM_CB BCM_TCB, *PBCM_TCB; typedef BCM_CB BCM_TCB, *PBCM_TCB;
/* This is to be stored in the "pvOsDepData" of ADAPTER */
typedef struct LINUX_DEP_DATA
{
struct net_device *virtualdev; /* Our Interface (veth0) */
struct net_device *actualdev; /* True Interface (eth0) */
struct net_device_stats netstats; /* Net statistics */
struct fasync_struct *async_queue; /* For asynchronus notification */
} LINUX_DEP_DATA, *PLINUX_DEP_DATA;
struct _LEADER struct _LEADER
{ {
USHORT Vcid; USHORT Vcid;
@ -429,7 +418,7 @@ Driver adapter data structure
struct _MINI_ADAPTER struct _MINI_ADAPTER
{ {
struct _MINI_ADAPTER *next; struct _MINI_ADAPTER *next;
PVOID pvOsDepData;
CHAR *caDsxReqResp; CHAR *caDsxReqResp;
atomic_t ApplicationRunning; atomic_t ApplicationRunning;
volatile INT CtrlQueueLen; volatile INT CtrlQueueLen;
@ -629,6 +618,7 @@ struct _MINI_ADAPTER
struct semaphore LowPowerModeSync; struct semaphore LowPowerModeSync;
ULONG liDrainCalculated; ULONG liDrainCalculated;
UINT gpioBitMap; UINT gpioBitMap;
S_BCM_DEBUG_STATE stDebugState; S_BCM_DEBUG_STATE stDebugState;
}; };

View file

@ -44,24 +44,21 @@ static INT bcm_close(struct net_device *dev)
static struct net_device_stats *bcm_get_stats(struct net_device *dev) static struct net_device_stats *bcm_get_stats(struct net_device *dev)
{ {
PLINUX_DEP_DATA pLinuxData=NULL; PMINI_ADAPTER Adapter = GET_BCM_ADAPTER(dev);
PMINI_ADAPTER Adapter = NULL ;// gpadapter ; struct net_device_stats* netstats = &dev->stats;
Adapter = GET_BCM_ADAPTER(dev);
pLinuxData = (PLINUX_DEP_DATA)(Adapter->pvOsDepData);
//BCM_DEBUG_PRINT(Adapter,DBG_TYPE_INITEXIT, DRV_ENTRY, DBG_LVL_ALL, "Dev = %p, pLinuxData = %p", dev, pLinuxData); netstats->rx_packets = atomic_read(&Adapter->RxRollOverCount)*64*1024
pLinuxData->netstats.rx_packets=atomic_read(&Adapter->RxRollOverCount)*64*1024+Adapter->PrevNumRecvDescs; + Adapter->PrevNumRecvDescs;
pLinuxData->netstats.rx_bytes=atomic_read(&Adapter->GoodRxByteCount)+atomic_read(&Adapter->BadRxByteCount); netstats->rx_bytes = atomic_read(&Adapter->GoodRxByteCount)
pLinuxData->netstats.rx_dropped=atomic_read(&Adapter->RxPacketDroppedCount); + atomic_read(&Adapter->BadRxByteCount);
pLinuxData->netstats.rx_errors=atomic_read(&Adapter->RxPacketDroppedCount);
pLinuxData->netstats.rx_length_errors=0;
pLinuxData->netstats.rx_frame_errors=0;
pLinuxData->netstats.rx_crc_errors=0;
pLinuxData->netstats.tx_bytes=atomic_read(&Adapter->GoodTxByteCount);
pLinuxData->netstats.tx_packets=atomic_read(&Adapter->TxTotalPacketCount);
pLinuxData->netstats.tx_dropped=atomic_read(&Adapter->TxDroppedPacketCount);
return &(pLinuxData->netstats); netstats->rx_dropped = atomic_read(&Adapter->RxPacketDroppedCount);
netstats->rx_errors = atomic_read(&Adapter->RxPacketDroppedCount);
netstats->tx_bytes = atomic_read(&Adapter->GoodTxByteCount);
netstats->tx_packets = atomic_read(&Adapter->TxTotalPacketCount);
netstats->tx_dropped = atomic_read(&Adapter->TxDroppedPacketCount);
return netstats;
} }
/** /**
@ingroup init_functions @ingroup init_functions

View file

@ -185,9 +185,6 @@ int control_packet_handler (PMINI_ADAPTER Adapter /**< pointer to adapter obje
{ {
DEQUEUEPACKET(Adapter->RxControlHead,Adapter->RxControlTail); DEQUEUEPACKET(Adapter->RxControlHead,Adapter->RxControlTail);
// Adapter->RxControlHead=ctrl_packet->next; // Adapter->RxControlHead=ctrl_packet->next;
((PLINUX_DEP_DATA)Adapter->pvOsDepData)->netstats.rx_packets++;
((PLINUX_DEP_DATA)Adapter->pvOsDepData)->netstats.rx_bytes+=
((PLEADER)ctrl_packet->data)->PLength;
} }
#if 0 //Idle mode debug profiling... #if 0 //Idle mode debug profiling...
if(*(PUSHORT)ctrl_packet->data == IDLE_MODE_STATUS) if(*(PUSHORT)ctrl_packet->data == IDLE_MODE_STATUS)

View file

@ -60,15 +60,6 @@ InitAdapter(PMINI_ADAPTER psAdapter)
//init_waitqueue_head(&psAdapter->device_wake_queue); //init_waitqueue_head(&psAdapter->device_wake_queue);
psAdapter->fw_download_done=FALSE; psAdapter->fw_download_done=FALSE;
psAdapter->pvOsDepData = (PLINUX_DEP_DATA) kmalloc(sizeof(LINUX_DEP_DATA),
GFP_KERNEL);
if(psAdapter->pvOsDepData == NULL)
{
BCM_DEBUG_PRINT(psAdapter,DBG_TYPE_INITEXIT, MP_INIT, DBG_LVL_ALL, "Linux Specific Data allocation failed");
return -ENOMEM;
}
memset(psAdapter->pvOsDepData, 0, sizeof(LINUX_DEP_DATA));
default_wimax_protocol_initialize(psAdapter); default_wimax_protocol_initialize(psAdapter);
for (i=0;i<MAX_CNTRL_PKTS;i++) for (i=0;i<MAX_CNTRL_PKTS;i++)
@ -149,8 +140,7 @@ VOID AdapterFree(PMINI_ADAPTER Adapter)
bcm_kfree(Adapter->txctlpacket[count]); bcm_kfree(Adapter->txctlpacket[count]);
} }
FreeAdapterDsxBuffer(Adapter); FreeAdapterDsxBuffer(Adapter);
if(Adapter->pvOsDepData)
bcm_kfree (Adapter->pvOsDepData);
if(Adapter->pvInterfaceAdapter) if(Adapter->pvInterfaceAdapter)
bcm_kfree(Adapter->pvInterfaceAdapter); bcm_kfree(Adapter->pvInterfaceAdapter);
@ -1969,9 +1959,7 @@ void update_per_sf_desc_cnts( PMINI_ADAPTER Adapter)
void flush_queue(PMINI_ADAPTER Adapter, UINT iQIndex) void flush_queue(PMINI_ADAPTER Adapter, UINT iQIndex)
{ {
struct sk_buff* PacketToDrop=NULL; struct sk_buff* PacketToDrop=NULL;
struct net_device_stats* netstats=NULL; struct net_device_stats* netstats = &Adapter->dev->stats;
netstats = &((PLINUX_DEP_DATA)Adapter->pvOsDepData)->netstats;
spin_lock_bh(&Adapter->PackInfo[iQIndex].SFQueueLock); spin_lock_bh(&Adapter->PackInfo[iQIndex].SFQueueLock);

View file

@ -362,7 +362,7 @@ VOID PruneQueue(PMINI_ADAPTER Adapter,/**<Pointer to the driver control structur
) )
{ {
struct sk_buff* PacketToDrop=NULL; struct sk_buff* PacketToDrop=NULL;
struct net_device_stats* netstats=NULL; struct net_device_stats *netstats;
BCM_DEBUG_PRINT(Adapter,DBG_TYPE_TX, PRUNE_QUEUE, DBG_LVL_ALL, "=====> Index %d",iIndex); BCM_DEBUG_PRINT(Adapter,DBG_TYPE_TX, PRUNE_QUEUE, DBG_LVL_ALL, "=====> Index %d",iIndex);
@ -373,7 +373,7 @@ VOID PruneQueue(PMINI_ADAPTER Adapter,/**<Pointer to the driver control structur
return; return;
/* To Store the netdevice statistic */ /* To Store the netdevice statistic */
netstats = &((PLINUX_DEP_DATA)Adapter->pvOsDepData)->netstats; netstats = &Adapter->dev->stats;
spin_lock_bh(&Adapter->PackInfo[iIndex].SFQueueLock); spin_lock_bh(&Adapter->PackInfo[iIndex].SFQueueLock);
@ -431,11 +431,9 @@ VOID flush_all_queues(PMINI_ADAPTER Adapter)
INT iQIndex; INT iQIndex;
UINT uiTotalPacketLength; UINT uiTotalPacketLength;
struct sk_buff* PacketToDrop=NULL; struct sk_buff* PacketToDrop=NULL;
struct net_device_stats* netstats=NULL; struct net_device_stats* netstats=&Adapter->dev->stats;
BCM_DEBUG_PRINT(Adapter,DBG_TYPE_OTHERS, DUMP_INFO, DBG_LVL_ALL, "=====>"); BCM_DEBUG_PRINT(Adapter,DBG_TYPE_OTHERS, DUMP_INFO, DBG_LVL_ALL, "=====>");
/* To Store the netdevice statistic */
netstats = &((PLINUX_DEP_DATA)Adapter->pvOsDepData)->netstats;
// down(&Adapter->data_packet_queue_lock); // down(&Adapter->data_packet_queue_lock);
for(iQIndex=LowPriority; iQIndex<HiPriority; iQIndex++) for(iQIndex=LowPriority; iQIndex<HiPriority; iQIndex++)

View file

@ -212,9 +212,6 @@ INT SendControlPacket(PMINI_ADAPTER Adapter, /**<Logical Adapter*/
Adapter->interface_transmit(Adapter->pvInterfaceAdapter, Adapter->interface_transmit(Adapter->pvInterfaceAdapter,
pControlPacket, (PLeader->PLength + LEADER_SIZE)); pControlPacket, (PLeader->PLength + LEADER_SIZE));
((PLINUX_DEP_DATA)Adapter->pvOsDepData)->netstats.tx_packets++;
((PLINUX_DEP_DATA)Adapter->pvOsDepData)->netstats.tx_bytes+=
PLeader->PLength;
atomic_dec(&Adapter->CurrNumFreeTxDesc); atomic_dec(&Adapter->CurrNumFreeTxDesc);
BCM_DEBUG_PRINT(Adapter,DBG_TYPE_TX, TX_CONTROL, DBG_LVL_ALL, "<========="); BCM_DEBUG_PRINT(Adapter,DBG_TYPE_TX, TX_CONTROL, DBG_LVL_ALL, "<=========");
return STATUS_SUCCESS; return STATUS_SUCCESS;