Methods are provided that allow high-level protocol drivers to cancel transmission
requests that have been sent to low-level protocol drivers. Transmission requests
are assigned cancel identifiers. Because one original request may be divided into
several packets for transmission, the same cancel identifier is given to every
packet that derives from the original request. High-level protocol drivers can
request cancellation of all pending requests whose cancel identifiers match the
one indicated. Cancel identifiers generated by different high-level protocol drivers
are mutually distinct so one protocol driver cannot inadvertently cancel requests
made by another. The protocol driver may divide its requests into logical flows
and assign the same cancel identifier to all requests within one flow. Then, the
protocol driver may cancel all pending requests within one flow while allowing
requests in other flows to proceed to transmission. An application can use these
methods to cancel requests sent to high-level protocol drivers.