iwlegacy update 2012-02-03
cover iwlegacy update 2012-02-03
This patch set include various cleanups, mostly patches intended to remove unused "ctx" structure.
PATCH 1/25 iwlegacy: move rxon commands out of ctx structure
--- drivers/net/wireless/iwlegacy/3945-mac.c | 82 +++++++-------- drivers/net/wireless/iwlegacy/3945-rs.c | 2 +- drivers/net/wireless/iwlegacy/3945.c | 22 ++-- drivers/net/wireless/iwlegacy/4965-calib.c | 6 +- drivers/net/wireless/iwlegacy/4965-mac.c | 31 +++--- drivers/net/wireless/iwlegacy/4965.c | 99 +++++++++--------- drivers/net/wireless/iwlegacy/common.c | 157 ++++++++++++++-------------- drivers/net/wireless/iwlegacy/common.h | 30 ++--- 8 files changed, 203 insertions(+), 226 deletions(-)
drivers/net/wireless/iwlegacy/3945-mac.c +36 -46
@@ -672,15 +672,13 @@ il3945_get_measurement(struct il_priv *il,int rc;int spectrum_resp_status;int duration =le16_to_cpu (params->duration); -struct il_rxon_context *ctx = &il->ctx;if (il_is_associated (il)) add_time =il_usecs_to_beacons (il,le64_to_cpu (params->start_time) - il->_3945.last_tsf, -le16_to_cpu (ctx->timing. - beacon_interval)); +le16_to_cpu (il->timing.beacon_interval));memset (&spectrum,0 ,sizeof (spectrum));
@@ -694,15 +692,14 @@ il3945_get_measurement(struct il_priv *il,if (il_is_associated (il)) spectrum.start_time =il_add_beacon_time (il, il->_3945.last_beacon_time, add_time, -le16_to_cpu (ctx->timing. - beacon_interval)); +le16_to_cpu (il->timing.beacon_interval));else spectrum.start_time =0 ; spectrum.channels[0 ].duration =cpu_to_le32 (duration *TIME_UNIT ); spectrum.channels[0 ].channel = params->channel; spectrum.channels[0 ].type = type; -if (ctx->active.flags &RXON_FLG_BAND_24G_MSK ) +if (il->active.flags &RXON_FLG_BAND_24G_MSK ) spectrum.flags |=RXON_FLG_BAND_24G_MSK |RXON_FLG_AUTO_DETECT_MSK |RXON_FLG_TGG_PROTECT_MSK ;
@@ -2150,7 +2147,6 @@ il3945_alive_start(struct il_priv *il) {int thermal_spin =0 ;u32 rfkill; -struct il_rxon_context *ctx = &il->ctx;D_INFO ("Runtime Alive received.\n" );
@@ -2206,13 +2202,13 @@ il3945_alive_start(struct il_priv *il)if (il_is_associated (il)) {struct il3945_rxon_cmd *active_rxon = - (struct il3945_rxon_cmd *)(&ctx->active); + (struct il3945_rxon_cmd *)(&il->active); - ctx->staging.filter_flags |=RXON_FILTER_ASSOC_MSK ; + il->staging.filter_flags |=RXON_FILTER_ASSOC_MSK ; active_rxon->filter_flags &= ~RXON_FILTER_ASSOC_MSK ; }else {/* Initialize our rx_config data */ -il_connection_init_rx_config (il, ctx); +il_connection_init_rx_config (il, &il->ctx); }/* Configure Bluetooth device coexistence support */
@@ -2221,7 +2217,7 @@ il3945_alive_start(struct il_priv *il)set_bit (S_READY , &il->status);/* Configure the adapter for unassociated operation */ -il3945_commit_rxon (il, ctx); +il3945_commit_rxon (il, &il->ctx);il3945_reg_txpower_periodic (il);
@@ -2670,7 +2666,7 @@ il3945_post_scan(struct il_priv *il)* Since setting the RXON may have been deferred while * performing the scan, fire one off if needed */ -if (memcmp (&ctx->staging, &ctx->active,sizeof (ctx->staging))) +if (memcmp (&il->staging, &il->active,sizeof (il->staging)))il3945_commit_rxon (il, ctx); }
@@ -2728,7 +2724,7 @@ il3945_post_associate(struct il_priv *il)return ;D_ASSOC ("Associated as %d to: %pM\n" , ctx->vif->bss_conf.aid, - ctx->active.bssid_addr); + il->active.bssid_addr);if (test_bit (S_EXIT_PENDING , &il->status))return ;
@@ -2737,30 +2733,30 @@ il3945_post_associate(struct il_priv *il) conf = &il->hw->conf; - ctx->staging.filter_flags &= ~RXON_FILTER_ASSOC_MSK ; + il->staging.filter_flags &= ~RXON_FILTER_ASSOC_MSK ;il3945_commit_rxon (il, ctx); rc =il_send_rxon_timing (il, ctx);if (rc)IL_WARN ("C_RXON_TIMING failed - " "Attempting to continue.\n" ); - ctx->staging.filter_flags |=RXON_FILTER_ASSOC_MSK ; + il->staging.filter_flags |=RXON_FILTER_ASSOC_MSK ; - ctx->staging.assoc_id =cpu_to_le16 (ctx->vif->bss_conf.aid); + il->staging.assoc_id =cpu_to_le16 (ctx->vif->bss_conf.aid);D_ASSOC ("assoc id %d beacon interval %d\n" , ctx->vif->bss_conf.aid, ctx->vif->bss_conf.beacon_int);if (ctx->vif->bss_conf.use_short_preamble) - ctx->staging.flags |=RXON_FLG_SHORT_PREAMBLE_MSK ; + il->staging.flags |=RXON_FLG_SHORT_PREAMBLE_MSK ;else - ctx->staging.flags &= ~RXON_FLG_SHORT_PREAMBLE_MSK ; + il->staging.flags &= ~RXON_FLG_SHORT_PREAMBLE_MSK ; -if (ctx->staging.flags &RXON_FLG_BAND_24G_MSK ) { +if (il->staging.flags &RXON_FLG_BAND_24G_MSK ) {if (ctx->vif->bss_conf.use_short_slot) - ctx->staging.flags |=RXON_FLG_SHORT_SLOT_MSK ; + il->staging.flags |=RXON_FLG_SHORT_SLOT_MSK ;else - ctx->staging.flags &= ~RXON_FLG_SHORT_SLOT_MSK ; + il->staging.flags &= ~RXON_FLG_SHORT_SLOT_MSK ; }il3945_commit_rxon (il, ctx);
@@ -2902,7 +2898,7 @@ il3945_config_ap(struct il_priv *il)if (!(il_is_associated (il))) {/* RXON - unassoc (to set timing command) */ - ctx->staging.filter_flags &= ~RXON_FILTER_ASSOC_MSK ; + il->staging.filter_flags &= ~RXON_FILTER_ASSOC_MSK ;il3945_commit_rxon (il, ctx);/* RXON Timing */
@@ -2911,21 +2907,21 @@ il3945_config_ap(struct il_priv *il)IL_WARN ("C_RXON_TIMING failed - " "Attempting to continue.\n" ); - ctx->staging.assoc_id =0 ; + il->staging.assoc_id =0 ;if (vif->bss_conf.use_short_preamble) - ctx->staging.flags |=RXON_FLG_SHORT_PREAMBLE_MSK ; + il->staging.flags |=RXON_FLG_SHORT_PREAMBLE_MSK ;else - ctx->staging.flags &= ~RXON_FLG_SHORT_PREAMBLE_MSK ; + il->staging.flags &= ~RXON_FLG_SHORT_PREAMBLE_MSK ; -if (ctx->staging.flags &RXON_FLG_BAND_24G_MSK ) { +if (il->staging.flags &RXON_FLG_BAND_24G_MSK ) {if (vif->bss_conf.use_short_slot) - ctx->staging.flags |=RXON_FLG_SHORT_SLOT_MSK ; + il->staging.flags |=RXON_FLG_SHORT_SLOT_MSK ;else - ctx->staging.flags &= ~RXON_FLG_SHORT_SLOT_MSK ; + il->staging.flags &= ~RXON_FLG_SHORT_SLOT_MSK ; }/* restore RXON assoc */ - ctx->staging.filter_flags |=RXON_FILTER_ASSOC_MSK ; + il->staging.filter_flags |=RXON_FILTER_ASSOC_MSK ;il3945_commit_rxon (il, ctx); }il3945_send_beacon_cmd (il);
@@ -3032,7 +3028,6 @@ il3945_configure_filter(struct ieee80211_hw *hw, unsigned int changed_flags, {struct il_priv *il = hw->priv;__le32 filter_or =0 , filter_nand =0 ; -struct il_rxon_context *ctx = &il->ctx;#define CHK (test, flag) do { \ if (*total_flags & (test)) \
@@ -3052,8 +3047,8 @@ il3945_configure_filter(struct ieee80211_hw *hw, unsigned int changed_flags,mutex_lock (&il->mutex); - ctx->staging.filter_flags &= ~filter_nand; - ctx->staging.filter_flags |= filter_or; + il->staging.filter_flags &= ~filter_nand; + il->staging.filter_flags |= filter_or;/* * Not committing directly because hardware can perform a scan,
@@ -3170,9 +3165,8 @@ static ssize_t il3945_show_flags(struct device *d, struct device_attribute *attr, char *buf) { struct il_priv *il = dev_get_drvdata(d); -struct il_rxon_context *ctx = &il->ctx; -return sprintf (buf,"0x%04X\n" , ctx->active.flags); +return sprintf (buf,"0x%04X\n" , il->active.flags); } static ssize_t
@@ -3181,17 +3175,16 @@ il3945_store_flags(struct device *d, struct device_attribute *attr, {struct il_priv *il =dev_get_drvdata (d);u32 flags =simple_strtoul (buf,NULL ,0 ); -struct il_rxon_context *ctx = &il->ctx;mutex_lock (&il->mutex); -if (le32_to_cpu (ctx->staging.flags) != flags) { +if (le32_to_cpu (il->staging.flags) != flags) {/* Cancel any currently running scans... */ if (il_scan_cancel_timeout (il,100 ))IL_WARN ("Could not cancel scan.\n" );else {D_INFO ("Committing rxon.flags = 0x%04X\n" , flags); - ctx->staging.flags =cpu_to_le32 (flags); -il3945_commit_rxon (il, ctx); + il->staging.flags =cpu_to_le32 (flags); +il3945_commit_rxon (il, &il->ctx); } }mutex_unlock (&il->mutex);
@@ -3207,9 +3200,8 @@ il3945_show_filter_flags(struct device *d, struct device_attribute *attr, char *buf) {struct il_priv *il =dev_get_drvdata (d); -struct il_rxon_context *ctx = &il->ctx; -return sprintf (buf,"0x%04X\n" ,le32_to_cpu (ctx->active.filter_flags)); +return sprintf (buf,"0x%04X\n" ,le32_to_cpu (il->active.filter_flags)); } static ssize_t
@@ -3217,19 +3209,18 @@ il3945_store_filter_flags(struct device *d, struct device_attribute *attr, const char *buf, size_t count) {struct il_priv *il =dev_get_drvdata (d); -struct il_rxon_context *ctx = &il->ctx;u32 filter_flags =simple_strtoul (buf,NULL ,0 );mutex_lock (&il->mutex); -if (le32_to_cpu (ctx->staging.filter_flags) != filter_flags) { +if (le32_to_cpu (il->staging.filter_flags) != filter_flags) {/* Cancel any currently running scans... */ if (il_scan_cancel_timeout (il,100 ))IL_WARN ("Could not cancel scan.\n" );else {D_INFO ("Committing rxon.filter_flags = " "0x%04X\n" , filter_flags); - ctx->staging.filter_flags =cpu_to_le32 (filter_flags); -il3945_commit_rxon (il, ctx); + il->staging.filter_flags =cpu_to_le32 (filter_flags); +il3945_commit_rxon (il, &il->ctx); } }mutex_unlock (&il->mutex);
@@ -3278,9 +3269,8 @@ il3945_store_measurement(struct device *d, struct device_attribute *attr, const char *buf, size_t count) {struct il_priv *il =dev_get_drvdata (d); -struct il_rxon_context *ctx = &il->ctx;struct ieee80211_measurement_params params = { - .channel =le16_to_cpu (ctx->active.channel), + .channel =le16_to_cpu (il->active.channel), .start_time =cpu_to_le64 (il->_3945.last_tsf), .duration =cpu_to_le16 (1 ), };
drivers/net/wireless/iwlegacy/3945-rs.c +1 -1
@@ -944,7 +944,7 @@ il3945_rate_scale_init(struct ieee80211_hw *hw, s32 sta_id)switch (il->band) {case IEEE80211_BAND_2GHZ :/* TODO: this always does G, not a regression */ -if (il->ctx.active.flags &RXON_FLG_TGG_PROTECT_MSK ) { +if (il->active.flags &RXON_FLG_TGG_PROTECT_MSK ) { rs_sta->tgg =1 ; rs_sta->expected_tpt = il3945_expected_tpt_g_prot; }else
drivers/net/wireless/iwlegacy/3945.c +11 -11
@@ -1388,7 +1388,7 @@ il3945_send_tx_power(struct il_priv *il)int rate_idx, i;const struct il_channel_info *ch_info =NULL ;struct il3945_txpowertable_cmd txpower = { - .channel = il->ctx.active.channel, + .channel = il->active.channel, };u16 chan;
@@ -1397,7 +1397,7 @@ il3945_send_tx_power(struct il_priv *il) "TX Power requested while scanning!\n"))return -EAGAIN ; - chan =le16_to_cpu (il->ctx.active.channel); + chan =le16_to_cpu (il->active.channel); txpower.band = (il->band ==IEEE80211_BAND_5GHZ ) ?0 :1 ; ch_info =il_get_channel_info (il, il->band, chan);
@@ -1673,8 +1673,8 @@ il3945_send_rxon_assoc(struct il_priv *il, struct il_rxon_context *ctx) .flags = CMD_WANT_SKB, .data = &rxon_assoc, }; -const struct il_rxon_cmd *rxon1 = &ctx->staging; -const struct il_rxon_cmd *rxon2 = &ctx->active; +const struct il_rxon_cmd *rxon1 = &il->staging; +const struct il_rxon_cmd *rxon2 = &il->active; if (rxon1->flags == rxon2->flags && rxon1->filter_flags == rxon2->filter_flags &&
@@ -1684,10 +1684,10 @@ il3945_send_rxon_assoc(struct il_priv *il, struct il_rxon_context *ctx)return 0 ; } - rxon_assoc.flags = ctx->staging.flags; - rxon_assoc.filter_flags = ctx->staging.filter_flags; - rxon_assoc.ofdm_basic_rates = ctx->staging.ofdm_basic_rates; - rxon_assoc.cck_basic_rates = ctx->staging.cck_basic_rates; + rxon_assoc.flags = il->staging.flags; + rxon_assoc.filter_flags = il->staging.filter_flags; + rxon_assoc.ofdm_basic_rates = il->staging.ofdm_basic_rates; + rxon_assoc.cck_basic_rates = il->staging.cck_basic_rates; rxon_assoc.reserved =0 ; rc =il_send_cmd_sync (il, &cmd);
@@ -1717,8 +1717,8 @@ int il3945_commit_rxon(struct il_priv *il, struct il_rxon_context *ctx) {/* cast away the const for active_rxon in this function */ -struct il3945_rxon_cmd *active_rxon = (void *)&ctx->active; -struct il3945_rxon_cmd *staging_rxon = (void *)&ctx->staging; +struct il3945_rxon_cmd *active_rxon = (void *)&il->active; +struct il3945_rxon_cmd *staging_rxon = (void *)&il->staging;int rc =0 ;bool new_assoc = !!(staging_rxon->filter_flags &RXON_FILTER_ASSOC_MSK );
@@ -1776,7 +1776,7 @@ il3945_commit_rxon(struct il_priv *il, struct il_rxon_context *ctx) active_rxon->reserved4 =0 ; active_rxon->reserved5 =0 ; rc =il_send_cmd_pdu (il,C_RXON ,sizeof (struct il3945_rxon_cmd ), - &il->ctx.active); + &il->active);/* If the mask clearing failed then we set * active_rxon back to what it was previously */
drivers/net/wireless/iwlegacy/4965-calib.c +2 -4
@@ -806,8 +806,6 @@ il4965_chain_noise_calibration(struct il_priv *il, void *stat_resp)unsigned long flags;struct stats_rx_non_phy *rx_info; -struct il_rxon_context *ctx = &il->ctx; -if (il->disable_chain_noise_cal)return ;
@@ -833,8 +831,8 @@ il4965_chain_noise_calibration(struct il_priv *il, void *stat_resp)return ; } - rxon_band24 = !!(ctx->staging.flags &RXON_FLG_BAND_24G_MSK ); - rxon_chnum =le16_to_cpu (ctx->staging.channel); + rxon_band24 = !!(il->staging.flags &RXON_FLG_BAND_24G_MSK ); + rxon_chnum =le16_to_cpu (il->staging.channel); stat_band24 = !!(((struct il_notif_stats *)stat_resp)->
drivers/net/wireless/iwlegacy/4965-mac.c +15 -16
@@ -926,8 +926,7 @@ il4965_request_scan(struct il_priv *il, struct ieee80211_vif *vif)case IEEE80211_BAND_2GHZ : scan->flags =RXON_FLG_BAND_24G_MSK |RXON_FLG_AUTO_DETECT_MSK ; chan_mod = -le32_to_cpu (il->ctx.active. - flags &RXON_FLG_CHANNEL_MODE_MSK ) >> +le32_to_cpu (il->active.flags &RXON_FLG_CHANNEL_MODE_MSK ) >>RXON_FLG_CHANNEL_MODE_POS ;if (chan_mod ==CHANNEL_MODE_PURE_40 ) { rate =RATE_6M_PLCP ;
@@ -1164,14 +1163,14 @@ il4965_set_rxon_chain(struct il_priv *il, struct il_rxon_context *ctx) rx_chain |= active_rx_cnt <<RXON_RX_CHAIN_MIMO_CNT_POS ; rx_chain |= idle_rx_cnt <<RXON_RX_CHAIN_CNT_POS ; - ctx->staging.rx_chain =cpu_to_le16 (rx_chain); + il->staging.rx_chain =cpu_to_le16 (rx_chain);if (!is_single && active_rx_cnt >=IL_NUM_RX_CHAINS_SINGLE && is_cam) - ctx->staging.rx_chain |=RXON_RX_CHAIN_MIMO_FORCE_MSK ; + il->staging.rx_chain |=RXON_RX_CHAIN_MIMO_FORCE_MSK ;else - ctx->staging.rx_chain &= ~RXON_RX_CHAIN_MIMO_FORCE_MSK ; + il->staging.rx_chain &= ~RXON_RX_CHAIN_MIMO_FORCE_MSK ; -D_ASSOC ("rx_chain=0x%X active=%d idle=%d\n" , ctx->staging.rx_chain, +D_ASSOC ("rx_chain=0x%X active=%d idle=%d\n" , il->staging.rx_chain, active_rx_cnt, idle_rx_cnt); WARN_ON(active_rx_cnt == 0 || idle_rx_cnt == 0 ||
@@ -3378,7 +3377,7 @@ il4965_update_chain_flags(struct il_priv *il) {if (il->cfg->ops->hcmd->set_rxon_chain) { il->cfg->ops->hcmd->set_rxon_chain (il, &il->ctx); -if (il->ctx.active.rx_chain != il->ctx.staging.rx_chain) +if (il->active.rx_chain != il->staging.rx_chain)il_commit_rxon (il, &il->ctx); } }
@@ -5019,11 +5018,11 @@ il4965_alive_start(struct il_priv *il) il->active_rate =RATES_MASK ; -if (il_is_associated_ctx (ctx)) { +if (il_is_associated (il)) {struct il_rxon_cmd *active_rxon = - (struct il_rxon_cmd *)&ctx->active; + (struct il_rxon_cmd *)&il->active;/* apply any changes in staging */ - ctx->staging.filter_flags |=RXON_FILTER_ASSOC_MSK ; + il->staging.filter_flags |=RXON_FILTER_ASSOC_MSK ; active_rxon->filter_flags &= ~RXON_FILTER_ASSOC_MSK ; }else {/* Initialize our rx_config data */
@@ -5768,14 +5767,14 @@ il4965_mac_channel_switch(struct ieee80211_hw *hw, test_bit(S_CHANNEL_SWITCH_PENDING, &il->status)) goto out; -if (!il_is_associated_ctx (ctx)) +if (!il_is_associated (il)) goto out;if (!il->cfg->ops->lib->set_channel_switch) goto out; ch = channel->hw_value; -if (le16_to_cpu (ctx->active.channel) == ch) +if (le16_to_cpu (il->active.channel) == ch) goto out; ch_info =il_get_channel_info (il, channel->band, ch);
@@ -5807,8 +5806,8 @@ il4965_mac_channel_switch(struct ieee80211_hw *hw, }else ctx->ht.is_40mhz = false; -if ((le16_to_cpu (ctx->staging.channel) != ch)) - ctx->staging.flags =0 ; +if ((le16_to_cpu (il->staging.channel) != ch)) + il->staging.flags =0 ;il_set_rxon_channel (il, channel, ctx);il_set_rxon_ht (il, ht_conf);
@@ -5860,8 +5859,8 @@ il4965_configure_filter(struct ieee80211_hw *hw, unsigned int changed_flags,mutex_lock (&il->mutex); - il->ctx.staging.filter_flags &= ~filter_nand; - il->ctx.staging.filter_flags |= filter_or; + il->staging.filter_flags &= ~filter_nand; + il->staging.filter_flags |= filter_or;/* * Not committing directly because hardware can perform a scan,
drivers/net/wireless/iwlegacy/4965.c +49 -50
274 lines not on this page · raw message
drivers/net/wireless/iwlegacy/common.c +77 -80
419 lines not on this page · raw message
drivers/net/wireless/iwlegacy/common.h +12 -18
@@ -1171,17 +1171,6 @@ struct il_rxon_context {u32 interface_modes, exclusive_interface_modes;u8 unused_devtype, ap_devtype, ibss_devtype, station_devtype; -/* -* We declare this const so it can only be -* changed via explicit cast within the -* routines that actually update the physical -* hardware. -*/ -const struct il_rxon_cmd active; -struct il_rxon_cmd staging; - -struct il_rxon_time_cmd timing; -struct il_qos_info qos_data;u8 bcast_sta_id, ap_sta_id;
@@ -1306,6 +1295,17 @@ struct il_priv {struct il_rxon_context ctx; +/* +* We declare this const so it can only be +* changed via explicit cast within the +* routines that actually update the physical +* hardware. +*/ +const struct il_rxon_cmd active; +struct il_rxon_cmd staging; + +struct il_rxon_time_cmd timing; +__le16 switch_channel;/* 1st responses from initialize and runtime uCode images.
@@ -1530,7 +1530,7 @@ il_rxon_ctx_from_vif(struct ieee80211_vif *vif)static inline int il_is_associated (struct il_priv *il) { -return (il->ctx.active.filter_flags &RXON_FILTER_ASSOC_MSK ) ?1 :0 ; +return (il->active.filter_flags &RXON_FILTER_ASSOC_MSK ) ?1 :0 ; } static inline int
@@ -1540,12 +1540,6 @@ il_is_any_associated(struct il_priv *il) }static inline int -il_is_associated_ctx (struct il_rxon_context *ctx) -{ -return (ctx->active.filter_flags &RXON_FILTER_ASSOC_MSK ) ?1 :0 ; -} - -static inline int il_is_channel_valid (const struct il_channel_info *ch_info) {if (ch_info ==NULL )
Signature · 1 line
1.7.1
PATCH 2/25 iwlegacy: get rid of ctx->rxon_cmd
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/3945-mac.c | 1 - drivers/net/wireless/iwlegacy/4965-mac.c | 1 - drivers/net/wireless/iwlegacy/4965.c | 6 +++--- drivers/net/wireless/iwlegacy/common.h | 2 +- 4 files changed, 4 insertions(+), 6 deletions(-)
drivers/net/wireless/iwlegacy/3945-mac.c +0 -1
@@ -3619,7 +3619,6 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.ctxid =0 ; - il->ctx.rxon_cmd =C_RXON ; il->ctx.rxon_timing_cmd =C_RXON_TIMING ; il->ctx.rxon_assoc_cmd =C_RXON_ASSOC ; il->ctx.qos_cmd =C_QOS_PARAM ;
drivers/net/wireless/iwlegacy/4965-mac.c +0 -1
@@ -6135,7 +6135,6 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.always_active = true; il->ctx.is_active = true; - il->ctx.rxon_cmd =C_RXON ; il->ctx.rxon_timing_cmd =C_RXON_TIMING ; il->ctx.rxon_assoc_cmd =C_RXON_ASSOC ; il->ctx.qos_cmd =C_QOS_PARAM ;
drivers/net/wireless/iwlegacy/4965.c +3 -3
@@ -1472,7 +1472,7 @@ il4965_commit_rxon(struct il_priv *il, struct il_rxon_context *ctx) active_rxon->filter_flags &= ~RXON_FILTER_ASSOC_MSK ; ret = -il_send_cmd_pdu (il, ctx->rxon_cmd, +il_send_cmd_pdu (il,C_RXON ,sizeof (struct il_rxon_cmd ), active_rxon);/* If the mask clearing failed then we set
@@ -1503,7 +1503,7 @@ il4965_commit_rxon(struct il_priv *il, struct il_rxon_context *ctx)*/ if (!new_assoc) { ret = -il_send_cmd_pdu (il, ctx->rxon_cmd, +il_send_cmd_pdu (il,C_RXON ,sizeof (struct il_rxon_cmd ), &il->staging);if (ret) {IL_ERR ("Error setting new RXON (%d)\n" , ret);
@@ -1525,7 +1525,7 @@ il4965_commit_rxon(struct il_priv *il, struct il_rxon_context *ctx)* RXON assoc doesn't clear the station table in uCode, */ ret = -il_send_cmd_pdu (il, ctx->rxon_cmd, +il_send_cmd_pdu (il,C_RXON ,sizeof (struct il_rxon_cmd ), &il->staging);if (ret) {IL_ERR ("Error setting new RXON (%d)\n" , ret);
drivers/net/wireless/iwlegacy/common.h +1 -1
@@ -1175,7 +1175,7 @@ struct il_rxon_context {u8 bcast_sta_id, ap_sta_id; -u8 rxon_cmd, rxon_assoc_cmd, rxon_timing_cmd; +u8 rxon_assoc_cmd, rxon_timing_cmd;u8 qos_cmd;u8 wep_key_cmd;
Signature · 1 line
1.7.1
PATCH 3/25 iwlegacy: get rid of ctx->rxon_timing_cmd
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/3945-mac.c | 1 - drivers/net/wireless/iwlegacy/4965-mac.c | 1 - drivers/net/wireless/iwlegacy/common.c | 2 +- drivers/net/wireless/iwlegacy/common.h | 2 +- 4 files changed, 2 insertions(+), 4 deletions(-)
drivers/net/wireless/iwlegacy/3945-mac.c +0 -1
@@ -3619,7 +3619,6 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.ctxid =0 ; - il->ctx.rxon_timing_cmd =C_RXON_TIMING ; il->ctx.rxon_assoc_cmd =C_RXON_ASSOC ; il->ctx.qos_cmd =C_QOS_PARAM ; il->ctx.ap_sta_id =IL_AP_ID ;
drivers/net/wireless/iwlegacy/4965-mac.c +0 -1
@@ -6135,7 +6135,6 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.always_active = true; il->ctx.is_active = true; - il->ctx.rxon_timing_cmd =C_RXON_TIMING ; il->ctx.rxon_assoc_cmd =C_RXON_ASSOC ; il->ctx.qos_cmd =C_QOS_PARAM ; il->ctx.ap_sta_id =IL_AP_ID ;
drivers/net/wireless/iwlegacy/common.c +1 -1
@@ -3664,7 +3664,7 @@ il_send_rxon_timing(struct il_priv *il, struct il_rxon_context *ctx)le32_to_cpu (il->timing.beacon_init_val), le16_to_cpu(il->timing.atim_win)); -return il_send_cmd_pdu (il, il->ctx.rxon_timing_cmd,sizeof (il->timing), +return il_send_cmd_pdu (il,C_RXON_TIMING ,sizeof (il->timing), &il->timing); }EXPORT_SYMBOL (il_send_rxon_timing);
drivers/net/wireless/iwlegacy/common.h +1 -1
@@ -1175,7 +1175,7 @@ struct il_rxon_context {u8 bcast_sta_id, ap_sta_id; -u8 rxon_assoc_cmd, rxon_timing_cmd; +u8 rxon_assoc_cmd;u8 qos_cmd;u8 wep_key_cmd;
Signature · 1 line
1.7.1
PATCH 4/25 iwlegacy: get rid of C_RXON_ASSOC
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/3945-mac.c | 1 - drivers/net/wireless/iwlegacy/4965-mac.c | 1 - drivers/net/wireless/iwlegacy/common.h | 1 - 3 files changed, 0 insertions(+), 3 deletions(-)
drivers/net/wireless/iwlegacy/3945-mac.c +0 -1
@@ -3619,7 +3619,6 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.ctxid =0 ; - il->ctx.rxon_assoc_cmd =C_RXON_ASSOC ; il->ctx.qos_cmd =C_QOS_PARAM ; il->ctx.ap_sta_id =IL_AP_ID ; il->ctx.wep_key_cmd =C_WEPKEY ;
drivers/net/wireless/iwlegacy/4965-mac.c +0 -1
@@ -6135,7 +6135,6 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.always_active = true; il->ctx.is_active = true; - il->ctx.rxon_assoc_cmd =C_RXON_ASSOC ; il->ctx.qos_cmd =C_QOS_PARAM ; il->ctx.ap_sta_id =IL_AP_ID ; il->ctx.wep_key_cmd =C_WEPKEY ;
drivers/net/wireless/iwlegacy/common.h +0 -1
@@ -1175,7 +1175,6 @@ struct il_rxon_context {u8 bcast_sta_id, ap_sta_id; -u8 rxon_assoc_cmd;u8 qos_cmd;u8 wep_key_cmd;
Signature · 1 line
1.7.1
PATCH 5/25 iwlegacy: get rid of qos_cmd
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/3945-mac.c | 1 - drivers/net/wireless/iwlegacy/4965-mac.c | 1 - drivers/net/wireless/iwlegacy/common.c | 2 +- drivers/net/wireless/iwlegacy/common.h | 1 - 4 files changed, 1 insertions(+), 4 deletions(-)
drivers/net/wireless/iwlegacy/3945-mac.c +0 -1
@@ -3619,7 +3619,6 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.ctxid =0 ; - il->ctx.qos_cmd =C_QOS_PARAM ; il->ctx.ap_sta_id =IL_AP_ID ; il->ctx.wep_key_cmd =C_WEPKEY ; il->ctx.interface_modes =
drivers/net/wireless/iwlegacy/4965-mac.c +0 -1
@@ -6135,7 +6135,6 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.always_active = true; il->ctx.is_active = true; - il->ctx.qos_cmd =C_QOS_PARAM ; il->ctx.ap_sta_id =IL_AP_ID ; il->ctx.wep_key_cmd =C_WEPKEY ; il->ctx.ac_to_fifo = il4965_bss_ac_to_fifo;
drivers/net/wireless/iwlegacy/common.c +1 -1
@@ -5269,7 +5269,7 @@ il_update_qos(struct il_priv *il, struct il_rxon_context *ctx)D_QOS ("send QoS cmd with Qos active=%d FLAGS=0x%X\n" , ctx->qos_data.qos_active, ctx->qos_data.def_qos_parm.qos_flags); -il_send_cmd_pdu_async (il, ctx->qos_cmd,sizeof (struct il_qosparam_cmd ), +il_send_cmd_pdu_async (il,C_QOS_PARAM ,sizeof (struct il_qosparam_cmd ), &ctx->qos_data.def_qos_parm,NULL ); }
drivers/net/wireless/iwlegacy/common.h +0 -1
@@ -1175,7 +1175,6 @@ struct il_rxon_context {u8 bcast_sta_id, ap_sta_id; -u8 qos_cmd;u8 wep_key_cmd;struct il_wep_key wep_keys[WEP_KEYS_MAX ];
Signature · 1 line
1.7.1
PATCH 6/25 iwlegacy: get rid of wep_key_cmd
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/3945-mac.c | 1 - drivers/net/wireless/iwlegacy/4965-mac.c | 3 +-- drivers/net/wireless/iwlegacy/common.h | 2 -- 3 files changed, 1 insertions(+), 5 deletions(-)
drivers/net/wireless/iwlegacy/3945-mac.c +0 -1
@@ -3620,7 +3620,6 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.ctxid =0 ; il->ctx.ap_sta_id =IL_AP_ID ; - il->ctx.wep_key_cmd =C_WEPKEY ; il->ctx.interface_modes =BIT (NL80211_IFTYPE_STATION ) |BIT (NL80211_IFTYPE_ADHOC ); il->ctx.ibss_devtype =RXON_DEV_TYPE_IBSS ;
drivers/net/wireless/iwlegacy/4965-mac.c +1 -2
@@ -2823,7 +2823,7 @@ il4965_static_wepkey_cmd(struct il_priv *il, struct il_rxon_context *ctx,struct il_wep_cmd *wep_cmd = (struct il_wep_cmd *)buff;size_t cmd_size =sizeof (struct il_wep_cmd );struct il_host_cmd cmd = { - .id = ctx->wep_key_cmd, + .id =C_WEPKEY , .data = wep_cmd, .flags =CMD_SYNC , };
@@ -6136,7 +6136,6 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.always_active = true; il->ctx.is_active = true; il->ctx.ap_sta_id =IL_AP_ID ; - il->ctx.wep_key_cmd =C_WEPKEY ; il->ctx.ac_to_fifo = il4965_bss_ac_to_fifo; il->ctx.ac_to_queue = il4965_bss_ac_to_queue; il->ctx.exclusive_interface_modes =BIT (NL80211_IFTYPE_ADHOC );
drivers/net/wireless/iwlegacy/common.h +0 -2
@@ -1175,8 +1175,6 @@ struct il_rxon_context {u8 bcast_sta_id, ap_sta_id; -u8 wep_key_cmd; -struct il_wep_key wep_keys[WEP_KEYS_MAX ];u8 key_mapping_keys;
Signature · 1 line
1.7.1
PATCH 7/25 iwlegacy: get rid of ap_sta_id
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/3945-mac.c | 1 - drivers/net/wireless/iwlegacy/4965-mac.c | 3 +-- drivers/net/wireless/iwlegacy/common.c | 2 +- drivers/net/wireless/iwlegacy/common.h | 2 +- 4 files changed, 3 insertions(+), 5 deletions(-)
drivers/net/wireless/iwlegacy/3945-mac.c +0 -1
@@ -3619,7 +3619,6 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.ctxid =0 ; - il->ctx.ap_sta_id =IL_AP_ID ; il->ctx.interface_modes =BIT (NL80211_IFTYPE_STATION ) |BIT (NL80211_IFTYPE_ADHOC ); il->ctx.ibss_devtype =RXON_DEV_TYPE_IBSS ;
drivers/net/wireless/iwlegacy/4965-mac.c +1 -2
@@ -2906,7 +2906,7 @@ il4965_set_default_wep_key(struct il_priv *il, struct il_rxon_context *ctx, keyconf->flags &= ~IEEE80211_KEY_FLAG_GENERATE_IV ; keyconf->hw_key_idx =HW_KEY_DEFAULT ; - il->stations[ctx->ap_sta_id].keyinfo.cipher = keyconf->cipher; + il->stations[IL_AP_ID ].keyinfo.cipher = keyconf->cipher; ctx->wep_keys[keyconf->keyidx].key_size = keyconf->keylen; memcpy(&ctx->wep_keys[keyconf->keyidx].key, &keyconf->key,
@@ -6135,7 +6135,6 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.always_active = true; il->ctx.is_active = true; - il->ctx.ap_sta_id =IL_AP_ID ; il->ctx.ac_to_fifo = il4965_bss_ac_to_fifo; il->ctx.ac_to_queue = il4965_bss_ac_to_queue; il->ctx.exclusive_interface_modes =BIT (NL80211_IFTYPE_ADHOC );
drivers/net/wireless/iwlegacy/common.c +1 -1
@@ -1899,7 +1899,7 @@ il_prep_station(struct il_priv *il, struct il_rxon_context *ctx,u16 rate;if (is_ap) - sta_id = ctx->ap_sta_id; + sta_id =IL_AP_ID ;else if (is_broadcast_ether_addr (addr)) sta_id = ctx->bcast_sta_id;else
drivers/net/wireless/iwlegacy/common.h +1 -1
@@ -1173,7 +1173,7 @@ struct il_rxon_context {struct il_qos_info qos_data; -u8 bcast_sta_id, ap_sta_id; +u8 bcast_sta_id;struct il_wep_key wep_keys[WEP_KEYS_MAX ];u8 key_mapping_keys;
Signature · 1 line
1.7.1
PATCH 8/25 iwlegacy: move bcast_sta_id to hw_params
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/3945-mac.c | 4 ++-- drivers/net/wireless/iwlegacy/3945-rs.c | 2 +- drivers/net/wireless/iwlegacy/3945.c | 5 +++-- drivers/net/wireless/iwlegacy/4965-mac.c | 15 ++++++++------- drivers/net/wireless/iwlegacy/4965.c | 3 +-- drivers/net/wireless/iwlegacy/common.c | 2 +- drivers/net/wireless/iwlegacy/common.h | 6 +++--- 7 files changed, 19 insertions(+), 18 deletions(-)
drivers/net/wireless/iwlegacy/3945-mac.c +2 -2
@@ -140,7 +140,7 @@ il3945_set_ccmp_dynamic_key_info(struct il_priv *il, key_flags |= (STA_KEY_FLG_CCMP |STA_KEY_FLG_MAP_KEY_MSK ); key_flags |=cpu_to_le16 (keyconf->keyidx <<STA_KEY_FLG_KEYID_POS ); -if (sta_id == il->ctx.bcast_sta_id) +if (sta_id == il->hw_params.bcast_id) key_flags |=STA_KEY_MULTICAST_MSK ; keyconf->flags |=IEEE80211_KEY_FLAG_GENERATE_IV ;
@@ -2598,7 +2598,7 @@ il3945_request_scan(struct il_priv *il, struct ieee80211_vif *vif)/* We don't build a direct scan probe request; the uCode will do * that based on the direct_mask added to each channel entry */ scan->tx_cmd.tx_flags =TX_CMD_FLG_SEQ_CTL_MSK ; - scan->tx_cmd.sta_id = il->ctx.bcast_sta_id; + scan->tx_cmd.sta_id = il->hw_params.bcast_id; scan->tx_cmd.stop_time.life_time =TX_CMD_LIFE_TIME_INFINITE ;/* flags + rate selection */
drivers/net/wireless/iwlegacy/3945-rs.c +1 -1
@@ -342,7 +342,7 @@ il3945_rs_rate_init(struct il_priv *il, struct ieee80211_sta *sta, u8 sta_id)int i;D_INFO ("enter\n" ); -if (sta_id == il->ctx.bcast_sta_id) +if (sta_id == il->hw_params.bcast_id) goto out; psta = (struct il3945_sta_priv *)sta->drv_priv;
drivers/net/wireless/iwlegacy/3945.c +3 -2
@@ -2396,6 +2396,8 @@ il3945_hw_set_hw_params(struct il_priv *il)return -ENOMEM ; } + il->hw_params.bcast_id =IL3945_BROADCAST_ID ; +/* Assign number of Usable TX queues */ il->hw_params.max_txq_num = il->cfg->base_params->num_of_queues;
@@ -2404,7 +2406,6 @@ il3945_hw_set_hw_params(struct il_priv *il) il->hw_params.max_rxq_size =RX_QUEUE_SIZE ; il->hw_params.max_rxq_log =RX_QUEUE_SIZE_LOG ; il->hw_params.max_stations =IL3945_STATION_COUNT ; - il->ctx.bcast_sta_id =IL3945_BROADCAST_ID ; il->sta_key_max_num =STA_KEY_MAX_NUM ;
@@ -2425,7 +2426,7 @@ il3945_hw_get_beacon_cmd(struct il_priv *il, struct il3945_frame *frame, tx_beacon_cmd = (struct il3945_tx_beacon_cmd *)&frame->u;memset (tx_beacon_cmd,0 ,sizeof (*tx_beacon_cmd)); - tx_beacon_cmd->tx.sta_id = il->ctx.bcast_sta_id; + tx_beacon_cmd->tx.sta_id = il->hw_params.bcast_id; tx_beacon_cmd->tx.stop_time.life_time =TX_CMD_LIFE_TIME_INFINITE ; frame_size =
drivers/net/wireless/iwlegacy/4965-mac.c +8 -7
@@ -919,7 +919,7 @@ il4965_request_scan(struct il_priv *il, struct ieee80211_vif *vif)D_SCAN ("Start passive scan.\n" ); scan->tx_cmd.tx_flags =TX_CMD_FLG_SEQ_CTL_MSK ; - scan->tx_cmd.sta_id = ctx->bcast_sta_id; + scan->tx_cmd.sta_id = il->hw_params.bcast_id; scan->tx_cmd.stop_time.life_time =TX_CMD_LIFE_TIME_INFINITE ;switch (il->scan_band) {
@@ -1678,7 +1678,7 @@ il4965_tx_skb(struct il_priv *il, struct sk_buff *skb)/* For management frames use broadcast id to do not break aggregation */ if (!ieee80211_is_data (fc)) - sta_id = ctx->bcast_sta_id; + sta_id = il->hw_params.bcast_id;else {/* Find idx into station table for destination station */ sta_id =il_sta_id_or_broadcast (il, ctx, info->control.sta);
@@ -2938,7 +2938,7 @@ il4965_set_wep_dynamic_key_info(struct il_priv *il, struct il_rxon_context *ctx,if (keyconf->keylen ==WEP_KEY_LEN_128 ) key_flags |=STA_KEY_FLG_KEY_SIZE_MSK ; -if (sta_id == ctx->bcast_sta_id) +if (sta_id == il->hw_params.bcast_id) key_flags |=STA_KEY_MULTICAST_MSK ;spin_lock_irqsave (&il->sta_lock, flags);
@@ -2988,7 +2988,7 @@ il4965_set_ccmp_dynamic_key_info(struct il_priv *il, key_flags |=cpu_to_le16 (keyconf->keyidx <<STA_KEY_FLG_KEYID_POS ); key_flags &= ~STA_KEY_FLG_INVALID ; -if (sta_id == ctx->bcast_sta_id) +if (sta_id == il->hw_params.bcast_id) key_flags |=STA_KEY_MULTICAST_MSK ; keyconf->flags |=IEEE80211_KEY_FLAG_GENERATE_IV ;
@@ -3035,7 +3035,7 @@ il4965_set_tkip_dynamic_key_info(struct il_priv *il, key_flags |=cpu_to_le16 (keyconf->keyidx <<STA_KEY_FLG_KEYID_POS ); key_flags &= ~STA_KEY_FLG_INVALID ; -if (sta_id == ctx->bcast_sta_id) +if (sta_id == il->hw_params.bcast_id) key_flags |=STA_KEY_MULTICAST_MSK ; keyconf->flags |=IEEE80211_KEY_FLAG_GENERATE_IV ;
@@ -3253,7 +3253,7 @@ il4965_update_bcast_station(struct il_priv *il, struct il_rxon_context *ctx) {unsigned long flags;struct il_link_quality_cmd *link_cmd; -u8 sta_id = ctx->bcast_sta_id; +u8 sta_id = il->hw_params.bcast_id; link_cmd =il4965_sta_alloc_lq (il, sta_id);if (!link_cmd) {
@@ -3510,7 +3510,7 @@ il4965_hw_get_beacon_cmd(struct il_priv *il, struct il_frame *frame)/* Set up TX command fields */ tx_beacon_cmd->tx.len =cpu_to_le16 ((u16 ) frame_size); - tx_beacon_cmd->tx.sta_id = il->beacon_ctx->bcast_sta_id; + tx_beacon_cmd->tx.sta_id = il->hw_params.bcast_id; tx_beacon_cmd->tx.stop_time.life_time =TX_CMD_LIFE_TIME_INFINITE ; tx_beacon_cmd->tx.tx_flags = TX_CMD_FLG_SEQ_CTL_MSK | TX_CMD_FLG_TSF_MSK |
@@ -6082,6 +6082,7 @@ il4965_hw_detect(struct il_priv *il)static int il4965_set_hw_params (struct il_priv *il) { + il->hw_params.bcast_id =IL4965_BROADCAST_ID ; il->hw_params.max_rxq_size =RX_QUEUE_SIZE ; il->hw_params.max_rxq_log =RX_QUEUE_SIZE_LOG ;if (il->cfg->mod_params->amsdu_size_8K)
drivers/net/wireless/iwlegacy/4965.c +1 -2
@@ -624,7 +624,6 @@ il4965_hw_set_hw_params(struct il_priv *il)sizeof (struct il4965_scd_bc_tbl ); il->hw_params.tfd_size =sizeof (struct il_tfd ); il->hw_params.max_stations =IL4965_STATION_COUNT ; - il->ctx.bcast_sta_id =IL4965_BROADCAST_ID ; il->hw_params.max_data_size =IL49_RTC_DATA_SIZE ; il->hw_params.max_inst_size =IL49_RTC_INST_SIZE ; il->hw_params.max_bsm_size =BSM_SRAM_SIZE ;
@@ -1968,7 +1967,7 @@ il4965_find_station(struct il_priv *il, const u8 * addr) start =IL_STA_ID ;if (is_broadcast_ether_addr (addr)) -return il->ctx.bcast_sta_id; +return il->hw_params.bcast_id;spin_lock_irqsave (&il->sta_lock, flags);for (i = start; i < il->hw_params.max_stations; i++)
drivers/net/wireless/iwlegacy/common.c +1 -1
@@ -1901,7 +1901,7 @@ il_prep_station(struct il_priv *il, struct il_rxon_context *ctx,if (is_ap) sta_id =IL_AP_ID ;else if (is_broadcast_ether_addr (addr)) - sta_id = ctx->bcast_sta_id; + sta_id = il->hw_params.bcast_id;else for (i =IL_STA_ID ; i < il->hw_params.max_stations; i++) { if (!compare_ether_addr
drivers/net/wireless/iwlegacy/common.h +3 -3
@@ -816,6 +816,7 @@ struct il_sensitivity_ranges {/** * struct il_hw_params +* @bcast_id: f/w broadcast station ID * @max_txq_num: Max # Tx queues supported * @dma_chnl_num: Number of Tx DMA/FIFO channels * @scd_bc_tbls_size: size of scheduler byte count tables
@@ -836,6 +837,7 @@ struct il_sensitivity_ranges {* @struct il_sensitivity_ranges: range of sensitivity values */ struct il_hw_params { +u8 bcast_id;u8 max_txq_num;u8 dma_chnl_num;u16 scd_bc_tbls_size;
@@ -1173,8 +1175,6 @@ struct il_rxon_context {struct il_qos_info qos_data; -u8 bcast_sta_id; -struct il_wep_key wep_keys[WEP_KEYS_MAX ];u8 key_mapping_keys;
@@ -2372,7 +2372,7 @@ il_sta_id_or_broadcast(struct il_priv *il, struct il_rxon_context *context,int sta_id;if (!sta) -return context->bcast_sta_id; +return il->hw_params.bcast_id; sta_id =il_sta_id (sta);
Signature · 1 line
1.7.1
PATCH 9/25 iwlegacy: get rid of *_devtype
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/3945-mac.c | 3 --- drivers/net/wireless/iwlegacy/4965-mac.c | 4 ---- drivers/net/wireless/iwlegacy/common.c | 6 +++--- drivers/net/wireless/iwlegacy/common.h | 1 - 4 files changed, 3 insertions(+), 11 deletions(-)
drivers/net/wireless/iwlegacy/3945-mac.c +0 -3
@@ -3621,9 +3621,6 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.interface_modes =BIT (NL80211_IFTYPE_STATION ) |BIT (NL80211_IFTYPE_ADHOC ); - il->ctx.ibss_devtype =RXON_DEV_TYPE_IBSS ; - il->ctx.station_devtype =RXON_DEV_TYPE_ESS ; - il->ctx.unused_devtype =RXON_DEV_TYPE_ESS ;/* * Disabling hardware scan means that mac80211 will perform scans
drivers/net/wireless/iwlegacy/4965-mac.c +0 -4
@@ -6140,10 +6140,6 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.ac_to_queue = il4965_bss_ac_to_queue; il->ctx.exclusive_interface_modes =BIT (NL80211_IFTYPE_ADHOC ); il->ctx.interface_modes =BIT (NL80211_IFTYPE_STATION ); - il->ctx.ap_devtype =RXON_DEV_TYPE_AP ; - il->ctx.ibss_devtype =RXON_DEV_TYPE_IBSS ; - il->ctx.station_devtype =RXON_DEV_TYPE_ESS ; - il->ctx.unused_devtype =RXON_DEV_TYPE_ESS ;SET_IEEE80211_DEV (hw, &pdev->dev);
drivers/net/wireless/iwlegacy/common.c +3 -3
@@ -4002,17 +4002,17 @@ il_connection_init_rx_config(struct il_priv *il, struct il_rxon_context *ctx)memset (&il->staging,0 ,sizeof (il->staging));if (!ctx->vif) { - il->staging.dev_type = ctx->unused_devtype; + il->staging.dev_type =RXON_DEV_TYPE_ESS ; }else switch (ctx->vif->type) {case NL80211_IFTYPE_STATION : - il->staging.dev_type = ctx->station_devtype; + il->staging.dev_type =RXON_DEV_TYPE_ESS ; il->staging.filter_flags =RXON_FILTER_ACCEPT_GRP_MSK ;break ;case NL80211_IFTYPE_ADHOC : - il->staging.dev_type = ctx->ibss_devtype; + il->staging.dev_type =RXON_DEV_TYPE_IBSS ; il->staging.flags =RXON_FLG_SHORT_PREAMBLE_MSK ; il->staging.filter_flags = RXON_FILTER_BCON_AWARE_MSK |
drivers/net/wireless/iwlegacy/common.h +0 -1
@@ -1171,7 +1171,6 @@ struct il_rxon_context {int ctxid;u32 interface_modes, exclusive_interface_modes; -u8 unused_devtype, ap_devtype, ibss_devtype, station_devtype;struct il_qos_info qos_data;
Signature · 1 line
1.7.1
PATCH 10/25 iwlegacy: get rid of ctxid
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/3945-mac.c | 2 -- drivers/net/wireless/iwlegacy/4965-mac.c | 2 -- drivers/net/wireless/iwlegacy/common.c | 6 ------ drivers/net/wireless/iwlegacy/common.h | 4 +--- 4 files changed, 1 insertions(+), 13 deletions(-)
drivers/net/wireless/iwlegacy/3945-mac.c +0 -2
@@ -3617,8 +3617,6 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->cmd_queue =IL39_CMD_QUEUE_NUM ; - il->ctx.ctxid =0 ; - il->ctx.interface_modes =BIT (NL80211_IFTYPE_STATION ) |BIT (NL80211_IFTYPE_ADHOC );
drivers/net/wireless/iwlegacy/4965-mac.c +0 -2
@@ -6132,8 +6132,6 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il = hw->priv;/* At this point both hw and il are allocated. */ - il->ctx.ctxid =0 ; - il->ctx.always_active = true; il->ctx.is_active = true; il->ctx.ac_to_fifo = il4965_bss_ac_to_fifo;
drivers/net/wireless/iwlegacy/common.c +0 -6
@@ -1951,7 +1951,6 @@ il_prep_station(struct il_priv *il, struct il_rxon_context *ctx, station->sta.mode =0 ; station->sta.sta.sta_id = sta_id; station->sta.station_flags = ctx->station_flags; - station->ctxid = ctx->ctxid;if (sta) {struct il_station_priv_common *sta_priv;
@@ -2191,9 +2190,6 @@ il_clear_ucode_stations(struct il_priv *il, struct il_rxon_context *ctx)spin_lock_irqsave (&il->sta_lock, flags_spin);for (i =0 ; i < il->hw_params.max_stations; i++) { -if (ctx && ctx->ctxid != il->stations[i].ctxid) -continue ; -if (il->stations[i].used &IL_STA_UCODE_ACTIVE ) {D_INFO ("Clearing ucode active for station %d\n" , i); il->stations[i].used &= ~IL_STA_UCODE_ACTIVE ;
@@ -2234,8 +2230,6 @@ il_restore_stations(struct il_priv *il, struct il_rxon_context *ctx)D_ASSOC ("Restoring all known stations ... start.\n" );spin_lock_irqsave (&il->sta_lock, flags_spin);for (i =0 ; i < il->hw_params.max_stations; i++) { -if (ctx->ctxid != il->stations[i].ctxid) -continue ;if ((il->stations[i].used &IL_STA_DRIVER_ACTIVE ) && !(il->stations[i].used &IL_STA_UCODE_ACTIVE )) { D_ASSOC("Restoring sta %pM\n",
drivers/net/wireless/iwlegacy/common.h +1 -3
@@ -735,7 +735,7 @@ struct il_qos_info {struct il_station_entry {struct il_addsta_cmd sta;struct il_tid_data tid[MAX_TID_COUNT ]; -u8 used, ctxid; +u8 used;struct il_hw_key keyinfo;struct il_link_quality_cmd *lq; };
@@ -1168,8 +1168,6 @@ struct il_rxon_context {bool ht_need_multiple_chains; -int ctxid; -u32 interface_modes, exclusive_interface_modes;struct il_qos_info qos_data;
Signature · 1 line
1.7.1
PATCH 11/25 iwlegacy: get rid of mcast_queue
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/4965-mac.c | 17 ++++------------- drivers/net/wireless/iwlegacy/common.h | 3 --- 2 files changed, 4 insertions(+), 16 deletions(-)
drivers/net/wireless/iwlegacy/4965-mac.c +4 -13
@@ -1708,19 +1708,10 @@ il4965_tx_skb(struct il_priv *il, struct sk_buff *skb)il4965_sta_modify_sleep_tx_count (il, sta_id,1 ); } -/* -* Send this frame after DTIM -- there's a special queue -* reserved for this for contexts that support AP mode. -*/ -if (info->flags &IEEE80211_TX_CTL_SEND_AFTER_DTIM ) { - txq_id = ctx->mcast_queue; -/* -* The microcode will clear the more data -* bit in the last frame it transmits. -*/ - hdr->frame_control |=cpu_to_le16 (IEEE80211_FCTL_MOREDATA ); - }else - txq_id = ctx->ac_to_queue[skb_get_queue_mapping (skb)]; +/* FIXME: remove me ? */ +WARN_ON_ONCE (info->flags &IEEE80211_TX_CTL_SEND_AFTER_DTIM ); + + txq_id = ctx->ac_to_queue[skb_get_queue_mapping (skb)];/* irqs already disabled/saved above when locking il->lock */ spin_lock (&il->sta_lock);
drivers/net/wireless/iwlegacy/common.h +0 -3
@@ -1157,7 +1157,6 @@ struct il_rxon_context {const u8 *ac_to_fifo;const u8 *ac_to_queue; -u8 mcast_queue;/* * We could use the vif to indicate active, but we
@@ -1166,8 +1165,6 @@ struct il_rxon_context {*/ bool always_active, is_active; -bool ht_need_multiple_chains; -u32 interface_modes, exclusive_interface_modes;struct il_qos_info qos_data;
Signature · 1 line
1.7.1
PATCH 12/25 iwlegacy: move wep_keys out of context
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/4965-mac.c | 58 ++++++++++++++++++----------- drivers/net/wireless/iwlegacy/common.h | 19 ++-------- 2 files changed, 39 insertions(+), 38 deletions(-)
drivers/net/wireless/iwlegacy/4965-mac.c +36 -22
@@ -2808,7 +2808,7 @@ static int il4965_static_wepkey_cmd(struct il_priv *il, struct il_rxon_context *ctx, bool send_if_empty) { - int i, not_empty = 0; + int i;u8 buff[sizeof (struct il_wep_cmd ) +sizeof (struct il_wep_key ) *WEP_KEYS_MAX ];struct il_wep_cmd *wep_cmd = (struct il_wep_cmd *)buff;
@@ -2818,6 +2818,7 @@ il4965_static_wepkey_cmd(struct il_priv *il, struct il_rxon_context *ctx, .data = wep_cmd, .flags = CMD_SYNC, }; +bool not_empty = false;might_sleep ();
@@ -2825,24 +2826,23 @@ il4965_static_wepkey_cmd(struct il_priv *il, struct il_rxon_context *ctx, cmd_size + (sizeof(struct il_wep_key) * WEP_KEYS_MAX));for (i =0 ; i <WEP_KEYS_MAX ; i++) { +u8 key_size = il->_4965.wep_keys[i].key_size; + wep_cmd->key[i].key_idx = i; -if (ctx->wep_keys[i].key_size) { +if (key_size) { wep_cmd->key[i].key_offset = i; - not_empty =1 ; - }else { + not_empty = true; + }else wep_cmd->key[i].key_offset =WEP_INVALID_OFFSET ; - } - wep_cmd->key[i].key_size = ctx->wep_keys[i].key_size; -memcpy (&wep_cmd->key[i].key[3 ], ctx->wep_keys[i].key, - ctx->wep_keys[i].key_size); + wep_cmd->key[i].key_size = key_size; +memcpy (&wep_cmd->key[i].key[3 ], il->_4965.wep_keys[i].key, key_size); } wep_cmd->global_key_type =WEP_KEY_WEP_TYPE ; wep_cmd->num_keys =WEP_KEYS_MAX ; cmd_size +=sizeof (struct il_wep_key ) *WEP_KEYS_MAX ; - cmd.len = cmd_size;if (not_empty || send_if_empty)
@@ -2864,19 +2864,20 @@ il4965_remove_default_wep_key(struct il_priv *il, struct il_rxon_context *ctx, struct ieee80211_key_conf *keyconf) {int ret; +int idx = keyconf->keyidx;lockdep_assert_held (&il->mutex); -D_WEP ("Removing default WEP key: idx=%d\n" , keyconf->keyidx); +D_WEP ("Removing default WEP key: idx=%d\n" , idx); -memset (&ctx->wep_keys[keyconf->keyidx],0 ,sizeof (ctx->wep_keys[0 ])); +memset (&il->_4965.wep_keys[idx],0 ,sizeof (struct il_wep_key ));if (il_is_rfkill (il)) {D_WEP ("Not sending C_WEPKEY command due to RFKILL.\n" );/* but keys in device are clear anyway so return success */ return 0 ; } ret =il4965_static_wepkey_cmd (il, ctx,1 ); -D_WEP ("Remove default WEP key: idx=%d ret=%d\n" , keyconf->keyidx, ret); +D_WEP ("Remove default WEP key: idx=%d ret=%d\n" , idx, ret);return ret; }
@@ -2886,11 +2887,12 @@ il4965_set_default_wep_key(struct il_priv *il, struct il_rxon_context *ctx, struct ieee80211_key_conf *keyconf) {int ret; +int len = keyconf->keylen; +int idx = keyconf->keyidx;lockdep_assert_held (&il->mutex); -if (keyconf->keylen !=WEP_KEY_LEN_128 && - keyconf->keylen !=WEP_KEY_LEN_64 ) { +if (len !=WEP_KEY_LEN_128 && len !=WEP_KEY_LEN_64 ) {D_WEP ("Bad WEP key length %d\n" , keyconf->keylen);return -EINVAL ; }
@@ -2899,14 +2901,12 @@ il4965_set_default_wep_key(struct il_priv *il, struct il_rxon_context *ctx, keyconf->hw_key_idx =HW_KEY_DEFAULT ; il->stations[IL_AP_ID ].keyinfo.cipher = keyconf->cipher; - ctx->wep_keys[keyconf->keyidx].key_size = keyconf->keylen; -memcpy (&ctx->wep_keys[keyconf->keyidx].key, &keyconf->key, - keyconf->keylen); + il->_4965.wep_keys[idx].key_size = len; +memcpy (&il->_4965.wep_keys[idx].key, &keyconf->key, len); ret =il4965_static_wepkey_cmd (il, ctx, false); -D_WEP ("Set default WEP key: len=%d idx=%d ret=%d\n" , keyconf->keylen, - keyconf->keyidx, ret); +D_WEP ("Set default WEP key: len=%d idx=%d ret=%d\n" , len, idx, ret);return ret; }
@@ -3106,7 +3106,7 @@ il4965_remove_dynamic_key(struct il_priv *il, struct il_rxon_context *ctx,lockdep_assert_held (&il->mutex); - ctx->key_mapping_keys--; + il->_4965.key_mapping_keys--;spin_lock_irqsave (&il->sta_lock, flags); key_flags =le16_to_cpu (il->stations[sta_id].sta.key.key_flags);
@@ -3164,7 +3164,7 @@ il4965_set_dynamic_key(struct il_priv *il, struct il_rxon_context *ctx,lockdep_assert_held (&il->mutex); - ctx->key_mapping_keys++; + il->_4965.key_mapping_keys++; keyconf->hw_key_idx =HW_KEY_DYNAMIC ;switch (keyconf->cipher) {
@@ -5067,6 +5067,20 @@ __il4965_down(struct il_priv *il)del_timer_sync (&il->watchdog);il_clear_ucode_stations (il,NULL ); + +/* FIXME: race conditions ? */ +spin_lock_irq (&il->sta_lock); +/* +* Remove all key information that is not stored as part +* of station information since mac80211 may not have had +* a chance to remove all the keys. When device is +* reconfigured by mac80211 after an error all keys will +* be reconfigured. +*/ +memset (il->_4965.wep_keys,0 ,sizeof (il->_4965.wep_keys)); + il->_4965.key_mapping_keys =0 ; +spin_unlock_irq (&il->sta_lock); +il_dealloc_bcast_stations (il);il_clear_driver_stations (il);
@@ -5613,7 +5627,7 @@ il4965_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,if ((key->cipher ==WLAN_CIPHER_SUITE_WEP40 || key->cipher ==WLAN_CIPHER_SUITE_WEP104 ) && !sta) {if (cmd ==SET_KEY ) - is_default_wep_key = !ctx->key_mapping_keys; + is_default_wep_key = !il->_4965.key_mapping_keys;else is_default_wep_key = (key->hw_key_idx ==HW_KEY_DEFAULT );
drivers/net/wireless/iwlegacy/common.h +3 -16
@@ -1169,9 +1169,6 @@ struct il_rxon_context {struct il_qos_info qos_data; -struct il_wep_key wep_keys[WEP_KEYS_MAX ]; -u8 key_mapping_keys; -__le32 station_flags;struct {
@@ -1417,6 +1414,9 @@ struct il_priv {u8 phy_calib_chain_noise_reset_cmd;u8 phy_calib_chain_noise_gain_cmd; +u8 key_mapping_keys; +struct il_wep_key wep_keys[WEP_KEYS_MAX ]; +struct il_notif_stats stats;#ifdef CONFIG_IWLEGACY_DEBUGFS struct il_notif_stats accum_stats;
@@ -2318,24 +2318,11 @@ static inline void il_clear_driver_stations(struct il_priv *il) {unsigned long flags; -struct il_rxon_context *ctx = &il->ctx;spin_lock_irqsave (&il->sta_lock, flags);memset (il->stations,0 ,sizeof (il->stations)); il->num_stations =0 ; - il->ucode_key_table =0 ; - -/* -* Remove all key information that is not stored as part -* of station information since mac80211 may not have had -* a chance to remove all the keys. When device is -* reconfigured by mac80211 after an error all keys will -* be reconfigured. -*/ -memset (ctx->wep_keys,0 ,sizeof (ctx->wep_keys)); - ctx->key_mapping_keys =0 ; -spin_unlock_irqrestore (&il->sta_lock, flags); }
Signature · 1 line
1.7.1
PATCH 13/25 iwlegacy: get rid of ctx->station_flags
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/common.c | 2 +- drivers/net/wireless/iwlegacy/common.h | 2 -- 2 files changed, 1 insertions(+), 3 deletions(-)
drivers/net/wireless/iwlegacy/common.c +1 -1
@@ -1950,7 +1950,7 @@ il_prep_station(struct il_priv *il, struct il_rxon_context *ctx,memcpy (station->sta.sta.addr, addr,ETH_ALEN ); station->sta.mode =0 ; station->sta.sta.sta_id = sta_id; - station->sta.station_flags = ctx->station_flags; + station->sta.station_flags =0 ;if (sta) {struct il_station_priv_common *sta_priv;
drivers/net/wireless/iwlegacy/common.h +0 -2
@@ -1169,8 +1169,6 @@ struct il_rxon_context {struct il_qos_info qos_data; -__le32 station_flags; -struct {bool non_gf_sta_present;u8 protection;
Signature · 1 line
1.7.1
PATCH 14/25 iwlegacy: remove ctx interface_modes
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/3945-mac.c | 6 ++---- drivers/net/wireless/iwlegacy/4965-mac.c | 6 ++---- drivers/net/wireless/iwlegacy/common.c | 29 ++++------------------------- drivers/net/wireless/iwlegacy/common.h | 2 -- drivers/net/wireless/rt2x00/rt2800usb.c | 16 ++-------------- 5 files changed, 10 insertions(+), 49 deletions(-)
drivers/net/wireless/iwlegacy/3945-mac.c +2 -4
@@ -3557,7 +3557,8 @@ il3945_setup_mac(struct il_priv *il)/* Tell mac80211 our characteristics */ hw->flags =IEEE80211_HW_SIGNAL_DBM |IEEE80211_HW_SPECTRUM_MGMT ; - hw->wiphy->interface_modes = il->ctx.interface_modes; + hw->wiphy->interface_modes = +BIT (NL80211_IFTYPE_STATION ) |BIT (NL80211_IFTYPE_ADHOC ); hw->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY | WIPHY_FLAG_DISABLE_BEACON_HINTS |
@@ -3617,9 +3618,6 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->cmd_queue =IL39_CMD_QUEUE_NUM ; - il->ctx.interface_modes = -BIT (NL80211_IFTYPE_STATION ) |BIT (NL80211_IFTYPE_ADHOC ); -/* * Disabling hardware scan means that mac80211 will perform scans * "the hard way", rather than using device's scan.
drivers/net/wireless/iwlegacy/4965-mac.c +2 -4
@@ -5454,8 +5454,8 @@ il4965_mac_setup_register(struct il_priv *il, u32 max_probe_length) hw->sta_data_size =sizeof (struct il_station_priv ); hw->vif_data_size =sizeof (struct il_vif_priv ); - hw->wiphy->interface_modes |= il->ctx.interface_modes; - hw->wiphy->interface_modes |= il->ctx.exclusive_interface_modes; + hw->wiphy->interface_modes = +BIT (NL80211_IFTYPE_STATION ) |BIT (NL80211_IFTYPE_ADHOC ); hw->wiphy->flags |=WIPHY_FLAG_CUSTOM_REGULATORY |WIPHY_FLAG_DISABLE_BEACON_HINTS ;
@@ -6141,8 +6141,6 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.is_active = true; il->ctx.ac_to_fifo = il4965_bss_ac_to_fifo; il->ctx.ac_to_queue = il4965_bss_ac_to_queue; - il->ctx.exclusive_interface_modes =BIT (NL80211_IFTYPE_ADHOC ); - il->ctx.interface_modes =BIT (NL80211_IFTYPE_STATION );SET_IEEE80211_DEV (hw, &pdev->dev);
drivers/net/wireless/iwlegacy/common.c +4 -25
@@ -4566,7 +4566,6 @@ il_mac_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)struct il_priv *il = hw->priv;struct il_vif_priv *vif_priv = (void *)vif->drv_priv;int err; -u32 modes;D_MAC80211 ("enter: type %d, addr %pM\n" , vif->type, vif->addr);
@@ -4578,15 +4577,7 @@ il_mac_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif) goto out; } -/* check if busy context is exclusive */ -if (il->ctx.vif && - (il->ctx.exclusive_interface_modes &BIT (il->ctx.vif->type))) { - err = -EINVAL ; - goto out; - } - - modes = il->ctx.interface_modes | il->ctx.exclusive_interface_modes; -if (!(modes &BIT (vif->type))) { +if (il->ctx.vif) { err = -EOPNOTSUPP ; goto out; }
@@ -4979,10 +4970,10 @@ il_mac_change_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif, {struct il_priv *il = hw->priv;struct il_rxon_context *ctx =il_rxon_ctx_from_vif (vif); -u32 modes;int err; - newtype =ieee80211_iftype_p2p (newtype, newp2p); +if (newp2p) +return -EOPNOTSUPP ;mutex_lock (&il->mutex);
@@ -4995,22 +4986,10 @@ il_mac_change_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif, goto out; } - modes = ctx->interface_modes | ctx->exclusive_interface_modes; -if (!(modes &BIT (newtype))) { - err = -EOPNOTSUPP ; - goto out; - } - -if ((il->ctx.exclusive_interface_modes &BIT (il->ctx.vif->type)) || - (il->ctx.exclusive_interface_modes &BIT (newtype))) { - err = -EINVAL ; - goto out; - } -/* success */ il_teardown_interface (il, vif, true); vif->type = newtype; - vif->p2p = newp2p; + vif->p2p = false; err =il_setup_interface (il, ctx);WARN_ON (err);/*
drivers/net/wireless/iwlegacy/common.h +0 -2
@@ -1165,8 +1165,6 @@ struct il_rxon_context {*/ bool always_active, is_active; -u32 interface_modes, exclusive_interface_modes; -struct il_qos_info qos_data;struct {
drivers/net/wireless/rt2x00/rt2800usb.c +2 -14
@@ -272,17 +272,6 @@ static void rt2800usb_disable_radio(struct rt2x00_dev *rt2x00dev)rt2x00usb_disable_radio (rt2x00dev); } -static int rt2800usb_set_state (struct rt2x00_dev *rt2x00dev, -enum dev_state state) -{ -if (state ==STATE_AWAKE ) -rt2800_mcu_request (rt2x00dev,MCU_WAKEUP ,0xff ,0 ,2 ); -else -rt2800_mcu_request (rt2x00dev,MCU_SLEEP ,0xff ,0xff ,2 ); - -return 0 ; -} -static int rt2800usb_set_device_state (struct rt2x00_dev *rt2x00dev,enum dev_state state) {
@@ -295,7 +284,7 @@ static int rt2800usb_set_device_state(struct rt2x00_dev *rt2x00dev,* to be woken up. After that it needs a bit of time * to be fully awake and then the radio can be enabled. */ -rt2800usb_set_state (rt2x00dev,STATE_AWAKE ); +rt2800_mcu_request (rt2x00dev,MCU_WAKEUP ,0xff ,0 ,0 );msleep (1 ); retval =rt2800usb_enable_radio (rt2x00dev);break ;
@@ -305,7 +294,6 @@ static int rt2800usb_set_device_state(struct rt2x00_dev *rt2x00dev,* be put to sleep for powersaving. */ rt2800usb_disable_radio (rt2x00dev); -rt2800usb_set_state (rt2x00dev,STATE_SLEEP );break ;case STATE_RADIO_IRQ_ON :case STATE_RADIO_IRQ_OFF :
@@ -315,7 +303,7 @@ static int rt2800usb_set_device_state(struct rt2x00_dev *rt2x00dev,case STATE_SLEEP :case STATE_STANDBY :case STATE_AWAKE : - retval =rt2800usb_set_state (rt2x00dev, state); +rt2800_mcu_request (rt2x00dev,MCU_SLEEP ,0xff ,0xff ,2 );break ;default : retval = -ENOTSUPP ;
Signature · 1 line
1.7.1
Re: [PATCH 14/25] iwlegacy: remove ctx interface_modes
Hi Stanislaw,
Quoted 9 lines · Stanislaw Gruszka
Signed-off-by Stanislaw Gruszka <[email protected]>---
drivers/net/wireless/iwlegacy/3945-mac.c | 6 ++---- drivers/net/wireless/iwlegacy/4965-mac.c | 6 ++---- drivers/net/wireless/iwlegacy/common.c | 29 ++++------------------------- drivers/net/wireless/iwlegacy/common.h | 2 -- drivers/net/wireless/rt2x00/rt2800usb.c | 16 ++-------------- 5 files changed, 10 insertions(+), 49 deletions(-)
There's a change to rt2800usb here that doesn't belong here.
Quoted 182 lines
drivers/net/wireless/iwlegacy/3945-mac.c +2
-4@@ -3557,7 +3557,8 @@ il3945_setup_mac(struct il_priv *il)/* Tell mac80211 our characteristics */ hw->flags =IEEE80211_HW_SIGNAL_DBM |IEEE80211_HW_SPECTRUM_MGMT ; - hw->wiphy->interface_modes = il->ctx.interface_modes; + hw->wiphy->interface_modes = +BIT (NL80211_IFTYPE_STATION ) |BIT (NL80211_IFTYPE_ADHOC ); hw->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY | WIPHY_FLAG_DISABLE_BEACON_HINTS |@@ -3617,9 +3618,6 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->cmd_queue =IL39_CMD_QUEUE_NUM ; - il->ctx.interface_modes = -BIT (NL80211_IFTYPE_STATION ) |BIT (NL80211_IFTYPE_ADHOC ); -/* * Disabling hardware scan means that mac80211 will perform scans * "the hard way", rather than using device's scan. drivers/net/wireless/iwlegacy/4965-mac.c +2
-4@@ -5454,8 +5454,8 @@ il4965_mac_setup_register(struct il_priv *il, u32 max_probe_length) hw->sta_data_size =sizeof (struct il_station_priv ); hw->vif_data_size =sizeof (struct il_vif_priv ); - hw->wiphy->interface_modes |= il->ctx.interface_modes; - hw->wiphy->interface_modes |= il->ctx.exclusive_interface_modes; + hw->wiphy->interface_modes = +BIT (NL80211_IFTYPE_STATION ) |BIT (NL80211_IFTYPE_ADHOC ); hw->wiphy->flags |=WIPHY_FLAG_CUSTOM_REGULATORY |WIPHY_FLAG_DISABLE_BEACON_HINTS ;@@ -6141,8 +6141,6 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.is_active = true; il->ctx.ac_to_fifo = il4965_bss_ac_to_fifo; il->ctx.ac_to_queue = il4965_bss_ac_to_queue; - il->ctx.exclusive_interface_modes =BIT (NL80211_IFTYPE_ADHOC ); - il->ctx.interface_modes =BIT (NL80211_IFTYPE_STATION );SET_IEEE80211_DEV (hw, &pdev->dev);drivers/net/wireless/iwlegacy/common.c +4
-25@@ -4566,7 +4566,6 @@ il_mac_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)struct il_priv *il = hw->priv;struct il_vif_priv *vif_priv = (void *)vif->drv_priv;int err; -u32 modes;D_MAC80211 ("enter: type %d, addr %pM\n" , vif->type, vif->addr);@@ -4578,15 +4577,7 @@ il_mac_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif) goto out; } -/* check if busy context is exclusive */ -if (il->ctx.vif && - (il->ctx.exclusive_interface_modes &BIT (il->ctx.vif->type))) { - err = -EINVAL ; - goto out; - } - - modes = il->ctx.interface_modes | il->ctx.exclusive_interface_modes; -if (!(modes &BIT (vif->type))) { +if (il->ctx.vif) { err = -EOPNOTSUPP ; goto out; }@@ -4979,10 +4970,10 @@ il_mac_change_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif, {struct il_priv *il = hw->priv;struct il_rxon_context *ctx =il_rxon_ctx_from_vif (vif); -u32 modes;int err; - newtype =ieee80211_iftype_p2p (newtype, newp2p); +if (newp2p) +return -EOPNOTSUPP ;mutex_lock (&il->mutex);@@ -4995,22 +4986,10 @@ il_mac_change_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif, goto out; } - modes = ctx->interface_modes | ctx->exclusive_interface_modes; -if (!(modes &BIT (newtype))) { - err = -EOPNOTSUPP ; - goto out; - } - -if ((il->ctx.exclusive_interface_modes &BIT (il->ctx.vif->type)) || - (il->ctx.exclusive_interface_modes &BIT (newtype))) { - err = -EINVAL ; - goto out; - } -/* success */ il_teardown_interface (il, vif, true); vif->type = newtype; - vif->p2p = newp2p; + vif->p2p = false; err =il_setup_interface (il, ctx);WARN_ON (err);/* drivers/net/wireless/iwlegacy/common.h +0
-2@@ -1165,8 +1165,6 @@ struct il_rxon_context {*/ bool always_active, is_active; -u32 interface_modes, exclusive_interface_modes; -struct il_qos_info qos_data;struct {drivers/net/wireless/rt2x00/rt2800usb.c +2
-14@@ -272,17 +272,6 @@ static void rt2800usb_disable_radio(struct rt2x00_dev *rt2x00dev)rt2x00usb_disable_radio (rt2x00dev); } -static int rt2800usb_set_state (struct rt2x00_dev *rt2x00dev, -enum dev_state state) -{ -if (state ==STATE_AWAKE ) -rt2800_mcu_request (rt2x00dev,MCU_WAKEUP ,0xff ,0 ,2 ); -else -rt2800_mcu_request (rt2x00dev,MCU_SLEEP ,0xff ,0xff ,2 ); - -return 0 ; -} -static int rt2800usb_set_device_state (struct rt2x00_dev *rt2x00dev,enum dev_state state) {@@ -295,7 +284,7 @@ static int rt2800usb_set_device_state(struct rt2x00_dev *rt2x00dev,* to be woken up. After that it needs a bit of time * to be fully awake and then the radio can be enabled. */ -rt2800usb_set_state (rt2x00dev,STATE_AWAKE ); +rt2800_mcu_request (rt2x00dev,MCU_WAKEUP ,0xff ,0 ,0 );msleep (1 ); retval =rt2800usb_enable_radio (rt2x00dev);break ;@@ -305,7 +294,6 @@ static int rt2800usb_set_device_state(struct rt2x00_dev *rt2x00dev,* be put to sleep for powersaving. */ rt2800usb_disable_radio (rt2x00dev); -rt2800usb_set_state (rt2x00dev,STATE_SLEEP );break ;case STATE_RADIO_IRQ_ON :case STATE_RADIO_IRQ_OFF :@@ -315,7 +303,7 @@ static int rt2800usb_set_device_state(struct rt2x00_dev *rt2x00dev,case STATE_SLEEP :case STATE_STANDBY :case STATE_AWAKE : - retval =rt2800usb_set_state (rt2x00dev, state); +rt2800_mcu_request (rt2x00dev,MCU_SLEEP ,0xff ,0xff ,2 );break ;default : retval = -ENOTSUPP ;Signature · 6 lines
1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 14/25] iwlegacy: remove ctx interface_modes
Quoted 12 lines · Gertjan van Wingerde
Quoted 9 lines · Stanislaw Gruszka
Signed-off-by Stanislaw Gruszka <[email protected]>---
drivers/net/wireless/iwlegacy/3945-mac.c | 6 ++---- drivers/net/wireless/iwlegacy/4965-mac.c | 6 ++---- drivers/net/wireless/iwlegacy/common.c | 29 ++++------------------------- drivers/net/wireless/iwlegacy/common.h | 2 -- drivers/net/wireless/rt2x00/rt2800usb.c | 16 ++-------------- 5 files changed, 10 insertions(+), 49 deletions(-)
Quoted 1 line
There's a change to rt2800usb here that doesn't belong here.
Thank you very much Gertjan! I guess I should not work on many things at once ...
PATCH v2 14/25 iwlegacy: remove ctx interface_modes
In reply to Stanislaw Gruszka---
v2 does not contain rt2x00 changes
drivers/net/wireless/iwlegacy/3945-mac.c | 6 ++---- drivers/net/wireless/iwlegacy/4965-mac.c | 6 ++---- drivers/net/wireless/iwlegacy/common.c | 29 ++++------------------------- drivers/net/wireless/iwlegacy/common.h | 2 -- 4 files changed, 8 insertions(+), 35 deletions(-)
drivers/net/wireless/iwlegacy/3945-mac.c +2 -4
@@ -3557,7 +3557,8 @@ il3945_setup_mac(struct il_priv *il)/* Tell mac80211 our characteristics */ hw->flags =IEEE80211_HW_SIGNAL_DBM |IEEE80211_HW_SPECTRUM_MGMT ; - hw->wiphy->interface_modes = il->ctx.interface_modes; + hw->wiphy->interface_modes = +BIT (NL80211_IFTYPE_STATION ) |BIT (NL80211_IFTYPE_ADHOC ); hw->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY | WIPHY_FLAG_DISABLE_BEACON_HINTS |
@@ -3617,9 +3618,6 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->cmd_queue =IL39_CMD_QUEUE_NUM ; - il->ctx.interface_modes = -BIT (NL80211_IFTYPE_STATION ) |BIT (NL80211_IFTYPE_ADHOC ); -/* * Disabling hardware scan means that mac80211 will perform scans * "the hard way", rather than using device's scan.
drivers/net/wireless/iwlegacy/4965-mac.c +2 -4
@@ -5454,8 +5454,8 @@ il4965_mac_setup_register(struct il_priv *il, u32 max_probe_length) hw->sta_data_size =sizeof (struct il_station_priv ); hw->vif_data_size =sizeof (struct il_vif_priv ); - hw->wiphy->interface_modes |= il->ctx.interface_modes; - hw->wiphy->interface_modes |= il->ctx.exclusive_interface_modes; + hw->wiphy->interface_modes = +BIT (NL80211_IFTYPE_STATION ) |BIT (NL80211_IFTYPE_ADHOC ); hw->wiphy->flags |=WIPHY_FLAG_CUSTOM_REGULATORY |WIPHY_FLAG_DISABLE_BEACON_HINTS ;
@@ -6141,8 +6141,6 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.is_active = true; il->ctx.ac_to_fifo = il4965_bss_ac_to_fifo; il->ctx.ac_to_queue = il4965_bss_ac_to_queue; - il->ctx.exclusive_interface_modes =BIT (NL80211_IFTYPE_ADHOC ); - il->ctx.interface_modes =BIT (NL80211_IFTYPE_STATION );SET_IEEE80211_DEV (hw, &pdev->dev);
drivers/net/wireless/iwlegacy/common.c +4 -25
@@ -4566,7 +4566,6 @@ il_mac_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif)struct il_priv *il = hw->priv;struct il_vif_priv *vif_priv = (void *)vif->drv_priv;int err; -u32 modes;D_MAC80211 ("enter: type %d, addr %pM\n" , vif->type, vif->addr);
@@ -4578,15 +4577,7 @@ il_mac_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif) goto out; } -/* check if busy context is exclusive */ -if (il->ctx.vif && - (il->ctx.exclusive_interface_modes &BIT (il->ctx.vif->type))) { - err = -EINVAL ; - goto out; - } - - modes = il->ctx.interface_modes | il->ctx.exclusive_interface_modes; -if (!(modes &BIT (vif->type))) { +if (il->ctx.vif) { err = -EOPNOTSUPP ; goto out; }
@@ -4979,10 +4970,10 @@ il_mac_change_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif, {struct il_priv *il = hw->priv;struct il_rxon_context *ctx =il_rxon_ctx_from_vif (vif); -u32 modes;int err; - newtype =ieee80211_iftype_p2p (newtype, newp2p); +if (newp2p) +return -EOPNOTSUPP ;mutex_lock (&il->mutex);
@@ -4995,22 +4986,10 @@ il_mac_change_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif, goto out; } - modes = ctx->interface_modes | ctx->exclusive_interface_modes; -if (!(modes &BIT (newtype))) { - err = -EOPNOTSUPP ; - goto out; - } - -if ((il->ctx.exclusive_interface_modes &BIT (il->ctx.vif->type)) || - (il->ctx.exclusive_interface_modes &BIT (newtype))) { - err = -EINVAL ; - goto out; - } -/* success */ il_teardown_interface (il, vif, true); vif->type = newtype; - vif->p2p = newp2p; + vif->p2p = false; err =il_setup_interface (il, ctx);WARN_ON (err);/*
drivers/net/wireless/iwlegacy/common.h +0 -2
@@ -1165,8 +1165,6 @@ struct il_rxon_context {*/ bool always_active, is_active; -u32 interface_modes, exclusive_interface_modes; -struct il_qos_info qos_data;struct {
Signature · 1 line
1.7.1
PATCH 15/25 iwlegacy: move qos_data out of ctx structure
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/common.c | 24 ++++++++++++------------ drivers/net/wireless/iwlegacy/common.h | 4 ++-- drivers/net/wireless/iwlegacy/debug.c | 8 ++++---- 3 files changed, 18 insertions(+), 18 deletions(-)
drivers/net/wireless/iwlegacy/common.c +12 -12
@@ -4496,15 +4496,15 @@ il_mac_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif, u16 queue,spin_lock_irqsave (&il->lock, flags); - il->ctx.qos_data.def_qos_parm.ac[q].cw_min = + il->qos_data.def_qos_parm.ac[q].cw_min =cpu_to_le16 (params->cw_min); - il->ctx.qos_data.def_qos_parm.ac[q].cw_max = + il->qos_data.def_qos_parm.ac[q].cw_max =cpu_to_le16 (params->cw_max); - il->ctx.qos_data.def_qos_parm.ac[q].aifsn = params->aifs; - il->ctx.qos_data.def_qos_parm.ac[q].edca_txop = + il->qos_data.def_qos_parm.ac[q].aifsn = params->aifs; + il->qos_data.def_qos_parm.ac[q].edca_txop =cpu_to_le16 ((params->txop *32 )); - il->ctx.qos_data.def_qos_parm.ac[q].reserved1 =0 ; + il->qos_data.def_qos_parm.ac[q].reserved1 =0 ;spin_unlock_irqrestore (&il->lock, flags);
@@ -5230,20 +5230,20 @@ il_update_qos(struct il_priv *il, struct il_rxon_context *ctx)if (!ctx->is_active)return ; - ctx->qos_data.def_qos_parm.qos_flags =0 ; + il->qos_data.def_qos_parm.qos_flags =0 ; -if (ctx->qos_data.qos_active) - ctx->qos_data.def_qos_parm.qos_flags |= +if (il->qos_data.qos_active) + il->qos_data.def_qos_parm.qos_flags |=QOS_PARAM_FLG_UPDATE_EDCA_MSK ;if (ctx->ht.enabled) - ctx->qos_data.def_qos_parm.qos_flags |=QOS_PARAM_FLG_TGN_MSK ; + il->qos_data.def_qos_parm.qos_flags |=QOS_PARAM_FLG_TGN_MSK ;D_QOS ("send QoS cmd with Qos active=%d FLAGS=0x%X\n" , - ctx->qos_data.qos_active, ctx->qos_data.def_qos_parm.qos_flags); + il->qos_data.qos_active, il->qos_data.def_qos_parm.qos_flags);il_send_cmd_pdu_async (il,C_QOS_PARAM ,sizeof (struct il_qosparam_cmd ), - &ctx->qos_data.def_qos_parm,NULL ); + &il->qos_data.def_qos_parm,NULL ); }/**
@@ -5596,7 +5596,7 @@ il_mac_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,unsigned long flags;spin_lock_irqsave (&il->lock, flags); - ctx->qos_data.qos_active = bss_conf->qos; + il->qos_data.qos_active = bss_conf->qos;il_update_qos (il, ctx);spin_unlock_irqrestore (&il->lock, flags); }
drivers/net/wireless/iwlegacy/common.h +2 -2
@@ -1165,8 +1165,6 @@ struct il_rxon_context {*/ bool always_active, is_active; -struct il_qos_info qos_data; -struct {bool non_gf_sta_present;u8 protection;
@@ -1278,6 +1276,8 @@ struct il_priv {struct il_rxon_context ctx; +struct il_qos_info qos_data; +/* * We declare this const so it can only be * changed via explicit cast within the
drivers/net/wireless/iwlegacy/debug.c +4 -4
@@ -657,10 +657,10 @@ il_dbgfs_qos_read(struct file *file, char __user *user_buf, size_t count, pos +=scnprintf (buf + pos, bufsz - pos,"AC[%d]\t%u\t%u\t%u\t%u\n" , i, - ctx->qos_data.def_qos_parm.ac[i].cw_min, - ctx->qos_data.def_qos_parm.ac[i].cw_max, - ctx->qos_data.def_qos_parm.ac[i].aifsn, - ctx->qos_data.def_qos_parm.ac[i].edca_txop); + il->qos_data.def_qos_parm.ac[i].cw_min, + il->qos_data.def_qos_parm.ac[i].cw_max, + il->qos_data.def_qos_parm.ac[i].aifsn, + il->qos_data.def_qos_parm.ac[i].edca_txop); }return simple_read_from_buffer (user_buf, count, ppos, buf, pos);
Signature · 1 line
1.7.1
PATCH 16/25 iwlegacy: move ht out of ctx structure
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/4965-mac.c | 18 +++++----- drivers/net/wireless/iwlegacy/4965-rs.c | 13 +++----- drivers/net/wireless/iwlegacy/common.c | 49 ++++++++++++++--------------- drivers/net/wireless/iwlegacy/common.h | 15 +++++---- 4 files changed, 46 insertions(+), 49 deletions(-)
drivers/net/wireless/iwlegacy/4965-mac.c +9 -9
@@ -5793,23 +5793,23 @@ il4965_mac_channel_switch(struct ieee80211_hw *hw, il->current_ht_config.smps = conf->smps_mode;/* Configure HT40 channels */ - ctx->ht.enabled =conf_is_ht (conf); -if (ctx->ht.enabled) { + il->ht.enabled =conf_is_ht (conf); +if (il->ht.enabled) {if (conf_is_ht40_minus (conf)) { - ctx->ht.extension_chan_offset = + il->ht.extension_chan_offset =IEEE80211_HT_PARAM_CHA_SEC_BELOW ; - ctx->ht.is_40mhz = true; + il->ht.is_40mhz = true; }else if (conf_is_ht40_plus (conf)) { - ctx->ht.extension_chan_offset = + il->ht.extension_chan_offset =IEEE80211_HT_PARAM_CHA_SEC_ABOVE ; - ctx->ht.is_40mhz = true; + il->ht.is_40mhz = true; }else { - ctx->ht.extension_chan_offset = + il->ht.extension_chan_offset =IEEE80211_HT_PARAM_CHA_SEC_NONE ; - ctx->ht.is_40mhz = false; + il->ht.is_40mhz = false; } }else - ctx->ht.is_40mhz = false; + il->ht.is_40mhz = false;if ((le16_to_cpu (il->staging.channel) != ch)) il->staging.flags =0 ;
drivers/net/wireless/iwlegacy/4965-rs.c +5 -8
@@ -641,13 +641,10 @@ il4965_rs_toggle_antenna(u32 valid_ant, u32 *rate_n_flags,* there are no non-GF stations present in the BSS. */ static bool -il4965_rs_use_green (struct ieee80211_sta *sta) +il4965_rs_use_green (struct il_priv *il,struct ieee80211_sta *sta) { -struct il_station_priv *sta_priv = (void *)sta->drv_priv; -struct il_rxon_context *ctx = sta_priv->common.ctx; -return (sta->ht_cap.cap &IEEE80211_HT_CAP_GRN_FLD ) && - !(ctx->ht.non_gf_sta_present); + !il->ht.non_gf_sta_present; }/**
@@ -1815,7 +1812,7 @@ il4965_rs_rate_scale_perform(struct il_priv *il, struct sk_buff *skb,if (is_legacy (tbl->lq_type)) lq_sta->is_green =0 ;else - lq_sta->is_green =il4965_rs_use_green (sta); + lq_sta->is_green =il4965_rs_use_green (il, sta); is_green = lq_sta->is_green;/* current tx rate */
@@ -2166,7 +2163,7 @@ il4965_rs_initialize_lq(struct il_priv *il, struct ieee80211_conf *conf,int rate_idx;int i;u32 rate; -u8 use_green =il4965_rs_use_green (sta); +u8 use_green =il4965_rs_use_green (il, sta);u8 active_tbl =0 ;u8 valid_tx_ant;struct il_station_priv *sta_priv;
@@ -2341,7 +2338,7 @@ il4965_rs_rate_init(struct il_priv *il, struct ieee80211_sta *sta, u8 sta_id) lq_sta->is_dup =0 ; lq_sta->max_rate_idx =-1 ; lq_sta->missed_rate_counter =IL_MISSED_RATE_MAX ; - lq_sta->is_green =il4965_rs_use_green (sta); + lq_sta->is_green =il4965_rs_use_green (il, sta); lq_sta->active_legacy_rate = il->active_rate & ~(0x1000 ); lq_sta->band = il->band;/*
drivers/net/wireless/iwlegacy/common.c +24 -25
138 lines not on this page · raw message
drivers/net/wireless/iwlegacy/common.h +8 -7
@@ -1164,13 +1164,6 @@ struct il_rxon_context {* we already removed the vif for type setting. */ bool always_active, is_active; - -struct { -bool non_gf_sta_present; -u8 protection; -bool enabled, is_40mhz; -u8 extension_chan_offset; - } ht; };struct il_power_mgr {
@@ -1278,6 +1271,14 @@ struct il_priv {struct il_qos_info qos_data; +struct { +bool enabled; +bool is_40mhz; +bool non_gf_sta_present; +u8 protection; +u8 extension_chan_offset; + } ht; +/* * We declare this const so it can only be * changed via explicit cast within the
Signature · 1 line
1.7.1
PATCH 17/25 iwlegacy: get rid of ctx->ac_to_fifo
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/4965-mac.c | 17 ++++++++--------- drivers/net/wireless/iwlegacy/common.h | 1 - 2 files changed, 8 insertions(+), 10 deletions(-)
drivers/net/wireless/iwlegacy/4965-mac.c +8 -9
@@ -1458,8 +1458,15 @@ il4965_get_ac_from_tid(u16 tid)static inline int il4965_get_fifo_from_tid (struct il_rxon_context *ctx,u16 tid) { +const u8 ac_to_fifo[] = { +IL_TX_FIFO_VO , +IL_TX_FIFO_VI , +IL_TX_FIFO_BE , +IL_TX_FIFO_BK , + }; +if (likely (tid <ARRAY_SIZE (tid_to_ac))) -return ctx->ac_to_fifo[tid_to_ac[tid]]; +return ac_to_fifo[tid_to_ac[tid]];/* no support for TIDs 8-15 yet */ return -EINVAL ;
@@ -6104,13 +6111,6 @@ il4965_set_hw_params(struct il_priv *il)return il->cfg->ops->lib->set_hw_params (il); } -static const u8 il4965_bss_ac_to_fifo[] = { -IL_TX_FIFO_VO , -IL_TX_FIFO_VI , -IL_TX_FIFO_BE , -IL_TX_FIFO_BK , -}; -static const u8 il4965_bss_ac_to_queue[] = {0 ,1 ,2 ,3 , };
@@ -6139,7 +6139,6 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.always_active = true; il->ctx.is_active = true; - il->ctx.ac_to_fifo = il4965_bss_ac_to_fifo; il->ctx.ac_to_queue = il4965_bss_ac_to_queue;SET_IEEE80211_DEV (hw, &pdev->dev);
drivers/net/wireless/iwlegacy/common.h +0 -1
@@ -1155,7 +1155,6 @@ struct il_force_reset {struct il_rxon_context {struct ieee80211_vif *vif; -const u8 *ac_to_fifo;const u8 *ac_to_queue;/*
Signature · 1 line
1.7.1
PATCH 18/25 iwlegacy: get rid of ctx->ac_to_queue
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/4965-mac.c | 8 ++------ drivers/net/wireless/iwlegacy/common.h | 2 -- 2 files changed, 2 insertions(+), 8 deletions(-)
drivers/net/wireless/iwlegacy/4965-mac.c +2 -6
@@ -1718,7 +1718,8 @@ il4965_tx_skb(struct il_priv *il, struct sk_buff *skb)/* FIXME: remove me ? */ WARN_ON_ONCE (info->flags &IEEE80211_TX_CTL_SEND_AFTER_DTIM ); - txq_id = ctx->ac_to_queue[skb_get_queue_mapping (skb)]; +/* Access category (AC) is also the queue number */ + txq_id =skb_get_queue_mapping (skb);/* irqs already disabled/saved above when locking il->lock */ spin_lock (&il->sta_lock);
@@ -6111,10 +6112,6 @@ il4965_set_hw_params(struct il_priv *il)return il->cfg->ops->lib->set_hw_params (il); } -static const u8 il4965_bss_ac_to_queue[] = { -0 ,1 ,2 ,3 , -}; -static int il4965_pci_probe (struct pci_dev *pdev,const struct pci_device_id *ent) {
@@ -6139,7 +6136,6 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il->ctx.always_active = true; il->ctx.is_active = true; - il->ctx.ac_to_queue = il4965_bss_ac_to_queue;SET_IEEE80211_DEV (hw, &pdev->dev);
drivers/net/wireless/iwlegacy/common.h +0 -2
@@ -1155,8 +1155,6 @@ struct il_force_reset {struct il_rxon_context {struct ieee80211_vif *vif; -const u8 *ac_to_queue; -/* * We could use the vif to indicate active, but we * also need it to be active during disabling when
Signature · 1 line
1.7.1
PATCH 19/25 iwlegacy: get rid of ctx->is_active
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/4965-mac.c | 3 --- drivers/net/wireless/iwlegacy/4965.c | 3 --- drivers/net/wireless/iwlegacy/common.c | 21 +++------------------ drivers/net/wireless/iwlegacy/common.h | 7 ------- 4 files changed, 3 insertions(+), 31 deletions(-)
drivers/net/wireless/iwlegacy/4965-mac.c +0 -3
@@ -6134,9 +6134,6 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) il = hw->priv;/* At this point both hw and il are allocated. */ - il->ctx.always_active = true; - il->ctx.is_active = true; -SET_IEEE80211_DEV (hw, &pdev->dev);D_INFO ("*** LOAD DRIVER ***\n" );
drivers/net/wireless/iwlegacy/4965.c +0 -3
@@ -1419,9 +1419,6 @@ il4965_commit_rxon(struct il_priv *il, struct il_rxon_context *ctx)if (!il_is_alive (il))return -EBUSY ; -if (!ctx->is_active) -return 0 ; -/* always get timestamp with Rx frame */ il->staging.flags |=RXON_FLG_TSF2HOST_MSK ;
drivers/net/wireless/iwlegacy/common.c +3 -18
@@ -4537,7 +4537,6 @@ static int il_setup_interface(struct il_priv *il, struct il_rxon_context *ctx) { struct ieee80211_vif *vif = ctx->vif; -int err;lockdep_assert_held (&il->mutex);
@@ -4548,16 +4547,7 @@ il_setup_interface(struct il_priv *il, struct il_rxon_context *ctx)*/ il->iw_mode = vif->type; - ctx->is_active = true; - - err =il_set_mode (il, ctx); -if (err) { -if (!ctx->always_active) - ctx->is_active = false; -return err; - } - -return 0 ; +return il_set_mode (il, ctx); }int
@@ -4612,11 +4602,9 @@ il_teardown_interface(struct il_priv *il, struct ieee80211_vif *vif,il_force_scan_end (il); } -if (!mode_change) { +if (!mode_change)il_set_mode (il, ctx); -if (!ctx->always_active) - ctx->is_active = false; - } + }void
@@ -5227,9 +5215,6 @@ il_update_qos(struct il_priv *il, struct il_rxon_context *ctx)if (test_bit (S_EXIT_PENDING , &il->status))return ; -if (!ctx->is_active) -return ; - il->qos_data.def_qos_parm.qos_flags =0 ;if (il->qos_data.qos_active)
drivers/net/wireless/iwlegacy/common.h +0 -7
@@ -1154,13 +1154,6 @@ struct il_force_reset {struct il_rxon_context {struct ieee80211_vif *vif; - -/* -* We could use the vif to indicate active, but we -* also need it to be active during disabling when -* we already removed the vif for type setting. -*/ -bool always_active, is_active; };struct il_power_mgr {
Signature · 1 line
1.7.1
PATCH 20/25 iwlegacy: remove il_setup_interface()
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/common.c | 22 +++------------------- 1 files changed, 3 insertions(+), 19 deletions(-)
drivers/net/wireless/iwlegacy/common.c +3 -19
@@ -4533,23 +4533,6 @@ il_set_mode(struct il_priv *il, struct il_rxon_context *ctx)return il_commit_rxon (il, ctx); } -static int -il_setup_interface (struct il_priv *il,struct il_rxon_context *ctx) -{ -struct ieee80211_vif *vif = ctx->vif; - -lockdep_assert_held (&il->mutex); - -/* -* This variable will be correct only when there's just -* a single context, but all code using it is for hardware -* that supports only one context. -*/ - il->iw_mode = vif->type; - -return il_set_mode (il, ctx); -} -int il_mac_add_interface (struct ieee80211_hw *hw,struct ieee80211_vif *vif) {
@@ -4574,8 +4557,9 @@ il_mac_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif) vif_priv->ctx = &il->ctx; il->ctx.vif = vif; + il->iw_mode = vif->type; - err =il_setup_interface (il, &il->ctx); + err =il_set_mode (il, &il->ctx);if (err) { il->ctx.vif =NULL ; il->iw_mode =NL80211_IFTYPE_STATION ;
@@ -4978,7 +4962,7 @@ il_mac_change_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif,il_teardown_interface (il, vif, true); vif->type = newtype; vif->p2p = false; - err =il_setup_interface (il, ctx); + err =il_set_mode (il, ctx);WARN_ON (err);/* * We've switched internally, but submitting to the
Signature · 1 line
1.7.1
PATCH 21/25 iwlegacy: get rid of ctx structure
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/3945-mac.c | 67 +++++------ drivers/net/wireless/iwlegacy/3945-rs.c | 3 +- drivers/net/wireless/iwlegacy/3945.c | 23 ++-- drivers/net/wireless/iwlegacy/3945.h | 2 +- drivers/net/wireless/iwlegacy/4965-mac.c | 150 +++++++++------------- drivers/net/wireless/iwlegacy/4965-rs.c | 33 ++---- drivers/net/wireless/iwlegacy/4965.c | 62 +++++----- drivers/net/wireless/iwlegacy/4965.h | 19 ++-- drivers/net/wireless/iwlegacy/common.c | 199 ++++++++++++------------------ drivers/net/wireless/iwlegacy/common.h | 79 +++++-------- 10 files changed, 261 insertions(+), 376 deletions(-)
drivers/net/wireless/iwlegacy/3945-mac.c +30 -37
@@ -341,7 +341,7 @@ il3945_send_beacon_cmd(struct il_priv *il)return -ENOMEM ; } - rate =il_get_lowest_plcp (il, &il->ctx); + rate =il_get_lowest_plcp (il); frame_size =il3945_hw_get_beacon_cmd (il, frame, rate);
@@ -512,7 +512,7 @@ il3945_tx_skb(struct il_priv *il, struct sk_buff *skb) hdr_len =ieee80211_hdrlen (fc);/* Find idx into station table for destination station */ - sta_id =il_sta_id_or_broadcast (il, &il->ctx, info->control.sta); + sta_id =il_sta_id_or_broadcast (il, info->control.sta);if (sta_id ==IL_INVALID_STATION ) {D_DROP ("Dropping - INVALID STATION: %pM\n" , hdr->addr1); goto drop;
@@ -541,7 +541,6 @@ il3945_tx_skb(struct il_priv *il, struct sk_buff *skb)/* Set up driver data for this TFD */ memset (&(txq->txb[q->write_ptr]),0 ,sizeof (struct il_tx_info )); txq->txb[q->write_ptr].skb = skb; - txq->txb[q->write_ptr].ctx = &il->ctx;/* Init first empty entry in queue's array of Tx/cmd buffers */ out_cmd = txq->cmd[idx];
@@ -2208,7 +2207,7 @@ il3945_alive_start(struct il_priv *il) active_rxon->filter_flags &= ~RXON_FILTER_ASSOC_MSK ; }else {/* Initialize our rx_config data */ -il_connection_init_rx_config (il, &il->ctx); +il_connection_init_rx_config (il); }/* Configure Bluetooth device coexistence support */
@@ -2217,7 +2216,7 @@ il3945_alive_start(struct il_priv *il)set_bit (S_READY , &il->status);/* Configure the adapter for unassociated operation */ -il3945_commit_rxon (il, &il->ctx); +il3945_commit_rxon (il);il3945_reg_txpower_periodic (il);
@@ -2249,7 +2248,7 @@ __il3945_down(struct il_priv *il)del_timer_sync (&il->watchdog);/* Station information will now be cleared in device */ -il_clear_ucode_stations (il,NULL ); +il_clear_ucode_stations (il);il_dealloc_bcast_stations (il);il_clear_driver_stations (il);
@@ -2335,12 +2334,11 @@ il3945_down(struct il_priv *il)static int il3945_alloc_bcast_station (struct il_priv *il) { -struct il_rxon_context *ctx = &il->ctx;unsigned long flags;u8 sta_id;spin_lock_irqsave (&il->sta_lock, flags); - sta_id =il_prep_station (il, ctx, il_bcast_addr, false,NULL ); + sta_id =il_prep_station (il, il_bcast_addr, false,NULL );if (sta_id ==IL_INVALID_STATION ) {IL_ERR ("Unable to prepare broadcast station\n" );spin_unlock_irqrestore (&il->sta_lock, flags);
@@ -2660,14 +2658,12 @@ il3945_request_scan(struct il_priv *il, struct ieee80211_vif *vif)void il3945_post_scan (struct il_priv *il) { -struct il_rxon_context *ctx = &il->ctx; -/* * Since setting the RXON may have been deferred while * performing the scan, fire one off if needed */ if (memcmp (&il->staging, &il->active,sizeof (il->staging))) -il3945_commit_rxon (il, ctx); +il3945_commit_rxon (il); } static void
@@ -2680,7 +2676,8 @@ il3945_bg_restart(struct work_struct *data)if (test_and_clear_bit (S_FW_ERROR , &il->status)) {mutex_lock (&il->mutex); - il->ctx.vif =NULL ; +/* FIXME: vif can be dereferenced */ + il->vif =NULL ; il->is_open =0 ;mutex_unlock (&il->mutex);il3945_down (il);
@@ -2718,12 +2715,11 @@ il3945_post_associate(struct il_priv *il) {int rc =0 ;struct ieee80211_conf *conf =NULL ; -struct il_rxon_context *ctx = &il->ctx; -if (!ctx->vif || !il->is_open) +if (!il->vif || !il->is_open)return ; -D_ASSOC ("Associated as %d to: %pM\n" , ctx->vif->bss_conf.aid, +D_ASSOC ("Associated as %d to: %pM\n" , il->vif->bss_conf.aid, il->active.bssid_addr);if (test_bit (S_EXIT_PENDING , &il->status))
@@ -2734,34 +2730,34 @@ il3945_post_associate(struct il_priv *il) conf = &il->hw->conf; il->staging.filter_flags &= ~RXON_FILTER_ASSOC_MSK ; -il3945_commit_rxon (il, ctx); +il3945_commit_rxon (il); - rc =il_send_rxon_timing (il, ctx); + rc =il_send_rxon_timing (il);if (rc)IL_WARN ("C_RXON_TIMING failed - " "Attempting to continue.\n" ); il->staging.filter_flags |=RXON_FILTER_ASSOC_MSK ; - il->staging.assoc_id =cpu_to_le16 (ctx->vif->bss_conf.aid); + il->staging.assoc_id =cpu_to_le16 (il->vif->bss_conf.aid); -D_ASSOC ("assoc id %d beacon interval %d\n" , ctx->vif->bss_conf.aid, - ctx->vif->bss_conf.beacon_int); +D_ASSOC ("assoc id %d beacon interval %d\n" , il->vif->bss_conf.aid, + il->vif->bss_conf.beacon_int); -if (ctx->vif->bss_conf.use_short_preamble) +if (il->vif->bss_conf.use_short_preamble) il->staging.flags |=RXON_FLG_SHORT_PREAMBLE_MSK ;else il->staging.flags &= ~RXON_FLG_SHORT_PREAMBLE_MSK ;if (il->staging.flags &RXON_FLG_BAND_24G_MSK ) { -if (ctx->vif->bss_conf.use_short_slot) +if (il->vif->bss_conf.use_short_slot) il->staging.flags |=RXON_FLG_SHORT_SLOT_MSK ;else il->staging.flags &= ~RXON_FLG_SHORT_SLOT_MSK ; } -il3945_commit_rxon (il, ctx); +il3945_commit_rxon (il); -switch (ctx->vif->type) { +switch (il->vif->type) {case NL80211_IFTYPE_STATION :il3945_rate_scale_init (il->hw,IL_AP_ID );break ;
@@ -2770,7 +2766,7 @@ il3945_post_associate(struct il_priv *il)break ;default :IL_ERR ("%s Should not be called in %d mode\n" , __func__, - ctx->vif->type); + il->vif->type);break ; } }
@@ -2887,8 +2883,7 @@ il3945_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb)void il3945_config_ap (struct il_priv *il) { -struct il_rxon_context *ctx = &il->ctx; -struct ieee80211_vif *vif = ctx->vif; +struct ieee80211_vif *vif = il->vif;int rc =0 ;if (test_bit (S_EXIT_PENDING , &il->status))
@@ -2899,10 +2894,10 @@ il3945_config_ap(struct il_priv *il)/* RXON - unassoc (to set timing command) */ il->staging.filter_flags &= ~RXON_FILTER_ASSOC_MSK ; -il3945_commit_rxon (il, ctx); +il3945_commit_rxon (il);/* RXON Timing */ - rc =il_send_rxon_timing (il, ctx); + rc =il_send_rxon_timing (il);if (rc)IL_WARN ("C_RXON_TIMING failed - " "Attempting to continue.\n" );
@@ -2922,7 +2917,7 @@ il3945_config_ap(struct il_priv *il) }/* restore RXON assoc */ il->staging.filter_flags |=RXON_FILTER_ASSOC_MSK ; -il3945_commit_rxon (il, ctx); +il3945_commit_rxon (il); }il3945_send_beacon_cmd (il); }
@@ -2955,7 +2950,7 @@ il3945_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, static_key = !il_is_associated (il);if (!static_key) { - sta_id =il_sta_id_or_broadcast (il, &il->ctx, sta); + sta_id =il_sta_id_or_broadcast (il, sta);if (sta_id ==IL_INVALID_STATION )return -EINVAL ; }
@@ -3003,8 +2998,7 @@ il3945_mac_sta_add(struct ieee80211_hw *hw, struct ieee80211_vif *vif,D_INFO ("proceeding to add station %pM\n" , sta->addr); sta_priv->common.sta_id =IL_INVALID_STATION ; - ret = -il_add_station_common (il, &il->ctx, sta->addr, is_ap, sta, &sta_id); + ret =il_add_station_common (il, sta->addr, is_ap, sta, &sta_id);if (ret) {IL_ERR ("Unable to add station %pM (%d)\n" , sta->addr, ret);/* Should we return success if return code is EEXIST ? */
@@ -3184,7 +3178,7 @@ il3945_store_flags(struct device *d, struct device_attribute *attr,else {D_INFO ("Committing rxon.flags = 0x%04X\n" , flags); il->staging.flags =cpu_to_le32 (flags); -il3945_commit_rxon (il, &il->ctx); +il3945_commit_rxon (il); } }mutex_unlock (&il->mutex);
@@ -3220,7 +3214,7 @@ il3945_store_filter_flags(struct device *d, struct device_attribute *attr,D_INFO ("Committing rxon.filter_flags = " "0x%04X\n" , filter_flags); il->staging.filter_flags =cpu_to_le32 (filter_flags); -il3945_commit_rxon (il, &il->ctx); +il3945_commit_rxon (il); } }mutex_unlock (&il->mutex);
@@ -3750,8 +3744,7 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) goto out_release_irq; } -il_set_rxon_channel (il, &il->bands[IEEE80211_BAND_2GHZ ].channels[5 ], - &il->ctx); +il_set_rxon_channel (il, &il->bands[IEEE80211_BAND_2GHZ ].channels[5 ]);il3945_setup_deferred_work (il);il3945_setup_handlers (il);il_power_initialize (il);
drivers/net/wireless/iwlegacy/3945-rs.c +1 -2
@@ -927,8 +927,7 @@ il3945_rate_scale_init(struct ieee80211_hw *hw, s32 sta_id)rcu_read_lock (); - sta = -ieee80211_find_sta (il->ctx.vif, il->stations[sta_id].sta.sta.addr); + sta =ieee80211_find_sta (il->vif, il->stations[sta_id].sta.sta.addr);if (!sta) {D_RATE ("Unable to find station to initialize rate scaling.\n" );rcu_read_unlock ();
drivers/net/wireless/iwlegacy/3945.c +11 -12
@@ -1662,7 +1662,7 @@ il3945_hw_reg_set_txpower(struct il_priv *il, s8 power) }static int -il3945_send_rxon_assoc (struct il_priv *il,struct il_rxon_context *ctx) +il3945_send_rxon_assoc (struct il_priv *il) {int rc =0 ;struct il_rx_pkt *pkt;
@@ -1714,7 +1714,7 @@ il3945_send_rxon_assoc(struct il_priv *il, struct il_rxon_context *ctx)* a HW tune is required based on the RXON structure changes. */ int -il3945_commit_rxon (struct il_priv *il,struct il_rxon_context *ctx) +il3945_commit_rxon (struct il_priv *il) {/* cast away the const for active_rxon in this function */ struct il3945_rxon_cmd *active_rxon = (void *)&il->active;
@@ -1735,7 +1735,7 @@ il3945_commit_rxon(struct il_priv *il, struct il_rxon_context *ctx) staging_rxon->flags &= ~(RXON_FLG_DIS_DIV_MSK |RXON_FLG_ANT_SEL_MSK ); staging_rxon->flags |=il3945_get_antenna_flags (il); - rc =il_check_rxon_cmd (il, ctx); + rc =il_check_rxon_cmd (il);if (rc) {IL_ERR ("Invalid RXON configuration. Not committing.\n" );return -EINVAL ;
@@ -1744,8 +1744,8 @@ il3945_commit_rxon(struct il_priv *il, struct il_rxon_context *ctx)/* If we don't need to send a full RXON, we can use * il3945_rxon_assoc_cmd which is used to reconfigure filter * and other flags for the current radio configuration. */ -if (!il_full_rxon_required (il, &il->ctx)) { - rc =il_send_rxon_assoc (il, &il->ctx); +if (!il_full_rxon_required (il)) { + rc =il_send_rxon_assoc (il);if (rc) {IL_ERR ("Error setting RXON_ASSOC " "configuration (%d).\n" , rc);
@@ -1786,8 +1786,8 @@ il3945_commit_rxon(struct il_priv *il, struct il_rxon_context *ctx) "configuration (%d).\n", rc);return rc; } -il_clear_ucode_stations (il, &il->ctx); -il_restore_stations (il, &il->ctx); +il_clear_ucode_stations (il); +il_restore_stations (il); } D_INFO("Sending RXON\n" "* with%s RXON_FILTER_ASSOC_MSK\n"
@@ -1801,7 +1801,7 @@ il3945_commit_rxon(struct il_priv *il, struct il_rxon_context *ctx) staging_rxon->reserved4 =0 ; staging_rxon->reserved5 =0 ; -il_set_rxon_hwcrypto (il, ctx, !il3945_mod_params.sw_crypto); +il_set_rxon_hwcrypto (il, !il3945_mod_params.sw_crypto);/* Apply the new configuration */ rc = il_send_cmd_pdu(il, C_RXON, sizeof(struct il3945_rxon_cmd),
@@ -1814,8 +1814,8 @@ il3945_commit_rxon(struct il_priv *il, struct il_rxon_context *ctx)memcpy (active_rxon, staging_rxon,sizeof (*active_rxon));if (!new_assoc) { -il_clear_ucode_stations (il, &il->ctx); -il_restore_stations (il, &il->ctx); +il_clear_ucode_stations (il); +il_restore_stations (il); }/* If we issue a new RXON command which required a tune then we must
@@ -2258,7 +2258,6 @@ il3945_build_addsta_hcmd(const struct il_addsta_cmd *cmd, u8 * data)static int il3945_add_bssid_station (struct il_priv *il,const u8 * addr,u8 * sta_id_r) { -struct il_rxon_context *ctx = &il->ctx;int ret;u8 sta_id;unsigned long flags;
@@ -2266,7 +2265,7 @@ il3945_add_bssid_station(struct il_priv *il, const u8 * addr, u8 * sta_id_r)if (sta_id_r) *sta_id_r =IL_INVALID_STATION ; - ret =il_add_station_common (il, ctx, addr,0 ,NULL , &sta_id); + ret =il_add_station_common (il, addr,0 ,NULL , &sta_id);if (ret) {IL_ERR ("Unable to add station %pM\n" , addr);return ret;
drivers/net/wireless/iwlegacy/3945.h +1 -1
@@ -249,7 +249,7 @@ extern int il4965_get_temperature(const struct il_priv *il);extern void il3945_post_associate (struct il_priv *il);extern void il3945_config_ap (struct il_priv *il); -extern int il3945_commit_rxon (struct il_priv *il,struct il_rxon_context *ctx); +extern int il3945_commit_rxon (struct il_priv *il);/** * il3945_hw_find_station - Find station id for a given BSSID
drivers/net/wireless/iwlegacy/4965-mac.c +61 -89
517 lines not on this page · raw message
drivers/net/wireless/iwlegacy/4965-rs.c +10 -23
@@ -820,8 +820,6 @@ il4965_rs_tx_status(void *il_r, struct ieee80211_supported_band *sband,u32 tx_rate;struct il_scale_tbl_info tbl_type;struct il_scale_tbl_info *curr_tbl, *other_tbl, *tmp_tbl; -struct il_station_priv *sta_priv = (void *)sta->drv_priv; -struct il_rxon_context *ctx = sta_priv->common.ctx;D_RATE ("get frame ack response, update rate scale win\n" );
@@ -889,7 +887,7 @@ il4965_rs_tx_status(void *il_r, struct ieee80211_supported_band *sband, lq_sta->missed_rate_counter++;if (lq_sta->missed_rate_counter >IL_MISSED_RATE_MAX ) { lq_sta->missed_rate_counter =0 ; -il_send_lq_cmd (il, ctx, &lq_sta->lq,CMD_ASYNC , false); +il_send_lq_cmd (il, &lq_sta->lq,CMD_ASYNC , false); }/* Regardless, ignore this status info for outdated rate */ return ;
@@ -1181,8 +1179,6 @@ il4965_rs_switch_to_mimo2(struct il_priv *il, struct il_lq_sta *lq_sta,u16 rate_mask;s32 rate;s8 is_green = lq_sta->is_green; -struct il_station_priv *sta_priv = (void *)sta->drv_priv; -struct il_rxon_context *ctx = sta_priv->common.ctx;if (!conf_is_ht (conf) || !sta->ht_cap.ht_supported)return -1 ;
@@ -1203,7 +1199,7 @@ il4965_rs_switch_to_mimo2(struct il_priv *il, struct il_lq_sta *lq_sta, tbl->max_search =IL_MAX_SEARCH ; rate_mask = lq_sta->active_mimo2_rate; -if (il_is_ht40_tx_allowed (il, ctx, &sta->ht_cap)) +if (il_is_ht40_tx_allowed (il, &sta->ht_cap)) tbl->is_ht40 =1 ;else tbl->is_ht40 =0 ;
@@ -1237,8 +1233,6 @@ il4965_rs_switch_to_siso(struct il_priv *il, struct il_lq_sta *lq_sta,u16 rate_mask;u8 is_green = lq_sta->is_green;s32 rate; -struct il_station_priv *sta_priv = (void *)sta->drv_priv; -struct il_rxon_context *ctx = sta_priv->common.ctx;if (!conf_is_ht (conf) || !sta->ht_cap.ht_supported)return -1 ;
@@ -1251,7 +1245,7 @@ il4965_rs_switch_to_siso(struct il_priv *il, struct il_lq_sta *lq_sta, tbl->max_search =IL_MAX_SEARCH ; rate_mask = lq_sta->active_siso_rate; -if (il_is_ht40_tx_allowed (il, ctx, &sta->ht_cap)) +if (il_is_ht40_tx_allowed (il, &sta->ht_cap)) tbl->is_ht40 =1 ;else tbl->is_ht40 =0 ;
@@ -1730,8 +1724,7 @@ il4965_rs_stay_in_table(struct il_lq_sta *lq_sta, bool force_search)* setup rate table in uCode */ static void -il4965_rs_update_rate_tbl (struct il_priv *il,struct il_rxon_context *ctx, -struct il_lq_sta *lq_sta, +il4965_rs_update_rate_tbl (struct il_priv *il,struct il_lq_sta *lq_sta,struct il_scale_tbl_info *tbl,int idx,u8 is_green) {u32 rate;
@@ -1739,7 +1732,7 @@ il4965_rs_update_rate_tbl(struct il_priv *il, struct il_rxon_context *ctx,/* Update uCode's rate table. */ rate =il4965_rate_n_flags_from_tbl (il, tbl, idx, is_green);il4965_rs_fill_link_cmd (il, lq_sta, rate); -il_send_lq_cmd (il, ctx, &lq_sta->lq,CMD_ASYNC , false); +il_send_lq_cmd (il, &lq_sta->lq,CMD_ASYNC , false); }/*
@@ -1775,8 +1768,6 @@ il4965_rs_rate_scale_perform(struct il_priv *il, struct sk_buff *skb,s32 sr;u8 tid =MAX_TID_COUNT ;struct il_tid_data *tid_data; -struct il_station_priv *sta_priv = (void *)sta->drv_priv; -struct il_rxon_context *ctx = sta_priv->common.ctx;D_RATE ("rate scale calculate new rate for skb\n" );
@@ -1851,7 +1842,7 @@ il4965_rs_rate_scale_perform(struct il_priv *il, struct sk_buff *skb, tbl = &(lq_sta->lq_info[lq_sta->active_tbl]);/* get "active" rate info */ idx =il4965_hwrate_to_plcp_idx (tbl->current_rate); -il4965_rs_update_rate_tbl (il, ctx, lq_sta, tbl, idx, +il4965_rs_update_rate_tbl (il, lq_sta, tbl, idx, is_green); }return ;
@@ -2054,8 +2045,7 @@ il4965_rs_rate_scale_perform(struct il_priv *il, struct sk_buff *skb, lq_update:/* Replace uCode's rate table for the destination station. */ if (update_lq) -il4965_rs_update_rate_tbl (il, ctx, lq_sta, tbl, idx, - is_green); +il4965_rs_update_rate_tbl (il, lq_sta, tbl, idx, is_green);/* Should we stay with this modulation mode, * or search for a new one? */
@@ -2095,7 +2085,7 @@ lq_update:D_RATE ("Switch current mcs: %X idx: %d\n" , tbl->current_rate, idx);il4965_rs_fill_link_cmd (il, lq_sta, tbl->current_rate); -il_send_lq_cmd (il, ctx, &lq_sta->lq,CMD_ASYNC , false); +il_send_lq_cmd (il, &lq_sta->lq,CMD_ASYNC , false); }else done_search =1 ; }
@@ -2167,13 +2157,11 @@ il4965_rs_initialize_lq(struct il_priv *il, struct ieee80211_conf *conf,u8 active_tbl =0 ;u8 valid_tx_ant;struct il_station_priv *sta_priv; -struct il_rxon_context *ctx;if (!sta || !lq_sta)return ; sta_priv = (void *)sta->drv_priv; - ctx = sta_priv->common.ctx; i = lq_sta->last_txrate_idx;
@@ -2205,7 +2193,7 @@ il4965_rs_initialize_lq(struct il_priv *il, struct ieee80211_conf *conf,il4965_rs_set_expected_tpt_table (lq_sta, tbl);il4965_rs_fill_link_cmd (NULL , lq_sta, rate); il->stations[lq_sta->lq.sta_id].lq = &lq_sta->lq; -il_send_lq_cmd (il, ctx, &lq_sta->lq,CMD_SYNC , true); +il_send_lq_cmd (il, &lq_sta->lq,CMD_SYNC , true); } static void
@@ -2578,7 +2566,6 @@ il4965_rs_sta_dbgfs_scale_table_write(struct file *file,u32 parsed_rate;struct il_station_priv *sta_priv = container_of(lq_sta, struct il_station_priv, lq_sta); -struct il_rxon_context *ctx = sta_priv->common.ctx; il = lq_sta->drv;memset (buf,0 ,sizeof (buf));
@@ -2600,7 +2587,7 @@ il4965_rs_sta_dbgfs_scale_table_write(struct file *file,if (lq_sta->dbg_fixed_rate) {il4965_rs_fill_link_cmd (NULL , lq_sta, lq_sta->dbg_fixed_rate); -il_send_lq_cmd (lq_sta->drv, ctx, &lq_sta->lq,CMD_ASYNC , false); +il_send_lq_cmd (lq_sta->drv, &lq_sta->lq,CMD_ASYNC , false); }return count;
drivers/net/wireless/iwlegacy/4965.c +30 -32
189 lines not on this page · raw message
drivers/net/wireless/iwlegacy/4965.h +8 -11
@@ -48,7 +48,7 @@ void il4965_free_tfds_in_queue(struct il_priv *il, int sta_id, int tid, int freed);/* RXON */ -void il4965_set_rxon_chain (struct il_priv *il,struct il_rxon_context *ctx); +void il4965_set_rxon_chain (struct il_priv *il);/* uCode */ int il4965_verify_ucode (struct il_priv *il);
@@ -134,21 +134,18 @@ il4965_get_tx_fail_reason(u32 status)#endif /* station management */ -int il4965_alloc_bcast_station (struct il_priv *il,struct il_rxon_context *ctx); -int il4965_add_bssid_station (struct il_priv *il,struct il_rxon_context *ctx, -const u8 *addr,u8 *sta_id_r); +int il4965_alloc_bcast_station (struct il_priv *il); +int il4965_add_bssid_station (struct il_priv *il,const u8 *addr,u8 *sta_id_r);int il4965_remove_default_wep_key (struct il_priv *il, -struct il_rxon_context *ctx,struct ieee80211_key_conf *key); -int il4965_set_default_wep_key (struct il_priv *il,struct il_rxon_context *ctx, +int il4965_set_default_wep_key (struct il_priv *il,struct ieee80211_key_conf *key); -int il4965_restore_default_wep_keys (struct il_priv *il, -struct il_rxon_context *ctx); -int il4965_set_dynamic_key (struct il_priv *il,struct il_rxon_context *ctx, +int il4965_restore_default_wep_keys (struct il_priv *il); +int il4965_set_dynamic_key (struct il_priv *il,struct ieee80211_key_conf *key,u8 sta_id); -int il4965_remove_dynamic_key (struct il_priv *il,struct il_rxon_context *ctx, +int il4965_remove_dynamic_key (struct il_priv *il,struct ieee80211_key_conf *key,u8 sta_id); -void il4965_update_tkip_key (struct il_priv *il,struct il_rxon_context *ctx, +void il4965_update_tkip_key (struct il_priv *il,struct ieee80211_key_conf *keyconf,struct ieee80211_sta *sta,u32 iv32,u16 *phase1key);
drivers/net/wireless/iwlegacy/common.c +79 -120
576 lines not on this page · raw message
drivers/net/wireless/iwlegacy/common.h +30 -49
177 lines not on this page · raw message
Signature · 1 line
1.7.1
PATCH 22/25 iwlegacy: move ops out of config
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/3945-mac.c | 22 +++--- drivers/net/wireless/iwlegacy/3945.c | 13 +-- drivers/net/wireless/iwlegacy/3945.h | 4 +- drivers/net/wireless/iwlegacy/4965-calib.c | 4 +- drivers/net/wireless/iwlegacy/4965-mac.c | 78 ++++++++++++------- drivers/net/wireless/iwlegacy/4965.c | 34 +------- drivers/net/wireless/iwlegacy/4965.h | 3 +- drivers/net/wireless/iwlegacy/common.c | 115 +++++++++++----------------- drivers/net/wireless/iwlegacy/common.h | 8 +- drivers/net/wireless/iwlegacy/debug.c | 13 +-- 10 files changed, 127 insertions(+), 167 deletions(-)
drivers/net/wireless/iwlegacy/3945-mac.c +10 -12
@@ -618,8 +618,7 @@ il3945_tx_skb(struct il_priv *il, struct sk_buff *skb)/* Add buffer containing Tx command and MAC(!) header to TFD's * first entry */ - il->cfg->ops->lib->txq_attach_buf_to_tfd (il, txq, txcmd_phys, len,1 , -0 ); + il->ops->lib->txq_attach_buf_to_tfd (il, txq, txcmd_phys, len,1 ,0 );/* Set up TFD's 2nd entry to point directly to remainder of skb, * if any (802.11 null frames have no payload). */
@@ -628,8 +627,8 @@ il3945_tx_skb(struct il_priv *il, struct sk_buff *skb) phys_addr =pci_map_single (il->pci_dev, skb->data + hdr_len, len,PCI_DMA_TODEVICE ); - il->cfg->ops->lib->txq_attach_buf_to_tfd (il, txq, phys_addr, - len,0 ,U32_PAD (len)); + il->ops->lib->txq_attach_buf_to_tfd (il, txq, phys_addr, len,0 , +U32_PAD (len)); }/* Tell device the write idx *just past* this latest filled TFD */
@@ -2416,7 +2415,7 @@ __il3945_up(struct il_priv *il)/* load bootstrap state machine, * load bootstrap program into processor's memory, * prepare to load the "initialize" uCode */ - rc = il->cfg->ops->lib->load_ucode (il); + rc = il->ops->lib->load_ucode (il);if (rc) {IL_ERR ("Unable to set up bootstrap uCode: %d\n" , rc);
@@ -3458,7 +3457,7 @@ static struct attribute_group il3945_attribute_group = { .attrs = il3945_sysfs_entries, }; -struct ieee80211_ops il3945_hw_ops = { +struct ieee80211_ops il3945_mac_ops = { .tx = il3945_mac_tx, .start = il3945_mac_start, .stop = il3945_mac_stop,
@@ -3599,15 +3598,13 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)* 1. Allocating HW data * ********************/ -/* mac80211 allocates memory for this device instance, including -* space for this driver's ilate structure */ - hw =il_alloc_all (cfg); -if (hw ==NULL ) { -pr_err ("Can not allocate network device\n" ); + hw =ieee80211_alloc_hw (sizeof (struct il_priv ), &il3945_mac_ops); +if (!hw) { err = -ENOMEM ; goto out; } il = hw->priv; + il->hw = hw;SET_IEEE80211_DEV (hw, &pdev->dev); il->cmd_queue =IL39_CMD_QUEUE_NUM ;
@@ -3618,11 +3615,12 @@ il3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)*/ if (il3945_mod_params.disable_hw_scan) {D_INFO ("Disabling hw_scan\n" ); - il3945_hw_ops.hw_scan =NULL ; + il3945_mac_ops.hw_scan =NULL ; }D_INFO ("*** LOAD DRIVER ***\n" ); il->cfg = cfg; + il->ops = &il3945_ops; il->pci_dev = pdev; il->inta_mask =CSR_INI_SET_MASK ;
drivers/net/wireless/iwlegacy/3945.c +5 -8
@@ -303,7 +303,7 @@ il3945_tx_queue_reclaim(struct il_priv *il, int txq_id, int idx) tx_info = &txq->txb[txq->q.read_ptr];ieee80211_tx_status_irqsafe (il->hw, tx_info->skb); tx_info->skb =NULL ; - il->cfg->ops->lib->txq_free_tfd (il, txq); + il->ops->lib->txq_free_tfd (il, txq); } if (il_queue_space(q) > q->low_mark && txq_id >= 0 &&
@@ -960,12 +960,12 @@ il3945_hw_nic_init(struct il_priv *il)struct il_rx_queue *rxq = &il->rxq;spin_lock_irqsave (&il->lock, flags); - il->cfg->ops->lib->apm_ops.init (il); + il->ops->lib->apm_ops.init (il);spin_unlock_irqrestore (&il->lock, flags);il3945_set_pwr_vmain (il); - il->cfg->ops->lib->apm_ops.config (il); + il->ops->lib->apm_ops.config (il);/* Allocate the RX queue, or reset if it is already allocated */ if (!rxq->bd) {
@@ -1615,7 +1615,7 @@ il3945_hw_reg_comp_txpower_temp(struct il_priv *il) }/* send Txpower command for current channel to ucode */ -return il->cfg->ops->lib->send_tx_power (il); +return il->ops->lib->send_tx_power (il); }int
@@ -2685,13 +2685,12 @@ static struct il_hcmd_utils_ops il3945_hcmd_utils = { .post_scan = il3945_post_scan, }; -static const struct il_ops il3945_ops = { +const struct il_ops il3945_ops = { .lib = &il3945_lib, .hcmd = &il3945_hcmd, .utils = &il3945_hcmd_utils, .led = &il3945_led_ops, .legacy = &il3945_legacy_ops, - .ieee80211_ops = &il3945_hw_ops, };static struct il_base_params il3945_base_params = {
@@ -2711,7 +2710,6 @@ static struct il_cfg il3945_bg_cfg = { .ucode_api_min = IL3945_UCODE_API_MIN, .sku = IL_SKU_G, .eeprom_ver = EEPROM_3945_EEPROM_VERSION, - .ops = &il3945_ops, .mod_params = &il3945_mod_params, .base_params = &il3945_base_params, .led_mode = IL_LED_BLINK,
@@ -2724,7 +2722,6 @@ static struct il_cfg il3945_abg_cfg = { .ucode_api_min = IL3945_UCODE_API_MIN, .sku = IL_SKU_A | IL_SKU_G, .eeprom_ver = EEPROM_3945_EEPROM_VERSION, - .ops = &il3945_ops, .mod_params = &il3945_mod_params, .base_params = &il3945_base_params, .led_mode = IL_LED_BLINK,
drivers/net/wireless/iwlegacy/3945.h +2 -2
@@ -36,6 +36,8 @@ extern const struct pci_device_id il3945_hw_card_ids[];#include "common.h" +extern const struct il_ops il3945_ops; +/* Highest firmware API version supported */ #define IL3945_UCODE_API_MAX 2
@@ -261,8 +263,6 @@ extern int il3945_commit_rxon(struct il_priv *il);*/ extern u8 il3945_hw_find_station (struct il_priv *il,const u8 * bssid); -extern struct ieee80211_ops il3945_hw_ops; -extern __le32 il3945_get_antenna_flags (const struct il_priv *il);extern int il3945_init_hw_rate_table (struct il_priv *il);extern void il3945_reg_txpower_periodic (struct il_priv *il);
drivers/net/wireless/iwlegacy/4965-calib.c +2 -2
@@ -923,8 +923,8 @@ il4965_chain_noise_calibration(struct il_priv *il, void *stat_resp)/* Some power changes may have been made during the calibration. * Update and commit the RXON */ -if (il->cfg->ops->lib->update_chain_flags) - il->cfg->ops->lib->update_chain_flags (il); +if (il->ops->lib->update_chain_flags) + il->ops->lib->update_chain_flags (il); data->state =IL_CHAIN_NOISE_DONE ;il_power_update_mode (il, false);
drivers/net/wireless/iwlegacy/4965-mac.c +49 -29
207 lines not on this page · raw message
drivers/net/wireless/iwlegacy/4965.c +5 -29
@@ -2166,8 +2166,8 @@ il4965_post_associate(struct il_priv *il)il_set_rxon_ht (il, &il->current_ht_config); -if (il->cfg->ops->hcmd->set_rxon_chain) - il->cfg->ops->hcmd->set_rxon_chain (il); +if (il->ops->hcmd->set_rxon_chain) + il->ops->hcmd->set_rxon_chain (il); il->staging.assoc_id =cpu_to_le16 (vif->bss_conf.aid);
@@ -2241,8 +2241,8 @@ il4965_config_ap(struct il_priv *il)/* AP has all antennas */ il->chain_noise_data.active_chains = il->hw_params.valid_rx_ant;il_set_rxon_ht (il, &il->current_ht_config); -if (il->cfg->ops->hcmd->set_rxon_chain) - il->cfg->ops->hcmd->set_rxon_chain (il); +if (il->ops->hcmd->set_rxon_chain) + il->ops->hcmd->set_rxon_chain (il); il->staging.assoc_id =0 ;
@@ -2323,35 +2323,12 @@ static const struct il_legacy_ops il4965_legacy_ops = { .update_bcast_stations = il4965_update_bcast_stations, }; -struct ieee80211_ops il4965_hw_ops = { - .tx = il4965_mac_tx, - .start = il4965_mac_start, - .stop = il4965_mac_stop, - .add_interface = il_mac_add_interface, - .remove_interface = il_mac_remove_interface, - .change_interface = il_mac_change_interface, - .config = il_mac_config, - .configure_filter = il4965_configure_filter, - .set_key = il4965_mac_set_key, - .update_tkip_key = il4965_mac_update_tkip_key, - .conf_tx = il_mac_conf_tx, - .reset_tsf = il_mac_reset_tsf, - .bss_info_changed = il_mac_bss_info_changed, - .ampdu_action = il4965_mac_ampdu_action, - .hw_scan = il_mac_hw_scan, - .sta_add = il4965_mac_sta_add, - .sta_remove = il_mac_sta_remove, - .channel_switch = il4965_mac_channel_switch, - .tx_last_beacon = il_mac_tx_last_beacon, -}; - -static const struct il_ops il4965_ops = { +const struct il_ops il4965_ops = { .lib = &il4965_lib, .hcmd = &il4965_hcmd, .utils = &il4965_hcmd_utils, .led = &il4965_led_ops, .legacy = &il4965_legacy_ops, - .ieee80211_ops = &il4965_hw_ops, };static struct il_base_params il4965_base_params = {
@@ -2380,7 +2357,6 @@ struct il_cfg il4965_cfg = { .valid_rx_ant = ANT_ABC, .eeprom_ver = EEPROM_4965_EEPROM_VERSION, .eeprom_calib_ver = EEPROM_4965_TX_POWER_VERSION, - .ops = &il4965_ops, .mod_params = &il4965_mod_params, .base_params = &il4965_base_params, .led_mode = IL_LED_BLINK,
drivers/net/wireless/iwlegacy/4965.h +1 -2
@@ -38,11 +38,10 @@ struct il_rxon_context;/* configuration for the _4965 devices */ extern struct il_cfg il4965_cfg; +extern const struct il_ops il4965_ops;extern struct il_mod_params il4965_mod_params; -extern struct ieee80211_ops il4965_hw_ops; -/* tx queue */ void il4965_free_tfds_in_queue (struct il_priv *il,int sta_id,int tid,int freed);
drivers/net/wireless/iwlegacy/common.c +45 -70
315 lines not on this page · raw message
drivers/net/wireless/iwlegacy/common.h +3 -5
@@ -1167,6 +1167,7 @@ struct il_priv {struct ieee80211_channel *ieee_channels;struct ieee80211_rate *ieee_rates;struct il_cfg *cfg; +const struct il_ops *ops;/* temporary frame storage list */ struct list_head free_frames;
@@ -1668,7 +1669,6 @@ struct il_ops {const struct il_led_ops *led;const struct il_nic_ops *nic;const struct il_legacy_ops *legacy; -const struct ieee80211_ops *ieee80211_ops; };struct il_mod_params {
@@ -1777,7 +1777,6 @@ struct il_cfg {unsigned int sku;u16 eeprom_ver;u16 eeprom_calib_ver; -const struct il_ops *ops;/* module based parameters which can be set from modprobe cmd */ const struct il_mod_params *mod_params;/* params not likely to change within a device family */
@@ -1791,7 +1790,6 @@ struct il_cfg {* L i b * ***************************/ -struct ieee80211_hw *il_alloc_all (struct il_cfg *cfg);int il_mac_conf_tx (struct ieee80211_hw *hw,struct ieee80211_vif *vif,u16 queue,const struct ieee80211_tx_queue_params *params);int il_mac_tx_last_beacon (struct ieee80211_hw *hw);
@@ -2093,13 +2091,13 @@ int il_send_rxon_timing(struct il_priv *il);static inline int il_send_rxon_assoc (struct il_priv *il) { -return il->cfg->ops->hcmd->rxon_assoc (il); +return il->ops->hcmd->rxon_assoc (il); }static inline int il_commit_rxon (struct il_priv *il) { -return il->cfg->ops->hcmd->commit_rxon (il); +return il->ops->hcmd->commit_rxon (il); } static inline const struct ieee80211_supported_band *
drivers/net/wireless/iwlegacy/debug.c +5 -8
@@ -903,8 +903,7 @@ il_dbgfs_ucode_rx_stats_read(struct file *file, char __user *user_buf, size_t count, loff_t *ppos) { struct il_priv *il = file->private_data; -return il->cfg->ops->lib->debugfs_ops.rx_stats_read (file, user_buf, - count, ppos); +return il->ops->lib->debugfs_ops.rx_stats_read (file, user_buf, count, ppos); } static ssize_t
@@ -912,8 +911,7 @@ il_dbgfs_ucode_tx_stats_read(struct file *file, char __user *user_buf, size_t count, loff_t *ppos) { struct il_priv *il = file->private_data; -return il->cfg->ops->lib->debugfs_ops.tx_stats_read (file, user_buf, - count, ppos); +return il->ops->lib->debugfs_ops.tx_stats_read (file, user_buf, count, ppos); } static ssize_t
@@ -921,8 +919,7 @@ il_dbgfs_ucode_general_stats_read(struct file *file, char __user *user_buf, size_t count, loff_t *ppos) { struct il_priv *il = file->private_data; -return il->cfg->ops->lib->debugfs_ops.general_stats_read (file, user_buf, - count, ppos); +return il->ops->lib->debugfs_ops.general_stats_read (file, user_buf, count, ppos); } static ssize_t
@@ -1180,8 +1177,8 @@ il_dbgfs_fh_reg_read(struct file *file, char __user *user_buf, size_t count,int pos =0 ;ssize_t ret = -EFAULT ; -if (il->cfg->ops->lib->dump_fh) { - ret = pos = il->cfg->ops->lib->dump_fh (il, &buf, true); +if (il->ops->lib->dump_fh) { + ret = pos = il->ops->lib->dump_fh (il, &buf, true);if (buf) { ret = simple_read_from_buffer(user_buf, count, ppos, buf,
Signature · 1 line
1.7.1
PATCH 23/25 iwlegacy: merge il_base_params into il_cfg
In reply to Stanislaw Gruszka--- drivers/net/wireless/iwlegacy/3945.c | 30 +++++++++++++---------- drivers/net/wireless/iwlegacy/4965-calib.c | 14 +++++----- drivers/net/wireless/iwlegacy/4965-mac.c | 8 +++--- drivers/net/wireless/iwlegacy/4965.c | 37 +++++++++++++--------------- drivers/net/wireless/iwlegacy/common.c | 28 ++++++++++---------- drivers/net/wireless/iwlegacy/common.h | 31 ++++++++++++----------- drivers/net/wireless/iwlegacy/debug.c | 16 ++++++------ 7 files changed, 83 insertions(+), 81 deletions(-)
drivers/net/wireless/iwlegacy/3945.c +17 -13
@@ -2398,7 +2398,7 @@ il3945_hw_set_hw_params(struct il_priv *il) il->hw_params.bcast_id =IL3945_BROADCAST_ID ;/* Assign number of Usable TX queues */ - il->hw_params.max_txq_num = il->cfg->base_params->num_of_queues; + il->hw_params.max_txq_num = il->cfg->num_of_queues; il->hw_params.tfd_size =sizeof (struct il3945_tfd ); il->hw_params.rx_page_order =get_order (IL_RX_BUF_SIZE_3K );
@@ -2693,16 +2693,6 @@ const struct il_ops il3945_ops = { .legacy = &il3945_legacy_ops, }; -static struct il_base_params il3945_base_params = { - .eeprom_size =IL3945_EEPROM_IMG_SIZE , - .num_of_queues =IL39_NUM_QUEUES , - .pll_cfg_val =CSR39_ANA_PLL_CFG_VAL , - .set_l0s = false, - .use_bsm = true, - .led_compensation =64 , - .wd_timeout =IL_DEF_WD_TIMEOUT , -}; -static struct il_cfg il3945_bg_cfg = { .name ="3945BG" , .fw_name_pre =IL3945_FW_PRE ,
@@ -2711,8 +2701,15 @@ static struct il_cfg il3945_bg_cfg = { .sku = IL_SKU_G, .eeprom_ver = EEPROM_3945_EEPROM_VERSION, .mod_params = &il3945_mod_params, - .base_params = &il3945_base_params, .led_mode = IL_LED_BLINK, + + .eeprom_size = IL3945_EEPROM_IMG_SIZE, + .num_of_queues = IL39_NUM_QUEUES, + .pll_cfg_val = CSR39_ANA_PLL_CFG_VAL, + .set_l0s = false, + .use_bsm = true, + .led_compensation = 64, + .wd_timeout =IL_DEF_WD_TIMEOUT };static struct il_cfg il3945_abg_cfg = {
@@ -2723,8 +2720,15 @@ static struct il_cfg il3945_abg_cfg = { .sku = IL_SKU_A | IL_SKU_G, .eeprom_ver = EEPROM_3945_EEPROM_VERSION, .mod_params = &il3945_mod_params, - .base_params = &il3945_base_params, .led_mode = IL_LED_BLINK, + + .eeprom_size = IL3945_EEPROM_IMG_SIZE, + .num_of_queues = IL39_NUM_QUEUES, + .pll_cfg_val = CSR39_ANA_PLL_CFG_VAL, + .set_l0s = false, + .use_bsm = true, + .led_compensation = 64, + .wd_timeout =IL_DEF_WD_TIMEOUT };DEFINE_PCI_DEVICE_TABLE (il3945_hw_card_ids) = {
drivers/net/wireless/iwlegacy/4965-calib.c +7 -7
@@ -627,13 +627,13 @@ il4965_find_disconn_antenna(struct il_priv *il, u32 * average_sig, average_sig[0 ] = data->chain_signal_a / - il->cfg->base_params->chain_noise_num_beacons; + il->cfg->chain_noise_num_beacons; average_sig[1 ] = data->chain_signal_b / - il->cfg->base_params->chain_noise_num_beacons; + il->cfg->chain_noise_num_beacons; average_sig[2 ] = data->chain_signal_c / - il->cfg->base_params->chain_noise_num_beacons; + il->cfg->chain_noise_num_beacons;if (average_sig[0 ] >= average_sig[1 ]) { max_average_sig = average_sig[0 ];
@@ -886,7 +886,7 @@ il4965_chain_noise_calibration(struct il_priv *il, void *stat_resp)/* If this is the "chain_noise_num_beacons", determine: * 1) Disconnected antennas (using signal strengths) * 2) Differential gain (using silence noise) to balance receivers */ -if (data->beacon_count != il->cfg->base_params->chain_noise_num_beacons) +if (data->beacon_count != il->cfg->chain_noise_num_beacons)return ;/* Analyze signal for disconnected antenna */
@@ -894,11 +894,11 @@ il4965_chain_noise_calibration(struct il_priv *il, void *stat_resp)/* Analyze noise for rx balance */ average_noise[0 ] = - data->chain_noise_a / il->cfg->base_params->chain_noise_num_beacons; + data->chain_noise_a / il->cfg->chain_noise_num_beacons; average_noise[1 ] = - data->chain_noise_b / il->cfg->base_params->chain_noise_num_beacons; + data->chain_noise_b / il->cfg->chain_noise_num_beacons; average_noise[2 ] = - data->chain_noise_c / il->cfg->base_params->chain_noise_num_beacons; + data->chain_noise_c / il->cfg->chain_noise_num_beacons;for (i =0 ; i <NUM_RX_CHAINS ; i++) { if (!data->disconn_array[i] &&
drivers/net/wireless/iwlegacy/4965-mac.c +4 -4
@@ -2150,11 +2150,11 @@ il4965_txq_agg_enable(struct il_priv *il, int txq_id, int tx_fifo, int sta_id,if ((IL49_FIRST_AMPDU_QUEUE > txq_id) || (IL49_FIRST_AMPDU_QUEUE + - il->cfg->base_params->num_of_ampdu_queues <= txq_id)) { + il->cfg->num_of_ampdu_queues <= txq_id)) {IL_WARN ("queue number out of range: %d, must be %d to %d\n" , txq_id,IL49_FIRST_AMPDU_QUEUE ,IL49_FIRST_AMPDU_QUEUE + - il->cfg->base_params->num_of_ampdu_queues -1 ); + il->cfg->num_of_ampdu_queues -1 );return -EINVAL ; }
@@ -2278,11 +2278,11 @@ il4965_txq_agg_disable(struct il_priv *il, u16 txq_id, u16 ssn_idx, u8 tx_fifo) {if ((IL49_FIRST_AMPDU_QUEUE > txq_id) || (IL49_FIRST_AMPDU_QUEUE + - il->cfg->base_params->num_of_ampdu_queues <= txq_id)) { + il->cfg->num_of_ampdu_queues <= txq_id)) {IL_WARN ("queue number out of range: %d, must be %d to %d\n" , txq_id,IL49_FIRST_AMPDU_QUEUE ,IL49_FIRST_AMPDU_QUEUE + - il->cfg->base_params->num_of_ampdu_queues -1 ); + il->cfg->num_of_ampdu_queues -1 );return -EINVAL ; }
drivers/net/wireless/iwlegacy/4965.c +17 -20
@@ -614,13 +614,13 @@ il4965_hw_set_hw_params(struct il_priv *il) {if (il->cfg->mod_params->num_of_queues >=IL_MIN_NUM_QUEUES && il->cfg->mod_params->num_of_queues <=IL49_NUM_QUEUES ) - il->cfg->base_params->num_of_queues = + il->cfg->num_of_queues = il->cfg->mod_params->num_of_queues; - il->hw_params.max_txq_num = il->cfg->base_params->num_of_queues; + il->hw_params.max_txq_num = il->cfg->num_of_queues; il->hw_params.dma_chnl_num =FH49_TCSR_CHNL_NUM ; il->hw_params.scd_bc_tbls_size = - il->cfg->base_params->num_of_queues * + il->cfg->num_of_queues *sizeof (struct il4965_scd_bc_tbl ); il->hw_params.tfd_size =sizeof (struct il_tfd ); il->hw_params.max_stations =IL4965_STATION_COUNT ;
@@ -2331,22 +2331,6 @@ const struct il_ops il4965_ops = { .legacy = &il4965_legacy_ops, }; -static struct il_base_params il4965_base_params = { - .eeprom_size =IL4965_EEPROM_IMG_SIZE , - .num_of_queues =IL49_NUM_QUEUES , - .num_of_ampdu_queues =IL49_NUM_AMPDU_QUEUES , - .pll_cfg_val =0 , - .set_l0s = true, - .use_bsm = true, - .led_compensation =61 , - .chain_noise_num_beacons =IL4965_CAL_NUM_BEACONS , - .wd_timeout =IL_DEF_WD_TIMEOUT , - .temperature_kelvin = true, - .ucode_tracing = true, - .sensitivity_calib_by_driver = true, - .chain_noise_calib_by_driver = true, -}; -struct il_cfg il4965_cfg = { .name ="Intel(R) Wireless WiFi Link 4965AGN" , .fw_name_pre =IL4965_FW_PRE ,
@@ -2358,13 +2342,26 @@ struct il_cfg il4965_cfg = { .eeprom_ver = EEPROM_4965_EEPROM_VERSION, .eeprom_calib_ver = EEPROM_4965_TX_POWER_VERSION, .mod_params = &il4965_mod_params, - .base_params = &il4965_base_params, .led_mode = IL_LED_BLINK,/* * Force use of chains B and C for scan RX on 5 GHz band * because the device has off-channel reception on chain A. */ .scan_rx_antennas[IEEE80211_BAND_5GHZ] = ANT_BC, + + .eeprom_size = IL4965_EEPROM_IMG_SIZE, + .num_of_queues = IL49_NUM_QUEUES, + .num_of_ampdu_queues = IL49_NUM_AMPDU_QUEUES, + .pll_cfg_val = 0, + .set_l0s = true, + .use_bsm = true, + .led_compensation = 61, + .chain_noise_num_beacons = IL4965_CAL_NUM_BEACONS, + .wd_timeout = IL_DEF_WD_TIMEOUT, + .temperature_kelvin = true, + .ucode_tracing = true, + .sensitivity_calib_by_driver = true, + .chain_noise_calib_by_driver = true, };/* Module firmware */
drivers/net/wireless/iwlegacy/common.c +14 -14
@@ -512,13 +512,13 @@ il_led_cmd(struct il_priv *il, unsigned long on, unsigned long off) }D_LED ("Led blink time compensation=%u\n" , - il->cfg->base_params->led_compensation); + il->cfg->led_compensation); led_cmd.on =il_blink_compensation (il, on, - il->cfg->base_params->led_compensation); + il->cfg->led_compensation); led_cmd.off =il_blink_compensation (il, off, - il->cfg->base_params->led_compensation); + il->cfg->led_compensation); ret = il->ops->led->cmd (il, &led_cmd);if (!ret) {
@@ -691,7 +691,7 @@ il_eeprom_verify_signature(struct il_priv *il)const u8 *il_eeprom_query_addr (const struct il_priv *il,size_t offset) { -BUG_ON (offset >= il->cfg->base_params->eeprom_size); +BUG_ON (offset >= il->cfg->eeprom_size);return &il->eeprom[offset]; }EXPORT_SYMBOL (il_eeprom_query_addr);
@@ -722,7 +722,7 @@ il_eeprom_init(struct il_priv *il)u16 addr;/* allocate eeprom */ - sz = il->cfg->base_params->eeprom_size; + sz = il->cfg->eeprom_size;D_EEPROM ("NVM size = %d\n" , sz); il->eeprom =kzalloc (sz,GFP_KERNEL );if (!il->eeprom) {
@@ -4218,7 +4218,7 @@ il_apm_init(struct il_priv *il)* If not (unlikely), enable L0S, so there is at least some * power savings, even without L1. */ -if (il->cfg->base_params->set_l0s) { +if (il->cfg->set_l0s) { lctl =il_pcie_link_ctl (il);if ((lctl &PCI_CFG_LINK_CTRL_VAL_L1_EN ) ==PCI_CFG_LINK_CTRL_VAL_L1_EN ) {
@@ -4235,9 +4235,9 @@ il_apm_init(struct il_priv *il) }/* Configure analog phase-lock-loop before activating to D0A */ -if (il->cfg->base_params->pll_cfg_val) +if (il->cfg->pll_cfg_val)il_set_bit (il,CSR_ANA_PLL_CFG , - il->cfg->base_params->pll_cfg_val); + il->cfg->pll_cfg_val);/* * Set "initialization complete" bit to move adapter from
@@ -4267,7 +4267,7 @@ il_apm_init(struct il_priv *il)* do not disable clocks. This preserves any hardware bits already * set by default in "CLK_CTRL_REG" after reset. */ -if (il->cfg->base_params->use_bsm) +if (il->cfg->use_bsm)il_wr_prph (il,APMG_CLK_EN_REG ,APMG_CLK_VAL_DMA_CLK_RQT |APMG_CLK_VAL_BSM_CLK_RQT );else
@@ -4565,7 +4565,7 @@ il_alloc_txq_mem(struct il_priv *il)if (!il->txq) il->txq =kzalloc (sizeof (struct il_tx_queue ) * - il->cfg->base_params->num_of_queues,GFP_KERNEL ); + il->cfg->num_of_queues,GFP_KERNEL );if (!il->txq) {IL_ERR ("Not enough memory for txq\n" );return -ENOMEM ;
@@ -4942,11 +4942,11 @@ il_check_stuck_queue(struct il_priv *il, int cnt) timeout = txq->time_stamp + -msecs_to_jiffies (il->cfg->base_params->wd_timeout); +msecs_to_jiffies (il->cfg->wd_timeout);if (time_after (jiffies, timeout)) {IL_ERR ("Queue %d stuck for %u ms.\n" , q->id, - il->cfg->base_params->wd_timeout); + il->cfg->wd_timeout); ret =il_force_reset (il, false);return (ret == -EAGAIN ) ?0 :1 ; }
@@ -4974,7 +4974,7 @@ il_bg_watchdog(unsigned long data)if (test_bit (S_EXIT_PENDING , &il->status))return ; - timeout = il->cfg->base_params->wd_timeout; + timeout = il->cfg->wd_timeout;if (timeout ==0 )return ;
@@ -5001,7 +5001,7 @@ EXPORT_SYMBOL(il_bg_watchdog);void il_setup_watchdog (struct il_priv *il) { -unsigned int timeout = il->cfg->base_params->wd_timeout; +unsigned int timeout = il->cfg->wd_timeout;if (timeout) mod_timer(&il->watchdog,
drivers/net/wireless/iwlegacy/common.h +16 -15
@@ -1695,21 +1695,6 @@ struct il_mod_params {* chain noise calibration operation */ struct il_base_params { -int eeprom_size; -int num_of_queues;/* def: HW dependent */ -int num_of_ampdu_queues;/* def: HW dependent */ -/* for il_apm_init() */ -u32 pll_cfg_val; -bool set_l0s; -bool use_bsm; - -u16 led_compensation; -int chain_noise_num_beacons; -unsigned int wd_timeout; -bool temperature_kelvin; -const bool ucode_tracing; -const bool sensitivity_calib_by_driver; -const bool chain_noise_calib_by_driver; };#define IL_LED_SOLID 11
@@ -1784,6 +1769,22 @@ struct il_cfg {/* params likely to change within a device family */ u8 scan_rx_antennas[IEEE80211_NUM_BANDS ];enum il_led_mode led_mode; + +int eeprom_size; +int num_of_queues;/* def: HW dependent */ +int num_of_ampdu_queues;/* def: HW dependent */ +/* for il_apm_init() */ +u32 pll_cfg_val; +bool set_l0s; +bool use_bsm; + +u16 led_compensation; +int chain_noise_num_beacons; +unsigned int wd_timeout; +bool temperature_kelvin; +const bool ucode_tracing; +const bool sensitivity_calib_by_driver; +const bool chain_noise_calib_by_driver; };/***************************
drivers/net/wireless/iwlegacy/debug.c +8 -8
@@ -361,7 +361,7 @@ il_dbgfs_nvm_read(struct file *file, char __user *user_buf, size_t count,const u8 *ptr;char *buf;u16 eeprom_ver; -size_t eeprom_len = il->cfg->base_params->eeprom_size; +size_t eeprom_len = il->cfg->eeprom_size; buf_size =4 * eeprom_len +256 ;if (eeprom_len %16 ) {
@@ -729,7 +729,7 @@ il_dbgfs_traffic_log_read(struct file *file, char __user *user_buf,char *buf;int bufsz = ((IL_TRAFFIC_ENTRIES *IL_TRAFFIC_ENTRY_SIZE *64 ) *2 ) + - (il->cfg->base_params->num_of_queues *32 *8 ) +400 ; + (il->cfg->num_of_queues *32 *8 ) +400 ;const u8 *ptr;ssize_t ret;
@@ -835,7 +835,7 @@ il_dbgfs_tx_queue_read(struct file *file, char __user *user_buf, size_t count,int cnt;int ret;const size_t bufsz = -sizeof (char ) *64 * il->cfg->base_params->num_of_queues; +sizeof (char ) *64 * il->cfg->num_of_queues;if (!il->txq) {IL_ERR ("txq not ready\n" );
@@ -1295,7 +1295,7 @@ il_dbgfs_wd_timeout_write(struct file *file, const char __user *user_buf,if (timeout <0 || timeout >IL_MAX_WD_TIMEOUT ) timeout =IL_DEF_WD_TIMEOUT ; - il->cfg->base_params->wd_timeout = timeout; + il->cfg->wd_timeout = timeout;il_setup_watchdog (il);return count; }
@@ -1369,17 +1369,17 @@ il_dbgfs_register(struct il_priv *il, const char *name)DEBUGFS_ADD_FILE (ucode_tx_stats, dir_debug,S_IRUSR );DEBUGFS_ADD_FILE (ucode_general_stats, dir_debug,S_IRUSR ); -if (il->cfg->base_params->sensitivity_calib_by_driver) +if (il->cfg->sensitivity_calib_by_driver)DEBUGFS_ADD_FILE (sensitivity, dir_debug,S_IRUSR ); -if (il->cfg->base_params->chain_noise_calib_by_driver) +if (il->cfg->chain_noise_calib_by_driver)DEBUGFS_ADD_FILE (chain_noise, dir_debug,S_IRUSR );DEBUGFS_ADD_FILE (rxon_flags, dir_debug,S_IWUSR );DEBUGFS_ADD_FILE (rxon_filter_flags, dir_debug,S_IWUSR );DEBUGFS_ADD_FILE (wd_timeout, dir_debug,S_IWUSR ); -if (il->cfg->base_params->sensitivity_calib_by_driver) +if (il->cfg->sensitivity_calib_by_driver)DEBUGFS_ADD_BOOL (disable_sensitivity, dir_rf, &il->disable_sens_cal); -if (il->cfg->base_params->chain_noise_calib_by_driver) +if (il->cfg->chain_noise_calib_by_driver)DEBUGFS_ADD_BOOL (disable_chain_noise, dir_rf, &il->disable_chain_noise_cal);DEBUGFS_ADD_BOOL (disable_tx_power, dir_rf, &il->disable_tx_power_cal);
Signature · 1 line
1.7.1
PATCH 24/25 iwlegacy: remove struct il_tx_info
In reply to Stanislaw GruszkaIt's just wrapper to sk_buff pointers ...
--- drivers/net/wireless/iwlegacy/3945-mac.c | 4 +-- drivers/net/wireless/iwlegacy/3945.c | 18 +++++++--------- drivers/net/wireless/iwlegacy/4965-mac.c | 33 ++++++++++++----------------- drivers/net/wireless/iwlegacy/4965.c | 18 +++++++++------- drivers/net/wireless/iwlegacy/common.c | 24 ++++++++++----------- drivers/net/wireless/iwlegacy/common.h | 18 +-------------- 6 files changed, 46 insertions(+), 69 deletions(-)
drivers/net/wireless/iwlegacy/3945-mac.c +1 -3
@@ -538,9 +538,7 @@ il3945_tx_skb(struct il_priv *il, struct sk_buff *skb) idx =il_get_cmd_idx (q, q->write_ptr,0 ); -/* Set up driver data for this TFD */ -memset (&(txq->txb[q->write_ptr]),0 ,sizeof (struct il_tx_info )); - txq->txb[q->write_ptr].skb = skb; + txq->skbs[q->write_ptr] = skb;/* Init first empty entry in queue's array of Tx/cmd buffers */ out_cmd = txq->cmd[idx];
drivers/net/wireless/iwlegacy/3945.c +8 -10
@@ -293,16 +293,16 @@ il3945_tx_queue_reclaim(struct il_priv *il, int txq_id, int idx) {struct il_tx_queue *txq = &il->txq[txq_id];struct il_queue *q = &txq->q; -struct il_tx_info *tx_info; +struct sk_buff *skb;BUG_ON (txq_id ==IL39_CMD_QUEUE_NUM );for (idx =il_queue_inc_wrap (idx, q->n_bd); q->read_ptr != idx; q->read_ptr =il_queue_inc_wrap (q->read_ptr, q->n_bd)) { - tx_info = &txq->txb[txq->q.read_ptr]; -ieee80211_tx_status_irqsafe (il->hw, tx_info->skb); - tx_info->skb =NULL ; + skb = txq->skbs[txq->q.read_ptr]; +ieee80211_tx_status_irqsafe (il->hw, skb); + txq->skbs[txq->q.read_ptr] =NULL ; il->ops->lib->txq_free_tfd (il, txq); }
@@ -336,7 +336,7 @@ il3945_hdl_tx(struct il_priv *il, struct il_rx_buf *rxb) } txq->time_stamp = jiffies; - info =IEEE80211_SKB_CB (txq->txb[txq->q.read_ptr].skb); + info =IEEE80211_SKB_CB (txq->skbs[txq->q.read_ptr]);ieee80211_tx_info_clear_status (info);/* Fill the MRR chain with some info about on-chip retransmissions */
@@ -660,15 +660,13 @@ il3945_hw_txq_free_tfd(struct il_priv *il, struct il_tx_queue *txq) PCI_DMA_TODEVICE);/* free SKB */ -if (txq->txb) { -struct sk_buff *skb; - - skb = txq->txb[txq->q.read_ptr].skb; +if (txq->skbs) { +struct sk_buff *skb = txq->skbs[txq->q.read_ptr];/* can be called from irqs-disabled context */ if (skb) {dev_kfree_skb_any (skb); - txq->txb[txq->q.read_ptr].skb =NULL ; + txq->skbs[txq->q.read_ptr] =NULL ; } } }
drivers/net/wireless/iwlegacy/4965-mac.c +14 -19
@@ -1753,9 +1753,7 @@ il4965_tx_skb(struct il_priv *il, struct sk_buff *skb)spin_unlock (&il->sta_lock); -/* Set up driver data for this TFD */ -memset (&(txq->txb[q->write_ptr]),0 ,sizeof (struct il_tx_info )); - txq->txb[q->write_ptr].skb = skb; + txq->skbs[q->write_ptr] = skb;/* Set up first empty entry in queue's array of Tx/cmd buffers */ out_cmd = txq->cmd[q->write_ptr];
@@ -2435,14 +2433,14 @@ il4965_non_agg_tx_status(struct il_priv *il, const u8 *addr1) }static void -il4965_tx_status (struct il_priv *il,struct il_tx_info *tx_info,bool is_agg) +il4965_tx_status (struct il_priv *il,struct sk_buff *skb,bool is_agg) { -struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx_info->skb->data; +struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;if (!is_agg)il4965_non_agg_tx_status (il, hdr->addr1); -ieee80211_tx_status_irqsafe (il->hw, tx_info->skb); +ieee80211_tx_status_irqsafe (il->hw, skb); }int
@@ -2450,9 +2448,9 @@ il4965_tx_queue_reclaim(struct il_priv *il, int txq_id, int idx) {struct il_tx_queue *txq = &il->txq[txq_id];struct il_queue *q = &txq->q; -struct il_tx_info *tx_info;int nfreed =0 ;struct ieee80211_hdr *hdr; +struct sk_buff *skb;if (idx >= q->n_bd ||il_queue_used (q, idx) ==0 ) { IL_ERR("Read idx for DMA queue txq id (%d), idx %d, "
@@ -2464,19 +2462,18 @@ il4965_tx_queue_reclaim(struct il_priv *il, int txq_id, int idx)for (idx =il_queue_inc_wrap (idx, q->n_bd); q->read_ptr != idx; q->read_ptr =il_queue_inc_wrap (q->read_ptr, q->n_bd)) { - tx_info = &txq->txb[txq->q.read_ptr]; + skb = txq->skbs[txq->q.read_ptr]; -if (WARN_ON_ONCE (tx_info->skb ==NULL )) +if (WARN_ON_ONCE (skb ==NULL ))continue ; - hdr = (struct ieee80211_hdr *)tx_info->skb->data; + hdr = (struct ieee80211_hdr *) skb->data;if (ieee80211_is_data_qos (hdr->frame_control)) nfreed++; -il4965_tx_status (il, tx_info, - txq_id >=IL4965_FIRST_AMPDU_QUEUE ); - tx_info->skb =NULL ; +il4965_tx_status (il, skb, txq_id >=IL4965_FIRST_AMPDU_QUEUE ); + txq->skbs[txq->q.read_ptr] =NULL ; il->ops->lib->txq_free_tfd (il, txq); }return nfreed;
@@ -2540,7 +2537,7 @@ il4965_tx_status_reply_compressed_ba(struct il_priv *il, struct il_ht_agg *agg,D_TX_REPLY ("Bitmap %llx\n" , (unsigned long long )bitmap); - info =IEEE80211_SKB_CB (il->txq[scd_flow].txb[agg->start_idx].skb); + info =IEEE80211_SKB_CB (il->txq[scd_flow].skbs[agg->start_idx]);memset (&info->status,0 ,sizeof (info->status)); info->flags |=IEEE80211_TX_STAT_ACK ; info->flags |=IEEE80211_TX_STAT_AMPDU ;
@@ -3624,15 +3621,13 @@ il4965_hw_txq_free_tfd(struct il_priv *il, struct il_tx_queue *txq) PCI_DMA_TODEVICE);/* free SKB */ -if (txq->txb) { -struct sk_buff *skb; - - skb = txq->txb[txq->q.read_ptr].skb; +if (txq->skbs) { +struct sk_buff *skb = txq->skbs[txq->q.read_ptr];/* can be called from irqs-disabled context */ if (skb) {dev_kfree_skb_any (skb); - txq->txb[txq->q.read_ptr].skb =NULL ; + txq->skbs[txq->q.read_ptr] =NULL ; } } }
drivers/net/wireless/iwlegacy/4965.c +10 -8
@@ -1873,7 +1873,7 @@ il4965_tx_status_reply_tx(struct il_priv *il, struct il_ht_agg *agg,D_TX_REPLY ("FrameCnt = %d, StartIdx=%d idx=%d\n" , agg->frame_count, agg->start_idx, idx); - info =IEEE80211_SKB_CB (il->txq[txq_id].txb[idx].skb); + info =IEEE80211_SKB_CB (il->txq[txq_id].skbs[idx]); info->status.rates[0 ].count = tx_resp->failure_frame +1 ; info->flags &= ~IEEE80211_TX_CTL_AMPDU ; info->flags |=il4965_tx_status_to_mac80211 (status);
@@ -1888,6 +1888,7 @@ il4965_tx_status_reply_tx(struct il_priv *il, struct il_ht_agg *agg,/* Two or more frames were attempted; expect block-ack */ u64 bitmap =0 ;int start = agg->start_idx; +struct sk_buff *skb;/* Construct bit-map of pending frames within Tx win */ for (i =0 ; i < agg->frame_count; i++) {
@@ -1905,12 +1906,10 @@ il4965_tx_status_reply_tx(struct il_priv *il, struct il_ht_agg *agg,D_TX_REPLY ("FrameCnt = %d, txq_id=%d idx=%d\n" , agg->frame_count, txq_id, idx); - hdr =il_tx_queue_get_hdr (il, txq_id, idx); -if (!hdr) { -IL_ERR ("BUG_ON idx doesn't point to valid skb" -" idx=%d, txq_id=%d\n" , idx, txq_id); + skb = il->txq[txq_id].skbs[idx]; +if (WARN_ON_ONCE (skb ==NULL ))return -1 ; - } + hdr = (struct ieee80211_hdr *) skb->data; sc =le16_to_cpu (hdr->seq_ctrl);if (idx != (SEQ_TO_SN (sc) &0xff )) {
@@ -2018,6 +2017,7 @@ il4965_hdl_tx(struct il_priv *il, struct il_rx_buf *rxb)int txq_id =SEQ_TO_QUEUE (sequence);int idx =SEQ_TO_IDX (sequence);struct il_tx_queue *txq = &il->txq[txq_id]; +struct sk_buff *skb;struct ieee80211_hdr *hdr;struct ieee80211_tx_info *info;struct il4965_tx_resp *tx_resp = (void *)&pkt->u.raw[0 ];
@@ -2036,10 +2036,12 @@ il4965_hdl_tx(struct il_priv *il, struct il_rx_buf *rxb) } txq->time_stamp = jiffies; - info =IEEE80211_SKB_CB (txq->txb[txq->q.read_ptr].skb); + + skb = txq->skbs[txq->q.read_ptr]; + info =IEEE80211_SKB_CB (skb);memset (&info->status,0 ,sizeof (info->status)); - hdr =il_tx_queue_get_hdr (il, txq_id, idx); + hdr = (struct ieee80211_hdr *) skb->data;if (ieee80211_is_data_qos (hdr->frame_control)) { qc =ieee80211_get_qos_ctl (hdr); tid = qc[0 ] &0xf ;
drivers/net/wireless/iwlegacy/common.c +11 -13
@@ -2755,8 +2755,8 @@ il_tx_queue_free(struct il_priv *il, int txq_id) txq->tfds, txq->q.dma_addr);/* De-alloc array of per-TFD driver data */ -kfree (txq->txb); - txq->txb =NULL ; +kfree (txq->skbs); + txq->skbs =NULL ;/* deallocate arrays */ kfree (txq->cmd);
@@ -2930,23 +2930,21 @@ il_tx_queue_alloc(struct il_priv *il, struct il_tx_queue *txq, u32 id)/* Driver ilate data, only for Tx (not command) queues, * not shared with device. */ if (id != il->cmd_queue) { - txq->txb =kcalloc (TFD_QUEUE_SIZE_MAX ,sizeof (txq->txb[0 ]), -GFP_KERNEL ); -if (!txq->txb) { -IL_ERR ("kmalloc for auxiliary BD " -"structures failed\n" ); + txq->skbs =kcalloc (TFD_QUEUE_SIZE_MAX ,sizeof (struct skb *), +GFP_KERNEL ); +if (!txq->skbs) { +IL_ERR ("Fail to alloc skbs\n" ); goto error; } - }else { - txq->txb =NULL ; - } + }else + txq->skbs =NULL ;/* Circular buffer of transmit frame descriptors (TFDs), * shared with device */ txq->tfds =dma_alloc_coherent (dev, tfd_sz, &txq->q.dma_addr,GFP_KERNEL );if (!txq->tfds) { -IL_ERR ("pci_alloc_consistent(%zd) failed\n" , tfd_sz); +IL_ERR ("Fail to alloc TFDs\n" ); goto error; } txq->q.id = id;
@@ -2954,8 +2952,8 @@ il_tx_queue_alloc(struct il_priv *il, struct il_tx_queue *txq, u32 id)return 0 ; error: -kfree (txq->txb); - txq->txb =NULL ; +kfree (txq->skbs); + txq->skbs =NULL ;return -ENOMEM ; }
drivers/net/wireless/iwlegacy/common.h +2 -16
@@ -143,11 +143,6 @@ struct il_queue {* space less than this */ }; -/* One for each TFD */ -struct il_tx_info { -struct sk_buff *skb; -}; -/** * struct il_tx_queue - Tx Queue for DMA * @q: generic Rx/Tx queue descriptor
@@ -155,7 +150,7 @@ struct il_tx_info {* @cmd: array of command/TX buffer pointers * @meta: array of meta data for each command/tx buffer * @dma_addr_cmd: physical address of cmd/tx buffer array -* @txb: array of per-TFD driver data +* @skbs: array of per-TFD socket buffer pointers * @time_stamp: time (in jiffies) of last read_ptr change * @need_update: indicates need to update read/write idx * @sched_retry: indicates queue is high-throughput aggregation (HT AGG) enabled
@@ -171,7 +166,7 @@ struct il_tx_queue {void *tfds;struct il_device_cmd **cmd;struct il_cmd_meta *meta; -struct il_tx_info *txb; +struct sk_buff **skbs;unsigned long time_stamp;u8 need_update;u8 sched_retry;
@@ -1482,15 +1477,6 @@ il_txq_ctx_deactivate(struct il_priv *il, int txq_id)clear_bit (txq_id, &il->txq_ctx_active_msk); } -static inline struct ieee80211_hdr * -il_tx_queue_get_hdr (struct il_priv *il,int txq_id,int idx) -{ -if (il->txq[txq_id].txb[idx].skb) -return (struct ieee80211_hdr *)il->txq[txq_id].txb[idx].skb-> - data; -return NULL ; -} -static inline int il_is_associated (struct il_priv *il) {
Signature · 1 line
1.7.1
PATCH 25/25 iwlegacy: remove set_hw_params callback
In reply to Stanislaw GruszkaWe do not need that callback, settings parameters can be done locally.
--- drivers/net/wireless/iwlegacy/4965-mac.c | 66 +++++++++++++++++++++++--- drivers/net/wireless/iwlegacy/4965.c | 76 ------------------------------ drivers/net/wireless/iwlegacy/common.h | 2 - 3 files changed, 59 insertions(+), 85 deletions(-)
drivers/net/wireless/iwlegacy/4965-mac.c +59 -7
@@ -6079,7 +6079,34 @@ il4965_hw_detect(struct il_priv *il)D_INFO ("HW Revision ID = 0x%X\n" , il->rev_id); } -static int +static struct il_sensitivity_ranges il4965_sensitivity = { + .min_nrg_cck =97 , + .max_nrg_cck =0 ,/* not used, set to 0 */ + + .auto_corr_min_ofdm =85 , + .auto_corr_min_ofdm_mrc =170 , + .auto_corr_min_ofdm_x1 =105 , + .auto_corr_min_ofdm_mrc_x1 =220 , + + .auto_corr_max_ofdm =120 , + .auto_corr_max_ofdm_mrc =210 , + .auto_corr_max_ofdm_x1 =140 , + .auto_corr_max_ofdm_mrc_x1 =270 , + + .auto_corr_min_cck =125 , + .auto_corr_max_cck =200 , + .auto_corr_min_cck_mrc =200 , + .auto_corr_max_cck_mrc =400 , + + .nrg_th_cck =100 , + .nrg_th_ofdm =100 , + + .barker_corr_th_min =190 , + .barker_corr_th_min_mrc =390 , + .nrg_th_cca =62 , +}; + +static void il4965_set_hw_params (struct il_priv *il) { il->hw_params.bcast_id =IL4965_BROADCAST_ID ;
@@ -6095,8 +6122,36 @@ il4965_set_hw_params(struct il_priv *il)if (il->cfg->mod_params->disable_11n) il->cfg->sku &= ~IL_SKU_N ; -/* Device-specific setup */ -return il->ops->lib->set_hw_params (il); +if (il->cfg->mod_params->num_of_queues >=IL_MIN_NUM_QUEUES && + il->cfg->mod_params->num_of_queues <=IL49_NUM_QUEUES ) + il->cfg->num_of_queues = + il->cfg->mod_params->num_of_queues; + + il->hw_params.max_txq_num = il->cfg->num_of_queues; + il->hw_params.dma_chnl_num =FH49_TCSR_CHNL_NUM ; + il->hw_params.scd_bc_tbls_size = + il->cfg->num_of_queues * +sizeof (struct il4965_scd_bc_tbl ); + + il->hw_params.tfd_size =sizeof (struct il_tfd ); + il->hw_params.max_stations =IL4965_STATION_COUNT ; + il->hw_params.max_data_size =IL49_RTC_DATA_SIZE ; + il->hw_params.max_inst_size =IL49_RTC_INST_SIZE ; + il->hw_params.max_bsm_size =BSM_SRAM_SIZE ; + il->hw_params.ht40_channel =BIT (IEEE80211_BAND_5GHZ ); + + il->hw_params.rx_wrt_ptr_reg =FH49_RSCSR_CHNL0_WPTR ; + + il->hw_params.tx_chains_num =il4965_num_of_ant (il->cfg->valid_tx_ant); + il->hw_params.rx_chains_num =il4965_num_of_ant (il->cfg->valid_rx_ant); + il->hw_params.valid_tx_ant = il->cfg->valid_tx_ant; + il->hw_params.valid_rx_ant = il->cfg->valid_rx_ant; + + il->hw_params.ct_kill_threshold = +CELSIUS_TO_KELVIN (CT_KILL_THRESHOLD_LEGACY ); + + il->hw_params.sens = &il4965_sensitivity; + il->hw_params.beacon_time_tsf_bits =IL4965_EXT_BEACON_TIME_POS ; } static int
@@ -6230,10 +6285,7 @@ il4965_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)/************************ * 5. Setup HW constants ************************/ -if (il4965_set_hw_params (il)) { -IL_ERR ("failed to set hw parameters\n" ); - goto out_free_eeprom; - } +il4965_set_hw_params (il);/******************* * 6. Setup il
drivers/net/wireless/iwlegacy/4965.c +0 -76
88 lines not on this page · raw message
drivers/net/wireless/iwlegacy/common.h +0 -2
@@ -1592,8 +1592,6 @@ struct il_temp_ops { };struct il_lib_ops { -/* set hw dependent parameters */ -int (*set_hw_params) (struct il_priv *il);/* Handling TX */ void (*txq_update_byte_cnt_tbl) (struct il_priv *il, struct il_tx_queue *txq,
Signature · 1 line
1.7.1
Quoted 2 lines · Stanislaw Gruszka
This patch set include various cleanups, mostly patches intended to remove unused "ctx" structure.
John, please drop this set, except problem pointed by Gertjan, it also breaks compilation with CONFIG_IWLEGACY_DEBUGFS=y. I'll repost fixed set shortly.
Stanislaw