|
@@ -1511,6 +1511,7 @@ enum netdev_priv_flags {
|
|
|
* @max_mtu: Interface Maximum MTU value
|
|
|
* @type: Interface hardware type
|
|
|
* @hard_header_len: Maximum hardware header length.
|
|
|
+ * @min_header_len: Minimum hardware header length
|
|
|
*
|
|
|
* @needed_headroom: Extra headroom the hardware may need, but not in all
|
|
|
* cases can this be guaranteed
|
|
@@ -1728,6 +1729,7 @@ struct net_device {
|
|
|
unsigned int max_mtu;
|
|
|
unsigned short type;
|
|
|
unsigned short hard_header_len;
|
|
|
+ unsigned short min_header_len;
|
|
|
|
|
|
unsigned short needed_headroom;
|
|
|
unsigned short needed_tailroom;
|
|
@@ -2694,6 +2696,8 @@ static inline bool dev_validate_header(const struct net_device *dev,
|
|
|
{
|
|
|
if (likely(len >= dev->hard_header_len))
|
|
|
return true;
|
|
|
+ if (len < dev->min_header_len)
|
|
|
+ return false;
|
|
|
|
|
|
if (capable(CAP_SYS_RAWIO)) {
|
|
|
memset(ll_header + len, 0, dev->hard_header_len - len);
|