LinuxKPI, dev: 80211 update mac80211 KPI
Update the mac80211 ops KPI for (*conf_tx), (*assign_vif_chanctx), (*unassign_vif_chanctx), (*start_ap), and (*stop_ap), as well as ieee80211_beacon_get_tim() and ieee80211_beacon_get_template(). Update in-tree drivers iwlwifi and rtw88 accordingly based on upstream changes (as well as out-of-tree ones). This was triggered by trying to synchronize more drivers to a common state. MFC after: 1 week
This commit is contained in:
parent
ac07a3b8b6
commit
549198b1ab
@ -827,7 +827,7 @@ struct ieee80211_ops {
|
||||
int (*hw_scan)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_scan_request *);
|
||||
void (*cancel_hw_scan)(struct ieee80211_hw *, struct ieee80211_vif *);
|
||||
|
||||
int (*conf_tx)(struct ieee80211_hw *, struct ieee80211_vif *, u16, const struct ieee80211_tx_queue_params *);
|
||||
int (*conf_tx)(struct ieee80211_hw *, struct ieee80211_vif *, u32, u16, const struct ieee80211_tx_queue_params *);
|
||||
void (*tx)(struct ieee80211_hw *, struct ieee80211_tx_control *, struct sk_buff *);
|
||||
int (*tx_last_beacon)(struct ieee80211_hw *);
|
||||
void (*wake_tx_queue)(struct ieee80211_hw *, struct ieee80211_txq *);
|
||||
@ -876,8 +876,8 @@ struct ieee80211_ops {
|
||||
int (*add_chanctx)(struct ieee80211_hw *, struct ieee80211_chanctx_conf *);
|
||||
void (*remove_chanctx)(struct ieee80211_hw *, struct ieee80211_chanctx_conf *);
|
||||
void (*change_chanctx)(struct ieee80211_hw *, struct ieee80211_chanctx_conf *, u32);
|
||||
int (*assign_vif_chanctx)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_chanctx_conf *);
|
||||
void (*unassign_vif_chanctx)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_chanctx_conf *);
|
||||
int (*assign_vif_chanctx)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_bss_conf *, struct ieee80211_chanctx_conf *);
|
||||
void (*unassign_vif_chanctx)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_bss_conf *, struct ieee80211_chanctx_conf *);
|
||||
int (*switch_vif_chanctx)(struct ieee80211_hw *, struct ieee80211_vif_chanctx_switch *, int, enum ieee80211_chanctx_switch_mode);
|
||||
|
||||
int (*get_antenna)(struct ieee80211_hw *, u32 *, u32 *);
|
||||
@ -910,8 +910,8 @@ struct ieee80211_ops {
|
||||
int (*start_pmsr)(struct ieee80211_hw *, struct ieee80211_vif *, struct cfg80211_pmsr_request *);
|
||||
void (*abort_pmsr)(struct ieee80211_hw *, struct ieee80211_vif *, struct cfg80211_pmsr_request *);
|
||||
|
||||
int (*start_ap)(struct ieee80211_hw *, struct ieee80211_vif *);
|
||||
void (*stop_ap)(struct ieee80211_hw *, struct ieee80211_vif *);
|
||||
int (*start_ap)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_bss_conf *link_conf);
|
||||
void (*stop_ap)(struct ieee80211_hw *, struct ieee80211_vif *, struct ieee80211_bss_conf *link_conf);
|
||||
int (*join_ibss)(struct ieee80211_hw *, struct ieee80211_vif *);
|
||||
void (*leave_ibss)(struct ieee80211_hw *, struct ieee80211_vif *);
|
||||
|
||||
@ -1457,7 +1457,7 @@ ieee80211_get_tid(struct ieee80211_hdr *hdr)
|
||||
|
||||
static __inline struct sk_buff *
|
||||
ieee80211_beacon_get_tim(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
uint16_t *tim_offset, uint16_t *tim_len)
|
||||
uint16_t *tim_offset, uint16_t *tim_len, uint32_t link_id)
|
||||
{
|
||||
|
||||
if (tim_offset != NULL)
|
||||
@ -1549,7 +1549,7 @@ ieee80211_vif_to_wdev(struct ieee80211_vif *vif)
|
||||
static __inline struct sk_buff *
|
||||
ieee80211_beacon_get_template(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif, struct ieee80211_mutable_offsets *offs,
|
||||
int x)
|
||||
uint32_t link_id)
|
||||
{
|
||||
TODO();
|
||||
return (NULL);
|
||||
|
@ -425,7 +425,7 @@ lkpi_80211_mo_assign_vif_chanctx(struct ieee80211_hw *hw, struct ieee80211_vif *
|
||||
goto out;
|
||||
}
|
||||
|
||||
error = lhw->ops->assign_vif_chanctx(hw, vif, chanctx_conf);
|
||||
error = lhw->ops->assign_vif_chanctx(hw, vif, NULL, chanctx_conf);
|
||||
if (error == 0)
|
||||
vif->chanctx_conf = chanctx_conf;
|
||||
|
||||
@ -446,7 +446,7 @@ lkpi_80211_mo_unassign_vif_chanctx(struct ieee80211_hw *hw, struct ieee80211_vif
|
||||
if (*chanctx_conf == NULL)
|
||||
return;
|
||||
|
||||
lhw->ops->unassign_vif_chanctx(hw, vif, *chanctx_conf);
|
||||
lhw->ops->unassign_vif_chanctx(hw, vif, NULL, *chanctx_conf);
|
||||
*chanctx_conf = NULL;
|
||||
}
|
||||
|
||||
@ -523,7 +523,7 @@ lkpi_80211_mo_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
||||
goto out;
|
||||
}
|
||||
|
||||
error = lhw->ops->conf_tx(hw, vif, ac, txqp);
|
||||
error = lhw->ops->conf_tx(hw, vif, 0, ac, txqp);
|
||||
|
||||
out:
|
||||
return (error);
|
||||
|
@ -2432,7 +2432,8 @@ static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm,
|
||||
}
|
||||
|
||||
static int iwl_mvm_start_ap_ibss(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif)
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_bss_conf *link_conf)
|
||||
{
|
||||
struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
|
||||
struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
|
||||
@ -2558,8 +2559,22 @@ static int iwl_mvm_start_ap_ibss(struct ieee80211_hw *hw,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int iwl_mvm_start_ap(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_bss_conf *link_conf)
|
||||
{
|
||||
return iwl_mvm_start_ap_ibss(hw, vif, link_conf);
|
||||
}
|
||||
|
||||
static int iwl_mvm_start_ibss(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
||||
return iwl_mvm_start_ap_ibss(hw, vif, &vif->bss_conf);
|
||||
}
|
||||
|
||||
static void iwl_mvm_stop_ap_ibss(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif)
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_bss_conf *link_conf)
|
||||
{
|
||||
struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
|
||||
struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
|
||||
@ -2622,6 +2637,19 @@ static void iwl_mvm_stop_ap_ibss(struct ieee80211_hw *hw,
|
||||
mutex_unlock(&mvm->mutex);
|
||||
}
|
||||
|
||||
static void iwl_mvm_stop_ap(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_bss_conf *link_conf)
|
||||
{
|
||||
iwl_mvm_stop_ap_ibss(hw, vif, link_conf);
|
||||
}
|
||||
|
||||
static void iwl_mvm_stop_ibss(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
||||
iwl_mvm_stop_ap_ibss(hw, vif, &vif->bss_conf);
|
||||
}
|
||||
|
||||
static void
|
||||
iwl_mvm_bss_info_changed_ap_ibss(struct iwl_mvm *mvm,
|
||||
struct ieee80211_vif *vif,
|
||||
@ -3357,7 +3385,8 @@ static void iwl_mvm_sta_rc_update(struct ieee80211_hw *hw,
|
||||
}
|
||||
|
||||
static int iwl_mvm_mac_conf_tx(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif, u16 ac,
|
||||
struct ieee80211_vif *vif,
|
||||
unsigned int link_id, u16 ac,
|
||||
const struct ieee80211_tx_queue_params *params)
|
||||
{
|
||||
struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
|
||||
@ -4271,6 +4300,7 @@ static int __iwl_mvm_assign_vif_chanctx(struct iwl_mvm *mvm,
|
||||
}
|
||||
static int iwl_mvm_assign_vif_chanctx(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_bss_conf *link_conf,
|
||||
struct ieee80211_chanctx_conf *ctx)
|
||||
{
|
||||
struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
|
||||
@ -4344,6 +4374,7 @@ static void __iwl_mvm_unassign_vif_chanctx(struct iwl_mvm *mvm,
|
||||
|
||||
static void iwl_mvm_unassign_vif_chanctx(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_bss_conf *link_conf,
|
||||
struct ieee80211_chanctx_conf *ctx)
|
||||
{
|
||||
struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw);
|
||||
@ -5442,10 +5473,10 @@ const struct ieee80211_ops iwl_mvm_hw_ops = {
|
||||
.unassign_vif_chanctx = iwl_mvm_unassign_vif_chanctx,
|
||||
.switch_vif_chanctx = iwl_mvm_switch_vif_chanctx,
|
||||
|
||||
.start_ap = iwl_mvm_start_ap_ibss,
|
||||
.stop_ap = iwl_mvm_stop_ap_ibss,
|
||||
.join_ibss = iwl_mvm_start_ap_ibss,
|
||||
.leave_ibss = iwl_mvm_stop_ap_ibss,
|
||||
.start_ap = iwl_mvm_start_ap,
|
||||
.stop_ap = iwl_mvm_stop_ap,
|
||||
.join_ibss = iwl_mvm_start_ibss,
|
||||
.leave_ibss = iwl_mvm_stop_ibss,
|
||||
|
||||
.tx_last_beacon = iwl_mvm_tx_last_beacon,
|
||||
|
||||
|
@ -1070,7 +1070,7 @@ static struct sk_buff *rtw_get_rsvd_page_skb(struct ieee80211_hw *hw,
|
||||
|
||||
switch (rsvd_pkt->type) {
|
||||
case RSVD_BEACON:
|
||||
skb_new = ieee80211_beacon_get_tim(hw, vif, &tim_offset, NULL);
|
||||
skb_new = ieee80211_beacon_get_tim(hw, vif, &tim_offset, NULL, 0);
|
||||
rsvd_pkt->tim_offset = tim_offset;
|
||||
break;
|
||||
case RSVD_PS_POLL:
|
||||
|
@ -442,7 +442,9 @@ static void rtw_ops_bss_info_changed(struct ieee80211_hw *hw,
|
||||
mutex_unlock(&rtwdev->mutex);
|
||||
}
|
||||
|
||||
static int rtw_ops_start_ap(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
|
||||
static int rtw_ops_start_ap(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif,
|
||||
struct ieee80211_bss_conf *link_conf)
|
||||
{
|
||||
struct rtw_dev *rtwdev = hw->priv;
|
||||
struct rtw_chip_info *chip = rtwdev->chip;
|
||||
@ -455,7 +457,8 @@ static int rtw_ops_start_ap(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
|
||||
}
|
||||
|
||||
static int rtw_ops_conf_tx(struct ieee80211_hw *hw,
|
||||
struct ieee80211_vif *vif, u16 ac,
|
||||
struct ieee80211_vif *vif,
|
||||
unsigned int link_id, u16 ac,
|
||||
const struct ieee80211_tx_queue_params *params)
|
||||
{
|
||||
struct rtw_dev *rtwdev = hw->priv;
|
||||
|
Loading…
Reference in New Issue
Block a user