[PATCH resend] libertas: support mesh for various firmware versions
Bing Zhao
bzhao at marvell.com
Wed Mar 11 21:13:28 EDT 2009
On Wednesday, March 11, 2009 at 3:26 AM, Dan Williams wrote:
>> + struct {
>> + /* packet type */
>> + u8 pkt_type;
>> + /* BSS number */
>> + u8 bss_num;
>
> Any chance you could give a quick overview of what goes in the
> pkt_type and bss_num fields?
Hi Dan,
This is to support multiple BSS simultaneously with the same
firmware at runtime. Each BSS has a unique number (bss_num) and
may have different type, such as "client", "AP", etc.
The bss_num of mesh interface is defined as a macro
"MESH_IFACE_ID" in this patch. The pkt_type field is reserved
for future use.
>> + } else if (priv->mesh_fw_ver == MESH_FW_NEW) {
>> + if (p_rx_pd->u.stat.bss_num)
>
> This would mean that bss_num == 0 indicates a regular frame. Is
> that correct? For mesh frames bss_num will always be > 0? The
> old-style rx_control flag seems a bit cleaner to me, but whatever
> works :)
It should be like this, thanks!
+ } else if (priv->mesh_fw_ver == MESH_FW_NEW) {
+ if (p_rx_pd->u.stat.bss_num == MESH_IFACE_ID)
>> - if (!(p_rx_pd->status & cpu_to_le16(MRVDRV_RXPD_STATUS_OK))) {
>> - lbs_deb_rx("rx err: frame received with bad status\n");
>> - lbs_pr_alert("rxpd not ok\n");
>> - priv->stats.rx_errors++;
>> - ret = 0;
>> - goto done;
>> - }
>> -
>
> I'd prefer to keep this code; can you protect it with firmware version
> checks for firmware < 5.1? It looks like those older firmware versions
> use it, but the 5.1 specification marks RxStatus "Reserved". Since the
> driver still works with cf8385 and sd8385 using firmware 5.0.16 and
> such, I'm not sure we should remove this yet.
The firmware seems always set MRVDRV_RXPD_STATUS_OK bit in status field.
I'll double check for this with the old firmware v5.0.16.
The patch will be re-sent to address above issues.
Thanks,
Bing
More information about the libertas-dev
mailing list