xhci: Fix mult base in endpoint bandwidth info.
authorSarah Sharp <sarah.a.sharp@linux.intel.com>
Tue, 13 Sep 2011 23:41:12 +0000 (16:41 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 20 Sep 2011 19:33:49 +0000 (12:33 -0700)
The "Mult" bits in the SuperSpeed Endpoint Companion Descriptor are
zero-based, and the xHCI host controller wants them to be zero-based in
the input context.  However, for the bandwidth math, we want them to be
one-based.  Fix this.

Fix the documentation about the endpoint bandwidth mult variable in the
xhci.h file, which says it is zero-based.  Also fix the documentation
about num_packets, which is also one-based, not zero-based.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/xhci-mem.c
drivers/usb/host/xhci.h

index c4b8959..94a8b28 100644 (file)
@@ -1473,11 +1473,12 @@ void xhci_update_bw_info(struct xhci_hcd *xhci,
                        /* Added or changed endpoint */
                        bw_info->ep_interval = CTX_TO_EP_INTERVAL(
                                        le32_to_cpu(ep_ctx->ep_info));
-                       bw_info->mult = CTX_TO_EP_MULT(
-                                       le32_to_cpu(ep_ctx->ep_info));
-                       /* Number of packets is zero-based in the input context,
-                        * but we want one-based for the interval table.
+                       /* Number of packets and mult are zero-based in the
+                        * input context, but we want one-based for the
+                        * interval table.
                         */
+                       bw_info->mult = CTX_TO_EP_MULT(
+                                       le32_to_cpu(ep_ctx->ep_info)) + 1;
                        bw_info->num_packets = CTX_TO_MAX_BURST(
                                        le32_to_cpu(ep_ctx->ep_info2)) + 1;
                        bw_info->max_packet_size = MAX_PACKET_DECODED(
index 13f1c23..752a500 100644 (file)
@@ -747,8 +747,9 @@ struct xhci_stream_info {
  * (DMI) also limits the total bandwidth (across all domains) that can be used.
  */
 struct xhci_bw_info {
+       /* ep_interval is zero-based */
        unsigned int            ep_interval;
-       /* mult and num_packets are zero-based */
+       /* mult and num_packets are one-based */
        unsigned int            mult;
        unsigned int            num_packets;
        unsigned int            max_packet_size;