The CSMA/CA variants of Ethernet handle excessive failed transmissions due to repeated collisions by dropping the current frame and relying on upper layers for retransmissions:
After 16 attempts station B will reset its collision counter allowing it to compete more aggressively again. But it also discards the frame it was attempting to transmit, requiring that it be queued for transmission again by software.
I realize that on modern (i.e. switched) Ethernet networks, CSMA/CA isn't used anymore, and the channel capture effect mentioned in the source doesn't occur, but I'm trying to understand the network layer separation and interaction as implemented by the Linux kernel in that situation.
On Linux, at which layers are those retransmissions handled? Will it be done at the IP layer, or does the dropped Ethernet frame also result in a dropped network layer packet and a dropped TCP segment or UDP datagram?
The difference between the two approaches would seem to be that in the second case, the excessive retry would be interpreted as congestion and lead to a decrease of the TCP congestion window size. Does that happen, or is the dropped frame transparent to TCP?