Commit 9d2bb84d authored by Shaul Triebitz's avatar Shaul Triebitz Committed by Johannes Berg
Browse files

wifi: cfg80211: add link id to txq params



The Tx queue parameters are per link, so add the link ID
from nl80211 parameters to the API.

While at it, lock the wdev when calling into the driver
so it (and we) can check the link ID appropriately.

Signed-off-by: default avatarShaul Triebitz <shaul.triebitz@intel.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent d1efad17
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2316,6 +2316,7 @@ struct ocb_setup {
 * @cwmax: Maximum contention window [a value of the form 2^n-1 in the range
 *	1..32767]
 * @aifs: Arbitration interframe space [0..255]
 * @link_id: link_id or -1 for non-MLD
 */
struct ieee80211_txq_params {
	enum nl80211_ac ac;
@@ -2323,6 +2324,7 @@ struct ieee80211_txq_params {
	u16 cwmin;
	u16 cwmax;
	u8 aifs;
	int link_id;
};

/**
+15 −2
Original line number Diff line number Diff line
@@ -3476,8 +3476,21 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info)
			if (result)
				goto out;
			txq_params.link_id =
				nl80211_link_id_or_invalid(info->attrs);
			wdev_lock(netdev->ieee80211_ptr);
			if (txq_params.link_id >= 0 &&
			    !(netdev->ieee80211_ptr->valid_links &
			      BIT(txq_params.link_id)))
				result = -ENOLINK;
			else if (txq_params.link_id >= 0 &&
				 !netdev->ieee80211_ptr->valid_links)
				result = -EINVAL;
			else
				result = rdev_set_txq_params(rdev, netdev,
							     &txq_params);
			wdev_unlock(netdev->ieee80211_ptr);
			if (result)
				goto out;
		}