All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sergey Ryazanov <ryazanov.s.a@gmail.com>
To: Ricardo Martinez <ricardo.martinez@linux.intel.com>
Cc: netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
	"Jakub Kicinski" <kuba@kernel.org>,
	"David Miller" <davem@davemloft.net>,
	"Johannes Berg" <johannes@sipsolutions.net>,
	"Loic Poulain" <loic.poulain@linaro.org>,
	"M Chetan Kumar" <m.chetan.kumar@intel.com>,
	chandrashekar.devegowda@intel.com,
	"Intel Corporation" <linuxwwan@intel.com>,
	chiranjeevi.rapolu@linux.intel.com,
	"Haijun Liu (刘海军)" <haijun.liu@mediatek.com>,
	amir.hanania@intel.com,
	"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
	dinesh.sharma@intel.com, eliot.lee@intel.com,
	ilpo.johannes.jarvinen@intel.com, moises.veleta@intel.com,
	pierre-louis.bossart@intel.com,
	muralidharan.sethuraman@intel.com,
	Soumya.Prakash.Mishra@intel.com, sreehari.kancharla@intel.com,
	madhusmita.sahu@intel.com
Subject: Re: [PATCH net-next v5 06/13] net: wwan: t7xx: Add AT and MBIM WWAN ports
Date: Mon, 7 Mar 2022 05:56:13 +0300	[thread overview]
Message-ID: <CAHNKnsSZ_2DAPQRsa45VZZ1UYD6mga_T0jfX_J+sb1HNCwpOPA@mail.gmail.com> (raw)
In-Reply-To: <20220223223326.28021-7-ricardo.martinez@linux.intel.com>

On Thu, Feb 24, 2022 at 1:35 AM Ricardo Martinez
<ricardo.martinez@linux.intel.com> wrote:
> From: Chandrashekar Devegowda <chandrashekar.devegowda@intel.com>
>
> Adds AT and MBIM ports to the port proxy infrastructure.
> The initialization method is responsible for creating the corresponding
> ports using the WWAN framework infrastructure. The implemented WWAN port
> operations are start, stop, and TX.

[skipped]

