aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2013-01-23 03:59:29 -0500
committerJohannes Berg <johannes.berg@intel.com>2013-01-24 07:36:32 -0500
commitd13f1862c0ad892eded4cdf633ab32bc993cc1d9 (patch)
tree02d0068c6b5df5fcaea7bbbb93706959845ed974 /drivers/net/wireless/iwlwifi
parent128e63ef077ef7ccd9c5779bbdce566641714666 (diff)
iwlwifi: provide RX page order
When the pages are to be used by front-end, it may need to know the page order, provide it. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-trans.h6
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/rx.c1
2 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans.h b/drivers/net/wireless/iwlwifi/iwl-trans.h
index fca5fec4ea6d..ce878b9dda8c 100644
--- a/drivers/net/wireless/iwlwifi/iwl-trans.h
+++ b/drivers/net/wireless/iwlwifi/iwl-trans.h
@@ -274,6 +274,7 @@ struct iwl_rx_cmd_buffer {
274 struct page *_page; 274 struct page *_page;
275 int _offset; 275 int _offset;
276 bool _page_stolen; 276 bool _page_stolen;
277 u32 _rx_page_order;
277 unsigned int truesize; 278 unsigned int truesize;
278}; 279};
279 280
@@ -294,6 +295,11 @@ static inline struct page *rxb_steal_page(struct iwl_rx_cmd_buffer *r)
294 return r->_page; 295 return r->_page;
295} 296}
296 297
298static inline void iwl_free_rxb(struct iwl_rx_cmd_buffer *r)
299{
300 __free_pages(r->_page, r->_rx_page_order);
301}
302
297#define MAX_NO_RECLAIM_CMDS 6 303#define MAX_NO_RECLAIM_CMDS 6
298 304
299#define IWL_MASK(lo, hi) ((1 << (hi)) | ((1 << (hi)) - (1 << (lo)))) 305#define IWL_MASK(lo, hi) ((1 << (hi)) | ((1 << (hi)) - (1 << (lo))))
diff --git a/drivers/net/wireless/iwlwifi/pcie/rx.c b/drivers/net/wireless/iwlwifi/pcie/rx.c
index b694d13fa308..a2f351779941 100644
--- a/drivers/net/wireless/iwlwifi/pcie/rx.c
+++ b/drivers/net/wireless/iwlwifi/pcie/rx.c
@@ -594,6 +594,7 @@ static void iwl_pcie_rx_handle_rb(struct iwl_trans *trans,
594 int index, cmd_index, err, len; 594 int index, cmd_index, err, len;
595 struct iwl_rx_cmd_buffer rxcb = { 595 struct iwl_rx_cmd_buffer rxcb = {
596 ._offset = offset, 596 ._offset = offset,
597 ._rx_page_order = trans_pcie->rx_page_order,
597 ._page = rxb->page, 598 ._page = rxb->page,
598 ._page_stolen = false, 599 ._page_stolen = false,
599 .truesize = max_len, 600 .truesize = max_len,