発行番号: Cente001-0073
Rev: 第1版
発行日: 2024/04/12
題名: リンクアップ直後にリンクダウンが発生すると、その後リンクアップしても通信できなくなることがまれにある
適用製品
・Cente TCP/IPv4 Ver.1.41およびそれ以前
・Cente TCP/IPv4 SNMPv2 Ver.2.30およびそれ以前
・Cente TCP/IPv4 SNMPv3 Ver.2.30およびそれ以前
・Cente IPv6 Ver.1.51およびそれ以前
・Cente IPv6 SNMPv2 Ver.2.30およびそれ以前
・Cente IPv6 SNMPv3 Ver.2.30およびそれ以前
【該当するユーザ環境】
Cente TCP/IPv4およびCente IPv6で、リンクアップ処理(elap_start()の呼び出し)とリンクダウン処理(elap_stop()の呼び出し)を別タスクから実行する環境が該当します。
ネットワークインタフェースにCente USB Host RNDIS、Cente USB Host CDC-ECMをお使いの場合はこれに該当します。
elap_start()とelap_stop()を同一タスクから実行する環境(CenteパッケージのBSPのLANドライバはこれにあたります)は非該当です。
【詳細】
Centeミドルウェアは、ネットワークのリンクアップ時にはelap_start()を、リンクダウン時にはelap_stop()を、デバイスドライバから実行するという仕様です。これらを別タスクから実行する構成の場合、リンクアップ直後にリンクダウンが発生すると、elap_start()実行中にelap_stop()が割り込む可能性があります。
elap_start()で内部変数のセット待ち処理があり、この待ち処理中にelap_stop()が割り込むと、セットされた変数がクリアされ(その後セットされることはない)、セット待ちが解除されずに、elap_start()からリターンしなくなることがあります。その後リンクダウン・アップが発生しても状態は復旧せず、通信ができなくなります。
elap_start()とelap_stop()を同一タスクから実行する環境では、elap_start()処理中にelap_stop()が割り込むことはないので、問題ありません。
【回避方法】
elap_start()の実行中にelap_stop()が割り込まれても問題なく処理できるよう、ソースコードの改変が必要です。
修正箇所については、support_XXXatmarkXXX_cente.jpまでお問い合わせください(XXXatmarkXXXは@にしてください)。
以上。