Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fbb7a6e7 authored by Joachim Eastwood's avatar Joachim Eastwood Committed by David S. Miller
Browse files

net/at91_ether: use macb dma description struct

parent e0da1f14
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -157,7 +157,7 @@ static void at91ether_start(struct net_device *dev)


	for (i = 0; i < MAX_RX_DESCR; i++) {
	for (i = 0; i < MAX_RX_DESCR; i++) {
		dlist->descriptors[i].addr = (unsigned int) &dlist_phys->recv_buf[i][0];
		dlist->descriptors[i].addr = (unsigned int) &dlist_phys->recv_buf[i][0];
		dlist->descriptors[i].size = 0;
		dlist->descriptors[i].ctrl = 0;
	}
	}


	/* Set the Wrap bit on the last descriptor */
	/* Set the Wrap bit on the last descriptor */
@@ -311,7 +311,7 @@ static void at91ether_rx(struct net_device *dev)
	dlist = lp->dlist;
	dlist = lp->dlist;
	while (dlist->descriptors[lp->rxBuffIndex].addr & MACB_BIT(RX_USED)) {
	while (dlist->descriptors[lp->rxBuffIndex].addr & MACB_BIT(RX_USED)) {
		p_recv = dlist->recv_buf[lp->rxBuffIndex];
		p_recv = dlist->recv_buf[lp->rxBuffIndex];
		pktlen = dlist->descriptors[lp->rxBuffIndex].size & 0x7ff;	/* Length of frame including FCS */
		pktlen = dlist->descriptors[lp->rxBuffIndex].ctrl & 0x7ff;	/* Length of frame including FCS */
		skb = netdev_alloc_skb(dev, pktlen + 2);
		skb = netdev_alloc_skb(dev, pktlen + 2);
		if (skb != NULL) {
		if (skb != NULL) {
			skb_reserve(skb, 2);
			skb_reserve(skb, 2);
@@ -326,7 +326,7 @@ static void at91ether_rx(struct net_device *dev)
			printk(KERN_NOTICE "%s: Memory squeeze, dropping packet.\n", dev->name);
			printk(KERN_NOTICE "%s: Memory squeeze, dropping packet.\n", dev->name);
		}
		}


		if (dlist->descriptors[lp->rxBuffIndex].size & MACB_BIT(RX_MHASH_MATCH))
		if (dlist->descriptors[lp->rxBuffIndex].ctrl & MACB_BIT(RX_MHASH_MATCH))
			dev->stats.multicast++;
			dev->stats.multicast++;


		dlist->descriptors[lp->rxBuffIndex].addr &= ~MACB_BIT(RX_USED);	/* reset ownership bit */
		dlist->descriptors[lp->rxBuffIndex].addr &= ~MACB_BIT(RX_USED);	/* reset ownership bit */
+1 −6
Original line number Original line Diff line number Diff line
@@ -504,16 +504,11 @@ struct gem_stats {
	u32	rx_udp_checksum_errors;
	u32	rx_udp_checksum_errors;
};
};


struct rbf_t {
	unsigned int addr;
	unsigned long size;
};

#define MAX_RBUFF_SZ	0x600		/* 1518 rounded up */
#define MAX_RBUFF_SZ	0x600		/* 1518 rounded up */
#define MAX_RX_DESCR	9		/* max number of receive buffers */
#define MAX_RX_DESCR	9		/* max number of receive buffers */


struct recv_desc_bufs {
struct recv_desc_bufs {
	struct rbf_t descriptors[MAX_RX_DESCR];		/* must be on sizeof (rbf_t) boundary */
	struct dma_desc descriptors[MAX_RX_DESCR];	/* must be on sizeof (dma_desc) boundary */
	char recv_buf[MAX_RX_DESCR][MAX_RBUFF_SZ];	/* must be on long boundary */
	char recv_buf[MAX_RX_DESCR][MAX_RBUFF_SZ];	/* must be on long boundary */
};
};