brcmfmac: move glom alignment setting to SDIO bus layer
authorFranky Lin <frankyl@broadcom.com>
Tue, 26 Jun 2012 19:26:36 +0000 (21:26 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 27 Jun 2012 19:23:17 +0000 (15:23 -0400)
txglomming alignment is a SDIO bus specific feature. It is more
appropriate to place it in SDIO bus layer instead of common layer.

Reviewed-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: Franky Lin <frankyl@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c
drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c

index 40fa4726b4a8d87fce57a01d8d935d6d57ac0871..2621dd3d7dcd9d3b6ac5ca05db587cdd94454011 100644 (file)
@@ -800,7 +800,6 @@ int brcmf_c_preinit_dcmds(struct brcmf_pub *drvr)
        char iovbuf[BRCMF_EVENTING_MASK_LEN + 12];      /*  Room for
                                 "event_msgs" + '\0' + bitvec  */
        char buf[128], *ptr;
-       u32 dongle_align = drvr->bus_if->align;
        u32 roaming = 1;
        uint bcn_timeout = 3;
        int scan_assoc_time = 40;
@@ -828,12 +827,6 @@ int brcmf_c_preinit_dcmds(struct brcmf_pub *drvr)
        /* Print fw version info */
        brcmf_dbg(ERROR, "Firmware version = %s\n", buf);
 
-       /* Match Host and Dongle rx alignment */
-       brcmf_c_mkiovar("bus:txglomalign", (char *)&dongle_align, 4, iovbuf,
-                   sizeof(iovbuf));
-       brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_VAR, iovbuf,
-                                 sizeof(iovbuf));
-
        /* Setup timeout if Beacons are lost and roam is off to report
                 link down */
        brcmf_c_mkiovar("bcn_timeout", (char *)&bcn_timeout, 4, iovbuf,
index 1616c14d5f0cb85a19fbe14bec885ddcf5e9fe7c..581e7d999737593dfead8bf06c8b985775e53b9e 100644 (file)
@@ -4171,6 +4171,7 @@ void *brcmf_sdbrcm_probe(u32 regsva, struct brcmf_sdio_dev *sdiodev)
        struct brcmf_sdio *bus;
        struct brcmf_bus_dcmd *dlst;
        u32 dngl_txglom;
+       u32 dngl_txglomalign;
        u8 idx;
 
        brcmf_dbg(TRACE, "Enter\n");
@@ -4260,12 +4261,20 @@ void *brcmf_sdbrcm_probe(u32 regsva, struct brcmf_sdio_dev *sdiodev)
        /* sdio bus core specific dcmd */
        idx = brcmf_sdio_chip_getinfidx(bus->ci, BCMA_CORE_SDIO_DEV);
        dlst = kzalloc(sizeof(struct brcmf_bus_dcmd), GFP_KERNEL);
-       if (bus->ci->c_inf[idx].rev < 12 && dlst) {
-               /* for sdio core rev < 12, disable txgloming */
-               dngl_txglom = 0;
-               dlst->name = "bus:txglom";
-               dlst->param = (char *)&dngl_txglom;
-               dlst->param_len = sizeof(u32);
+       if (dlst) {
+               if (bus->ci->c_inf[idx].rev < 12) {
+                       /* for sdio core rev < 12, disable txgloming */
+                       dngl_txglom = 0;
+                       dlst->name = "bus:txglom";
+                       dlst->param = (char *)&dngl_txglom;
+                       dlst->param_len = sizeof(u32);
+               } else {
+                       /* otherwise, set txglomalign */
+                       dngl_txglomalign = bus->sdiodev->bus_if->align;
+                       dlst->name = "bus:txglomalign";
+                       dlst->param = (char *)&dngl_txglomalign;
+                       dlst->param_len = sizeof(u32);
+               }
                list_add(&dlst->list, &bus->sdiodev->bus_if->dcmd_list);
        }