On 12/20/2013 8:47 PM, Michal Nazarewicz wrote:
> On Fri, Dec 20 2013, Manu Gautam wrote:
>
> I don't like this. Why are we failing if descriptors for given speed
> are missing? If they are, we should fall back to lower speed.
>
> do {
> ds = ep->descs[desc_idx];
> } while (!ds && --desc_idx >= 0);
> if (desc_idx < 0) {
> ret = -EINVAL;
> break;
> }
>
> Or something similar. Point is, why aren't we failing dawn to high/low
> speed if ep->descs[2] is NULL?
>
agreed.
>> if (likely(hs_count)) {
>> - ret = ffs_do_descs(hs_count, data, len,
>> + hs_len = ffs_do_descs(hs_count, data, len,
>> __ffs_data_do_entity, ffs);
>> - if (unlikely(ret < 0))
>> + if (unlikely(hs_len < 0)) {
>> + ret = hs_len;
>> + goto error;
>> + }
>
> data += hs_len;
> len -= hs_len;
>
>> + } else {
>> + hs_len = 0;
>> + }
>> +
>> + if ((len >= hs_len + 8)) {
>
> With the above len -= hs_len, this just becomes “len >= 8”.
>
> Nit: too many parenthesise. Having “((…))” makes me think there's
> assignment inside which there's no.
>
I will correct this.
>> + /* Check SS_MAGIC for presence of ss_descs and get SS_COUNT */
>> + ss_magic = get_unaligned_le32(data + hs_len);
>> + if (ss_magic != FUNCTIONFS_SS_DESC_MAGIC)
>> + goto einval;
>
> The temporary variable doesn't really serve any purpose here, and with
> the above “data += hs_len” this becomes:
>
> if (get_unaligned_le32(data) != FUNCTIONFS_SS_DESC_MAGIC)
> goto einval;
>
Agreed. I will correct this and below assignments.
>> +
>> + ss_count = get_unaligned_le32(data + hs_len + 4);
>> + data += hs_len + 8;
>> + len -= hs_len + 8;
>> + } else {
>> + data += hs_len;
>> + len -= hs_len;
>> + }
>> + ffs->raw_fs_hs_descs_length = fs_len + hs_len;
>> + ffs->raw_ss_descs_length = ss_len;
>> + ffs->raw_descs_length = ffs->raw_fs_hs_descs_length + ss_len;
>
> Nit: I would keep this consistent in the way that I'd just reference
> local variables:
>
> ffs->raw_descs_length = fs_len + hs_len + ss_len;
>
Agreed.
>> + if (unlikely(ffs_ep->descs[ep_desc_id])) {
>> pr_vdebug("two %sspeed descriptors for EP %d\n",
>> - isHS ? "high" : "full",
>> + is_ss ? "super" : "high/full",
>
> is_ss ? "super" : (is_hs "high" : "full"),
>
will change this.
>> - /* Only high speed but not supported by gadget? */
>> - if (unlikely(!(full | high)))
>> + /* Only high/super speed but not supported by gadget? */
>
> The comment cloud be improved, e.g.:
>
> /* Has descriptions only for speeds gadgets does not support. */
>
ok.
>> + fs_len = ffs_do_descs(ffs->fs_descs_count,
>> vla_ptr(vlabuf, d, raw_descs),
>> d_raw_descs__sz,
>> __ffs_func_bind_do_descs, func);
>
> Nit: indention of the arguments.
I will fix this.
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html