Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 227921
b: refs/heads/master
c: 46c3790
h: refs/heads/master
i:
  227919: 34f0400
v: v3
  • Loading branch information
Stephen Hemminger committed Nov 1, 2010
1 parent 2720f27 commit 63eab41
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 31 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5afb5145a13ac26f3c7ab273140a83958bc038f0
refs/heads/master: 46c3790eb523931a803bb3c28c5bf8bbfc8acf48
57 changes: 27 additions & 30 deletions trunk/drivers/staging/bcm/Bcmnet.c
Original file line number Diff line number Diff line change
@@ -1,34 +1,31 @@
#include "headers.h"

struct net_device *gblpnetdev;
/***************************************************************************************/
/* proto-type of lower function */

static INT bcm_open(struct net_device *dev)
{
PMINI_ADAPTER Adapter = GET_BCM_ADAPTER(dev);
PMINI_ADAPTER Adapter = GET_BCM_ADAPTER(dev);

if (Adapter->fw_download_done == FALSE)
return -EINVAL;

if(Adapter->fw_download_done==FALSE)
return -EINVAL;
if(Adapter->LinkUpStatus == 1){
if(netif_queue_stopped(Adapter->dev)){
if (Adapter->LinkUpStatus == 1) {
if (netif_queue_stopped(Adapter->dev)) {
netif_carrier_on(Adapter->dev);
netif_start_queue(Adapter->dev);
}
}

return 0;
return 0;
}

static INT bcm_close(struct net_device *dev)
{
PMINI_ADAPTER Adapter = GET_BCM_ADAPTER(dev);

if(!netif_queue_stopped(dev)) {
if (!netif_queue_stopped(dev)) {
netif_carrier_off(dev);
netif_stop_queue(dev);
netif_stop_queue(dev);
}
return 0;
return 0;
}

static struct net_device_stats *bcm_get_stats(struct net_device *dev)
Expand All @@ -55,52 +52,52 @@ static u16 bcm_select_queue(struct net_device *dev, struct sk_buff *skb)
return ClassifyPacket(netdev_priv(dev), skb);
}


/*******************************************************************
* Function - bcm_transmit()
*
* Description - This is the main transmit function for our virtual
* interface(eth0). It handles the ARP packets. It
* clones this packet and then Queue it to a suitable
* Queue. Then calls the transmit_packet().
* interface(eth0). It handles the ARP packets. It
* clones this packet and then Queue it to a suitable
* Queue. Then calls the transmit_packet().
*
* Parameter - skb - Pointer to the socket buffer structure
* dev - Pointer to the virtual net device structure
* dev - Pointer to the virtual net device structure
*
*********************************************************************/

static netdev_tx_t bcm_transmit(struct sk_buff *skb, struct net_device *dev)
{
PMINI_ADAPTER Adapter = GET_BCM_ADAPTER(dev);
PMINI_ADAPTER Adapter = GET_BCM_ADAPTER(dev);
u16 qindex = skb_get_queue_mapping(skb);

if (Adapter->device_removed || !Adapter->LinkUpStatus)
goto drop;

if (Adapter->TransferMode != IP_PACKET_ONLY_MODE )
if (Adapter->TransferMode != IP_PACKET_ONLY_MODE)
goto drop;

if (INVALID_QUEUE_INDEX==qindex)
if (INVALID_QUEUE_INDEX == qindex)
goto drop;

if (Adapter->PackInfo[qindex].uiCurrentPacketsOnHost >= SF_MAX_ALLOWED_PACKETS_TO_BACKUP)
if (Adapter->PackInfo[qindex].uiCurrentPacketsOnHost >=
SF_MAX_ALLOWED_PACKETS_TO_BACKUP)
return NETDEV_TX_BUSY;

/* Now Enqueue the packet */
BCM_DEBUG_PRINT(Adapter,DBG_TYPE_TX, NEXT_SEND, DBG_LVL_ALL,
"bcm_transmit Enqueueing the Packet To Queue %d",qindex);
BCM_DEBUG_PRINT(Adapter, DBG_TYPE_TX, NEXT_SEND, DBG_LVL_ALL,
"bcm_transmit Enqueueing the Packet To Queue %d",
qindex);

spin_lock(&Adapter->PackInfo[qindex].SFQueueLock);
Adapter->PackInfo[qindex].uiCurrentBytesOnHost += skb->len;
Adapter->PackInfo[qindex].uiCurrentPacketsOnHost++;

*((B_UINT32 *)skb->cb + SKB_CB_LATENCY_OFFSET ) = jiffies;
*((B_UINT32 *) skb->cb + SKB_CB_LATENCY_OFFSET) = jiffies;
ENQUEUEPACKET(Adapter->PackInfo[qindex].FirstTxQueue,
Adapter->PackInfo[qindex].LastTxQueue, skb);
atomic_inc(&Adapter->TotalPacketCount);
spin_unlock(&Adapter->PackInfo[qindex].SFQueueLock);

BCM_DEBUG_PRINT(Adapter,DBG_TYPE_TX, TX_OSAL_DBG, DBG_LVL_ALL,"ENQ: \n");

/* FIXME - this is racy and incorrect, replace with work queue */
if (!atomic_read(&Adapter->TxPktAvail)) {
atomic_set(&Adapter->TxPktAvail, 1);
Expand Down Expand Up @@ -182,12 +179,12 @@ int register_networkdev(PMINI_ADAPTER Adapter)
struct net_device *net = Adapter->dev;
int result;

net->netdev_ops = &bcmNetDevOps;
net->netdev_ops = &bcmNetDevOps;
net->ethtool_ops = &bcm_ethtool_ops;
net->mtu = MTU_SIZE; /* 1400 Bytes */
net->mtu = MTU_SIZE; /* 1400 Bytes */
net->tx_queue_len = TX_QLEN;
net->flags |= IFF_NOARP;
net->flags &= ~(IFF_BROADCAST|IFF_MULTICAST);
net->flags &= ~(IFF_BROADCAST | IFF_MULTICAST);

netif_carrier_off(net);

Expand Down

0 comments on commit 63eab41

Please sign in to comment.