mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 01:04:19 +08:00
net: cdc_ncm: export NCM Transfer Block (NTB) parameters
The mandatory GetNtbParameters control request is an important part of the host <-> device protocol negotiation in CDC NCM (and CDC MBIM). It gives device limits which the host must obey when configuring the protocol aggregation variables. The driver will enforce this by rejecting attempts to set any of the tunable variables to a value which is not supported by the device. Exporting the parameter block helps userspace decide which values are allowed without resorting to trial and error. Signed-off-by: Bjørn Mork <bjorn@mork.no> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e368d27ff0
commit
871578c90a
@ -260,10 +260,40 @@ static DEVICE_ATTR(rx_max, S_IRUGO | S_IWUSR, cdc_ncm_show_rx_max, cdc_ncm_store
|
||||
static DEVICE_ATTR(tx_max, S_IRUGO | S_IWUSR, cdc_ncm_show_tx_max, cdc_ncm_store_tx_max);
|
||||
static DEVICE_ATTR(tx_timer_usecs, S_IRUGO | S_IWUSR, cdc_ncm_show_tx_timer_usecs, cdc_ncm_store_tx_timer_usecs);
|
||||
|
||||
#define NCM_PARM_ATTR(name, format, tocpu) \
|
||||
static ssize_t cdc_ncm_show_##name(struct device *d, struct device_attribute *attr, char *buf) \
|
||||
{ \
|
||||
struct usbnet *dev = netdev_priv(to_net_dev(d)); \
|
||||
struct cdc_ncm_ctx *ctx = (struct cdc_ncm_ctx *)dev->data[0]; \
|
||||
return sprintf(buf, format "\n", tocpu(ctx->ncm_parm.name)); \
|
||||
} \
|
||||
static DEVICE_ATTR(name, S_IRUGO, cdc_ncm_show_##name, NULL)
|
||||
|
||||
NCM_PARM_ATTR(bmNtbFormatsSupported, "0x%04x", le16_to_cpu);
|
||||
NCM_PARM_ATTR(dwNtbInMaxSize, "%u", le32_to_cpu);
|
||||
NCM_PARM_ATTR(wNdpInDivisor, "%u", le16_to_cpu);
|
||||
NCM_PARM_ATTR(wNdpInPayloadRemainder, "%u", le16_to_cpu);
|
||||
NCM_PARM_ATTR(wNdpInAlignment, "%u", le16_to_cpu);
|
||||
NCM_PARM_ATTR(dwNtbOutMaxSize, "%u", le32_to_cpu);
|
||||
NCM_PARM_ATTR(wNdpOutDivisor, "%u", le16_to_cpu);
|
||||
NCM_PARM_ATTR(wNdpOutPayloadRemainder, "%u", le16_to_cpu);
|
||||
NCM_PARM_ATTR(wNdpOutAlignment, "%u", le16_to_cpu);
|
||||
NCM_PARM_ATTR(wNtbOutMaxDatagrams, "%u", le16_to_cpu);
|
||||
|
||||
static struct attribute *cdc_ncm_sysfs_attrs[] = {
|
||||
&dev_attr_rx_max.attr,
|
||||
&dev_attr_tx_max.attr,
|
||||
&dev_attr_tx_timer_usecs.attr,
|
||||
&dev_attr_bmNtbFormatsSupported.attr,
|
||||
&dev_attr_dwNtbInMaxSize.attr,
|
||||
&dev_attr_wNdpInDivisor.attr,
|
||||
&dev_attr_wNdpInPayloadRemainder.attr,
|
||||
&dev_attr_wNdpInAlignment.attr,
|
||||
&dev_attr_dwNtbOutMaxSize.attr,
|
||||
&dev_attr_wNdpOutDivisor.attr,
|
||||
&dev_attr_wNdpOutPayloadRemainder.attr,
|
||||
&dev_attr_wNdpOutAlignment.attr,
|
||||
&dev_attr_wNtbOutMaxDatagrams.attr,
|
||||
NULL,
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user