tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: BCM5809S support in bnx(4) and brgphy(4)



>  Also, there is a comment above saying that:
> 
>  /*
>   * The following data structures are generated from RTL code.
>   * Do not modify any values below this line.
>   */

IMO all members fetched via PCI bus master should be uint32_t
if hardware supports byte swap ops since swap is always done
against each uint32_t.

>  -    u_int16_t tx_bd_flags;
>  -    u_int16_t tx_bd_vlan_tag;
>  +    u_int32_t tx_bd_flags_vtag;
>  +#define VAL_HIGH(val) (((val) & 0xffff0000) >> 16)
>  +#define VAL_LOW(val)   ((val) & 0x0000ffff)
>  +#if BYTE_ORDER == BIG_ENDIAN
>  +#define TX_BD_VLAN_TAG(tx_bd)       VAL_HIGH((tx_bd)->tx_bd_flags_vtag)
>  +#define TX_BD_FLAGS(tx_bd)  VAL_LOW ((tx_bd)->tx_bd_flags_vtag)
>  +#else
>  +#define TX_BD_VLAN_TAG(tx_bd)       VAL_LOW ((tx_bd)->tx_bd_flags_vtag)
>  +#define TX_BD_FLAGS(tx_bd)  VAL_HIGH((tx_bd)->tx_bd_flags_vtag)
>  +#endif
 :
>  Looks messy :/

Well, no need to use #if BYTE_ORDER if we use uint32_t with
shift ops because word swap is done by hardware.
(that's the reason why we have to swap uint16_t members by #ifdef)

Anyway, no problem to leave them as is to sync FreeBSD/OpenBSD.
---
Izum iTsutsui


Home | Main Index | Thread Index | Old Index