/*-------------------------------------------------------------------------*/
 
-// ... and packet size, for any kind of endpoint descriptor
-#define max_packet(wMaxPacketSize) ((wMaxPacketSize) & 0x07ff)
-
 /*
  * reverse of qh_urb_transaction:  free a list of TDs.
  * used for cleanup after errors, before HC sees an URB's TDs.
                token |= (1 /* "in" */ << 8);
        /* else it's already initted to "out" pid (0 << 8) */
 
-       maxpacket = max_packet(usb_maxpacket(urb->dev, urb->pipe, !is_input));
+       maxpacket = usb_maxpacket(urb->dev, urb->pipe, !is_input);
 
        /*
         * buffer gets wrapped in one or more qtds;
        is_input = usb_pipein (urb->pipe);
        type = usb_pipetype (urb->pipe);
        ep = usb_pipe_endpoint (urb->dev, urb->pipe);
-       maxp = usb_maxpacket (urb->dev, urb->pipe, !is_input);
+       maxp = usb_endpoint_maxp (&ep->desc);
        mult = usb_endpoint_maxp_mult (&ep->desc);
 
        /* 1024 byte maxpacket is a hardware ceiling.  High bandwidth
         * acts like up to 3KB, but is built from smaller packets.
         */
-       if (max_packet(maxp) > 1024) {
-               ehci_dbg(ehci, "bogus qh maxpacket %d\n", max_packet(maxp));
+       if (maxp > 1024) {
+               ehci_dbg(ehci, "bogus qh maxpacket %d\n", maxp);
                goto done;
        }
 
                unsigned        tmp;
 
                qh->ps.usecs = NS_TO_US(usb_calc_bus_time(USB_SPEED_HIGH,
-                               is_input, 0,
-                               mult * max_packet(maxp)));
+                               is_input, 0, mult * maxp));
                qh->ps.phase = NO_FRAME;
 
                if (urb->dev->speed == USB_SPEED_HIGH) {
                        think_time = tt ? tt->think_time : 0;
                        qh->ps.tt_usecs = NS_TO_US(think_time +
                                        usb_calc_bus_time (urb->dev->speed,
-                                       is_input, 0, max_packet (maxp)));
+                                       is_input, 0, maxp));
                        if (urb->interval > ehci->periodic_size)
                                urb->interval = ehci->periodic_size;
                        qh->ps.period = urb->interval;
                         * to help them do so.  So now people expect to use
                         * such nonconformant devices with Linux too; sigh.
                         */
-                       info1 |= max_packet(maxp) << 16;
+                       info1 |= maxp << 16;
                        info2 |= (EHCI_TUNE_MULT_HS << 30);
                } else {                /* PIPE_INTERRUPT */
-                       info1 |= max_packet (maxp) << 16;
+                       info1 |= maxp << 16;
                        info2 |= mult << 30;
                }
                break;
 
        token |= (1 /* "in" */ << 8);  /*This is IN stage*/
 
-       maxpacket = max_packet(usb_maxpacket(urb->dev, urb->pipe, 0));
+       maxpacket = usb_maxpacket(urb->dev, urb->pipe, 0);
 
        qtd_fill(ehci, qtd, buf, len, token, maxpacket);