I had a shot at it, lets hope it's correct.

Assuming that M in 4Mbps means 1000000. However, in computer terminology M could be 1024x1024 = 1048576. The question did not specify which so I'll use 1000000.

So what I understand from stop-and-wait is that the sender would send a data PDU and wait for an ACK message from the receiver. Once the ACK is received it will send the next PDU and wait again, and so on.

Lets define some variables:

t: The total time to transmit the data PDU (without waiting for ACK).

P: The size of the data PDU (That we need to find a range for)

We know that the Theoretical Speed = 4000000 bps = P / t bps

The total time to send a PDU and wait until we can send the next PDU = t + 20us + ACK time + 20us

The first 20us is obviously the propagation delay for sending the data PDU. The ACK time is not mentioned in the question :?, so the only way is to ignore it and assume it's equal to zero. the second 20us is the propagation delay of the ACK. The equation reduces to:

t + 40us

We know that efficiency = Actual Speed / Theoretical Speed

Actual Speed = P / (t + 40us) = 4000000t / (t + 40/1000000)

Theoretical Speed = 4000000

Dividing the two to get the efficiency = t / (t + 40/1000000)

The question wants the efficiency to be >= 50%. So

t / (t + 40/1000000) >= 0.5

Resolving the inequality math you will get:

t >= 40 us

But we don't want

**t**. We want P right?. form above we know that P = 4000000 * t. So multiplying both sides of the inequality by 4000000

4000000 * t >= 40 * 4000000 us

P >= 160 bits

So the size of the PDU should be at least 160 bits to achieve an efficiency of 50% or more.

p.s. No guarantees. Please recheck