Commit fb5ac0de authored by Dan Carpenter's avatar Dan Carpenter Committed by David S. Miller

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: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9fef8478
...@@ -850,13 +850,14 @@ static void write_sgl(const struct sk_buff *skb, struct sge_txq *q, ...@@ -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) ...@@ -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);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment