void *bus_priv;         /* pointer to bus private structure */
        void *drvr;             /* pointer to driver pub structure brcmf_pub */
        enum brcmf_bus_state state;
+       uint maxctl;            /* Max size rxctl request from proto to bus */
 };
 
 /* Forward decls for struct brcmf_pub (see below) */
        bool up;                /* Driver up/down (to OS) */
        bool txoff;             /* Transmit flow-controlled */
        uint hdrlen;            /* Total BRCMF header length (proto + bus) */
-       uint maxctl;            /* Max size rxctl request from proto to bus */
        uint rxsz;              /* Rx buffer size bus module should use */
        u8 wme_dp;              /* wme discard priority */
 
 
        if (bus->roundup && bus->blocksize && (rdlen > bus->blocksize)) {
                pad = bus->blocksize - (rdlen % bus->blocksize);
                if ((pad <= bus->roundup) && (pad < bus->blocksize) &&
-                   ((len + pad) < bus->drvr->maxctl))
+                   ((len + pad) < bus->sdiodev->bus_if->maxctl))
                        rdlen += pad;
        } else if (rdlen % BRCMF_SDALIGN) {
                rdlen += BRCMF_SDALIGN - (rdlen % BRCMF_SDALIGN);
                rdlen = roundup(rdlen, ALIGNMENT);
 
        /* Drop if the read is too big or it exceeds our maximum */
-       if ((rdlen + BRCMF_FIRSTREAD) > bus->drvr->maxctl) {
+       if ((rdlen + BRCMF_FIRSTREAD) > bus->sdiodev->bus_if->maxctl) {
                brcmf_dbg(ERROR, "%d-byte control read exceeds %d-byte buffer\n",
-                         rdlen, bus->drvr->maxctl);
+                         rdlen, bus->sdiodev->bus_if->maxctl);
                bus->drvr->rx_errors++;
                brcmf_sdbrcm_rxfail(bus, false, false);
                goto done;
        }
 
-       if ((len - doff) > bus->drvr->maxctl) {
+       if ((len - doff) > bus->sdiodev->bus_if->maxctl) {
                brcmf_dbg(ERROR, "%d-byte ctl frame (%d-byte ctl data) exceeds %d-byte limit\n",
-                         len, len - doff, bus->drvr->maxctl);
+                         len, len - doff, bus->sdiodev->bus_if->maxctl);
                bus->drvr->rx_errors++;
                bus->rx_toolong++;
                brcmf_sdbrcm_rxfail(bus, false, false);
 {
        brcmf_dbg(TRACE, "Enter\n");
 
-       if (bus->drvr->maxctl) {
+       if (bus->sdiodev->bus_if->maxctl) {
                bus->rxblen =
-                   roundup((bus->drvr->maxctl + SDPCM_HDRLEN),
+                   roundup((bus->sdiodev->bus_if->maxctl + SDPCM_HDRLEN),
                            ALIGNMENT) + BRCMF_SDALIGN;
                bus->rxbuf = kmalloc(bus->rxblen, GFP_ATOMIC);
                if (!(bus->rxbuf))