aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/usb/net/if_urndis.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/usb/net/if_urndis.c')
-rw-r--r--sys/dev/usb/net/if_urndis.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/sys/dev/usb/net/if_urndis.c b/sys/dev/usb/net/if_urndis.c
index 824609aa869f..4b0582442e30 100644
--- a/sys/dev/usb/net/if_urndis.c
+++ b/sys/dev/usb/net/if_urndis.c
@@ -20,7 +20,6 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
-#include <sys/cdefs.h>
#include <sys/stdint.h>
#include <sys/stddef.h>
#include <sys/param.h>
@@ -214,15 +213,15 @@ urndis_attach_post(struct usb_ether *ue)
static int
urndis_attach(device_t dev)
{
- static struct {
- union {
+ union {
+ struct {
struct rndis_query_req query;
+ uint8_t addr[ETHER_ADDR_LEN];
+ } eaddr;
+ struct {
struct rndis_set_req set;
- } hdr;
- union {
- uint8_t eaddr[ETHER_ADDR_LEN];
uint32_t filter;
- } ibuf;
+ } filter;
} msg;
struct urndis_softc *sc = device_get_softc(dev);
struct usb_ether *ue = &sc->sc_ue;
@@ -278,10 +277,10 @@ urndis_attach(device_t dev)
}
/* Determine MAC address */
- memset(msg.ibuf.eaddr, 0, sizeof(msg.ibuf.eaddr));
+ memset(msg.eaddr.addr, 0, sizeof(msg.eaddr.addr));
URNDIS_LOCK(sc);
error = urndis_ctrl_query(sc, OID_802_3_PERMANENT_ADDRESS,
- &msg.hdr.query, sizeof(msg.hdr.query) + sizeof(msg.ibuf.eaddr),
+ (struct rndis_query_req *)&msg.eaddr, sizeof(msg.eaddr),
&buf, &bufsz);
URNDIS_UNLOCK(sc);
if (error != (int)RNDIS_STATUS_SUCCESS) {
@@ -297,10 +296,10 @@ urndis_attach(device_t dev)
/* Initialize packet filter */
sc->sc_filter = NDIS_PACKET_TYPE_BROADCAST |
NDIS_PACKET_TYPE_ALL_MULTICAST;
- msg.ibuf.filter = htole32(sc->sc_filter);
+ msg.filter.filter = htole32(sc->sc_filter);
URNDIS_LOCK(sc);
error = urndis_ctrl_set(sc, OID_GEN_CURRENT_PACKET_FILTER,
- &msg.hdr.set, sizeof(msg.hdr.set) + sizeof(msg.ibuf.filter));
+ (struct rndis_set_req *)&msg.filter, sizeof(msg.filter));
URNDIS_UNLOCK(sc);
if (error != (int)RNDIS_STATUS_SUCCESS) {
device_printf(dev, "Unable to set data filters\n");
@@ -641,7 +640,7 @@ urndis_ctrl_handle_reset(struct urndis_softc *sc,
msg_filter.filter = htole32(sc->sc_filter);
rval = urndis_ctrl_set(sc, OID_GEN_CURRENT_PACKET_FILTER,
- &msg_filter.hdr, sizeof(msg_filter));
+ (struct rndis_set_req *)&msg_filter, sizeof(msg_filter));
if (rval != RNDIS_STATUS_SUCCESS) {
DPRINTF("unable to reset data filters\n");