Commit fddc827f authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau
Browse files

mt7615: mcu: unify __mt7615_mcu_set_dev_info and mt7615_mcu_set_dev_info



Unify mt7615_mcu_set_dev_info and __mt7615_mcu_set_dev_info since the
latter is run just by mt7615_mcu_set_dev_info

Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 893369b7
Loading
Loading
Loading
Loading
+36 −55
Original line number Diff line number Diff line
@@ -633,68 +633,49 @@ int mt7615_mcu_ctrl_pm_state(struct mt7615_dev *dev, int enter)
	return mt7615_mcu_msg_send(dev, skb, MCU_EXT_CMD_PM_STATE_CTRL);
}

static int __mt7615_mcu_set_dev_info(struct mt7615_dev *dev,
				     struct dev_info *dev_info)
int mt7615_mcu_set_dev_info(struct mt7615_dev *dev,
			    struct ieee80211_vif *vif, bool enable)
{
	struct mt7615_vif *mvif = (struct mt7615_vif *)vif->drv_priv;
	struct {
		struct req_hdr {
			u8 omac_idx;
			u8 band_idx;
			__le16 tlv_num;
			u8 is_tlv_append;
			u8 rsv[3];
	} __packed req_hdr = {0};
		} __packed hdr;
		struct req_tlv {
			__le16 tag;
			__le16 len;
			u8 active;
			u8 band_idx;
			u8 omac_addr[ETH_ALEN];
	} __packed;
	struct sk_buff *skb;
	u16 tlv_num = 0;

	skb = mt7615_mcu_msg_alloc(NULL, sizeof(req_hdr) +
				   sizeof(struct req_tlv));
	skb_reserve(skb, sizeof(req_hdr));

	if (dev_info->feature & BIT(DEV_INFO_ACTIVE)) {
		struct req_tlv req_tlv = {
		} __packed tlv;
	} data = {
		.hdr = {
			.omac_idx = mvif->omac_idx,
			.band_idx = mvif->band_idx,
			.tlv_num = cpu_to_le16(1),
			.is_tlv_append = 1,
		},
		.tlv = {
			.tag = cpu_to_le16(DEV_INFO_ACTIVE),
			.len = cpu_to_le16(sizeof(req_tlv)),
			.active = dev_info->enable,
			.band_idx = dev_info->band_idx,
			.len = cpu_to_le16(sizeof(struct req_tlv)),
			.active = enable,
			.band_idx = mvif->band_idx,
		},
	};
		memcpy(req_tlv.omac_addr, dev_info->omac_addr, ETH_ALEN);
		memcpy(skb_put(skb, sizeof(req_tlv)), &req_tlv,
		       sizeof(req_tlv));
		tlv_num++;
	}

	req_hdr.omac_idx = dev_info->omac_idx;
	req_hdr.band_idx = dev_info->band_idx;
	req_hdr.tlv_num = cpu_to_le16(tlv_num);
	req_hdr.is_tlv_append = tlv_num ? 1 : 0;
	struct sk_buff *skb;

	memcpy(skb_push(skb, sizeof(req_hdr)), &req_hdr, sizeof(req_hdr));
	memcpy(data.tlv.omac_addr, vif->addr, ETH_ALEN);
	skb = mt7615_mcu_msg_alloc(&data, sizeof(data));
	if (!skb)
		return -ENOMEM;

	return mt7615_mcu_msg_send(dev, skb, MCU_EXT_CMD_DEV_INFO_UPDATE);
}

int mt7615_mcu_set_dev_info(struct mt7615_dev *dev, struct ieee80211_vif *vif,
			    int en)
{
	struct mt7615_vif *mvif = (struct mt7615_vif *)vif->drv_priv;
	struct dev_info dev_info = {0};

	dev_info.omac_idx = mvif->omac_idx;
	memcpy(dev_info.omac_addr, vif->addr, ETH_ALEN);
	dev_info.band_idx = mvif->band_idx;
	dev_info.enable = en;
	dev_info.feature = BIT(DEV_INFO_ACTIVE);

	return __mt7615_mcu_set_dev_info(dev, &dev_info);
}

static void bss_info_omac_handler (struct mt7615_dev *dev,
				   struct bss_info *bss_info,
				   struct sk_buff *skb)
+2 −2
Original line number Diff line number Diff line
@@ -108,8 +108,8 @@ int mt7615_eeprom_init(struct mt7615_dev *dev);
int mt7615_dma_init(struct mt7615_dev *dev);
void mt7615_dma_cleanup(struct mt7615_dev *dev);
int mt7615_mcu_init(struct mt7615_dev *dev);
int mt7615_mcu_set_dev_info(struct mt7615_dev *dev, struct ieee80211_vif *vif,
			    int en);
int mt7615_mcu_set_dev_info(struct mt7615_dev *dev,
			    struct ieee80211_vif *vif, bool enable);
int mt7615_mcu_set_bss_info(struct mt7615_dev *dev, struct ieee80211_vif *vif,
			    int en);
int mt7615_mcu_set_wtbl_key(struct mt7615_dev *dev, int wcid,