cxgb4: clean up a type issue
The tx_desc struct holds 8 __be64 values. The original code in ring_tx_db() took a tx_desc pointer then casted it to an int pointer and then casted it to a u64 pointer. It was confusing and triggered some static checker warnings. I have changed the cxgb_pio_copy() function to only take tx_desc pointers. This isn't really a loss of flexibility because anything else was buggy to begin with. I also removed the casting on the destination pointer since that was unnecessary and a bit messy. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
9fef847803
commit
fb5ac0de10
@@ -850,13 +850,14 @@ static void write_sgl(const struct sk_buff *skb, struct sge_txq *q,
|
|||||||
*end = 0;
|
*end = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This function copies 64 byte coalesced work request to
|
/* This function copies a tx_desc struct to memory mapped BAR2 space(user space
|
||||||
* memory mapped BAR2 space(user space writes).
|
* writes). For coalesced WR SGE, fetches data from the FIFO instead of from
|
||||||
* For coalesced WR SGE, fetches data from the FIFO instead of from Host.
|
* Host.
|
||||||
*/
|
*/
|
||||||
static void cxgb_pio_copy(u64 __iomem *dst, u64 *src)
|
static void cxgb_pio_copy(u64 __iomem *dst, struct tx_desc *desc)
|
||||||
{
|
{
|
||||||
int count = 8;
|
int count = sizeof(*desc) / sizeof(u64);
|
||||||
|
u64 *src = (u64 *)desc;
|
||||||
|
|
||||||
while (count) {
|
while (count) {
|
||||||
writeq(*src, dst);
|
writeq(*src, dst);
|
||||||
@@ -914,12 +915,9 @@ static inline void ring_tx_db(struct adapter *adap, struct sge_txq *q, int n)
|
|||||||
int index = (q->pidx
|
int index = (q->pidx
|
||||||
? (q->pidx - 1)
|
? (q->pidx - 1)
|
||||||
: (q->size - 1));
|
: (q->size - 1));
|
||||||
unsigned int *wr = (unsigned int *)&q->desc[index];
|
|
||||||
|
|
||||||
cxgb_pio_copy((u64 __iomem *)
|
cxgb_pio_copy(adap->bar2 + q->udb + SGE_UDB_WCDOORBELL,
|
||||||
(adap->bar2 + q->udb +
|
q->desc + index);
|
||||||
SGE_UDB_WCDOORBELL),
|
|
||||||
(u64 *)wr);
|
|
||||||
} else {
|
} else {
|
||||||
writel(val, adap->bar2 + q->udb + SGE_UDB_KDOORBELL);
|
writel(val, adap->bar2 + q->udb + SGE_UDB_KDOORBELL);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user