aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJussi Kivilinna <jussi.kivilinna@mbnet.fi>2008-01-25 17:51:34 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-31 22:26:59 -0500
commit5d6ecf6c5d4994198527496fa51ea119030400e0 (patch)
tree3ac03e596e64e24d70b794f77656f352b69b36f6
parent7c39e038fc738012ba36ed222bb62545ee59c012 (diff)
rndis_host: Add link_change function pointer to 'struct rndis_data'.
Callback to signal link state changes from minidriver to 'subminidrivers'. Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> Acked-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/usb/rndis_host.c24
-rw-r--r--drivers/net/usb/usbnet.h4
2 files changed, 24 insertions, 4 deletions
diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index 08139030954f..800c9d02c3f4 100644
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
@@ -148,10 +148,26 @@ int rndis_command(struct usbnet *dev, struct rndis_msg_hdr *buf)
148 request_id, xid); 148 request_id, xid);
149 /* then likely retry */ 149 /* then likely retry */
150 } else switch (buf->msg_type) { 150 } else switch (buf->msg_type) {
151 case RNDIS_MSG_INDICATE: { /* fault */ 151 case RNDIS_MSG_INDICATE: { /* fault/event */
152 // struct rndis_indicate *msg = (void *)buf; 152 struct rndis_indicate *msg = (void *)buf;
153 dev_info(&info->control->dev, 153 int state = 0;
154 "rndis fault indication\n"); 154
155 switch (msg->status) {
156 case RNDIS_STATUS_MEDIA_CONNECT:
157 state = 1;
158 case RNDIS_STATUS_MEDIA_DISCONNECT:
159 dev_info(&info->control->dev,
160 "rndis media %sconnect\n",
161 !state?"dis":"");
162 if (dev->driver_info->link_change)
163 dev->driver_info->link_change(
164 dev, state);
165 break;
166 default:
167 dev_info(&info->control->dev,
168 "rndis indication: 0x%08x\n",
169 le32_to_cpu(msg->status));
170 }
155 } 171 }
156 break; 172 break;
157 case RNDIS_MSG_KEEPALIVE: { /* ping */ 173 case RNDIS_MSG_KEEPALIVE: { /* ping */
diff --git a/drivers/net/usb/usbnet.h b/drivers/net/usb/usbnet.h
index 25b63d3339dc..e0501da3dd11 100644
--- a/drivers/net/usb/usbnet.h
+++ b/drivers/net/usb/usbnet.h
@@ -121,6 +121,10 @@ struct driver_info {
121 * right after minidriver have initialized hardware. */ 121 * right after minidriver have initialized hardware. */
122 int (*early_init)(struct usbnet *dev); 122 int (*early_init)(struct usbnet *dev);
123 123
124 /* called by minidriver when link state changes, state: 0=disconnect,
125 * 1=connect */
126 void (*link_change)(struct usbnet *dev, int state);
127
124 /* for new devices, use the descriptor-reading code instead */ 128 /* for new devices, use the descriptor-reading code instead */
125 int in; /* rx endpoint */ 129 int in; /* rx endpoint */
126 int out; /* tx endpoint */ 130 int out; /* tx endpoint */