|
@@ -381,21 +381,21 @@ enum {
|
|
|
|
|
|
/* Big endian: should work, but is untested */
|
|
/* Big endian: should work, but is untested */
|
|
struct ring_desc {
|
|
struct ring_desc {
|
|
- u32 PacketBuffer;
|
|
|
|
- u32 FlagLen;
|
|
|
|
|
|
+ u32 buf;
|
|
|
|
+ u32 flaglen;
|
|
};
|
|
};
|
|
|
|
|
|
struct ring_desc_ex {
|
|
struct ring_desc_ex {
|
|
- u32 PacketBufferHigh;
|
|
|
|
- u32 PacketBufferLow;
|
|
|
|
- u32 TxVlan;
|
|
|
|
- u32 FlagLen;
|
|
|
|
|
|
+ u32 bufhigh;
|
|
|
|
+ u32 buflow;
|
|
|
|
+ u32 txvlan;
|
|
|
|
+ u32 flaglen;
|
|
};
|
|
};
|
|
|
|
|
|
-typedef union _ring_type {
|
|
|
|
|
|
+union ring_type {
|
|
struct ring_desc* orig;
|
|
struct ring_desc* orig;
|
|
struct ring_desc_ex* ex;
|
|
struct ring_desc_ex* ex;
|
|
-} ring_type;
|
|
|
|
|
|
+};
|
|
|
|
|
|
#define FLAG_MASK_V1 0xffff0000
|
|
#define FLAG_MASK_V1 0xffff0000
|
|
#define FLAG_MASK_V2 0xffffc000
|
|
#define FLAG_MASK_V2 0xffffc000
|
|
@@ -713,7 +713,7 @@ struct fe_priv {
|
|
/* rx specific fields.
|
|
/* rx specific fields.
|
|
* Locking: Within irq hander or disable_irq+spin_lock(&np->lock);
|
|
* Locking: Within irq hander or disable_irq+spin_lock(&np->lock);
|
|
*/
|
|
*/
|
|
- ring_type rx_ring;
|
|
|
|
|
|
+ union ring_type rx_ring;
|
|
unsigned int cur_rx, refill_rx;
|
|
unsigned int cur_rx, refill_rx;
|
|
struct sk_buff **rx_skbuff;
|
|
struct sk_buff **rx_skbuff;
|
|
dma_addr_t *rx_dma;
|
|
dma_addr_t *rx_dma;
|
|
@@ -733,7 +733,7 @@ struct fe_priv {
|
|
/*
|
|
/*
|
|
* tx specific fields.
|
|
* tx specific fields.
|
|
*/
|
|
*/
|
|
- ring_type tx_ring;
|
|
|
|
|
|
+ union ring_type tx_ring;
|
|
unsigned int next_tx, nic_tx;
|
|
unsigned int next_tx, nic_tx;
|
|
struct sk_buff **tx_skbuff;
|
|
struct sk_buff **tx_skbuff;
|
|
dma_addr_t *tx_dma;
|
|
dma_addr_t *tx_dma;
|
|
@@ -826,13 +826,13 @@ static inline void pci_push(u8 __iomem *base)
|
|
|
|
|
|
static inline u32 nv_descr_getlength(struct ring_desc *prd, u32 v)
|
|
static inline u32 nv_descr_getlength(struct ring_desc *prd, u32 v)
|
|
{
|
|
{
|
|
- return le32_to_cpu(prd->FlagLen)
|
|
|
|
|
|
+ return le32_to_cpu(prd->flaglen)
|
|
& ((v == DESC_VER_1) ? LEN_MASK_V1 : LEN_MASK_V2);
|
|
& ((v == DESC_VER_1) ? LEN_MASK_V1 : LEN_MASK_V2);
|
|
}
|
|
}
|
|
|
|
|
|
static inline u32 nv_descr_getlength_ex(struct ring_desc_ex *prd, u32 v)
|
|
static inline u32 nv_descr_getlength_ex(struct ring_desc_ex *prd, u32 v)
|
|
{
|
|
{
|
|
- return le32_to_cpu(prd->FlagLen) & LEN_MASK_V2;
|
|
|
|
|
|
+ return le32_to_cpu(prd->flaglen) & LEN_MASK_V2;
|
|
}
|
|
}
|
|
|
|
|
|
static int reg_delay(struct net_device *dev, int offset, u32 mask, u32 target,
|
|
static int reg_delay(struct net_device *dev, int offset, u32 mask, u32 target,
|
|
@@ -885,7 +885,7 @@ static void free_rings(struct net_device *dev)
|
|
struct fe_priv *np = get_nvpriv(dev);
|
|
struct fe_priv *np = get_nvpriv(dev);
|
|
|
|
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
- if(np->rx_ring.orig)
|
|
|
|
|
|
+ if (np->rx_ring.orig)
|
|
pci_free_consistent(np->pci_dev, sizeof(struct ring_desc) * (np->rx_ring_size + np->tx_ring_size),
|
|
pci_free_consistent(np->pci_dev, sizeof(struct ring_desc) * (np->rx_ring_size + np->tx_ring_size),
|
|
np->rx_ring.orig, np->ring_addr);
|
|
np->rx_ring.orig, np->ring_addr);
|
|
} else {
|
|
} else {
|
|
@@ -1258,14 +1258,14 @@ static int nv_alloc_rx(struct net_device *dev)
|
|
np->rx_dma[nr] = pci_map_single(np->pci_dev, skb->data,
|
|
np->rx_dma[nr] = pci_map_single(np->pci_dev, skb->data,
|
|
skb->end-skb->data, PCI_DMA_FROMDEVICE);
|
|
skb->end-skb->data, PCI_DMA_FROMDEVICE);
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
- np->rx_ring.orig[nr].PacketBuffer = cpu_to_le32(np->rx_dma[nr]);
|
|
|
|
|
|
+ np->rx_ring.orig[nr].buf = cpu_to_le32(np->rx_dma[nr]);
|
|
wmb();
|
|
wmb();
|
|
- np->rx_ring.orig[nr].FlagLen = cpu_to_le32(np->rx_buf_sz | NV_RX_AVAIL);
|
|
|
|
|
|
+ np->rx_ring.orig[nr].flaglen = cpu_to_le32(np->rx_buf_sz | NV_RX_AVAIL);
|
|
} else {
|
|
} else {
|
|
- np->rx_ring.ex[nr].PacketBufferHigh = cpu_to_le64(np->rx_dma[nr]) >> 32;
|
|
|
|
- np->rx_ring.ex[nr].PacketBufferLow = cpu_to_le64(np->rx_dma[nr]) & 0x0FFFFFFFF;
|
|
|
|
|
|
+ np->rx_ring.ex[nr].bufhigh = cpu_to_le64(np->rx_dma[nr]) >> 32;
|
|
|
|
+ np->rx_ring.ex[nr].buflow = cpu_to_le64(np->rx_dma[nr]) & 0x0FFFFFFFF;
|
|
wmb();
|
|
wmb();
|
|
- np->rx_ring.ex[nr].FlagLen = cpu_to_le32(np->rx_buf_sz | NV_RX2_AVAIL);
|
|
|
|
|
|
+ np->rx_ring.ex[nr].flaglen = cpu_to_le32(np->rx_buf_sz | NV_RX2_AVAIL);
|
|
}
|
|
}
|
|
dprintk(KERN_DEBUG "%s: nv_alloc_rx: Packet %d marked as Available\n",
|
|
dprintk(KERN_DEBUG "%s: nv_alloc_rx: Packet %d marked as Available\n",
|
|
dev->name, refill_rx);
|
|
dev->name, refill_rx);
|
|
@@ -1315,9 +1315,9 @@ static void nv_init_rx(struct net_device *dev)
|
|
np->refill_rx = 0;
|
|
np->refill_rx = 0;
|
|
for (i = 0; i < np->rx_ring_size; i++)
|
|
for (i = 0; i < np->rx_ring_size; i++)
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2)
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2)
|
|
- np->rx_ring.orig[i].FlagLen = 0;
|
|
|
|
|
|
+ np->rx_ring.orig[i].flaglen = 0;
|
|
else
|
|
else
|
|
- np->rx_ring.ex[i].FlagLen = 0;
|
|
|
|
|
|
+ np->rx_ring.ex[i].flaglen = 0;
|
|
}
|
|
}
|
|
|
|
|
|
static void nv_init_tx(struct net_device *dev)
|
|
static void nv_init_tx(struct net_device *dev)
|
|
@@ -1328,9 +1328,9 @@ static void nv_init_tx(struct net_device *dev)
|
|
np->next_tx = np->nic_tx = 0;
|
|
np->next_tx = np->nic_tx = 0;
|
|
for (i = 0; i < np->tx_ring_size; i++) {
|
|
for (i = 0; i < np->tx_ring_size; i++) {
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2)
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2)
|
|
- np->tx_ring.orig[i].FlagLen = 0;
|
|
|
|
|
|
+ np->tx_ring.orig[i].flaglen = 0;
|
|
else
|
|
else
|
|
- np->tx_ring.ex[i].FlagLen = 0;
|
|
|
|
|
|
+ np->tx_ring.ex[i].flaglen = 0;
|
|
np->tx_skbuff[i] = NULL;
|
|
np->tx_skbuff[i] = NULL;
|
|
np->tx_dma[i] = 0;
|
|
np->tx_dma[i] = 0;
|
|
}
|
|
}
|
|
@@ -1373,9 +1373,9 @@ static void nv_drain_tx(struct net_device *dev)
|
|
|
|
|
|
for (i = 0; i < np->tx_ring_size; i++) {
|
|
for (i = 0; i < np->tx_ring_size; i++) {
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2)
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2)
|
|
- np->tx_ring.orig[i].FlagLen = 0;
|
|
|
|
|
|
+ np->tx_ring.orig[i].flaglen = 0;
|
|
else
|
|
else
|
|
- np->tx_ring.ex[i].FlagLen = 0;
|
|
|
|
|
|
+ np->tx_ring.ex[i].flaglen = 0;
|
|
if (nv_release_txskb(dev, i))
|
|
if (nv_release_txskb(dev, i))
|
|
np->stats.tx_dropped++;
|
|
np->stats.tx_dropped++;
|
|
}
|
|
}
|
|
@@ -1387,9 +1387,9 @@ static void nv_drain_rx(struct net_device *dev)
|
|
int i;
|
|
int i;
|
|
for (i = 0; i < np->rx_ring_size; i++) {
|
|
for (i = 0; i < np->rx_ring_size; i++) {
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2)
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2)
|
|
- np->rx_ring.orig[i].FlagLen = 0;
|
|
|
|
|
|
+ np->rx_ring.orig[i].flaglen = 0;
|
|
else
|
|
else
|
|
- np->rx_ring.ex[i].FlagLen = 0;
|
|
|
|
|
|
+ np->rx_ring.ex[i].flaglen = 0;
|
|
wmb();
|
|
wmb();
|
|
if (np->rx_skbuff[i]) {
|
|
if (np->rx_skbuff[i]) {
|
|
pci_unmap_single(np->pci_dev, np->rx_dma[i],
|
|
pci_unmap_single(np->pci_dev, np->rx_dma[i],
|
|
@@ -1450,17 +1450,17 @@ static int nv_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
np->tx_dma_len[nr] = bcnt;
|
|
np->tx_dma_len[nr] = bcnt;
|
|
|
|
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
- np->tx_ring.orig[nr].PacketBuffer = cpu_to_le32(np->tx_dma[nr]);
|
|
|
|
- np->tx_ring.orig[nr].FlagLen = cpu_to_le32((bcnt-1) | tx_flags);
|
|
|
|
|
|
+ np->tx_ring.orig[nr].buf = cpu_to_le32(np->tx_dma[nr]);
|
|
|
|
+ np->tx_ring.orig[nr].flaglen = cpu_to_le32((bcnt-1) | tx_flags);
|
|
} else {
|
|
} else {
|
|
- np->tx_ring.ex[nr].PacketBufferHigh = cpu_to_le64(np->tx_dma[nr]) >> 32;
|
|
|
|
- np->tx_ring.ex[nr].PacketBufferLow = cpu_to_le64(np->tx_dma[nr]) & 0x0FFFFFFFF;
|
|
|
|
- np->tx_ring.ex[nr].FlagLen = cpu_to_le32((bcnt-1) | tx_flags);
|
|
|
|
|
|
+ np->tx_ring.ex[nr].bufhigh = cpu_to_le64(np->tx_dma[nr]) >> 32;
|
|
|
|
+ np->tx_ring.ex[nr].buflow = cpu_to_le64(np->tx_dma[nr]) & 0x0FFFFFFFF;
|
|
|
|
+ np->tx_ring.ex[nr].flaglen = cpu_to_le32((bcnt-1) | tx_flags);
|
|
}
|
|
}
|
|
tx_flags = np->tx_flags;
|
|
tx_flags = np->tx_flags;
|
|
offset += bcnt;
|
|
offset += bcnt;
|
|
size -= bcnt;
|
|
size -= bcnt;
|
|
- } while(size);
|
|
|
|
|
|
+ } while (size);
|
|
|
|
|
|
/* setup the fragments */
|
|
/* setup the fragments */
|
|
for (i = 0; i < fragments; i++) {
|
|
for (i = 0; i < fragments; i++) {
|
|
@@ -1477,12 +1477,12 @@ static int nv_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
np->tx_dma_len[nr] = bcnt;
|
|
np->tx_dma_len[nr] = bcnt;
|
|
|
|
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
- np->tx_ring.orig[nr].PacketBuffer = cpu_to_le32(np->tx_dma[nr]);
|
|
|
|
- np->tx_ring.orig[nr].FlagLen = cpu_to_le32((bcnt-1) | tx_flags);
|
|
|
|
|
|
+ np->tx_ring.orig[nr].buf = cpu_to_le32(np->tx_dma[nr]);
|
|
|
|
+ np->tx_ring.orig[nr].flaglen = cpu_to_le32((bcnt-1) | tx_flags);
|
|
} else {
|
|
} else {
|
|
- np->tx_ring.ex[nr].PacketBufferHigh = cpu_to_le64(np->tx_dma[nr]) >> 32;
|
|
|
|
- np->tx_ring.ex[nr].PacketBufferLow = cpu_to_le64(np->tx_dma[nr]) & 0x0FFFFFFFF;
|
|
|
|
- np->tx_ring.ex[nr].FlagLen = cpu_to_le32((bcnt-1) | tx_flags);
|
|
|
|
|
|
+ np->tx_ring.ex[nr].bufhigh = cpu_to_le64(np->tx_dma[nr]) >> 32;
|
|
|
|
+ np->tx_ring.ex[nr].buflow = cpu_to_le64(np->tx_dma[nr]) & 0x0FFFFFFFF;
|
|
|
|
+ np->tx_ring.ex[nr].flaglen = cpu_to_le32((bcnt-1) | tx_flags);
|
|
}
|
|
}
|
|
offset += bcnt;
|
|
offset += bcnt;
|
|
size -= bcnt;
|
|
size -= bcnt;
|
|
@@ -1491,9 +1491,9 @@ static int nv_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
|
|
|
/* set last fragment flag */
|
|
/* set last fragment flag */
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
- np->tx_ring.orig[nr].FlagLen |= cpu_to_le32(tx_flags_extra);
|
|
|
|
|
|
+ np->tx_ring.orig[nr].flaglen |= cpu_to_le32(tx_flags_extra);
|
|
} else {
|
|
} else {
|
|
- np->tx_ring.ex[nr].FlagLen |= cpu_to_le32(tx_flags_extra);
|
|
|
|
|
|
+ np->tx_ring.ex[nr].flaglen |= cpu_to_le32(tx_flags_extra);
|
|
}
|
|
}
|
|
|
|
|
|
np->tx_skbuff[nr] = skb;
|
|
np->tx_skbuff[nr] = skb;
|
|
@@ -1512,10 +1512,10 @@ static int nv_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
|
|
|
/* set tx flags */
|
|
/* set tx flags */
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
- np->tx_ring.orig[start_nr].FlagLen |= cpu_to_le32(tx_flags | tx_flags_extra);
|
|
|
|
|
|
+ np->tx_ring.orig[start_nr].flaglen |= cpu_to_le32(tx_flags | tx_flags_extra);
|
|
} else {
|
|
} else {
|
|
- np->tx_ring.ex[start_nr].TxVlan = cpu_to_le32(tx_flags_vlan);
|
|
|
|
- np->tx_ring.ex[start_nr].FlagLen |= cpu_to_le32(tx_flags | tx_flags_extra);
|
|
|
|
|
|
+ np->tx_ring.ex[start_nr].txvlan = cpu_to_le32(tx_flags_vlan);
|
|
|
|
+ np->tx_ring.ex[start_nr].flaglen |= cpu_to_le32(tx_flags | tx_flags_extra);
|
|
}
|
|
}
|
|
|
|
|
|
dprintk(KERN_DEBUG "%s: nv_start_xmit: packet %d (entries %d) queued for transmission. tx_flags_extra: %x\n",
|
|
dprintk(KERN_DEBUG "%s: nv_start_xmit: packet %d (entries %d) queued for transmission. tx_flags_extra: %x\n",
|
|
@@ -1547,7 +1547,7 @@ static int nv_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
static void nv_tx_done(struct net_device *dev)
|
|
static void nv_tx_done(struct net_device *dev)
|
|
{
|
|
{
|
|
struct fe_priv *np = netdev_priv(dev);
|
|
struct fe_priv *np = netdev_priv(dev);
|
|
- u32 Flags;
|
|
|
|
|
|
+ u32 flags;
|
|
unsigned int i;
|
|
unsigned int i;
|
|
struct sk_buff *skb;
|
|
struct sk_buff *skb;
|
|
|
|
|
|
@@ -1555,22 +1555,22 @@ static void nv_tx_done(struct net_device *dev)
|
|
i = np->nic_tx % np->tx_ring_size;
|
|
i = np->nic_tx % np->tx_ring_size;
|
|
|
|
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2)
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2)
|
|
- Flags = le32_to_cpu(np->tx_ring.orig[i].FlagLen);
|
|
|
|
|
|
+ flags = le32_to_cpu(np->tx_ring.orig[i].flaglen);
|
|
else
|
|
else
|
|
- Flags = le32_to_cpu(np->tx_ring.ex[i].FlagLen);
|
|
|
|
|
|
+ flags = le32_to_cpu(np->tx_ring.ex[i].flaglen);
|
|
|
|
|
|
- dprintk(KERN_DEBUG "%s: nv_tx_done: looking at packet %d, Flags 0x%x.\n",
|
|
|
|
- dev->name, np->nic_tx, Flags);
|
|
|
|
- if (Flags & NV_TX_VALID)
|
|
|
|
|
|
+ dprintk(KERN_DEBUG "%s: nv_tx_done: looking at packet %d, flags 0x%x.\n",
|
|
|
|
+ dev->name, np->nic_tx, flags);
|
|
|
|
+ if (flags & NV_TX_VALID)
|
|
break;
|
|
break;
|
|
if (np->desc_ver == DESC_VER_1) {
|
|
if (np->desc_ver == DESC_VER_1) {
|
|
- if (Flags & NV_TX_LASTPACKET) {
|
|
|
|
|
|
+ if (flags & NV_TX_LASTPACKET) {
|
|
skb = np->tx_skbuff[i];
|
|
skb = np->tx_skbuff[i];
|
|
- if (Flags & (NV_TX_RETRYERROR|NV_TX_CARRIERLOST|NV_TX_LATECOLLISION|
|
|
|
|
|
|
+ if (flags & (NV_TX_RETRYERROR|NV_TX_CARRIERLOST|NV_TX_LATECOLLISION|
|
|
NV_TX_UNDERFLOW|NV_TX_ERROR)) {
|
|
NV_TX_UNDERFLOW|NV_TX_ERROR)) {
|
|
- if (Flags & NV_TX_UNDERFLOW)
|
|
|
|
|
|
+ if (flags & NV_TX_UNDERFLOW)
|
|
np->stats.tx_fifo_errors++;
|
|
np->stats.tx_fifo_errors++;
|
|
- if (Flags & NV_TX_CARRIERLOST)
|
|
|
|
|
|
+ if (flags & NV_TX_CARRIERLOST)
|
|
np->stats.tx_carrier_errors++;
|
|
np->stats.tx_carrier_errors++;
|
|
np->stats.tx_errors++;
|
|
np->stats.tx_errors++;
|
|
} else {
|
|
} else {
|
|
@@ -1579,13 +1579,13 @@ static void nv_tx_done(struct net_device *dev)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- if (Flags & NV_TX2_LASTPACKET) {
|
|
|
|
|
|
+ if (flags & NV_TX2_LASTPACKET) {
|
|
skb = np->tx_skbuff[i];
|
|
skb = np->tx_skbuff[i];
|
|
- if (Flags & (NV_TX2_RETRYERROR|NV_TX2_CARRIERLOST|NV_TX2_LATECOLLISION|
|
|
|
|
|
|
+ if (flags & (NV_TX2_RETRYERROR|NV_TX2_CARRIERLOST|NV_TX2_LATECOLLISION|
|
|
NV_TX2_UNDERFLOW|NV_TX2_ERROR)) {
|
|
NV_TX2_UNDERFLOW|NV_TX2_ERROR)) {
|
|
- if (Flags & NV_TX2_UNDERFLOW)
|
|
|
|
|
|
+ if (flags & NV_TX2_UNDERFLOW)
|
|
np->stats.tx_fifo_errors++;
|
|
np->stats.tx_fifo_errors++;
|
|
- if (Flags & NV_TX2_CARRIERLOST)
|
|
|
|
|
|
+ if (flags & NV_TX2_CARRIERLOST)
|
|
np->stats.tx_carrier_errors++;
|
|
np->stats.tx_carrier_errors++;
|
|
np->stats.tx_errors++;
|
|
np->stats.tx_errors++;
|
|
} else {
|
|
} else {
|
|
@@ -1638,29 +1638,29 @@ static void nv_tx_timeout(struct net_device *dev)
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
printk(KERN_INFO "%03x: %08x %08x // %08x %08x // %08x %08x // %08x %08x\n",
|
|
printk(KERN_INFO "%03x: %08x %08x // %08x %08x // %08x %08x // %08x %08x\n",
|
|
i,
|
|
i,
|
|
- le32_to_cpu(np->tx_ring.orig[i].PacketBuffer),
|
|
|
|
- le32_to_cpu(np->tx_ring.orig[i].FlagLen),
|
|
|
|
- le32_to_cpu(np->tx_ring.orig[i+1].PacketBuffer),
|
|
|
|
- le32_to_cpu(np->tx_ring.orig[i+1].FlagLen),
|
|
|
|
- le32_to_cpu(np->tx_ring.orig[i+2].PacketBuffer),
|
|
|
|
- le32_to_cpu(np->tx_ring.orig[i+2].FlagLen),
|
|
|
|
- le32_to_cpu(np->tx_ring.orig[i+3].PacketBuffer),
|
|
|
|
- le32_to_cpu(np->tx_ring.orig[i+3].FlagLen));
|
|
|
|
|
|
+ le32_to_cpu(np->tx_ring.orig[i].buf),
|
|
|
|
+ le32_to_cpu(np->tx_ring.orig[i].flaglen),
|
|
|
|
+ le32_to_cpu(np->tx_ring.orig[i+1].buf),
|
|
|
|
+ le32_to_cpu(np->tx_ring.orig[i+1].flaglen),
|
|
|
|
+ le32_to_cpu(np->tx_ring.orig[i+2].buf),
|
|
|
|
+ le32_to_cpu(np->tx_ring.orig[i+2].flaglen),
|
|
|
|
+ le32_to_cpu(np->tx_ring.orig[i+3].buf),
|
|
|
|
+ le32_to_cpu(np->tx_ring.orig[i+3].flaglen));
|
|
} else {
|
|
} else {
|
|
printk(KERN_INFO "%03x: %08x %08x %08x // %08x %08x %08x // %08x %08x %08x // %08x %08x %08x\n",
|
|
printk(KERN_INFO "%03x: %08x %08x %08x // %08x %08x %08x // %08x %08x %08x // %08x %08x %08x\n",
|
|
i,
|
|
i,
|
|
- le32_to_cpu(np->tx_ring.ex[i].PacketBufferHigh),
|
|
|
|
- le32_to_cpu(np->tx_ring.ex[i].PacketBufferLow),
|
|
|
|
- le32_to_cpu(np->tx_ring.ex[i].FlagLen),
|
|
|
|
- le32_to_cpu(np->tx_ring.ex[i+1].PacketBufferHigh),
|
|
|
|
- le32_to_cpu(np->tx_ring.ex[i+1].PacketBufferLow),
|
|
|
|
- le32_to_cpu(np->tx_ring.ex[i+1].FlagLen),
|
|
|
|
- le32_to_cpu(np->tx_ring.ex[i+2].PacketBufferHigh),
|
|
|
|
- le32_to_cpu(np->tx_ring.ex[i+2].PacketBufferLow),
|
|
|
|
- le32_to_cpu(np->tx_ring.ex[i+2].FlagLen),
|
|
|
|
- le32_to_cpu(np->tx_ring.ex[i+3].PacketBufferHigh),
|
|
|
|
- le32_to_cpu(np->tx_ring.ex[i+3].PacketBufferLow),
|
|
|
|
- le32_to_cpu(np->tx_ring.ex[i+3].FlagLen));
|
|
|
|
|
|
+ le32_to_cpu(np->tx_ring.ex[i].bufhigh),
|
|
|
|
+ le32_to_cpu(np->tx_ring.ex[i].buflow),
|
|
|
|
+ le32_to_cpu(np->tx_ring.ex[i].flaglen),
|
|
|
|
+ le32_to_cpu(np->tx_ring.ex[i+1].bufhigh),
|
|
|
|
+ le32_to_cpu(np->tx_ring.ex[i+1].buflow),
|
|
|
|
+ le32_to_cpu(np->tx_ring.ex[i+1].flaglen),
|
|
|
|
+ le32_to_cpu(np->tx_ring.ex[i+2].bufhigh),
|
|
|
|
+ le32_to_cpu(np->tx_ring.ex[i+2].buflow),
|
|
|
|
+ le32_to_cpu(np->tx_ring.ex[i+2].flaglen),
|
|
|
|
+ le32_to_cpu(np->tx_ring.ex[i+3].bufhigh),
|
|
|
|
+ le32_to_cpu(np->tx_ring.ex[i+3].buflow),
|
|
|
|
+ le32_to_cpu(np->tx_ring.ex[i+3].flaglen));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1697,7 +1697,7 @@ static int nv_getlen(struct net_device *dev, void *packet, int datalen)
|
|
int protolen; /* length as stored in the proto field */
|
|
int protolen; /* length as stored in the proto field */
|
|
|
|
|
|
/* 1) calculate len according to header */
|
|
/* 1) calculate len according to header */
|
|
- if ( ((struct vlan_ethhdr *)packet)->h_vlan_proto == __constant_htons(ETH_P_8021Q)) {
|
|
|
|
|
|
+ if ( ((struct vlan_ethhdr *)packet)->h_vlan_proto == htons(ETH_P_8021Q)) {
|
|
protolen = ntohs( ((struct vlan_ethhdr *)packet)->h_vlan_encapsulated_proto );
|
|
protolen = ntohs( ((struct vlan_ethhdr *)packet)->h_vlan_encapsulated_proto );
|
|
hdrlen = VLAN_HLEN;
|
|
hdrlen = VLAN_HLEN;
|
|
} else {
|
|
} else {
|
|
@@ -1743,7 +1743,7 @@ static int nv_getlen(struct net_device *dev, void *packet, int datalen)
|
|
static void nv_rx_process(struct net_device *dev)
|
|
static void nv_rx_process(struct net_device *dev)
|
|
{
|
|
{
|
|
struct fe_priv *np = netdev_priv(dev);
|
|
struct fe_priv *np = netdev_priv(dev);
|
|
- u32 Flags;
|
|
|
|
|
|
+ u32 flags;
|
|
u32 vlanflags = 0;
|
|
u32 vlanflags = 0;
|
|
|
|
|
|
for (;;) {
|
|
for (;;) {
|
|
@@ -1755,18 +1755,18 @@ static void nv_rx_process(struct net_device *dev)
|
|
|
|
|
|
i = np->cur_rx % np->rx_ring_size;
|
|
i = np->cur_rx % np->rx_ring_size;
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
- Flags = le32_to_cpu(np->rx_ring.orig[i].FlagLen);
|
|
|
|
|
|
+ flags = le32_to_cpu(np->rx_ring.orig[i].flaglen);
|
|
len = nv_descr_getlength(&np->rx_ring.orig[i], np->desc_ver);
|
|
len = nv_descr_getlength(&np->rx_ring.orig[i], np->desc_ver);
|
|
} else {
|
|
} else {
|
|
- Flags = le32_to_cpu(np->rx_ring.ex[i].FlagLen);
|
|
|
|
|
|
+ flags = le32_to_cpu(np->rx_ring.ex[i].flaglen);
|
|
len = nv_descr_getlength_ex(&np->rx_ring.ex[i], np->desc_ver);
|
|
len = nv_descr_getlength_ex(&np->rx_ring.ex[i], np->desc_ver);
|
|
- vlanflags = le32_to_cpu(np->rx_ring.ex[i].PacketBufferLow);
|
|
|
|
|
|
+ vlanflags = le32_to_cpu(np->rx_ring.ex[i].buflow);
|
|
}
|
|
}
|
|
|
|
|
|
- dprintk(KERN_DEBUG "%s: nv_rx_process: looking at packet %d, Flags 0x%x.\n",
|
|
|
|
- dev->name, np->cur_rx, Flags);
|
|
|
|
|
|
+ dprintk(KERN_DEBUG "%s: nv_rx_process: looking at packet %d, flags 0x%x.\n",
|
|
|
|
+ dev->name, np->cur_rx, flags);
|
|
|
|
|
|
- if (Flags & NV_RX_AVAIL)
|
|
|
|
|
|
+ if (flags & NV_RX_AVAIL)
|
|
break; /* still owned by hardware, */
|
|
break; /* still owned by hardware, */
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -1780,7 +1780,7 @@ static void nv_rx_process(struct net_device *dev)
|
|
|
|
|
|
{
|
|
{
|
|
int j;
|
|
int j;
|
|
- dprintk(KERN_DEBUG "Dumping packet (flags 0x%x).",Flags);
|
|
|
|
|
|
+ dprintk(KERN_DEBUG "Dumping packet (flags 0x%x).",flags);
|
|
for (j=0; j<64; j++) {
|
|
for (j=0; j<64; j++) {
|
|
if ((j%16) == 0)
|
|
if ((j%16) == 0)
|
|
dprintk("\n%03x:", j);
|
|
dprintk("\n%03x:", j);
|
|
@@ -1790,30 +1790,30 @@ static void nv_rx_process(struct net_device *dev)
|
|
}
|
|
}
|
|
/* look at what we actually got: */
|
|
/* look at what we actually got: */
|
|
if (np->desc_ver == DESC_VER_1) {
|
|
if (np->desc_ver == DESC_VER_1) {
|
|
- if (!(Flags & NV_RX_DESCRIPTORVALID))
|
|
|
|
|
|
+ if (!(flags & NV_RX_DESCRIPTORVALID))
|
|
goto next_pkt;
|
|
goto next_pkt;
|
|
|
|
|
|
- if (Flags & NV_RX_ERROR) {
|
|
|
|
- if (Flags & NV_RX_MISSEDFRAME) {
|
|
|
|
|
|
+ if (flags & NV_RX_ERROR) {
|
|
|
|
+ if (flags & NV_RX_MISSEDFRAME) {
|
|
np->stats.rx_missed_errors++;
|
|
np->stats.rx_missed_errors++;
|
|
np->stats.rx_errors++;
|
|
np->stats.rx_errors++;
|
|
goto next_pkt;
|
|
goto next_pkt;
|
|
}
|
|
}
|
|
- if (Flags & (NV_RX_ERROR1|NV_RX_ERROR2|NV_RX_ERROR3)) {
|
|
|
|
|
|
+ if (flags & (NV_RX_ERROR1|NV_RX_ERROR2|NV_RX_ERROR3)) {
|
|
np->stats.rx_errors++;
|
|
np->stats.rx_errors++;
|
|
goto next_pkt;
|
|
goto next_pkt;
|
|
}
|
|
}
|
|
- if (Flags & NV_RX_CRCERR) {
|
|
|
|
|
|
+ if (flags & NV_RX_CRCERR) {
|
|
np->stats.rx_crc_errors++;
|
|
np->stats.rx_crc_errors++;
|
|
np->stats.rx_errors++;
|
|
np->stats.rx_errors++;
|
|
goto next_pkt;
|
|
goto next_pkt;
|
|
}
|
|
}
|
|
- if (Flags & NV_RX_OVERFLOW) {
|
|
|
|
|
|
+ if (flags & NV_RX_OVERFLOW) {
|
|
np->stats.rx_over_errors++;
|
|
np->stats.rx_over_errors++;
|
|
np->stats.rx_errors++;
|
|
np->stats.rx_errors++;
|
|
goto next_pkt;
|
|
goto next_pkt;
|
|
}
|
|
}
|
|
- if (Flags & NV_RX_ERROR4) {
|
|
|
|
|
|
+ if (flags & NV_RX_ERROR4) {
|
|
len = nv_getlen(dev, np->rx_skbuff[i]->data, len);
|
|
len = nv_getlen(dev, np->rx_skbuff[i]->data, len);
|
|
if (len < 0) {
|
|
if (len < 0) {
|
|
np->stats.rx_errors++;
|
|
np->stats.rx_errors++;
|
|
@@ -1821,32 +1821,32 @@ static void nv_rx_process(struct net_device *dev)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/* framing errors are soft errors. */
|
|
/* framing errors are soft errors. */
|
|
- if (Flags & NV_RX_FRAMINGERR) {
|
|
|
|
- if (Flags & NV_RX_SUBSTRACT1) {
|
|
|
|
|
|
+ if (flags & NV_RX_FRAMINGERR) {
|
|
|
|
+ if (flags & NV_RX_SUBSTRACT1) {
|
|
len--;
|
|
len--;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
- if (!(Flags & NV_RX2_DESCRIPTORVALID))
|
|
|
|
|
|
+ if (!(flags & NV_RX2_DESCRIPTORVALID))
|
|
goto next_pkt;
|
|
goto next_pkt;
|
|
|
|
|
|
- if (Flags & NV_RX2_ERROR) {
|
|
|
|
- if (Flags & (NV_RX2_ERROR1|NV_RX2_ERROR2|NV_RX2_ERROR3)) {
|
|
|
|
|
|
+ if (flags & NV_RX2_ERROR) {
|
|
|
|
+ if (flags & (NV_RX2_ERROR1|NV_RX2_ERROR2|NV_RX2_ERROR3)) {
|
|
np->stats.rx_errors++;
|
|
np->stats.rx_errors++;
|
|
goto next_pkt;
|
|
goto next_pkt;
|
|
}
|
|
}
|
|
- if (Flags & NV_RX2_CRCERR) {
|
|
|
|
|
|
+ if (flags & NV_RX2_CRCERR) {
|
|
np->stats.rx_crc_errors++;
|
|
np->stats.rx_crc_errors++;
|
|
np->stats.rx_errors++;
|
|
np->stats.rx_errors++;
|
|
goto next_pkt;
|
|
goto next_pkt;
|
|
}
|
|
}
|
|
- if (Flags & NV_RX2_OVERFLOW) {
|
|
|
|
|
|
+ if (flags & NV_RX2_OVERFLOW) {
|
|
np->stats.rx_over_errors++;
|
|
np->stats.rx_over_errors++;
|
|
np->stats.rx_errors++;
|
|
np->stats.rx_errors++;
|
|
goto next_pkt;
|
|
goto next_pkt;
|
|
}
|
|
}
|
|
- if (Flags & NV_RX2_ERROR4) {
|
|
|
|
|
|
+ if (flags & NV_RX2_ERROR4) {
|
|
len = nv_getlen(dev, np->rx_skbuff[i]->data, len);
|
|
len = nv_getlen(dev, np->rx_skbuff[i]->data, len);
|
|
if (len < 0) {
|
|
if (len < 0) {
|
|
np->stats.rx_errors++;
|
|
np->stats.rx_errors++;
|
|
@@ -1854,17 +1854,17 @@ static void nv_rx_process(struct net_device *dev)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
/* framing errors are soft errors */
|
|
/* framing errors are soft errors */
|
|
- if (Flags & NV_RX2_FRAMINGERR) {
|
|
|
|
- if (Flags & NV_RX2_SUBSTRACT1) {
|
|
|
|
|
|
+ if (flags & NV_RX2_FRAMINGERR) {
|
|
|
|
+ if (flags & NV_RX2_SUBSTRACT1) {
|
|
len--;
|
|
len--;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (np->txrxctl_bits & NVREG_TXRXCTL_RXCHECK) {
|
|
if (np->txrxctl_bits & NVREG_TXRXCTL_RXCHECK) {
|
|
- Flags &= NV_RX2_CHECKSUMMASK;
|
|
|
|
- if (Flags == NV_RX2_CHECKSUMOK1 ||
|
|
|
|
- Flags == NV_RX2_CHECKSUMOK2 ||
|
|
|
|
- Flags == NV_RX2_CHECKSUMOK3) {
|
|
|
|
|
|
+ flags &= NV_RX2_CHECKSUMMASK;
|
|
|
|
+ if (flags == NV_RX2_CHECKSUMOK1 ||
|
|
|
|
+ flags == NV_RX2_CHECKSUMOK2 ||
|
|
|
|
+ flags == NV_RX2_CHECKSUMOK3) {
|
|
dprintk(KERN_DEBUG "%s: hw checksum hit!.\n", dev->name);
|
|
dprintk(KERN_DEBUG "%s: hw checksum hit!.\n", dev->name);
|
|
np->rx_skbuff[i]->ip_summed = CHECKSUM_UNNECESSARY;
|
|
np->rx_skbuff[i]->ip_summed = CHECKSUM_UNNECESSARY;
|
|
} else {
|
|
} else {
|
|
@@ -1990,7 +1990,7 @@ static int nv_set_mac_address(struct net_device *dev, void *addr)
|
|
struct fe_priv *np = netdev_priv(dev);
|
|
struct fe_priv *np = netdev_priv(dev);
|
|
struct sockaddr *macaddr = (struct sockaddr*)addr;
|
|
struct sockaddr *macaddr = (struct sockaddr*)addr;
|
|
|
|
|
|
- if(!is_valid_ether_addr(macaddr->sa_data))
|
|
|
|
|
|
+ if (!is_valid_ether_addr(macaddr->sa_data))
|
|
return -EADDRNOTAVAIL;
|
|
return -EADDRNOTAVAIL;
|
|
|
|
|
|
/* synchronized against open : rtnl_lock() held by caller */
|
|
/* synchronized against open : rtnl_lock() held by caller */
|
|
@@ -2283,20 +2283,20 @@ set_speed:
|
|
lpa_pause = lpa & (LPA_PAUSE_CAP| LPA_PAUSE_ASYM);
|
|
lpa_pause = lpa & (LPA_PAUSE_CAP| LPA_PAUSE_ASYM);
|
|
|
|
|
|
switch (adv_pause) {
|
|
switch (adv_pause) {
|
|
- case (ADVERTISE_PAUSE_CAP):
|
|
|
|
|
|
+ case ADVERTISE_PAUSE_CAP:
|
|
if (lpa_pause & LPA_PAUSE_CAP) {
|
|
if (lpa_pause & LPA_PAUSE_CAP) {
|
|
pause_flags |= NV_PAUSEFRAME_RX_ENABLE;
|
|
pause_flags |= NV_PAUSEFRAME_RX_ENABLE;
|
|
if (np->pause_flags & NV_PAUSEFRAME_TX_REQ)
|
|
if (np->pause_flags & NV_PAUSEFRAME_TX_REQ)
|
|
pause_flags |= NV_PAUSEFRAME_TX_ENABLE;
|
|
pause_flags |= NV_PAUSEFRAME_TX_ENABLE;
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
- case (ADVERTISE_PAUSE_ASYM):
|
|
|
|
|
|
+ case ADVERTISE_PAUSE_ASYM:
|
|
if (lpa_pause == (LPA_PAUSE_CAP| LPA_PAUSE_ASYM))
|
|
if (lpa_pause == (LPA_PAUSE_CAP| LPA_PAUSE_ASYM))
|
|
{
|
|
{
|
|
pause_flags |= NV_PAUSEFRAME_TX_ENABLE;
|
|
pause_flags |= NV_PAUSEFRAME_TX_ENABLE;
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
- case (ADVERTISE_PAUSE_CAP| ADVERTISE_PAUSE_ASYM):
|
|
|
|
|
|
+ case ADVERTISE_PAUSE_CAP| ADVERTISE_PAUSE_ASYM:
|
|
if (lpa_pause & LPA_PAUSE_CAP)
|
|
if (lpa_pause & LPA_PAUSE_CAP)
|
|
{
|
|
{
|
|
pause_flags |= NV_PAUSEFRAME_RX_ENABLE;
|
|
pause_flags |= NV_PAUSEFRAME_RX_ENABLE;
|
|
@@ -3245,7 +3245,7 @@ static int nv_set_ringparam(struct net_device *dev, struct ethtool_ringparam* ri
|
|
if (!rxtx_ring || !rx_skbuff || !rx_dma || !tx_skbuff || !tx_dma || !tx_dma_len) {
|
|
if (!rxtx_ring || !rx_skbuff || !rx_dma || !tx_skbuff || !tx_dma || !tx_dma_len) {
|
|
/* fall back to old rings */
|
|
/* fall back to old rings */
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
- if(rxtx_ring)
|
|
|
|
|
|
+ if (rxtx_ring)
|
|
pci_free_consistent(np->pci_dev, sizeof(struct ring_desc) * (ring->rx_pending + ring->tx_pending),
|
|
pci_free_consistent(np->pci_dev, sizeof(struct ring_desc) * (ring->rx_pending + ring->tx_pending),
|
|
rxtx_ring, ring_addr);
|
|
rxtx_ring, ring_addr);
|
|
} else {
|
|
} else {
|
|
@@ -3481,7 +3481,7 @@ static int nv_get_stats_count(struct net_device *dev)
|
|
struct fe_priv *np = netdev_priv(dev);
|
|
struct fe_priv *np = netdev_priv(dev);
|
|
|
|
|
|
if (np->driver_data & DEV_HAS_STATISTICS)
|
|
if (np->driver_data & DEV_HAS_STATISTICS)
|
|
- return (sizeof(struct nv_ethtool_stats)/sizeof(u64));
|
|
|
|
|
|
+ return sizeof(struct nv_ethtool_stats)/sizeof(u64);
|
|
else
|
|
else
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
@@ -3619,7 +3619,7 @@ static int nv_loopback_test(struct net_device *dev)
|
|
struct sk_buff *tx_skb, *rx_skb;
|
|
struct sk_buff *tx_skb, *rx_skb;
|
|
dma_addr_t test_dma_addr;
|
|
dma_addr_t test_dma_addr;
|
|
u32 tx_flags_extra = (np->desc_ver == DESC_VER_1 ? NV_TX_LASTPACKET : NV_TX2_LASTPACKET);
|
|
u32 tx_flags_extra = (np->desc_ver == DESC_VER_1 ? NV_TX_LASTPACKET : NV_TX2_LASTPACKET);
|
|
- u32 Flags;
|
|
|
|
|
|
+ u32 flags;
|
|
int len, i, pkt_len;
|
|
int len, i, pkt_len;
|
|
u8 *pkt_data;
|
|
u8 *pkt_data;
|
|
u32 filter_flags = 0;
|
|
u32 filter_flags = 0;
|
|
@@ -3663,12 +3663,12 @@ static int nv_loopback_test(struct net_device *dev)
|
|
tx_skb->end-tx_skb->data, PCI_DMA_FROMDEVICE);
|
|
tx_skb->end-tx_skb->data, PCI_DMA_FROMDEVICE);
|
|
|
|
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
- np->tx_ring.orig[0].PacketBuffer = cpu_to_le32(test_dma_addr);
|
|
|
|
- np->tx_ring.orig[0].FlagLen = cpu_to_le32((pkt_len-1) | np->tx_flags | tx_flags_extra);
|
|
|
|
|
|
+ np->tx_ring.orig[0].buf = cpu_to_le32(test_dma_addr);
|
|
|
|
+ np->tx_ring.orig[0].flaglen = cpu_to_le32((pkt_len-1) | np->tx_flags | tx_flags_extra);
|
|
} else {
|
|
} else {
|
|
- np->tx_ring.ex[0].PacketBufferHigh = cpu_to_le64(test_dma_addr) >> 32;
|
|
|
|
- np->tx_ring.ex[0].PacketBufferLow = cpu_to_le64(test_dma_addr) & 0x0FFFFFFFF;
|
|
|
|
- np->tx_ring.ex[0].FlagLen = cpu_to_le32((pkt_len-1) | np->tx_flags | tx_flags_extra);
|
|
|
|
|
|
+ np->tx_ring.ex[0].bufhigh = cpu_to_le64(test_dma_addr) >> 32;
|
|
|
|
+ np->tx_ring.ex[0].buflow = cpu_to_le64(test_dma_addr) & 0x0FFFFFFFF;
|
|
|
|
+ np->tx_ring.ex[0].flaglen = cpu_to_le32((pkt_len-1) | np->tx_flags | tx_flags_extra);
|
|
}
|
|
}
|
|
writel(NVREG_TXRXCTL_KICK|np->txrxctl_bits, get_hwbase(dev) + NvRegTxRxControl);
|
|
writel(NVREG_TXRXCTL_KICK|np->txrxctl_bits, get_hwbase(dev) + NvRegTxRxControl);
|
|
pci_push(get_hwbase(dev));
|
|
pci_push(get_hwbase(dev));
|
|
@@ -3677,21 +3677,21 @@ static int nv_loopback_test(struct net_device *dev)
|
|
|
|
|
|
/* check for rx of the packet */
|
|
/* check for rx of the packet */
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) {
|
|
- Flags = le32_to_cpu(np->rx_ring.orig[0].FlagLen);
|
|
|
|
|
|
+ flags = le32_to_cpu(np->rx_ring.orig[0].flaglen);
|
|
len = nv_descr_getlength(&np->rx_ring.orig[0], np->desc_ver);
|
|
len = nv_descr_getlength(&np->rx_ring.orig[0], np->desc_ver);
|
|
|
|
|
|
} else {
|
|
} else {
|
|
- Flags = le32_to_cpu(np->rx_ring.ex[0].FlagLen);
|
|
|
|
|
|
+ flags = le32_to_cpu(np->rx_ring.ex[0].flaglen);
|
|
len = nv_descr_getlength_ex(&np->rx_ring.ex[0], np->desc_ver);
|
|
len = nv_descr_getlength_ex(&np->rx_ring.ex[0], np->desc_ver);
|
|
}
|
|
}
|
|
|
|
|
|
- if (Flags & NV_RX_AVAIL) {
|
|
|
|
|
|
+ if (flags & NV_RX_AVAIL) {
|
|
ret = 0;
|
|
ret = 0;
|
|
} else if (np->desc_ver == DESC_VER_1) {
|
|
} else if (np->desc_ver == DESC_VER_1) {
|
|
- if (Flags & NV_RX_ERROR)
|
|
|
|
|
|
+ if (flags & NV_RX_ERROR)
|
|
ret = 0;
|
|
ret = 0;
|
|
} else {
|
|
} else {
|
|
- if (Flags & NV_RX2_ERROR) {
|
|
|
|
|
|
+ if (flags & NV_RX2_ERROR) {
|
|
ret = 0;
|
|
ret = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|