Skip to content

Commit

Permalink
atl1: fix excessively indented code
Browse files Browse the repository at this point in the history
Move excessively indented code to separate functions.  Also move ring
pointer initialization to its own function.

Signed-off-by: Jay Cliburn <jacliburn@bellsouth.net>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Jay Cliburn authored and Jeff Garzik committed Jul 16, 2007
1 parent 53ffb42 commit 2ca13da
Showing 1 changed file with 50 additions and 36 deletions.
86 changes: 50 additions & 36 deletions drivers/net/atl1/atl1_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -220,26 +220,22 @@ s32 atl1_setup_ring_resources(struct atl1_adapter *adapter)
tpd_ring->dma += offset;
tpd_ring->desc = (u8 *) ring_header->desc + offset;
tpd_ring->size = sizeof(struct tx_packet_desc) * tpd_ring->count;
atomic_set(&tpd_ring->next_to_use, 0);
atomic_set(&tpd_ring->next_to_clean, 0);

/* init RFD ring */
rfd_ring->dma = tpd_ring->dma + tpd_ring->size;
offset = (rfd_ring->dma & 0x7) ? (8 - (rfd_ring->dma & 0x7)) : 0;
rfd_ring->dma += offset;
rfd_ring->desc = (u8 *) tpd_ring->desc + (tpd_ring->size + offset);
rfd_ring->size = sizeof(struct rx_free_desc) * rfd_ring->count;
rfd_ring->next_to_clean = 0;
atomic_set(&rfd_ring->next_to_use, 0);


/* init RRD ring */
rrd_ring->dma = rfd_ring->dma + rfd_ring->size;
offset = (rrd_ring->dma & 0x7) ? (8 - (rrd_ring->dma & 0x7)) : 0;
rrd_ring->dma += offset;
rrd_ring->desc = (u8 *) rfd_ring->desc + (rfd_ring->size + offset);
rrd_ring->size = sizeof(struct rx_return_desc) * rrd_ring->count;
rrd_ring->next_to_use = 0;
atomic_set(&rrd_ring->next_to_clean, 0);


/* init CMB */
adapter->cmb.dma = rrd_ring->dma + rrd_ring->size;
Expand All @@ -263,6 +259,22 @@ s32 atl1_setup_ring_resources(struct atl1_adapter *adapter)
return -ENOMEM;
}

void atl1_init_ring_ptrs(struct atl1_adapter *adapter)
{
struct atl1_tpd_ring *tpd_ring = &adapter->tpd_ring;
struct atl1_rfd_ring *rfd_ring = &adapter->rfd_ring;
struct atl1_rrd_ring *rrd_ring = &adapter->rrd_ring;

atomic_set(&tpd_ring->next_to_use, 0);
atomic_set(&tpd_ring->next_to_clean, 0);

rfd_ring->next_to_clean = 0;
atomic_set(&rfd_ring->next_to_use, 0);

rrd_ring->next_to_use = 0;
atomic_set(&rrd_ring->next_to_clean, 0);
}

/*
* atl1_irq_enable - Enable default interrupt generation settings
* @adapter: board private structure
Expand Down Expand Up @@ -472,6 +484,31 @@ static u16 atl1_alloc_rx_buffers(struct atl1_adapter *adapter)
return num_alloc;
}

static void atl1_clean_alloc_flag(struct atl1_adapter *adapter,
struct rx_return_desc *rrd, u16 offset)
{
struct atl1_rfd_ring *rfd_ring = &adapter->rfd_ring;

while (rfd_ring->next_to_clean != (rrd->buf_indx + offset)) {
rfd_ring->buffer_info[rfd_ring->next_to_clean].alloced = 0;
if (++rfd_ring->next_to_clean == rfd_ring->count) {
rfd_ring->next_to_clean = 0;
}
}
}

static void atl1_update_rfd_index(struct atl1_adapter *adapter,
struct rx_return_desc *rrd)
{
u16 num_buf;

num_buf = (rrd->xsz.xsum_sz.pkt_size + adapter->rx_buffer_len - 1) /
adapter->rx_buffer_len;
if (rrd->num_buf == num_buf)
/* clean alloc flag for bad rrd */
atl1_clean_alloc_flag(adapter, rrd, num_buf);
}

