@@ -886,19 +886,21 @@ void brcmf_sdiod_sgtable_alloc(struct brcmf_sdio_dev *sdiodev)
{
struct sdio_func *func;
struct mmc_host *host;
+ unsigned short max_segs = 0;
uint max_blocks;
uint nents;
int err;
func = sdiodev->func[2];
host = func->card->host;
- sdiodev->sg_support = host->max_segs > 1;
+
+ max_segs = sdio_get_host_max_seg_count(func);
+ sdiodev->sg_support = max_segs > 1;
max_blocks = min_t(uint, host->max_blk_count, 511u);
sdiodev->max_request_size = min_t(uint, host->max_req_size,
max_blocks * func->cur_blksize);
- sdiodev->max_segment_count = min_t(uint, host->max_segs,
- SG_MAX_SINGLE_ALLOC);
- sdiodev->max_segment_size = host->max_seg_size;
+ sdiodev->max_segment_count = min_t(uint, SG_MAX_SINGLE_ALLOC, max_segs);
+ sdiodev->max_segment_size = sdio_get_host_max_seg_size(func);
if (!sdiodev->sg_support)
return;
Using mmc standard api to get the host sg capability. Signed-off-by: Xinming Hu <huxm@marvell.com> --- v6: separate driver patch from patch 1/4. --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)