• Johannes Berg's avatar
    iwlwifi: reduce memory allocation · ff0d91c3
    Johannes Berg authored
    Currently, the driver allocates up to 19 skb pointers
    for each TFD, of which we have 256 per queue. This
    means that for each TX queue, we allocate 19k/38k
    (an order 4 or 5 allocation on 32/64 bit respectively)
    just for each queue's "txb" array, which contains only
    the SKB pointers.
    
    However, due to the way we use these pointers only the
    first one can ever be assigned. When the driver was
    initially written, the idea was that it could be
    passed multiple SKBs for each TFD and attach all
    those to implement gather DMA. However, due to
    constraints in the userspace API and lack of TCP/IP
    level checksumming in the device, this is in fact not
    possible. And even if it were, the SKBs would be
    chained, and we wouldn't need to keep pointers to
    each anyway.
    
    Change this to only keep track of one SKB per TFD,
    and thereby reduce memory consumption to just one
    pointer per TFD, which is an order 0 allocation per
    transmit queue.
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
    ff0d91c3
iwl-agn.c 123 KB