Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db70f290 authored by Emmanuel Grumbach's avatar Emmanuel Grumbach Committed by Wey-Yi Guy
Browse files

iwlwifi: virtualize op_mode's rx



This is the op_mode's Rx handler.

Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
parent ed277c93
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1141,10 +1141,11 @@ void iwl_setup_rx_handlers(struct iwl_priv *priv)

}

int iwl_rx_dispatch(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb,
int iwl_rx_dispatch(struct iwl_op_mode *op_mode, struct iwl_rx_mem_buffer *rxb,
		     struct iwl_device_cmd *cmd)
{
	struct iwl_rx_packet *pkt = rxb_addr(rxb);
	struct iwl_priv *priv = IWL_OP_MODE_GET_DVM(op_mode);
	int err = 0;

	/*
+1 −0
Original line number Diff line number Diff line
@@ -1385,6 +1385,7 @@ static void iwl_op_mode_dvm_stop(struct iwl_op_mode *op_mode)
const struct iwl_op_mode_ops iwl_dvm_ops = {
	.start = iwl_op_mode_dvm_start,
	.stop = iwl_op_mode_dvm_stop,
	.rx = iwl_rx_dispatch,
	.free_skb = iwl_free_skb,
};

+3 −0
Original line number Diff line number Diff line
@@ -81,6 +81,9 @@ void iwl_down(struct iwl_priv *priv);
void iwl_cancel_deferred_work(struct iwl_priv *priv);
void iwlagn_prepare_restart(struct iwl_priv *priv);
void iwl_free_skb(struct iwl_op_mode *op_mode, struct sk_buff *skb);
int __must_check iwl_rx_dispatch(struct iwl_op_mode *op_mode,
				 struct iwl_rx_mem_buffer *rxb,
				 struct iwl_device_cmd *cmd);

/* MAC80211 */
struct ieee80211_hw *iwl_alloc_all(void);
+13 −0
Original line number Diff line number Diff line
@@ -66,6 +66,8 @@
struct iwl_op_mode;
struct iwl_trans;
struct sk_buff;
struct iwl_device_cmd;
struct iwl_rx_mem_buffer;

/**
 * struct iwl_op_mode_ops - op_mode specific operations
@@ -76,6 +78,8 @@ struct sk_buff;
 *	May sleep
 * @stop: stop the op_mode
 *	May sleep
 * @rx: Rx notification to the op_mode. rxb is the Rx buffer itself. Cmd is the
 *	HCMD the this Rx responds to.
 * @free_skb: allows the transport layer to free skbs that haven't been
 *	reclaimed by the op_mode. This can happen when the driver is freed and
 *	there are Tx packets pending in the transport layer.
@@ -84,6 +88,8 @@ struct sk_buff;
struct iwl_op_mode_ops {
	struct iwl_op_mode *(*start)(struct iwl_trans *trans);
	void (*stop)(struct iwl_op_mode *op_mode);
	int (*rx)(struct iwl_op_mode *op_mode, struct iwl_rx_mem_buffer *rxb,
		  struct iwl_device_cmd *cmd);
	void (*free_skb)(struct iwl_op_mode *op_mode, struct sk_buff *skb);
};

@@ -106,6 +112,13 @@ static inline void iwl_op_mode_stop(struct iwl_op_mode *op_mode)
	op_mode->ops->stop(op_mode);
}

static inline int iwl_op_mode_rx(struct iwl_op_mode *op_mode,
				  struct iwl_rx_mem_buffer *rxb,
				  struct iwl_device_cmd *cmd)
{
	return op_mode->ops->rx(op_mode, rxb, cmd);
}

static inline void iwl_op_mode_free_skb(struct iwl_op_mode *op_mode,
					struct sk_buff *skb)
{
+0 −5
Original line number Diff line number Diff line
@@ -532,11 +532,6 @@ enum iwl_rxon_context_id {
	NUM_IWL_RXON_CTX
};

struct iwl_device_cmd;
int __must_check iwl_rx_dispatch(struct iwl_priv *priv,
				 struct iwl_rx_mem_buffer *rxb,
				 struct iwl_device_cmd *cmd);

int iwlagn_hw_valid_rtc_data_addr(u32 addr);
void iwl_set_hw_rfkill_state(struct iwl_priv *priv, bool state);
void iwl_nic_config(struct iwl_priv *priv);
Loading