- if (peer->peer_active_rxs == *kptllnd_tunables.kptl_peercredits) {
- spin_unlock_irqrestore(&peer->peer_lock, flags);
-
- CERROR("Message overflow from %s: handling %d already\n",
- libcfs_id2str(peer->peer_id),
- *kptllnd_tunables.kptl_peercredits);
- rc = -EPROTO;
- goto failed;
- }
-
- if (msg->ptlm_credits != 0 &&
- peer->peer_credits + msg->ptlm_credits >
- *kptllnd_tunables.kptl_peercredits) {
- credits = peer->peer_credits;
- spin_unlock_irqrestore(&peer->peer_lock, flags);
-
- CERROR("Credit overflow from %s: %d + %d > %d\n",
- libcfs_id2str(peer->peer_id),
- credits, msg->ptlm_credits,
- *kptllnd_tunables.kptl_peercredits);
+ /* Check peer only sends when I've sent her credits */
+ if (peer->peer_sent_credits == 0) {
+ int c = peer->peer_credits;
+ int oc = peer->peer_outstanding_credits;
+ int sc = peer->peer_sent_credits;
+
+ cfs_spin_unlock_irqrestore(&peer->peer_lock, flags);
+
+ CERROR("%s: buffer overrun [%d/%d+%d]\n",
+ libcfs_id2str(peer->peer_id), c, sc, oc);