УСОВЕРШЕНСТВОВАННЫЙ БЕСПРОВОДНОЙ USB-ПРОТОКОЛ И USB-КОНЦЕНТРАТОР
IMPROVED WIRELESS USB PROTOCOL AND USB HUB

Область техники, к которой относится изобретение
Настоящее изобретение, в общем, относится к интерфейсам сертифицированной беспроводной универсальной последовательной шины (WUSB). Более конкретно, настоящее изобретение относится к повышению пропускной способности систем сертифицированного беспроводного USB для проводных адаптеров.
Уровень техники
Универсальная последовательная шина (USB) является стандартом последовательной шины для подсоединения электронных периферийных устройств к вычислительному хост-устройству. Он разработан для персональных компьютеров, но популярность привела к тому, что он стал общепринятым также в консолях для видеоигр, PDA, портативных DVD-проигрывателях, мобильных телефонах и других популярных электронных устройствах. Цель USB-интерфейса состоит в том, чтобы заменить устаревшие последовательные и параллельные порты на компьютерах, поскольку они не стандартизированы и требуют того, чтобы разрабатывалось и поддерживалось множество драйверов устройств.
USB разработан для того, чтобы давать возможность соединения периферийных устройств без необходимости подключать платы расширения к шине расширения компьютера и улучшать характеристики стандарта "включай и работай" за счет предоставления возможности горячей замены для устройств, когда устройства подключаются или отключаются без выключения или перезагрузки компьютера. Когда устройство первый раз подключается, хост регистрирует и распознает его и загружает драйвер устройства, необходимый для данного устройства.
USB позволяет подключать такие периферийные устройства, как устройства мыши, клавиатуры, сканеры, цифровые камеры, принтеры, внешние запоминающие устройства и т.д., и стал стандартным способом подключения для многих из этих устройств.
Спецификации беспроводной универсальной последовательной шины, редакция 1.0 (опубликованные 12 мая 2005 года; предлагаются USB Implementers Forum, Inc) описывают и задают расширения к проводному USB-интерфейсу, которые обеспечивают использование линий беспроводной связи в расширенных USB/WUSB-системах. Эти беспроводные расширения к спецификации USB упоминаются как сертифицированная беспроводная универсальная последовательная шина или просто беспроводной USB-интерфейс (WUSB). Расширения основываются на существующих спецификациях проводного USB и беспроводной технологии сверхширокополосной связи (UWB) на MAC- и PHY-уровнях от WiMedia Alliance.
Спецификации WUSB включают в себя описания и технические требования устройств, известных как проводные адаптеры (WA). Эти устройства являются адаптерами от проводного USB к беспроводному USB, которые дают возможность "устаревшим" проводным USB-хостам и устройствам связываться с WUSB-устройствами в расширенных USB-системах, содержащих линии проводной и беспроводной связи.
Предусмотрено два типа проводных адаптеров: проводной адаптер хоста (HWA) и проводной адаптер устройства (DWA), которые работают совместно друг с другом. HWA имеют проводной "восходящий" USB-порт и беспроводной "нисходящий" WUSB-порт, позволяющий проводному USB-хосту обмениваться данными с WUSB-устройствами.
DWA имеют беспроводной "восходящий" WUSB-порт и один или более проводных "нисходящих" USB-портов, позволяющих проводным USB-устройствам обмениваться данными с беспроводным USB-хостом.
Протокол для проводных адаптеров согласно спецификации WUSB используется для того, чтобы передавать данные через WA и контролировать и управлять WA. К сожалению, протокол для проводных адаптеров, заданный в спецификации WUSB, в типичных ситуациях является крайне малоэффективным, давая в результате неприемлемо низкую пропускную способность. Неэффективность протокола прежде всего относится к двум факторам: протокол является "избыточным" в том, что ряд сообщений без данных, переносящих управляющую информацию и информацию о состоянии завершения передачи, обменивается для каждого передаваемого блока данных. Помимо этого, протокол не подходит для "конвейерной обработки" потоков данных в системе, приводя к высокому времени задержки в ходе передачи данных и, как следствие, низкой пропускной способности.
Следовательно, желательно иметь способ для повышения пропускной способности устройств в USB-системах, содержащих проводные и беспроводные USB-устройства.
Краткое описание чертежей
Аспекты настоящего раскрытия сущности лучше всего понимаются из нижеследующего подробного описания, когда рассматриваются с прилагаемыми чертежами, на которых:
фиг.1 показывает стандартную конфигурацию системы проводного USB-интерфейса в соответствии с предшествующим уровнем техники;
фиг.2 показывает конфигурацию беспроводной USB-системы с "собственным" WUSB-устройством, непосредственно подсоединенным к WUSB-хосту;
фиг.3 показывает проводной адаптер устройства, подключенный к двум проводным USB-устройствам;
фиг.4 показывает систему, содержащую проводные адаптеры в виде устройств и проводной адаптер хоста, чтобы предоставлять беспроводную USB-функциональность устаревшим проводным USB-устройствам в соответствии с предшествующим уровнем техники;
фиг.5 показывает последовательность пакетов данных, используемых для того, чтобы обмениваться данными в беспроводной USB-системе, проиллюстрированной на фиг.4;
фиг.6A и 6B - это диаграммы последовательности сигналов, иллюстрирующие последовательность операций обработки для запроса на входящую передачу с использованием стандартного протокола для проводных адаптеров в соответствии с предшествующим уровнем техники;
фиг.7A и 7B - это диаграммы последовательности сигналов, иллюстрирующие последовательность операций обработки для запроса на исходящую передачу с использованием стандартного протокола для проводных адаптеров в соответствии с предшествующим уровнем техники;
фиг.8 - это диаграмма последовательности сигналов, иллюстрирующая последовательность операций обработки для запроса на входящую передачу с использованием усовершенствованного протокола для проводных адаптеров в качестве варианта осуществления в соответствии с настоящим изобретением;
фиг.9 - это диаграмма последовательности сигналов, иллюстрирующая последовательность операций обработки для запроса на исходящую передачу с использованием усовершенствованного протокола для проводных адаптеров в качестве варианта осуществления в соответствии с настоящим изобретением;
фиг.10 показывает беспроводной USB-концентратор в качестве варианта осуществления в соответствии с настоящим изобретением;
фиг.11 показывает схему, иллюстрирующую поток пакетов и обработку для перенаправления запросов на исходящую передачу в варианте осуществления настоящего изобретения;
фиг.12 показывает схему, иллюстрирующую поток пакетов и обработку для перенаправления запросов на входящую передачу в варианте осуществления настоящего изобретения.
Подробное описание изобретения
Вариант осуществления настоящего изобретения предоставляет усовершенствованный протокол для проводных адаптеров для повышения пропускной способности беспроводной USB-системы, которая включает в себя проводные адаптеры, которые передают данные в беспроводном режиме между хост-системой и проводным USB-устройством. Используя этот протокол, проводные адаптеры автоматически сегментируют входящие передачи данных на меньшие сегменты, при этом проводной адаптер использует состояние своего буфера для того, чтобы определять то, сколько данных следует извлекать. Данные передаются в нисходящем направлении без ожидания того, чтобы принимать готовый сегмент данных, когда проводной адаптер принимает указанный минимальный объем данных из восходящего направления. Усовершенствованный протокол также обходится без сообщений завершения передачи и вместо этого определяет, когда передача данных завершена, посредством последовательного опроса в нисходящем направлении на предмет результата передачи. Проводные адаптеры также используют дескрипторы перенаправления конвейера вместе с удаленными дескрипторами конвейера для того, чтобы отправлять нисходящие запросы на передачу.
Другой вариант осуществления настоящего изобретения предоставляет концентратор беспроводного USB (WUSB), который обеспечивает беспроводную связь между проводными USB-устройствами и хост-системой. WUSB-концентратор выступает в качестве прокси для проводных USB-устройств и представляет их хост-системе так, как будто они являются собственными WUSB-устройствами. WUSB-концентратор представляет подсоединенное проводное USB-устройство как уникальное WUSB-устройство с собственным адресом устройства или как отдельную функцию для уже существующего устройства (например, WUSB-концентратора, который может регистрироваться как проводной адаптер устройства).
Варианты осуществления настоящего изобретения включают в себя повышение пропускной способности систем проводных адаптеров WUSB-интерфейса. Один вариант осуществления включает в себя оптимизацию протокола для проводных адаптеров так, чтобы повышать пропускную способность систем проводных адаптеров WUSB. Другой вариант осуществления включает в себя представление проводных USB-устройств, подключенных к WUSB-концентратору, так, как будто они являются собственными WUSB-устройствами. Этот вариант осуществления упоминается как прокси WUSB-концентратор для USB-устройства, или просто WUSB-концентратор.
Фиг.1 показывает стандартную конфигурацию проводной USB-системы в соответствии с предшествующим уровнем техники. В этой конфигурации хост-система 100 включает в себя аппаратные средства 101 корневого USB-концентратора, драйвер 102 корневого USB-концентратора и драйвер 103 устройства. Внешнее USB-устройство 110 включает в себя собственные аппаратные средства 111 адаптера и программное обеспечение 112, связанное с его функциями. Хост 100 и внешнее устройство 110 соединяются посредством проводного USB-подключения 120, которое подключается к соответствующим USB-адаптерам 101, 111.
Фиг.2 показывает конфигурацию беспроводной USB-системы с "собственным" WUSB-устройством, непосредственно подсоединенным к WUSB-хосту. Система, проиллюстрированная на фиг.2, аналогична по структуре системе, проиллюстрированной на фиг.1, при этом главным отличием является то, что как хост 200, так и внешнее USB-устройство 210 имеют встроенные беспроводные адаптеры 201, 211 соответственно. Эти адаптеры 201, 211 обмениваются данными согласно беспроводному сигналу, предоставляемому посредством антенн 220, 221, вместо проводного кабеля. Собственная беспроводная USB-система на фиг.2 представляет цель, которой пытаются достичь в большей части отрасли компьютеров/электронного оборудования. В настоящий момент, тем не менее, очень мало устройств имеют собственные возможности беспроводного подключения. Следовательно, желательно для отрасли приспосабливать системы, содержащие проводные и беспроводные USB-устройства и хосты.
Текущее решение для подключения проводных USB-устройств к WUSB-системам состоит в том, чтобы подключать их к проводному адаптеру устройства (DWA), проиллюстрированному на фиг.3. Проводные USB-устройства 310, 320 подключаются к DWA 300 с помощью стандартных USB-кабелей 311, 321. DWA 300 в свою очередь предоставляет беспроводную антенну 301, которая предоставляет линию беспроводной связи к USB-хосту.
Соответствующий проводной адаптер хоста (HWA) может использоваться посредством хост-системы для того, чтобы обмениваться данными с DWA, или DWA может обмениваться данными с хост-системой через "собственный" адаптер WUSB-хоста.
Фиг.4 показывает систему, содержащую проводные адаптеры устройств и проводной адаптер хоста, чтобы предоставлять беспроводную USB-функциональность унаследованным проводным USB-устройствам. Этот пример показывает проводной адаптер хоста (HWA) 410, подключенный к хосту 400 как внешнее устройство, что типично для современных конструкций. В конечном счете, HWA 410 должен быть заменен на собственный адаптер WUSB-хоста, встроенный в хост-системе 400.
Поскольку HWA 410 и DWA 410, 420 распознаются как USB-устройства, хост-система 400 включает несколько уровней программных драйверов, чтобы обеспечивать связь с проводными внешними USB-устройствами 421, 422, 431, 432 через HWA 410 и DWA 420, 430.
Хост 400 имеет корневой проводной USB-концентратор 401, к которому подключается HWA 410 (или внешний или внутренний по отношению к корпусу хоста). Далее идет драйвер 402 корневого концентратора. Хост имеет отдельный HWA-драйвер 403, а также DWA-драйвер 404. Поверх них находятся драйверы 405-408 устройств, которые являются конкретными для внешних USB-устройств 421, 422, 431, 432 на конце цепочки. Каждый из драйверов 405-408 устройств присоединяется и обменивается данными с DWA-драйвером 404.
Данные передаются от хоста 400 к HWA 410 через проводное подключение. HWA 410 затем использует беспроводной протокол для того, чтобы передавать данные в один из DWA 420, 430, который в свою очередь отправляет данные указанному USB-устройству 421, 422, 431 или 432 по проводному подключению.
Фиг.5 показывает последовательность пакетов, используемых для того, чтобы обмениваться данными в беспроводной USB-системе, проиллюстрированной на фиг.4. Вследствие наличия HWA и DWA в системе, последовательность 500 пакетов включает в себя управляющие пакеты, вставляемые перед данными для того, чтобы указывать DWA то, через какой порт маршрутизировать данные, и получать подтверждение приема. Это имеет место для каждого HWA и DWA в системе между внешним устройством и хостом.
В примере, показанном на фиг.5, пакету 504 данных предшествует запрос 503 на передачу, тогда как запросу 502 на передачу предшествует запрос 501 на передачу. Запросы 501 и 503 на передачу командуют HWA отправлять запрос 502 на передачу и пакет 504 данных в DWA. Запрос 502 на передачу командует DWA отправлять пакет 504 данных в USB-устройство. Запрос на передачу отображается только как таковой для целевого устройства. Например, запрос 502 на передачу DWA выглядит как данные для HWA, но и выглядит как запрос на передачу для DWA.
Как пояснено выше, текущие беспроводные USB-системы используют управляющие пакеты (запросы на передачу), которые формируются посредством нескольких уровней драйверов между внешним устройством и его конкретным драйвером в хосте, для того чтобы направлять поток данных в или от целевого USB-устройства. К сожалению, эта схема серьезно снижает пропускную способность.
Фиг.6A и 6B - это диаграммы последовательности сигналов, иллюстрирующие последовательность операций обработки для запроса на входящую передачу с использованием стандартного протокола для проводных адаптеров. Фиг.7A и 7B - это диаграммы последовательности сигналов, иллюстрирующие последовательность операций обработки для запроса на исходящую передачу с использованием стандартного протокола для проводных адаптеров. Эти диаграммы последовательности сигналов графически иллюстрируют большое количество запросов на передачу, требуемых согласно стандартному протоколу для того, чтобы передавать данные между внешним USB-устройством и его драйвером. Большая часть этой сложности вытекает из того факта, что запросы на передачу, предназначенные для одного уровня системы, видятся как данные другими уровнями, тем самым вызывая подтверждения приема при получении данных на каждом уровне системы перед окончательной доставкой данных непосредственно адресату.
Вариант осуществления настоящего изобретения включает в себя усовершенствованный протокол для проводных адаптеров, который повышает пропускную способность за счет сокращения количества сообщений, которые обмениваются как часть передачи данных, тем самым уменьшая время обработки и время передачи сообщений по проводным USB-интерфейсам и беспроводной передающей среде. Пропускная способность также повышается за счет улучшения "конвейерной обработки" потоков данных через систему, что уменьшает время задержки на передачу.
Усовершенствованный протокол для проводных адаптеров исключает сообщение завершения передачи и вместо этого использует последовательный опрос на предмет результата передачи, чтобы определять то, когда передача завершилась. Передачи входящих данных могут быть автоматически сегментированы ("автосегментация") на меньшие передачи посредством проводных адаптеров. Это распространяет функции интеллектуальности на проводные адаптеры и снимает их с программного обеспечения хоста (т.е. DWA управляет буфером). Во время автосегментации размер каждого сегмента может варьироваться, посредством чего проводной адаптер динамически и адаптивно регулирует размер сегмента так, чтобы максимизировать пропускную способность для данной ситуации. Проводной адаптер автоматически управляет своими доступными буферами посредством выдачи входящих маркеров для ожидающих передач на основе буферов, доступных для того, чтобы принимать входящие данные.
В варианте осуществления настоящего изобретения драйвер проводного адаптера сегментирует запрос на передачу и представляет их все сразу. DWA автоматически управляет памятью, чтобы завершать каждый сегмент. Для входящих данных проводной адаптер проверяет память до начала входящих передач, а для исходящих данных отрицания приема используются для того, чтобы подавлять сегмент, для которого проводной адаптер не имеет достаточного объема памяти.
В варианте осуществления настоящего изобретения несколько передач между USB-хостом и HWA по восходящему USB-интерфейсу могут быть агрегированы в одну USB-передачу, чтобы уменьшать время задержки на передачу. В частности, USB-хост может агрегировать несколько исходящих передач, предназначенных для HWA, и HWA может агрегировать несколько входящих передач, предназначенных для USB-хоста. Приемное устройство агрегированных передач (HWA в случае исходящих передач и USB-хосты в случае входящих передач) дезагрегирует агрегированные передачи перед дальнейшей обработкой данных. Приемные устройства определяют границы данных в агрегированных кадрах посредством синтаксического анализа содержимого агрегированных передач.
Например, USB-хост может агрегировать запрос на исходящую передачу со следующими данными исходящей передачи. HWA, принимающий агрегированную передачу, ожидает, что следующая передача будет запросом на передачу. Он проверяет первый байт агрегированной передачи для того, чтобы определять длину запроса на передачу, содержащегося в агрегированной передаче. Поле wRPipe в запросе на передачу используется для того, чтобы находить ассоциативно связанный дескриптор wRPipe, который затем используется для того, чтобы определять то, что запрос на передачу - это запрос на исходящую передачу. Поскольку запрос на передачу - это исходящий запрос, HWA обрабатывает данные в передаче агрегирования после запроса на передачу как данные исходящей передачи.
wMaxPacketSize,
wMaxPacketSize
Хосты и HWA могут агрегировать передачи вплоть до максимальной длины в как выражено в дескрипторе стандартной конечной точки для конечной точки, согласно которой осуществляется передача. Хосты и HWA, использующие агрегирование, должны быть подготовлены к каждой передаче, чтобы принимать до байтов. Для входящих передач хосты должны выдавать входной запрос на wMaxPacketSize байтов. HWA могут дезагрегировать "на лету" по мере того, как готовые передачи управления и передачи данных принимаются. Дезагрегирование "на лету" может помогать в управлении буфером и потоком данных и может уменьшать сквозное время задержки.
wMaxPacketSize.
Решение о том, когда агрегировать и сколько передач агрегировать, зависит от реализации. В типичном варианте, "приспосабливающиеся" алгоритмы используются для того, чтобы принимать решения по агрегированию. Хост или HWA агрегирует доступные передачи до
Для пакетов данных исходящей передачи усовершенствованный протокол для проводных адаптеров использует пакеты, которые передаются в «сквозном режиме» вместо прохождения c использованием передачи "с промежуточной буферизацией". Используя этот новый подход каждый раз, когда некоторое минимальное количество исходящих данных принимается из восходящего порта, проводной адаптер может передавать данные на нисходящий порт, а не ждать до тех пор, пока будет принят законченный сегмент данных. Наоборот, проводной адаптер автоматически управляет доступными буферами данных посредством задания "противодавления" в восходящем порту посредством выдачи отрицаний приема (NAK), когда буферы данных недоступны для того, чтобы хранить входящие данные.
Усовершенствованный протокол для проводных адаптеров дает возможность перенаправления запросов на передачу посредством проводного адаптера, тем самым сокращая количество сообщений, используемых для того, чтобы выполнять передачу данных. Снова ссылаясь на пример на фиг.5, согласно усовершенствованному протоколу запрос 502 на передачу DWA выглядит как запрос на передачу к HWA, а не на данные. Таким образом, HWA понимает, что входящий запрос на передачу действительно предназначен для DWA, и перенаправляет его в DWA. Дескрипторы перенаправления конвейерной обработки (FPipe) используются совместно с дескрипторами удаленной конвейерной обработки (RPipe) для того, чтобы управлять перенаправлением пакетов запросов на передачу.
Ссылаясь на фиг.11, схема 1100 иллюстрирует поток пакетов и обработку для перенаправления запросов на исходящую передачу в варианте осуществления настоящего изобретения. Схема 1100 фокусируется на режиме работы DWA для выполнения передачи, когда перенаправление запросов на передачу реализовано, и сообщение завершения передачи исключено, как пояснено выше. Приложение USB-интерфейса на хосте представляет в DWA-драйвер запрос на то, чтобы передавать данные, которые предназначены для USB-устройства 1102, подсоединенного к DWA 1104. Данные 1106, которые должны быть переданы, предоставляются с запросом 1108 на передачу. DWA и хост-драйверы HWA формируют исходящий пакет запроса на передачу и ставят в очередь запрос на передачу и данные передачи для передачи в HWA 1110 по шине проводного USB. Запрос 1108 на передачу содержит в поле 1112 wRPipe номер 1114 дескриптора FPipe (0x8001), который ссылается на дескриптор 1116 FPipe в HWA 1110, который должен быть использован для того, чтобы перенаправлять запрос 1108 на передачу.
HWA 1110 принимает пакет 1108 с запросом на исходящую передачу, за которым следуют данные 1106 передачи, из восходящей шины проводного USB-интерфейса. HWA синтаксически анализирует запрос 1108 на передачу и находит поля 1112 wRPipe в запросе 1108 на передачу. В этом конкретном примере поле 1112 wRPipe содержит 0x8001.
HWA 1110 определяет, что номер 1114 wRPipe ссылается на дескриптор 1116 FPipe, поскольку старший бит номера 1114 wRPipe - это единица. Это указывает HWA 1110, что соответствующий дескриптор конвейера найден в таблице 1118 дескрипторов FPipe (а не в таблице дескрипторов RPipe) и что запрос 1108 на передачу должен быть перенаправлен. В этом конкретном примере, поскольку номер 1114 wRPipe - это 0x8001, индекс дескриптора 1116 FPipe в таблице 1118 дескрипторов FPipe - это 0x0001. HWA 1110 находит дескриптор 1116 FPipe 0x0001 в таблице 1118 дескрипторов FPipe.
Поле 1120 wRPipelndex в дескрипторе FPipe 0x0001 (1116) используется для того, чтобы находить дескриптор 1122 RPipe запроса на передачу. В этом конкретном примере индекс 1124 дескриптора RPipe - это 0x0001. HWA 1110 определяет целевой адрес устройства запроса на передачу, конечную точку устройства и направление с помощью bDeviceAddress и bEndpointAddress 1126 в дескрипторе 1122 RPipe. В этом примере запрос 1108 на передачу является исходящим, что указывает, чтобы HWA 1110 ожидал данные 1106 передачи после запроса 1108 на передачу по восходящей конечной точке 1128 группового входа USB, и HWA должен использовать исходящий дескриптор RPipe в 0x0001 (1122) для доставки как перенаправляемого запроса 1130 на передачу, так и данных 1132 передачи.
HWA 1110 использует принимаемый запрос 1108 на передачу для того, чтобы формировать перенаправляемый запрос 1130 на передачу посредством замены поля 1112 wRPipe в принимаемом запросе 1108 на передачу на значение 1134 wForwardRPipe в дескрипторе 1116 FPipe.
HWA 1110 ставит в очередь в нисходящем беспроводном интерфейсе 1136 для передачи в DWA 1104 перенаправляемый запрос 1130 на передачу и данные 1132 передачи (как только данные приняты по восходящей конечной точке 1128 группового выхода USB). HWA добавляет заголовок WUSB в два байта к началу пакета запроса на передачу и к началу каждого пакета данных в передаче перед постановкой их в очередь в нисходящем беспроводном интерфейсе 1136.
После того как перенаправляемый запрос 1130 на передачу и данные 1132 передачи переданы в DWA 1104, HWA 1110 проверяет поле 1138 bControl в исходящем дескрипторе 1122 RPipe (0x0001, которое использовалось для того, чтобы доставлять запрос 1108 на передачу и данные 1106) и определяет, что параметр автоматического запроса и перенаправления результатов передачи и данных передачи активирован (разрядный нуль в поле bControl). HWA 1110 затем использует поле 1140 wTransferRPipe в исходящем дескрипторе 1122 RPipe для того, чтобы находить дескриптор 1142 RPipe, ассоциативно связанный с конвейером 1144 групповой обработки входящих передач нисходящего DWA 1104. С входящим дескриптором 1142 RPipe ассоциативно связан список ожидающих передач (не показан на схеме 1100). HWA 1110 добавляет запись в список ожидающих передач, которая указывает, что результат передачи для исходящей передачи ожидается из конвейера 1144 группового входа нисходящего DWA.
Благодаря записи во входящем списке ожидания RPipe, указывающей, что результат 1146 передачи ожидается, HWA 1110 начинает выдавать входящие маркеры в конечную точку 1144 группового входа по нисходящему DWA 1104, чтобы принимать ожидаемый результат 1146 передачи.
Когда результат 1146 передачи принят от DWA 1104, HWA 1110 использует поле SrcAddr в MAC-заголовке пакета и поле номера конечной точки в заголовке WUSB для того, чтобы находить дескриптор RPipe, ассоциативно связанный с устройством и конечной точкой, из которой принят результат передачи. В этом конкретном примере устройством является DWA 1104, конечной точкой является конечная точка групповой обработки входящих передач DWA, а соответствующим RPipe в HWA для конечной точки DWA является дескриптор RPipe 0x0002 (1148).
HWA 1110 находит в списке ожидающих передач RPipe запись, соответствующую принимаемому результату 1146 передачи, на основе совпадающих идентификаторов передачи в результате 1146 передачи и списке ожидающих передач. HWA 1110 определяет из записи списка ожидающих передач, что результат 1146 передачи предназначен для исходящей передачи, и поэтому данные не следуют после результата 1146 передачи.
HWA 1110 проверяет поле 1150 bControl во входящем дескрипторе RPipe 0x0002 (1142) и определяет то, что параметр автоматического запроса и перенаправления результатов передачи и данных передачи активирован (разрядный нуль в поле bControl). На основе активации этого параметра, HWA 1110 автоматически ставит в очередь пакет 1146 результата передачи по восходящей конечной точке 1152 группового входа USB-интерфейса для передачи в хост. HWA 1110 затем удаляет запись в списке ожидающих передач по дескриптору RPipe 0x0002 (1142), соответствующую ожидаемому результату 1146 передачи.
Хост-драйвер HWA поддерживает записи ожидающих передач, аналогичные списку ожидающих передач в HWA 1110. На основе записей ожидающих передач HWA-драйвер ожидает результат 1146 передачи для ранее переданного запроса 1108 на передачу и, следовательно, HWA-драйвер запрашивает входящую передачу, которая инструктирует отправление входящих маркеров в конечную точку 1152 группового входа проводного USB-интерфейса HWA. HWA отправляет результат передачи в хост, как только результат 1146 передачи выходит наверх в очереди группового входа и входящий маркер принимается. Когда результат 1146 передачи проходит в HWA-драйвер, HWA 1110 обновляет свои записи на основе информации в результате 1146 передачи, и передача WUSB завершается.
Ссылаясь на фиг.12, схема 1200 иллюстрирует поток пакетов и обработку для перенаправления запросов на входящую передачу в варианте осуществления настоящего изобретения. Поток пакетов и обработку для перенаправления запросов на входящую передачу аналогичен потоку пакетов и обработке для перенаправления запросов на исходящую передачу. Различия следующие:
Поле 1202 wRPipe (0x8002) в перенаправляемом запросе 1204 на входящую передачу ссылается на дескриптор 1206 FPipe (0x0002), содержащий поле 1208 wRPipelndex (0x0002), которое ссылается на входящий RPipe 1210. Поскольку RPipe в этом случае предназначен для входа, HWA 1212 не ожидает, что данные передачи последуют после запроса 1204 на передачу, и поэтому перенаправляет запрос 1204 на передачу без последующих данных.
HWA 1212 использует поле 1211 wTransferRPipe во входящем RPipe 1210 (0x0002) для того, чтобы находить исходящий RPipe 1214, который используется для того, чтобы доставлять запрос 1204 на передачу. После того, как запрос 1204 на передачу передан в DWA 1216, HWA 1212 добавляет запись в списке ожидающих передач, которая указывает, что результат 1218 передачи для входящей передачи ожидается от конвейера 1219 групповой группового входа нисходящего DWA.
Когда HWA 1212 принимает результат 1218 передачи, он затем пытается считывать из нисходящей конечной точки 1219 группового входа DWA число байтов, указанных в поле dwTransferLength принимаемого результата 1218 передачи. HWA 1212 ожидает данные, поскольку соответствующая запись в списке ожидающих передач указывает входящую передачу.
После того как HWA 1212 принимает ожидаемые данные, он ставит в очередь результат 1218 передачи и данные 1220 передачи в восходящей конечной точке 1222 группового входа проводного USB для передачи в хост. Если автоматическая сегментация активирована, HWA 1212 может сегментировать данные и ставить в очередь результат передачи с каждым сегментом данных. Поле bTransferSegment в каждом результате передачи установлено на номер сегмента.
Для перенаправления запросов на передачу хост-драйвер проводного адаптера поддерживает ассоциативную связь между идентификаторами передачи в запросе на передачу, принимаемом от другого хост-драйвера проводного адаптера, и результирующей передачей, сформированной посредством проводного адаптера. Затем он использует эту ассоциативную связь для того, чтобы модифицировать идентификатор передачи в пакетах запросов на передачу и результатов передачи.
Идентификаторы передачи являются 32-битовыми значениями, используемыми посредством драйверов проводного адаптера и проводных адаптеров для того, чтобы уникально идентифицировать передачи и ассоциативно связывать пакеты с конкретными передачами. Для каждой передачи, инициированной посредством HWA или хост-драйвера DWA, уникальный идентификатор передачи формируется и помещается в соответствующий запрос на передачу. При формировании пакетов результатов передачи, HWA и DWA помещают в результат передачи идентификатор передачи из запроса на передачу для передачи.
Для стандартного протокола для проводных адаптеров идентификаторы передачи уникальны в контексте экземпляра DWA- или HWA-драйвера и соответствующего проводного адаптера. Возьмем, например, случай DWA, присоединенного к HWA, который в свою очередь присоединен к хосту. Когда DWA-драйвер формирует запрос на передачу, он выбирает уникальный идентификатор передачи, чтобы помещать в запрос на передачу. HWA-драйвер и HWA доставляют запрос на передачу DWA-драйвера в DWA без проверки содержимого запроса на передачу (что касается подсистемы HWA, запрос на передачу - это данные, которые должны быть переданы). Когда запрос на передачу доставлен в DWA, DWA синтаксически анализирует запрос на передачу, чтобы определять то, что следует сделать, и использует идентификатор передачи в результирующем ответе по передаче.
Тем не менее, для того чтобы HWA-драйвер доставлял запрос на передачу DWA, HWA-драйвер формирует собственный запрос на передачу для HWA. Идентификатор передачи, помещенный в запрос на передачу HWA, который используется для того, чтобы доставлять запрос на передачу DWA, не связан с идентификатором доставки в запросе на передачу DWA. Иначе говоря, каждый "уровень" драйвера проводного адаптера поддерживает собственный набор уникальных идентификаторов передачи и не знает об идентификаторах передачи, формируемых и используемых посредством других драйверов проводного адаптера.
Тем не менее, когда используется перенаправление запросов на передачу по усовершенствованному протоколу для проводных адаптеров, обработка идентификаторов передачи неизбежно отличается от обработки в стандартном протоколе. Когда запрос на передачу перенаправлен из одного проводного адаптера в другой, запрос на передачу обрабатывается посредством как перенаправляющего, так и целевого проводного адаптера, и идентификатор передачи используется посредством обоих проводных адаптеров. В этом случае, оба проводных адаптера работают с одинаковым набором идентификаторов передачи. То же верно для перенаправленных пакетов результатов передачи, т.е. одинаковый идентификатор передачи используется посредством одного или более проводных адаптеров.
Перенаправление не требует специальной обработки идентификаторов передачи посредством проводных адаптеров, но требует конкретной обработки посредством хост-драйверов. Если перенаправление используется посредством хост-драйвера и его соответствующего проводного адаптера, то когда хост-драйвер принимает запрос на передачу от другого ("восходящего") хост-драйвера, он синтаксически анализирует запрос на передачу, чтобы находить идентификатор передачи. Хост-драйвер затем формирует новый идентификатор передачи, который уникален в рамках драйвера и проводного адаптера, и помещает новый идентификатор передачи в запрос на передачу до его перенаправления в следующий драйвер. Хост-драйвер также создает запись, которая предоставляет ассоциативную связь между идентификатором передачи, предоставляемым посредством восходящего проводного адаптера, и идентификатором передачи, сформированным посредством хост-драйвера.
После этого, когда хост-драйвер принимает результат передачи, он ищет идентификатор передачи результата передачи в своей таблице ассоциативного связывания идентификаторов передачи и определяет то, что соответствующий запрос на передачу перенаправлен. Затем он заменяет идентификатор передачи на значение из таблицы ассоциативного связывания идентификаторов передачи (т.е. на первоначальный идентификатор передачи) перед отправкой результата передачи первоначальному запрашивающему драйверу. Таким образом, результат перенаправления по идентификаторам передачи посредством "нисходящего" драйвера становится прозрачным для "восходящего" хост-драйвера.
Альтернативно, возможны реализации, в которых один хост-драйвер управляет двумя или более последовательно подключенными проводными адаптерами (например, DWA, подключенным к HWA). В этом случае, один хост-драйвер полностью знает результат перенаправления и может учитывать его посредством формирования идентификаторов передачи, которые используются и DWA, и HWA.
Согласно усовершенствованному протоколу, проводной адаптер автоматически опрашивает нисходящий проводной адаптер на предмет пакетов результатов передачи на основе предыдущего запроса на передачу в этот нисходящий проводной адаптер. Аналогично, проводной адаптер перенаправляет все принимаемые результаты передачи в восходящий интерфейс вместо формирования и перенаправления завершения передачи и нового результата передачи.
Вместо опроса на предмет нисходящих данных, инициированного посредством приема запроса на передачу от хост-драйвера, проводной адаптер автоматически опрашивает нисходящее устройство на предмет входящих данных на основе предыдущего приема результата передачи для передачи входящих данных. Аналогично, вместо формирования и перенаправления завершения передачи и нового результата передачи проводной адаптер просто перенаправляет данные входящей передачи в восходящий интерфейс после приема.
В одном варианте осуществления настоящего изобретения несколько драйверов проводного адаптера (HWA и DWA) могут быть комбинированы в один драйвер проводного адаптера, чтобы сокращать количество интерфейсов прикладного программирования (API) и, как следствие, время задержки, вытекающее из прохождения сообщений через API. Помимо этого, комбинирование нескольких драйверов проводного адаптера дает возможность консолидации при назначении идентификаторов передачи так, что когда перенаправление запросов на передачу используется, необходимость поддерживать ассоциативную связь между идентификаторами передачи в запросе на передачу, представляемом из восходящего драйвера, и идентификаторами передачи в выданном запросе на передачу, исключается.
Фиг.8 - это диаграмма последовательности сигналов, иллюстрирующая последовательность операций обработки для запроса на входящую передачу с использованием усовершенствованного протокола для проводных адаптеров в качестве варианта осуществления в соответствии с настоящим изобретением. Фиг.9 - это диаграмма последовательности сигналов, иллюстрирующая последовательность операций для запроса на исходящую передачу с использованием усовершенствованного протокола для проводных адаптеров в качестве варианта осуществления в соответствии с настоящим изобретением. Фиг.8 и 9 иллюстрируют снижение объема предоставляемой управляющей служебной информации посредством усовершенствованного протокола для проводных адаптеров по сравнению со схемами последовательности сигналов, показанными на фиг.6A, 6B, 7A и 7B, иллюстрирующими существующий протокол.
Фиг.10 показывает беспроводной USB-концентратор в качестве варианта осуществления в соответствии с настоящим изобретением. Как пояснено выше, текущий протокол для проводных адаптеров является относительно неэффективным, тогда как протокол WUSB для "собственных" WUSB-устройств является относительно эффективным. Прокси WUSB-концентратор 1000 пользуется преимуществом этой эффективности за счет представления проводных USB-устройств 1010, 1020 так, как будто они являются "собственными" WUSB-устройствами.
Прокси WUSB-концентратор 1000 аналогичен DWA в том, что он имеет беспроводной восходящий порт 1001 и один или более нисходящих портов 1002, 1003 проводного USB, при этом проводные USB-устройства 1010, 1020 могут подключаться к нисходящим портам проводного USB. WUSB-концентратор отличается от DWA тем, что проводные USB-устройства 1010, 1020 отображаются в хост-системе так, как будто они являются собственными WUSB-устройствами. Это достигается посредством того, что WUSB-концентратор 1000 выступает в качестве прокси для подсоединенных нисходящих проводных устройств в беспроводном интерфейсе. Следовательно, WUSB-концентратор 1000 отображается для хоста как одно или более WUSB-устройств, а не DWA, что исключает большую часть управляющих служебных пакетов, используемых при стандартном протоколе для проводных адаптеров.
Подсоединенное проводное USB-устройство или 1) представляется как уникальное WUSB-устройство с собственным адресом устройства, или 2) представляется как отдельная функция в уже существующем устройстве (например, в WUSB-концентраторе, который может регистрироваться как DWA). При этом последнем подходе проводные конечные точки устройства сопоставляются с конечными точками WUSB-концентратора.
WUSB-концентратор использует различные механизмы для того, чтобы надлежащим образом выступать в качестве прокси для USB-устройства для хоста так, как будто это WUSB-устройство. Последующее описание применяется к случаю, когда WUSB-концентратор представляет нисходящие USB-устройства как WUSB-устройства, а не как функции в DWA.
Каждое WUSB-устройство поддерживает контекст безопасности подключения. Контекст подключения согласуется во время нового подключения. WUSB-концентратор согласует контекст безопасности подключения для USB-устройств без знания или участия нисходящих устройств и сохраняет контекст безопасности подключения. Достаточное число уникальных контекстов безопасности подключения согласуется и хранится для того, чтобы поддерживать максимальное число нисходящих USB-устройств, для которых WUSB-концентратор одновременно может выступать в качестве прокси. Конкретный контекст подключения не привязывается к конкретному нисходящему USB-устройству, наоборот, контексты подключения применяются по мере необходимости, когда USB-устройства подсоединяются.
WUSB-концентратор поддерживает уникальный адрес WUSB-устройства для каждого подсоединенного прокси USB-устройства, и он участвует в протоколе WUSB, как если бы он выступал в качестве прокси для WUSB-устройств вместо представления его как промежуточного устройства (подобно DWA).
WUSB-концентратор обнаруживает присоединение USB или непосредственно, или посредством перехвата пакетов прерывания из подсоединенных нисходящих концентраторов. После обнаружения присоединения нисходящих устройств WUSB-концентратор не перенаправляет пакеты прерывания в хост или непосредственно информирует хост о присоединении USB. Вместо этого, WUSB-концентратор выполняет процедуру подключения WUSB-устройства от имени USB-устройства.
WUSB-концентратор считывает дескрипторы USB-устройств и модифицирует их так, чтобы они соответствовали дескрипторам для WUSB-устройств. Например, максимальное поле размера пакета в дескрипторе стандартной конечной точки модифицируется так, чтобы оно соответствовало размерам WUSB-пакетов. Поле bmAttributes в дескрипторе стандартной конфигурации задается так, чтобы указывать то, что устройство имеет автономное питание.
Для некоторых USB-устройств, которые не используют семантику нулевой длины пакета для того, чтобы указывать конец передач, используются длины входящих передач так, чтобы корректное число байтов считывалось. Тем не менее, в случае WUSB-концентратора, длина входящих передач не доступна при протоколе WUSB. Без запросов на передачу нет заранее объявленного ограничения на объем данных, чтобы считывать. К счастью, восходящее беспроводное устройство предоставляется с ожидаемой длиной передач.
Протокол WUSB немного модифицируется для того, чтобы поддерживать WUSB-концентратор. Две опции доступны. В первой опции поле максимального размера пакета во входном выделении времени канала (CTA), информационные элементы (IE) отправляемых в административном управлении с микродиспетчеризацией (MMC) WUSB-хоста могут использоваться для того, чтобы указывать ожидаемую длину передачи. Альтернативно, поле может быть добавлено в CTA с тем, чтобы указывать ожидаемую длину передачи.
В варианте осуществления настоящего изобретения WUSB-концентратор включает в себя контроллер 1004 для того, чтобы выполнять функции и операции WUSB-концентратора, поясненного выше.
Для случая, в котором WUSB-концентратор выступает в качестве прокси для одного или более нисходящих USB-устройств как функций WUSB-концентратора/DWA, в общем, применяется вышеупомянутое описание, за исключением того, что контекст безопасности подключения и адрес WUSB-устройства совместно используются с WUSB-концентратором. Помимо этого, когда USB-устройство присоединяется, WUSB-концентратор устанавливает взаимно однозначное соответствие беспроводных конечных точек WUSB-концентратора с конечными точками USB-устройства и обрабатывает совокупность конечных точек, ассоциативно связанных с конкретным USB-устройством, как функцию в WUSB-концентраторе. WUSB-концентратор сообщает хосту, что новая функция должна быть зарегистрирована для того, чтобы активировать поддержку нового подсоединенного устройства.
Хотя варианты осуществления настоящего раскрытия сущности подробно описаны, специалисты в данной области техники должны понимать, что они могут осуществлять различные модификации, замены и изменения в данном документе без отступления от сущности и объема настоящего раскрытия сущности.