wil6210: handle linkup/linkdown WMI events
authorVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Wed, 13 Mar 2013 12:12:39 +0000 (14:12 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 13 Mar 2013 18:23:03 +0000 (14:23 -0400)
Firmware indicates linkup/linkdown when data path becomes ready.

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/wil6210/wmi.c

index 0bb3b76..895ae9d 100644 (file)
@@ -528,6 +528,27 @@ static void wmi_evt_eapol_rx(struct wil6210_priv *wil, int id,
        }
 }
 
+static void wmi_evt_linkup(struct wil6210_priv *wil, int id, void *d, int len)
+{
+       struct net_device *ndev = wil_to_ndev(wil);
+       struct wmi_data_port_open_event *evt = d;
+
+       wil_dbg_wmi(wil, "Link UP for CID %d\n", evt->cid);
+
+       netif_carrier_on(ndev);
+}
+
+static void wmi_evt_linkdown(struct wil6210_priv *wil, int id, void *d, int len)
+{
+       struct net_device *ndev = wil_to_ndev(wil);
+       struct wmi_wbe_link_down_event *evt = d;
+
+       wil_dbg_wmi(wil, "Link DOWN for CID %d, reason %d\n",
+                   evt->cid, le32_to_cpu(evt->reason));
+
+       netif_carrier_off(ndev);
+}
+
 static const struct {
        int eventid;
        void (*handler)(struct wil6210_priv *wil, int eventid,
@@ -541,6 +562,8 @@ static const struct {
        {WMI_DISCONNECT_EVENTID,        wmi_evt_disconnect},
        {WMI_NOTIFY_REQ_DONE_EVENTID,   wmi_evt_notify},
        {WMI_EAPOL_RX_EVENTID,          wmi_evt_eapol_rx},
+       {WMI_DATA_PORT_OPEN_EVENTID,    wmi_evt_linkup},
+       {WMI_WBE_LINKDOWN_EVENTID,      wmi_evt_linkdown},
 };
 
 /*