Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d6ecf6c authored by Jussi Kivilinna's avatar Jussi Kivilinna Committed by David S. Miller
Browse files

rndis_host: Add link_change function pointer to 'struct rndis_data'.



Callback to signal link state changes from minidriver to
'subminidrivers'.

Signed-off-by: default avatarJussi Kivilinna <jussi.kivilinna@mbnet.fi>
Acked-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7c39e038
Loading
Loading
Loading
Loading
+20 −4
Original line number Diff line number Diff line
@@ -148,10 +148,26 @@ int rndis_command(struct usbnet *dev, struct rndis_msg_hdr *buf)
					request_id, xid);
				/* then likely retry */
			} else switch (buf->msg_type) {
			case RNDIS_MSG_INDICATE: {	/* fault */
				// struct rndis_indicate *msg = (void *)buf;
			case RNDIS_MSG_INDICATE: {	/* fault/event */
				struct rndis_indicate *msg = (void *)buf;
				int state = 0;

				switch (msg->status) {
				case RNDIS_STATUS_MEDIA_CONNECT:
					state = 1;
				case RNDIS_STATUS_MEDIA_DISCONNECT:
					dev_info(&info->control->dev,
					"rndis fault indication\n");
						"rndis media %sconnect\n",
						!state?"dis":"");
					if (dev->driver_info->link_change)
						dev->driver_info->link_change(
							dev, state);
					break;
				default:
					dev_info(&info->control->dev,
						"rndis indication: 0x%08x\n",
						le32_to_cpu(msg->status));
				}
				}
				break;
			case RNDIS_MSG_KEEPALIVE: {	/* ping */
+4 −0
Original line number Diff line number Diff line
@@ -121,6 +121,10 @@ struct driver_info {
	 * right after minidriver have initialized hardware. */
	int	(*early_init)(struct usbnet *dev);

	/* called by minidriver when link state changes, state: 0=disconnect,
	 * 1=connect */
	void	(*link_change)(struct usbnet *dev, int state);

	/* for new devices, use the descriptor-reading code instead */
	int		in;		/* rx endpoint */
	int		out;		/* tx endpoint */