> +static int t7xx_port_ctrl_tx(struct wwan_port *port, struct sk_buff *skb)
> +{
> +       struct t7xx_port *port_private = wwan_port_get_drvdata(port);
> +       size_t actual_len, alloc_size, txq_mtu = CLDMA_MTU;
> +       struct t7xx_port_static *port_static;
> +       unsigned int len, i, packets;
> +       struct t7xx_fsm_ctl *ctl;
> +       enum md_state md_state;
> +
> +       len = skb->len;
> +       if (!len || !port_private->rx_length_th || !port_private->chan_enable)
> +               return -EINVAL;
> +
> +       port_static = port_private->port_static;
> +       ctl = port_private->t7xx_dev->md->fsm_ctl;
> +       md_state = t7xx_fsm_get_md_state(ctl);
> +       if (md_state == MD_STATE_WAITING_FOR_HS1 || md_state == MD_STATE_WAITING_FOR_HS2) {
> +               dev_warn(port_private->dev, "Cannot write to %s port when md_state=%d\n",
> +                        port_static->name, md_state);
> +               return -ENODEV;
> +       }
> +
> +       alloc_size = min_t(size_t, txq_mtu, len + CCCI_HEADROOM);
> +       actual_len = alloc_size - CCCI_HEADROOM;
> +       packets = DIV_ROUND_UP(len, txq_mtu - CCCI_HEADROOM);
> +
> +       for (i = 0; i < packets; i++) {
> +               struct ccci_header *ccci_h;
> +               struct sk_buff *skb_ccci;
> +               int ret;
> +
> +               if (packets > 1 && packets == i + 1) {
> +                       actual_len = len % (txq_mtu - CCCI_HEADROOM);
> +                       alloc_size = actual_len + CCCI_HEADROOM;
> +               }

Why do you track the packet number? Why not track the offset in the
passed data? E.g.:

for (off = 0; off < len; off += chunklen) {
    chunklen = min(len - off, CLDMA_MTU - sizeof(struct ccci_header);
    skb_ccci = alloc_skb(chunklen + sizeof(struct ccci_header), ...);
    skb_put_data(skb_ccci, skb->data + off, chunklen);
    /* Send skb_ccci */
}

> +               skb_ccci = __dev_alloc_skb(alloc_size, GFP_KERNEL);
> +               if (!skb_ccci)
> +                       return -ENOMEM;
> +
> +               ccci_h = skb_put(skb_ccci, sizeof(*ccci_h));
> +               t7xx_ccci_header_init(ccci_h, 0, actual_len + sizeof(*ccci_h),
> +                                     port_static->tx_ch, 0);
> +               skb_put_data(skb_ccci, skb->data + i * (txq_mtu - CCCI_HEADROOM), actual_len);
> +               t7xx_port_proxy_set_tx_seq_num(port_private, ccci_h);
> +
> +               ret = t7xx_port_send_skb_to_md(port_private, skb_ccci);
> +               if (ret) {
> +                       dev_kfree_skb_any(skb_ccci);
> +                       dev_err(port_private->dev, "Write error on %s port, %d\n",
> +                               port_static->name, ret);
> +                       return ret;
> +               }
> +
> +               port_private->seq_nums[MTK_TX]++;

Sequence number tracking as well as CCCI header construction are
common operations, so why not move them to t7xx_port_send_skb_to_md()?

> +       }
> +
> +       dev_kfree_skb(skb);
> +       return 0;
> +}

--
Sergey

  parent reply	other threads:[~2022-03-07  2:56 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-23 22:33 [PATCH net-next v5 00/13] net: wwan: t7xx: PCIe driver for MediaTek M.2 modem Ricardo Martinez
2022-02-23 22:33 ` [PATCH net-next v5 01/13] list: Add list_next_entry_circular() and list_prev_entry_circular() Ricardo Martinez
2022-02-23 22:33 ` [PATCH net-next v5 02/13] net: wwan: t7xx: Add control DMA interface Ricardo Martinez
2022-02-25 10:54   ` Ilpo Järvinen
2022-03-08  0:46     ` Martinez, Ricardo
2022-03-07  2:42   ` Sergey Ryazanov
2022-02-23 22:33 ` [PATCH net-next v5 03/13] net: wwan: t7xx: Add core components Ricardo Martinez
2022-02-25 11:10   ` Ilpo Järvinen
2022-03-08  0:47     ` Martinez, Ricardo
2022-03-07  2:44   ` Sergey Ryazanov
2022-02-23 22:33 ` [PATCH net-next v5 04/13] net: wwan: t7xx: Add port proxy infrastructure Ricardo Martinez
2022-02-25 11:47   ` Ilpo Järvinen
2022-03-08  0:48     ` Martinez, Ricardo
2022-03-07  2:52   ` Sergey Ryazanov
2022-03-12  3:45     ` Martinez, Ricardo
2022-02-23 22:33 ` [PATCH net-next v5 05/13] net: wwan: t7xx: Add control port Ricardo Martinez
2022-02-25 12:05   ` Ilpo Järvinen
2022-03-07  2:55   ` Sergey Ryazanov
2022-03-17 17:59     ` Martinez, Ricardo
2022-02-23 22:33 ` [PATCH net-next v5 06/13] net: wwan: t7xx: Add AT and MBIM WWAN ports Ricardo Martinez
2022-02-25 12:23   ` Ilpo Järvinen
2022-03-07  2:56   ` Sergey Ryazanov [this message]
2022-03-09  0:01     ` Martinez, Ricardo
2022-03-10  0:13       ` Sergey Ryazanov
2022-03-11 21:41         ` Martinez, Ricardo
2022-02-23 22:33 ` [PATCH net-next v5 07/13] net: wwan: t7xx: Data path HW layer Ricardo Martinez
2022-02-25 16:18   ` Ilpo Järvinen
2022-02-23 22:33 ` [PATCH net-next v5 08/13] net: wwan: t7xx: Add data path interface Ricardo Martinez
2022-03-01 13:05   ` Ilpo Järvinen
2022-03-07  2:58   ` Sergey Ryazanov
2022-04-04 23:29     ` Martinez, Ricardo
2022-04-04 23:50       ` Sergey Ryazanov
2022-04-05  0:10         ` Martinez, Ricardo
2022-02-23 22:33 ` [PATCH net-next v5 09/13] net: wwan: t7xx: Add WWAN network interface Ricardo Martinez
2022-03-07  2:59   ` Sergey Ryazanov
2022-02-23 22:33 ` [PATCH net-next v5 10/13] net: wwan: t7xx: Introduce power management Ricardo Martinez
2022-03-01 13:26   ` Ilpo Järvinen
2022-03-08  0:54     ` Martinez, Ricardo
2022-02-23 22:33 ` [PATCH net-next v5 11/13] net: wwan: t7xx: Runtime PM Ricardo Martinez
2022-02-23 22:33 ` [PATCH net-next v5 12/13] net: wwan: t7xx: Device deep sleep lock/unlock Ricardo Martinez
2022-03-10 10:21   ` Ilpo Järvinen
2022-03-18 23:49     ` Martinez, Ricardo
2022-03-22 12:31       ` Ilpo Järvinen
2022-02-23 22:33 ` [PATCH net-next v5 13/13] net: wwan: t7xx: Add maintainers and documentation Ricardo Martinez
2022-03-07  3:00 ` [PATCH net-next v5 00/13] net: wwan: t7xx: PCIe driver for MediaTek M.2 modem Sergey Ryazanov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAHNKnsSZ_2DAPQRsa45VZZ1UYD6mga_T0jfX_J+sb1HNCwpOPA@mail.gmail.com \
    --to=ryazanov.s.a@gmail.com \
    --cc=Soumya.Prakash.Mishra@intel.com \
    --cc=amir.hanania@intel.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=chandrashekar.devegowda@intel.com \
    --cc=chiranjeevi.rapolu@linux.intel.com \
    --cc=davem@davemloft.net \
    --cc=dinesh.sharma@intel.com \
    --cc=eliot.lee@intel.com \
    --cc=haijun.liu@mediatek.com \
    --cc=ilpo.johannes.jarvinen@intel.com \
    --cc=johannes@sipsolutions.net \
    --cc=kuba@kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linuxwwan@intel.com \
    --cc=loic.poulain@linaro.org \
    --cc=m.chetan.kumar@intel.com \
    --cc=madhusmita.sahu@intel.com \
    --cc=moises.veleta@intel.com \
    --cc=muralidharan.sethuraman@intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=pierre-louis.bossart@intel.com \
    --cc=ricardo.martinez@linux.intel.com \
    --cc=sreehari.kancharla@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.