patch-2.4.22 linux-2.4.22/drivers/atm/nicstar.c
Next file: linux-2.4.22/drivers/atm/nicstar.h
Previous file: linux-2.4.22/drivers/atm/lanai.c
Back to the patch index
Back to the overall index
- Lines: 148
- Date:
2003-08-25 04:44:41.000000000 -0700
- Orig file:
linux-2.4.21/drivers/atm/nicstar.c
- Orig date:
2003-06-13 07:51:32.000000000 -0700
diff -urN linux-2.4.21/drivers/atm/nicstar.c linux-2.4.22/drivers/atm/nicstar.c
@@ -941,9 +941,14 @@
return error;
}
- if (ns_parse_mac(mac[i], card->atmdev->esi))
+ if (ns_parse_mac(mac[i], card->atmdev->esi)) {
nicstar_read_eprom(card->membase, NICSTAR_EPROM_MAC_ADDR_OFFSET,
card->atmdev->esi, 6);
+ if (memcmp(card->atmdev->esi, "\x00\x00\x00\x00\x00\x00", 6) == 0) {
+ nicstar_read_eprom(card->membase, NICSTAR_EPROM_MAC_ADDR_OFFSET_ALT,
+ card->atmdev->esi, 6);
+ }
+ }
printk("nicstar%d: MAC address %02X:%02X:%02X:%02X:%02X:%02X\n", i,
card->atmdev->esi[0], card->atmdev->esi[1], card->atmdev->esi[2],
@@ -1659,9 +1664,9 @@
card->index);
iovb = vc->rx_iov;
recycle_iovec_rx_bufs(card, (struct iovec *) iovb->data,
- ATM_SKB(iovb)->iovcnt);
- ATM_SKB(iovb)->iovcnt = 0;
- ATM_SKB(iovb)->vcc = NULL;
+ NS_SKB(iovb)->iovcnt);
+ NS_SKB(iovb)->iovcnt = 0;
+ NS_SKB(iovb)->vcc = NULL;
ns_grab_int_lock(card, flags);
recycle_iov_buf(card, iovb);
spin_unlock_irqrestore(&card->int_lock, flags);
@@ -1859,7 +1864,7 @@
return -EINVAL;
}
- if (ATM_SKB(skb)->iovcnt != 0)
+ if (skb_shinfo(skb)->nr_frags != 0)
{
printk("nicstar%d: No scatter-gather yet.\n", card->index);
atomic_inc(&vcc->stats->tx_err);
@@ -2284,30 +2289,30 @@
}
}
vc->rx_iov = iovb;
- ATM_SKB(iovb)->iovcnt = 0;
+ NS_SKB(iovb)->iovcnt = 0;
iovb->len = 0;
iovb->tail = iovb->data = iovb->head;
- ATM_SKB(iovb)->vcc = vcc;
+ NS_SKB(iovb)->vcc = vcc;
/* IMPORTANT: a pointer to the sk_buff containing the small or large
buffer is stored as iovec base, NOT a pointer to the
small or large buffer itself. */
}
- else if (ATM_SKB(iovb)->iovcnt >= NS_MAX_IOVECS)
+ else if (NS_SKB(iovb)->iovcnt >= NS_MAX_IOVECS)
{
printk("nicstar%d: received too big AAL5 SDU.\n", card->index);
atomic_inc(&vcc->stats->rx_err);
recycle_iovec_rx_bufs(card, (struct iovec *) iovb->data, NS_MAX_IOVECS);
- ATM_SKB(iovb)->iovcnt = 0;
+ NS_SKB(iovb)->iovcnt = 0;
iovb->len = 0;
iovb->tail = iovb->data = iovb->head;
- ATM_SKB(iovb)->vcc = vcc;
+ NS_SKB(iovb)->vcc = vcc;
}
- iov = &((struct iovec *) iovb->data)[ATM_SKB(iovb)->iovcnt++];
+ iov = &((struct iovec *) iovb->data)[NS_SKB(iovb)->iovcnt++];
iov->iov_base = (void *) skb;
iov->iov_len = ns_rsqe_cellcount(rsqe) * 48;
iovb->len += iov->iov_len;
- if (ATM_SKB(iovb)->iovcnt == 1)
+ if (NS_SKB(iovb)->iovcnt == 1)
{
if (skb->list != &card->sbpool.queue)
{
@@ -2321,7 +2326,7 @@
return;
}
}
- else /* ATM_SKB(iovb)->iovcnt >= 2 */
+ else /* NS_SKB(iovb)->iovcnt >= 2 */
{
if (skb->list != &card->lbpool.queue)
{
@@ -2330,7 +2335,7 @@
which_list(card, skb);
atomic_inc(&vcc->stats->rx_err);
recycle_iovec_rx_bufs(card, (struct iovec *) iovb->data,
- ATM_SKB(iovb)->iovcnt);
+ NS_SKB(iovb)->iovcnt);
vc->rx_iov = NULL;
recycle_iov_buf(card, iovb);
return;
@@ -2354,7 +2359,7 @@
printk(".\n");
atomic_inc(&vcc->stats->rx_err);
recycle_iovec_rx_bufs(card, (struct iovec *) iovb->data,
- ATM_SKB(iovb)->iovcnt);
+ NS_SKB(iovb)->iovcnt);
vc->rx_iov = NULL;
recycle_iov_buf(card, iovb);
return;
@@ -2362,7 +2367,7 @@
/* By this point we (hopefully) have a complete SDU without errors. */
- if (ATM_SKB(iovb)->iovcnt == 1) /* Just a small buffer */
+ if (NS_SKB(iovb)->iovcnt == 1) /* Just a small buffer */
{
/* skb points to a small buffer */
if (!atm_charge(vcc, skb->truesize))
@@ -2384,7 +2389,7 @@
atomic_inc(&vcc->stats->rx);
}
}
- else if (ATM_SKB(iovb)->iovcnt == 2) /* One small plus one large buffer */
+ else if (NS_SKB(iovb)->iovcnt == 2) /* One small plus one large buffer */
{
struct sk_buff *sb;
@@ -2461,7 +2466,7 @@
printk("nicstar%d: Out of huge buffers.\n", card->index);
atomic_inc(&vcc->stats->rx_drop);
recycle_iovec_rx_bufs(card, (struct iovec *) iovb->data,
- ATM_SKB(iovb)->iovcnt);
+ NS_SKB(iovb)->iovcnt);
vc->rx_iov = NULL;
recycle_iov_buf(card, iovb);
return;
@@ -2499,7 +2504,7 @@
if (!atm_charge(vcc, hb->truesize))
{
- recycle_iovec_rx_bufs(card, iov, ATM_SKB(iovb)->iovcnt);
+ recycle_iovec_rx_bufs(card, iov, NS_SKB(iovb)->iovcnt);
if (card->hbpool.count < card->hbnr.max)
{
skb_queue_tail(&card->hbpool.queue, hb);
@@ -2522,7 +2527,7 @@
0, 0);
/* Copy all large buffers to the huge buffer and free them */
- for (j = 1; j < ATM_SKB(iovb)->iovcnt; j++)
+ for (j = 1; j < NS_SKB(iovb)->iovcnt; j++)
{
lb = (struct sk_buff *) iov->iov_base;
tocopy = MIN(remaining, iov->iov_len);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)