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

Commit e454e7e2 authored by Brice Goglin's avatar Brice Goglin Committed by Jeff Garzik
Browse files

myri10ge: remove wcfifo



Remove the wcfifo since it never gave any performance improvement.

Signed-off-by: default avatarBrice Goglin <brice@myri.com>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent b57f9cae
Loading
Loading
Loading
Loading
+3 −51
Original line number Original line Diff line number Diff line
@@ -125,7 +125,6 @@ struct myri10ge_cmd {


struct myri10ge_rx_buf {
struct myri10ge_rx_buf {
	struct mcp_kreq_ether_recv __iomem *lanai;	/* lanai ptr for recv ring */
	struct mcp_kreq_ether_recv __iomem *lanai;	/* lanai ptr for recv ring */
	u8 __iomem *wc_fifo;	/* w/c rx dma addr fifo address */
	struct mcp_kreq_ether_recv *shadow;	/* host shadow of recv ring */
	struct mcp_kreq_ether_recv *shadow;	/* host shadow of recv ring */
	struct myri10ge_rx_buffer_state *info;
	struct myri10ge_rx_buffer_state *info;
	struct page *page;
	struct page *page;
@@ -140,7 +139,6 @@ struct myri10ge_rx_buf {


struct myri10ge_tx_buf {
struct myri10ge_tx_buf {
	struct mcp_kreq_ether_send __iomem *lanai;	/* lanai ptr for sendq */
	struct mcp_kreq_ether_send __iomem *lanai;	/* lanai ptr for sendq */
	u8 __iomem *wc_fifo;	/* w/c send fifo address */
	struct mcp_kreq_ether_send *req_list;	/* host shadow of sendq */
	struct mcp_kreq_ether_send *req_list;	/* host shadow of sendq */
	char *req_bytes;
	char *req_bytes;
	struct myri10ge_tx_buffer_state *info;
	struct myri10ge_tx_buffer_state *info;
@@ -332,10 +330,6 @@ MODULE_PARM_DESC(myri10ge_fill_thresh, "Number of empty rx slots allowed");


static int myri10ge_reset_recover = 1;
static int myri10ge_reset_recover = 1;


static int myri10ge_wcfifo = 0;
module_param(myri10ge_wcfifo, int, S_IRUGO);
MODULE_PARM_DESC(myri10ge_wcfifo, "Enable WC Fifo when WC is enabled");

static int myri10ge_max_slices = 1;
static int myri10ge_max_slices = 1;
module_param(myri10ge_max_slices, int, S_IRUGO);
module_param(myri10ge_max_slices, int, S_IRUGO);
MODULE_PARM_DESC(myri10ge_max_slices, "Max tx/rx queues");
MODULE_PARM_DESC(myri10ge_max_slices, "Max tx/rx queues");
@@ -1218,14 +1212,8 @@ myri10ge_alloc_rx_pages(struct myri10ge_priv *mgp, struct myri10ge_rx_buf *rx,


		/* copy 8 descriptors to the firmware at a time */
		/* copy 8 descriptors to the firmware at a time */
		if ((idx & 7) == 7) {
		if ((idx & 7) == 7) {
			if (rx->wc_fifo == NULL)
			myri10ge_submit_8rx(&rx->lanai[idx - 7],
			myri10ge_submit_8rx(&rx->lanai[idx - 7],
					    &rx->shadow[idx - 7]);
					    &rx->shadow[idx - 7]);
			else {
				mb();
				myri10ge_pio_copy(rx->wc_fifo,
						  &rx->shadow[idx - 7], 64);
			}
		}
		}
	}
	}
}
}
@@ -2229,18 +2217,6 @@ static int myri10ge_get_txrx(struct myri10ge_priv *mgp, int slice)
	ss->rx_big.lanai = (struct mcp_kreq_ether_recv __iomem *)
	ss->rx_big.lanai = (struct mcp_kreq_ether_recv __iomem *)
	    (mgp->sram + cmd.data0);
	    (mgp->sram + cmd.data0);


	if (myri10ge_wcfifo && mgp->wc_enabled) {
		ss->tx.wc_fifo = (u8 __iomem *)
		    mgp->sram + MXGEFW_ETH_SEND_4 + 64 * slice;
		ss->rx_small.wc_fifo = (u8 __iomem *)
		    mgp->sram + MXGEFW_ETH_RECV_SMALL + 64 * slice;
		ss->rx_big.wc_fifo = (u8 __iomem *)
		    mgp->sram + MXGEFW_ETH_RECV_BIG + 64 * slice;
	} else {
		ss->tx.wc_fifo = NULL;
		ss->rx_small.wc_fifo = NULL;
		ss->rx_big.wc_fifo = NULL;
	}
	return status;
	return status;


}
}
@@ -2573,27 +2549,6 @@ myri10ge_submit_req(struct myri10ge_tx_buf *tx, struct mcp_kreq_ether_send *src,
	mb();
	mb();
}
}


static inline void
myri10ge_submit_req_wc(struct myri10ge_tx_buf *tx,
		       struct mcp_kreq_ether_send *src, int cnt)
{
	tx->req += cnt;
	mb();
	while (cnt >= 4) {
		myri10ge_pio_copy(tx->wc_fifo, src, 64);
		mb();
		src += 4;
		cnt -= 4;
	}
	if (cnt > 0) {
		/* pad it to 64 bytes.  The src is 64 bytes bigger than it
		 * needs to be so that we don't overrun it */
		myri10ge_pio_copy(tx->wc_fifo + MXGEFW_ETH_SEND_OFFSET(cnt),
				  src, 64);
		mb();
	}
}

/*
/*
 * Transmit a packet.  We need to split the packet so that a single
 * Transmit a packet.  We need to split the packet so that a single
 * segment does not cross myri10ge->tx_boundary, so this makes segment
 * segment does not cross myri10ge->tx_boundary, so this makes segment
@@ -2830,10 +2785,7 @@ static int myri10ge_xmit(struct sk_buff *skb, struct net_device *dev)
					 MXGEFW_FLAGS_FIRST)));
					 MXGEFW_FLAGS_FIRST)));
	idx = ((count - 1) + tx->req) & tx->mask;
	idx = ((count - 1) + tx->req) & tx->mask;
	tx->info[idx].last = 1;
	tx->info[idx].last = 1;
	if (tx->wc_fifo == NULL)
	myri10ge_submit_req(tx, tx->req_list, count);
	myri10ge_submit_req(tx, tx->req_list, count);
	else
		myri10ge_submit_req_wc(tx, tx->req_list, count);
	tx->pkt_start++;
	tx->pkt_start++;
	if ((avail - count) < MXGEFW_MAX_SEND_DESC) {
	if ((avail - count) < MXGEFW_MAX_SEND_DESC) {
		tx->stop_queue++;
		tx->stop_queue++;