git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
amd-xgbe: Reported fifo size from hardware is not correct
[pandora-kernel.git]
/
drivers
/
net
/
ethernet
/
amd
/
xgbe
/
xgbe-dev.c
diff --git
a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c
index
edaca44
..
acde00c
100644
(file)
--- a/
drivers/net/ethernet/amd/xgbe/xgbe-dev.c
+++ b/
drivers/net/ethernet/amd/xgbe/xgbe-dev.c
@@
-1633,6
+1633,9
@@
static int xgbe_flush_tx_queues(struct xgbe_prv_data *pdata)
{
unsigned int i, count;
{
unsigned int i, count;
+ if (XGMAC_GET_BITS(pdata->hw_feat.version, MAC_VR, SNPSVER) < 0x21)
+ return 0;
+
for (i = 0; i < pdata->tx_q_count; i++)
XGMAC_MTL_IOWRITE_BITS(pdata, i, MTL_Q_TQOMR, FTQ, 1);
for (i = 0; i < pdata->tx_q_count; i++)
XGMAC_MTL_IOWRITE_BITS(pdata, i, MTL_Q_TQOMR, FTQ, 1);
@@
-1703,8
+1706,8
@@
static void xgbe_config_mtl_mode(struct xgbe_prv_data *pdata)
XGMAC_IOWRITE_BITS(pdata, MTL_OMR, RAA, MTL_RAA_SP);
}
XGMAC_IOWRITE_BITS(pdata, MTL_OMR, RAA, MTL_RAA_SP);
}
-static unsigned int xgbe_calculate_per_queue_fifo(unsigned
long
fifo_size,
- unsigned
char
queue_count)
+static unsigned int xgbe_calculate_per_queue_fifo(unsigned
int
fifo_size,
+ unsigned
int
queue_count)
{
unsigned int q_fifo_size = 0;
enum xgbe_mtl_fifo_size p_fifo = XGMAC_MTL_FIFO_SIZE_256;
{
unsigned int q_fifo_size = 0;
enum xgbe_mtl_fifo_size p_fifo = XGMAC_MTL_FIFO_SIZE_256;
@@
-1748,6
+1751,10
@@
static unsigned int xgbe_calculate_per_queue_fifo(unsigned long fifo_size,
q_fifo_size = XGBE_FIFO_SIZE_KB(256);
break;
}
q_fifo_size = XGBE_FIFO_SIZE_KB(256);
break;
}
+
+ /* The configured value is not the actual amount of fifo RAM */
+ q_fifo_size = min_t(unsigned int, XGBE_FIFO_MAX, q_fifo_size);
+
q_fifo_size = q_fifo_size / queue_count;
/* Set the queue fifo size programmable value */
q_fifo_size = q_fifo_size / queue_count;
/* Set the queue fifo size programmable value */