static void atl1_intr_rx(struct atl1_adapter *adapter)
{
int i, count;
Expand Down Expand Up @@ -509,26 +546,8 @@ static void atl1_intr_rx(struct atl1_adapter *adapter)
dev_printk(KERN_DEBUG, &adapter->pdev->dev,
"bad RRD\n");
/* see if update RFD index */
if (rrd->num_buf > 1) {
u16 num_buf;
num_buf =
(rrd->xsz.xsum_sz.pkt_size +
adapter->rx_buffer_len -
1) / adapter->rx_buffer_len;
if (rrd->num_buf == num_buf) {
/* clean alloc flag for bad rrd */
while (rfd_ring->next_to_clean !=
(rrd->buf_indx + num_buf)) {
rfd_ring->buffer_info[rfd_ring->
next_to_clean].alloced = 0;
if (++rfd_ring->next_to_clean ==
rfd_ring->count) {
rfd_ring->
next_to_clean = 0;
}
}
}
}
if (rrd->num_buf > 1)
atl1_update_rfd_index(adapter, rrd);

/* update rrd */
rrd->xsz.valid = 0;
Expand All @@ -542,12 +561,7 @@ static void atl1_intr_rx(struct atl1_adapter *adapter)
}
rrd_ok:
/* clean alloc flag for bad rrd */
while (rfd_ring->next_to_clean != rrd->buf_indx) {
rfd_ring->buffer_info[rfd_ring->next_to_clean].alloced =
0;
if (++rfd_ring->next_to_clean == rfd_ring->count)
rfd_ring->next_to_clean = 0;
}
atl1_clean_alloc_flag(adapter, rrd, 0);

buffer_info = &rfd_ring->buffer_info[rrd->buf_indx];
if (++rfd_ring->next_to_clean == rfd_ring->count)
Expand Down Expand Up @@ -1058,7 +1072,8 @@ static u32 atl1_configure(struct atl1_adapter *adapter)
value <<= 16;
value += adapter->rfd_ring.count;
iowrite32(value, hw->hw_addr + REG_DESC_RFD_RRD_RING_SIZE);
iowrite32(adapter->tpd_ring.count, hw->hw_addr + REG_DESC_TPD_RING_SIZE);
iowrite32(adapter->tpd_ring.count, hw->hw_addr +
REG_DESC_TPD_RING_SIZE);

/* Load Ptr */
iowrite32(1, hw->hw_addr + REG_LOAD_PTR);
Expand Down Expand Up @@ -1258,9 +1273,7 @@ static int atl1_tso(struct atl1_adapter *adapter, struct sk_buff *skb,
iph->tot_len = 0;
iph->check = 0;
tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr,
iph->daddr, 0,
IPPROTO_TCP,
0);
iph->daddr, 0, IPPROTO_TCP, 0);
ipofst = skb_network_offset(skb);
if (ipofst != ENET_HEADER_SIZE) /* 802.3 frame */
tso->tsopl |= 1 << TSO_PARAM_ETHTYPE_SHIFT;
Expand Down Expand Up @@ -1721,6 +1734,7 @@ s32 atl1_up(struct atl1_adapter *adapter)

/* hardware has been reset, we need to reload some things */
atl1_set_multi(netdev);
atl1_init_ring_ptrs(adapter);
atl1_restore_vlan(adapter);
err = atl1_alloc_rx_buffers(adapter);
if (unlikely(!err)) /* no RX BUFFER allocated */
Expand Down

0 comments on commit 2ca13da

Please sign in to comment.