diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-helpers.h')
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-helpers.h | 27 | 
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-helpers.h b/drivers/net/wireless/iwlwifi/iwl-helpers.h index 3ff6b9d25a1..621abe3c5af 100644 --- a/drivers/net/wireless/iwlwifi/iwl-helpers.h +++ b/drivers/net/wireless/iwlwifi/iwl-helpers.h @@ -92,6 +92,11 @@ static inline void iwl_free_fw_desc(struct pci_dev *pci_dev,  static inline int iwl_alloc_fw_desc(struct pci_dev *pci_dev,  				    struct fw_desc *desc)  { +	if (!desc->len) { +		desc->v_addr = NULL; +		return -EINVAL; +	} +  	desc->v_addr = dma_alloc_coherent(&pci_dev->dev, desc->len,  					  &desc->p_addr, GFP_KERNEL);  	return (desc->v_addr != NULL) ? 0 : -ENOMEM; @@ -170,4 +175,26 @@ static inline void iwl_enable_interrupts(struct iwl_priv *priv)  	iwl_write32(priv, CSR_INT_MASK, priv->inta_mask);  } +/** + * iwl_beacon_time_mask_low - mask of lower 32 bit of beacon time + * @priv -- pointer to iwl_priv data structure + * @tsf_bits -- number of bits need to shift for masking) + */ +static inline u32 iwl_beacon_time_mask_low(struct iwl_priv *priv, +					   u16 tsf_bits) +{ +	return (1 << tsf_bits) - 1; +} + +/** + * iwl_beacon_time_mask_high - mask of higher 32 bit of beacon time + * @priv -- pointer to iwl_priv data structure + * @tsf_bits -- number of bits need to shift for masking) + */ +static inline u32 iwl_beacon_time_mask_high(struct iwl_priv *priv, +					    u16 tsf_bits) +{ +	return ((1 << (32 - tsf_bits)) - 1) << tsf_bits; +} +  #endif				/* __iwl_helpers_h__ */  |