|
@@ -1726,7 +1726,7 @@ static bool cxgbit_credit_err(const struct cxgbit_sock *csk)
|
|
|
}
|
|
|
|
|
|
while (skb) {
|
|
|
- credit += skb->csum;
|
|
|
+ credit += (__force u32)skb->csum;
|
|
|
skb = cxgbit_skcb_tx_wr_next(skb);
|
|
|
}
|
|
|
|
|
@@ -1753,6 +1753,7 @@ static void cxgbit_fw4_ack(struct cxgbit_sock *csk, struct sk_buff *skb)
|
|
|
|
|
|
while (credits) {
|
|
|
struct sk_buff *p = cxgbit_sock_peek_wr(csk);
|
|
|
+ const u32 csum = (__force u32)p->csum;
|
|
|
|
|
|
if (unlikely(!p)) {
|
|
|
pr_err("csk 0x%p,%u, cr %u,%u+%u, empty.\n",
|
|
@@ -1761,17 +1762,17 @@ static void cxgbit_fw4_ack(struct cxgbit_sock *csk, struct sk_buff *skb)
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- if (unlikely(credits < p->csum)) {
|
|
|
+ if (unlikely(credits < csum)) {
|
|
|
pr_warn("csk 0x%p,%u, cr %u,%u+%u, < %u.\n",
|
|
|
csk, csk->tid,
|
|
|
credits, csk->wr_cred, csk->wr_una_cred,
|
|
|
- p->csum);
|
|
|
- p->csum -= credits;
|
|
|
+ csum);
|
|
|
+ p->csum = (__force __wsum)(csum - credits);
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
cxgbit_sock_dequeue_wr(csk);
|
|
|
- credits -= p->csum;
|
|
|
+ credits -= csum;
|
|
|
kfree_skb(p);
|
|
|
}
|
|
|
|